{"version":3,"file":"rehype-citation.mjs","sources":["../../src/regex.js","../../src/parse-citation.js","../../src/utils.js","../../src/html-transform-node.js","../../src/gen-citation.js","../../src/gen-biblio.js","../../src/gen-footnote.js","../../src/generator.js","../../src/citation-js/core/Cite/log.js","../../src/citation-js/core/Cite/validate.js","../../src/citation-js/core/Cite/options.js","../../src/citation-js/core/plugins/input/dataType.js","../../src/citation-js/core/plugins/input/graph.js","../../src/citation-js/core/logger.js","../../src/citation-js/core/plugins/input/type.js","../../src/citation-js/core/plugins/input/parser.js","../../src/citation-js/core/plugins/input/csl.js","../../src/citation-js/core/util/csl.js","../../src/citation-js/core/util/deepCopy.js","../../node_modules/webidl-conversions/lib/index.js","../../node_modules/whatwg-url/lib/utils.js","../../node_modules/tr46/index.js","../../node_modules/whatwg-url/lib/url-state-machine.js","../../node_modules/whatwg-url/lib/URL-impl.js","../../node_modules/whatwg-url/lib/URL.js","../../node_modules/whatwg-url/lib/public-api.js","../../node_modules/node-fetch/lib/index.mjs","../../node_modules/sync-fetch/shared.js","../../node_modules/sync-fetch/index.js","../../node_modules/fetch-ponyfill/node_modules/node-fetch/lib/index.mjs","../../node_modules/fetch-ponyfill/fetch-node.js","../../src/citation-js/core/util/fetchFile.js","../../src/citation-js/core/util/fetchId.js","../../src/citation-js/core/util/register.js","../../src/citation-js/core/util/grammar.js","../../src/citation-js/core/util/translator.js","../../src/citation-js/core/plugins/input/chain.js","../../src/citation-js/core/plugins/input/data.js","../../src/citation-js/core/plugins/input/register.js","../../src/citation-js/core/plugins/input/index.js","../../src/citation-js/core/Cite/set.js","../../src/citation-js/core/plugin-common/output/label.js","../../src/citation-js/core/Cite/sort.js","../../src/citation-js/core/plugins/output.js","../../src/citation-js/core/Cite/get.js","../../src/citation-js/core/Cite/async.js","../../src/citation-js/core/Cite/index.js","../../src/citation-js/core/plugins/dict.js","../../src/citation-js/core/plugins/config.js","../../src/citation-js/core/plugins/index.js","../../src/citation-js/core/plugin-common/input/empty.js","../../src/citation-js/core/plugin-common/input/json.js","../../src/citation-js/core/plugin-common/input/jquery.js","../../src/citation-js/core/plugin-common/input/html.js","../../src/citation-js/core/plugin-common/input/index.js","../../src/citation-js/core/plugin-common/output/json.js","../../src/citation-js/core/plugin-common/output/index.js","../../src/citation-js/core/plugin-common/index.js","../../src/citation-js/plugin-bibjson/json.js","../../src/citation-js/plugin-bibjson/index.js","../../node_modules/moo/moo.js","../../src/citation-js/plugin-bibtex/input/required.js","../../src/citation-js/plugin-bibtex/input/fieldTypes.js","../../src/citation-js/plugin-bibtex/input/unicode.js","../../src/citation-js/plugin-bibtex/input/constants.js","../../src/citation-js/plugin-bibtex/input/file.js","../../src/citation-js/plugin-bibtex/input/bibtxt.js","../../src/citation-js/plugin-bibtex/mapping/biblatexTypes.js","../../src/citation-js/plugin-bibtex/mapping/bibtexTypes.js","../../src/citation-js/plugin-bibtex/config.js","../../src/citation-js/plugin-bibtex/mapping/shared.js","../../src/citation-js/plugin-bibtex/mapping/biblatex.js","../../src/citation-js/plugin-bibtex/mapping/bibtex.js","../../src/citation-js/plugin-bibtex/mapping/index.js","../../src/citation-js/plugin-bibtex/input/name.js","../../src/citation-js/plugin-bibtex/input/value.js","../../src/citation-js/plugin-bibtex/input/entries.js","../../src/citation-js/plugin-bibtex/input/index.js","../../src/citation-js/plugin-bibtex/output/value.js","../../src/citation-js/plugin-bibtex/output/entries.js","../../src/citation-js/plugin-bibtex/output/bibtex.js","../../src/citation-js/plugin-bibtex/output/bibtxt.js","../../src/citation-js/plugin-bibtex/output/index.js","../../src/citation-js/plugin-bibtex/index.js","../../src/citation-js/plugin-csl/locales.js","../../src/citation-js/plugin-csl/styles.js","../../src/citation-js/plugin-csl/engines.js","../../src/citation-js/plugin-csl/attr.js","../../src/citation-js/plugin-csl/bibliography.js","../../src/citation-js/plugin-csl/citation.js","../../src/citation-js/plugin-csl/index.js","../../src/citation-js/plugin-yaml/index.js","../../src/citation-js/plugin-cff/index.js","../../src/cite.js","../../styles/mla.js","../../styles/chicago.js","../../styles/harvard1.js","../../styles/vancouver.js","../../src/index.js"],"sourcesContent":["// Regex adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n\n/**\n * Citation detection: The first alternative matches \"full\" citations surrounded\n * by square brackets, whereas the second one matches in-text citations,\n * optionally with suffixes.\n *\n * * Group 1 matches regular \"full\" citations\n * * Group 2 matches in-text citations (not surrounded by brackets)\n * * Group 3 matches optional square-brackets suffixes to group 2 matches\n *\n * For more information, see https://pandoc.org/MANUAL.html#extension-citations\n *\n * @var {RegExp}\n */\nexport const citationRE =\n /(?:\\[([^[\\]]*@[^[\\]]+)\\])|(?<=\\s|^|(-))(?:@([\\p{L}\\d_][^\\s]*[\\p{L}\\d_]|\\{.+\\})(?:\\s+\\[(.*?)\\])?)/u\n\n/**\n * I hate everything at this. This can match every single possible variation on\n * whatever the f*** you can possibly do within square brackets according to the\n * documentation. I opted for named groups for these because otherwise I have no\n * idea what I have been doing here.\n *\n * * Group prefix: Contains the prefix, ends with a dash if we should suppress the author\n * * Group citekey: Contains the actual citekey, can be surrounded in curly brackets\n * * Group explicitLocator: Contains an explicit locator statement. If given, we MUST ignore any form of locator in the suffix\n * * Group explicitLocatorInSuffix: Same as above, but not concatenated to the citekey\n * * Group suffix: Contains the suffix, but may start with a locator (if explicitLocator and explicitLocatorInSuffix are not given)\n *\n * @var {RegExp}\n */\nexport const fullCitationRE =\n /(?.+)?(?:@(?[\\p{L}\\d_][^\\s{]*[\\p{L}\\d_]|\\{.+\\}))(?:\\{(?.*)\\})?(?:,\\s+(?:\\{(?.*)\\})?(?.*))?/u\n\n/**\n * This regular expression matches locator ranges, like the following:\n *\n * * 23-45, and further (here it matches up to, not including the comma)\n * * 45\n * * 15423\n * * 14235-12532\n * * 12-34, 23, 56\n * * 12, 23-14, 23\n * * 12, 54, 12-23\n * * 1, 1-4\n * * 3\n * * NEW NEW NEW: Now also matches Roman numerals as sometimes used in forewords!\n *\n * @var {RegExp}\n */\nexport const locatorRE = /^(?:[\\d, -]*\\d|[ivxlcdm, -]*[ivxlcdm])/i\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').CiteItemSuffix} CiteItemSuffix\n */\n\nimport { fullCitationRE, locatorRE } from './regex.js'\n\n/**\n * The locatorLabels have been sourced from the Citr library. Basically it's just\n * a map with valid CSL locator labels and an array of possible natural labels\n * which a user might want to write (instead of the standardized labels).\n *\n * @var {{ [key: string]: string[] }}}\n */\nconst locatorLabels = {\n book: ['Buch', 'Bücher', 'B.', 'book', 'books', 'bk.', 'bks.', 'livre', 'livres', 'liv.'],\n chapter: ['Kapitel', 'Kap.', 'chapter', 'chapters', 'chap.', 'chaps', 'chapitre', 'chapitres'],\n column: ['Spalte', 'Spalten', 'Sp.', 'column', 'columns', 'col.', 'cols', 'colonne', 'colonnes'],\n figure: ['Abbildung', 'Abbildungen', 'Abb.', 'figure', 'figures', 'fig.', 'figs'],\n folio: ['Blatt', 'Blätter', 'Fol.', 'folio', 'folios', 'fol.', 'fols', 'fᵒ', 'fᵒˢ'],\n issue: [\n 'Nummer',\n 'Nummern',\n 'Nr.',\n 'number',\n 'numbers',\n 'no.',\n 'nos.',\n 'numéro',\n 'numéros',\n 'nᵒ',\n 'nᵒˢ',\n ],\n line: ['Zeile', 'Zeilen', 'Z', 'line', 'lines', 'l.', 'll.', 'ligne', 'lignes'],\n note: ['Note', 'Noten', 'N.', 'note', 'notes', 'n.', 'nn.'],\n opus: ['Opus', 'Opera', 'op.', 'opus', 'opera', 'opp.'],\n page: ['Seite', 'Seiten', 'S.', 'page', 'pages', 'p.', 'pp.'],\n paragraph: [\n 'Absatz',\n 'Absätze',\n 'Abs.',\n '¶',\n '¶¶',\n 'paragraph',\n 'paragraphs',\n 'para.',\n 'paras',\n 'paragraphe',\n 'paragraphes',\n 'paragr.',\n ],\n part: ['Teil', 'Teile', 'part', 'parts', 'pt.', 'pts', 'partie', 'parties', 'part.'],\n section: [\n 'Abschnitt',\n 'Abschnitte',\n 'Abschn.',\n '§',\n '§§',\n 'section',\n 'sections',\n 'sec.',\n 'secs',\n 'sect.',\n ],\n 'sub verbo': ['sub verbo', 'sub verbis', 's. v.', 's. vv.', 's.v.', 's.vv.'],\n verse: ['Vers', 'Verse', 'V.', 'verse', 'verses', 'v.', 'vv.', 'verset', 'versets'],\n volume: ['Band', 'Bände', 'Bd.', 'Bde.', 'volume', 'volumes', 'vol.', 'vols.'],\n}\n\n/**\n * Parses a given citation string and return entries and isComposite flag required for cite-proc.\n * Adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n *\n * @param {RegExpMatchArray} regexMatch Cite string in the form of '[@item]' or '@item'\n * @return {[CiteItem[], boolean]} [entries, isComposite]\n */\nexport const parseCitation = (regexMatch) => {\n /** @type {CiteItem[]} */\n let entries = []\n let isComposite = false\n const fullCitation = regexMatch[1]\n const inTextSuppressAuthor = regexMatch[2]\n const inTextCitation = regexMatch[3]\n const optionalSuffix = regexMatch[4]\n\n if (fullCitation !== undefined) {\n // Handle citations in the form of [@item1; @item2]\n for (const citationPart of fullCitation.split(';')) {\n const match = fullCitationRE.exec(citationPart.trim())\n if (match === null) {\n continue // Faulty citation\n }\n // Prefix is the portion before @ e.g. [see @item1] or an empty string\n // We explicitly cast groups since we have groups in our RegExp and as\n // such the groups object will be set.\n /** @type {CiteItem} */\n const thisCitation = {\n id: match.groups.citekey.replace(/{(.+)}/, '$1'),\n prefix: undefined,\n locator: undefined,\n label: 'page',\n 'suppress-author': false,\n suffix: undefined,\n }\n\n // First, deal with the prefix. The speciality here is that it can\n // indicate if we should suppress the author.\n const rawPrefix = match.groups.prefix\n if (rawPrefix !== undefined) {\n thisCitation['suppress-author'] = rawPrefix.trim().endsWith('-')\n if (thisCitation['suppress-author']) {\n thisCitation.prefix = rawPrefix.substring(0, rawPrefix.trim().length - 1).trim()\n } else {\n thisCitation.prefix = rawPrefix.trim()\n }\n }\n\n // Second, deal with the suffix. This one can be much more tricky than\n // the prefix. We have three alternatives where the locator may be\n // present: If we have an explicitLocator or an explicitLocatorInSuffix,\n // we should extract the locator from there and leave the actual suffix\n // untouched. Only if those two alternatives are not present, then we\n // have a look at the rawSuffix and extract a (potential) locator.\n const explicitLocator = match.groups.explicitLocator\n const explicitLocatorInSuffix = match.groups.explicitLocatorInSuffix\n const rawSuffix = match.groups.suffix\n\n let suffixToParse\n let containsLocator = true\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n // Potential locator in rawSuffix. Only in this case should we overwrite\n // the suffix (hence the same if-condition below)\n suffixToParse = rawSuffix\n containsLocator = false\n } else if (explicitLocatorInSuffix !== undefined || explicitLocator !== undefined) {\n suffixToParse = explicitLocator !== undefined ? explicitLocator : explicitLocatorInSuffix\n thisCitation.suffix = rawSuffix?.trim()\n }\n\n const { label, locator, suffix } = parseSuffix(suffixToParse, containsLocator)\n thisCitation.locator = locator\n\n if (label !== undefined) {\n thisCitation.label = label\n }\n\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n thisCitation.suffix = suffix\n } else if (suffix !== undefined && thisCitation.locator !== undefined) {\n // If we're here, we should not change the suffix, but parseSuffix may\n // have put something into the suffix return. If we're here, that will\n // definitely be a part of the locator.\n thisCitation.locator += suffix\n }\n\n entries.push(thisCitation)\n }\n } else {\n // We have an in-text citation, so we can take a shortcut\n isComposite = true\n entries.push({\n prefix: undefined,\n id: inTextCitation.replace(/{(.+)}/, '$1'),\n 'suppress-author': inTextSuppressAuthor !== undefined,\n ...parseSuffix(optionalSuffix, false), // Populate more depending on the suffix\n })\n }\n return [entries, isComposite]\n}\n\n/**\n * This takes a suffix and extracts optional label and locator from this. Pass\n * true for the containsLocator property to indicate to this function that what\n * it got was not a regular suffix with an optional locator, but an explicit\n * locator so it knows it just needs to look for an optional label.\n *\n * @param {string} suffix The suffix to parse\n * @param {boolean} containsLocator If true, forces parseSuffix to return a locator\n *\n * @return {CiteItemSuffix} An object containing three optional properties locator, label, or suffix.\n */\nfunction parseSuffix(suffix, containsLocator) {\n /** @type {CiteItemSuffix} */\n const retValue = {\n locator: undefined,\n label: 'page',\n suffix: undefined,\n }\n\n if (suffix === undefined) {\n return retValue\n }\n\n // Make sure the suffix does not start or end with spaces\n suffix = suffix.trim()\n\n // If there is a label, the suffix must start with it\n for (const label in locatorLabels) {\n for (const natural of locatorLabels[label]) {\n if (suffix.toLowerCase().startsWith(natural.toLowerCase())) {\n retValue.label = label\n if (containsLocator) {\n // The suffix actually is the full locator, we just had to extract\n // the label from it. There is no remaining suffix.\n retValue.locator = suffix.substr(natural.length).trim()\n } else {\n // The caller indicated that this is a regular suffix, so we must also\n // extract the locator from what is left after label extraction.\n retValue.suffix = suffix.substr(natural.length).trim()\n const match = locatorRE.exec(retValue.suffix)\n if (match !== null) {\n retValue.locator = match[0] // Extract the full match\n retValue.suffix = retValue.suffix.substr(match[0].length).trim()\n }\n }\n\n return retValue // Early exit\n }\n }\n }\n\n // If we're here, there was no explicit label given, but the caller has indicated\n // that this suffix MUST contain a locator. This means that the whole suffix is\n // the locator.\n if (containsLocator) {\n retValue.locator = suffix\n } else {\n // The caller has not indicated that the whole suffix is the locator, so it\n // can be at the beginning. We only accept simple page/number ranges here.\n // For everything, the user should please be more specific.\n const match = locatorRE.exec(suffix)\n if (match !== null) {\n retValue.locator = match[0] // Full match is the locator\n retValue.suffix = suffix.substr(match[0].length).trim() // The rest is the suffix.\n }\n }\n\n return retValue\n}\n","import fetch from 'cross-fetch'\n\nexport const isNode = typeof window === 'undefined'\n\nexport const readFile = async (path) => {\n if (isValidHttpUrl(path)) {\n return fetch(path)\n .then((response) => response.text())\n .then((data) => data)\n } else {\n if (isNode) {\n return import('fs').then((fs) => fs.readFileSync(path, 'utf8'))\n } else {\n throw new Error(`Cannot read non valid URL in node env.`)\n }\n }\n}\n\n/**\n * Check if valid URL\n * https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n *\n * @param {string} str\n * @return {boolean}\n */\nexport const isValidHttpUrl = (str) => {\n let url\n\n try {\n url = new URL(str)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n\n/**\n * Get bibliography by merging options and vfile data\n *\n * @param {import('./generator.js').Options} options\n * @param {import('vfile').VFile} file\n */\nexport const getBibliography = async (options, file) => {\n /** @type {string[]} */\n let bibliography = []\n if (options.bibliography) {\n bibliography =\n typeof options.bibliography === 'string' ? [options.bibliography] : options.bibliography\n // @ts-ignore\n } else if (file?.data?.frontmatter?.bibliography) {\n // @ts-ignore\n bibliography =\n typeof file.data.frontmatter.bibliography === 'string'\n ? [file.data.frontmatter.bibliography]\n : file.data.frontmatter.bibliography\n // If local path, get absolute path\n for (let i = 0; i < bibliography.length; i++) {\n if (!isValidHttpUrl(bibliography[i])) {\n if (isNode) {\n bibliography[i] = await import('path').then((path) =>\n path.join(options.path || file.cwd, bibliography[i])\n )\n } else {\n throw new Error(`Cannot read non valid bibliography URL in node env.`)\n }\n }\n }\n }\n\n return bibliography\n}\n\n/**\n * Load CSL - supports predefined name from config.templates.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format CSL name e.g. apa or file path to CSL file\n * @param {string} root optional root path\n */\nexport const loadCSL = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.templates.data).includes(format)) {\n const cslName = `customCSL-${Math.random().toString(36).slice(2, 7)}`\n let cslPath = ''\n if (isValidHttpUrl(format)) cslPath = format\n else {\n if (isNode) cslPath = await import('path').then((path) => path.join(root, format))\n }\n try {\n config.templates.add(cslName, await readFile(cslPath))\n } catch (err) {\n throw new Error(`Input CSL option, ${format}, is invalid or is an unknown file.`)\n }\n return cslName\n } else {\n return format\n }\n}\n\n/**\n * Load locale - supports predefined name from config.locales.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format locale name\n * @param {string} root optional root path\n */\nexport const loadLocale = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.locales.data).includes(format)) {\n let localePath = ''\n if (isValidHttpUrl(format)) localePath = format\n else {\n if (isNode) localePath = await import('path').then((path) => path.join(root, format))\n }\n try {\n const file = await readFile(localePath)\n const xmlLangRe = /xml:lang=\"(.+)\"/\n const localeName = file.match(xmlLangRe)[1]\n config.locales.add(localeName, file)\n return localeName\n } catch (err) {\n throw new Error(`Input locale option, ${format}, is invalid or is an unknown file.`)\n }\n } else {\n return format\n }\n}\n\n/**\n * Get citation format\n *\n * @param {*} citeproc citeproc\n * @returns string\n */\nexport const getCitationFormat = (citeproc) => {\n const info = citeproc.cslXml.dataObj.children[0]\n const node = info.children.find((x) => x['attrs'] && x['attrs']['citation-format'])\n // citation-format takes 5 possible values\n // https://docs.citationstyles.org/en/stable/specification.html#toc-entry-14\n /** @type {'author-date' | 'author' | 'numeric' | 'note' | 'label'} */\n const citationFormat = node['attrs']['citation-format']\n return citationFormat\n}\n\n/**\n * Get registry objects that matches a list of relevantIds\n * If sorted is false, retrieve registry item in the order of the given relevantIds\n *\n * @param {*} citeproc citeproc\n * @param {string[]} relevantIds\n * @param {boolean} sorted\n * @return {*} registry objects that matches Ids, in the correct order\n */\nexport const getSortedRelevantRegistryItems = (citeproc, relevantIds, sorted) => {\n const res = []\n if (sorted) {\n // If sorted follow registry order\n for (const item of citeproc.registry.reflist) {\n if (relevantIds.includes(item.id)) res.push(item)\n }\n } else {\n // Otherwise follow the relevantIds\n for (const id of relevantIds) {\n res.push(citeproc.registry.reflist.find((x) => x.id === id))\n }\n }\n return res\n}\n\n/**\n * Split a string into two parts based on a given index position\n *\n * @param {string} str\n * @param {number} index\n * @return {string[]}\n */\nexport const split = (str, index) => {\n return [str.slice(0, index), str.slice(index)]\n}\n\n/**\n * Check if two registry objects belong to the same author\n * Currently only checks on family name\n *\n * @param {*} item registry object\n * @param {*} item2 registry object\n * @return {boolean}\n */\nexport const isSameAuthor = (item, item2) => {\n const authorList = item.ref.author\n const authorList2 = item2.ref.author\n if (authorList.length !== authorList2.length) return false\n for (let i = 0; i < authorList.length; i++) {\n if (authorList[i].family !== authorList2[i].family) return false\n }\n return true\n}\n","import { parseFragment } from 'parse5'\nimport { fromParse5 } from 'hast-util-from-parse5'\n\n/**\n * Convert HTML to HAST node\n *\n * @param {string} html\n */\nexport const htmlToHast = (html) => {\n const p5ast = parseFragment(html)\n // @ts-ignore\n return fromParse5(p5ast).children[0]\n}\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport { getSortedRelevantRegistryItems, split, isSameAuthor } from './utils.js'\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate citation using citeproc\n * This accounts for prev citations and additional properties\n *\n * @param {*} citeproc\n * @param {Mode} mode\n * @param {CiteItem[]} entries\n * @param {string} citationIdRoot\n * @param {number} citationId\n * @param {any[]} citationPre\n * @param {Options} options\n * @param {boolean} isComposite\n * @param {import('./types').CitationFormat} citationFormat\n * @return {[string, string]}\n */\nexport const genCitation = (\n citeproc,\n mode,\n entries,\n citationIdRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n) => {\n const { inlineClass, linkCitations } = options\n const key = `${citationIdRoot}-${citationId}`\n const c = citeproc.processCitationCluster(\n {\n citationID: key,\n citationItems: entries,\n properties:\n mode === 'in-text'\n ? { noteIndex: 0, mode: isComposite ? 'composite' : '' }\n : { noteIndex: citationId, mode: isComposite ? 'composite' : '' },\n },\n citationPre.length > 0 ? citationPre : [],\n []\n )\n // c = [ { bibchange: true, citation_errors: [] }, [ [ 0, '(1)', 'CITATION-1' ] ]]\n\n const citationText = c[1].find((x) => x[2] === key)[1]\n const ids = `citation--${entries.map((x) => x.id.toLowerCase()).join('--')}--${citationId}`\n if (mode === 'note') {\n // Use cite-fn-{id} to denote footnote from citation, will clean it up later to follow gfm \"user-content\" format\n return [\n citationText,\n htmlToHast(\n `${citationId}`\n ),\n ]\n } else if (linkCitations && citationFormat === 'numeric') {\n // e.g. [1, 2]\n let i = 0\n const refIds = entries.map((e) => e.id)\n const output = citationText.replace(/\\d+/g, function (d) {\n const url = `${d}`\n i++\n return url\n })\n\n return [\n citationText,\n htmlToHast(`${output}`),\n ]\n } else if (linkCitations && citationFormat === 'author-date') {\n // E.g. (see Nash, 1950, pp. 12–13, 1951); (Nash, 1950; Xie, 2016)\n if (entries.length === 1) {\n // Do not link bracket\n const output = isComposite\n ? `${citationText}`\n : `${citationText.slice(\n 0,\n 1\n )}${citationText.slice(\n 1,\n -1\n )}${citationText.slice(-1)}`\n return [\n citationText,\n htmlToHast(`${output}`),\n ]\n } else {\n // Retrieve the items in the correct order and attach link each of them\n const refIds = entries.map((e) => e.id)\n const results = getSortedRelevantRegistryItems(citeproc, refIds, citeproc.opt.sort_citations)\n const output = []\n let str = citationText\n\n for (const [i, item] of results.entries()) {\n // Need to compare author. If same just match on date.\n const id = item.id\n let citeMatch = item.ambig\n // If author is the same as the previous, some styles like apa collapse the author\n if (i > 0 && isSameAuthor(results[i - 1], item) && str.indexOf(citeMatch) === -1) {\n // Just match on year\n citeMatch = item.ref.issued.year.toString()\n }\n const startPos = str.indexOf(citeMatch)\n const [start, rest] = split(str, startPos)\n output.push(start) // Irrelevant parts\n const url = `${rest.substring(0, citeMatch.length)}`\n output.push(url)\n str = rest.substr(citeMatch.length)\n }\n output.push(str)\n return [\n citationText,\n htmlToHast(\n `${output.join('')}`\n ),\n ]\n }\n } else {\n return [\n citationText,\n htmlToHast(`${citationText}`),\n ]\n }\n}\n","import { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate bibliography in html and convert it to hast\n *\n * @param {*} citeproc\n */\nexport const genBiblioNode = (citeproc) => {\n const [params, bibBody] = citeproc.makeBibliography()\n const bibliography =\n '
\\n' + bibBody.join('') + '
'\n const biblioNode = htmlToHast(bibliography)\n\n // Add citekey id to each bibliography entry.\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node, i) => {\n const citekey = params.entry_ids[i][0].toLowerCase()\n node.properties = node.properties || {}\n node.properties.id = 'bib-' + citekey\n })\n return biblioNode\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n */\n\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Create new footnote section node based on footnoteArray mappings\n *\n * @param {{int: string}} citationDict\n * @param {{type: 'citation' | 'existing', oldId: string}[]} footnoteArray\n * @param {Element | undefined} footnoteSection\n * @return {Element}\n */\nexport const genFootnoteSection = (citationDict, footnoteArray, footnoteSection) => {\n /** @type {Element} */\n const list = {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: [{ type: 'text', value: '\\n' }],\n }\n let oldFootnoteList\n if (footnoteSection) {\n /** @type {Element} */ // @ts-ignore - for some reason, the type does not narrow even after filtering\n oldFootnoteList = footnoteSection.children.filter(n => (n.type == \"element\")).find((n) => (n.tagName === 'ol'))\n }\n for (const [idx, item] of footnoteArray.entries()) {\n const { type, oldId } = item\n if (type === 'citation') {\n list.children.push({\n type: 'element',\n tagName: 'li',\n properties: { id: `user-content-fn-${idx + 1}` },\n children: [\n {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: [\n htmlToHast(`${citationDict[oldId]}`),\n {\n type: 'element',\n tagName: 'a',\n properties: {\n href: `#user-content-fnref-${idx + 1}`,\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: 'Back to content',\n },\n children: [{ type: 'text', value: '↩' }],\n },\n ],\n },\n { type: 'text', value: '\\n' },\n ],\n })\n } else if (type === 'existing') {\n // @ts-ignore\n const liNode = oldFootnoteList.children.find(\n (n) => n.tagName === 'li' && n.properties.id === `user-content-fn-${oldId}`\n )\n liNode.properties.id = `user-content-fn-${idx + 1}`\n const aNode = liNode.children[1].children.find((n) => n.tagName === 'a')\n aNode.properties.href = `#user-content-fnref-${idx + 1}`\n list.children.push(liNode)\n }\n }\n\n /** @type {Element} */\n const newfootnoteSection = {\n type: 'element',\n tagName: 'section',\n properties: { dataFootnotes: true, className: ['footnotes'] },\n children: [\n {\n type: 'element',\n tagName: 'h2',\n properties: { className: ['sr-only'], id: 'footnote-label' },\n children: [{ type: 'text', value: 'Footnotes' }],\n },\n { type: 'text', value: '\\n' },\n list,\n ],\n }\n return newfootnoteSection\n}\n","/**\n * @typedef {import('hast').Node} Node\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {import('unist-util-visit').Visitor} Visitor\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport { visit } from 'unist-util-visit'\nimport fetch from 'cross-fetch'\nimport { parseCitation } from './parse-citation.js'\nimport { genCitation } from './gen-citation.js'\nimport { genBiblioNode } from './gen-biblio.js'\nimport { genFootnoteSection } from './gen-footnote.js'\nimport { citationRE } from './regex.js'\nimport {\n isNode,\n isValidHttpUrl,\n readFile,\n getBibliography,\n loadCSL,\n loadLocale,\n getCitationFormat,\n} from './utils.js'\n\nconst defaultCiteFormat = 'apa'\nconst permittedTags = ['div', 'p', 'span', 'li', 'td', 'th']\nconst idRoot = 'CITATION'\n\n/**\n * Rehype plugin that formats citations in markdown documents and insert bibliography in html format\n *\n * [-@wadler1990] --> (1990)\n * [@hughes1989, sec 3.4] --> (Hughes 1989, sec 3.4)\n * [see @wadler1990; and @hughes1989, pp. 4] --> (see Wadler 1990 and Hughes 1989, pp. 4)\n *\n * @param {*} Cite cite object from citation-js configured with the required CSLs\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypeCitationGenerator = (Cite) => {\n return (options = {}) => {\n return async (tree, file) => {\n /** @type {string[]} */\n let bibtexFile = []\n /** @type {string} */ // @ts-ignore\n const inputCiteformat = options.csl || file?.data?.frontmatter?.csl || defaultCiteFormat\n const inputLang = options.lang || 'en-US'\n const config = Cite.plugins.config.get('@csl')\n const citeFormat = await loadCSL(Cite, inputCiteformat, options.path)\n const lang = await loadLocale(Cite, inputLang, options.path)\n\n let bibliography = await getBibliography(options, file)\n if (bibliography.length === 0) {\n return\n }\n\n for (let i = 0; i < bibliography.length; i++) {\n if (isValidHttpUrl(bibliography[i])) {\n const response = await fetch(bibliography[i])\n bibtexFile.push(await response.text())\n } else {\n if (isNode) {\n bibtexFile.push(await readFile(bibliography[i]))\n } else {\n throw new Error(`Cannot read non valid bibliography URL in node env.`)\n }\n }\n }\n const citations = new Cite(bibtexFile)\n const citationIds = citations.data.map((x) => x.id)\n const citationPre = []\n const citationDict = {}\n let citationId = 1\n const citeproc = config.engine(citations.data, citeFormat, lang, 'html')\n /** @type {Mode} */\n const mode = citeproc.opt.xclass\n const citationFormat = getCitationFormat(citeproc)\n\n visit(tree, 'text', (node, idx, parent) => {\n const match = node.value.match(citationRE)\n if (!match || ('tagName' in parent && !permittedTags.includes(parent.tagName))) return\n let citeStartIdx = match.index\n let citeEndIdx = match.index + match[0].length\n // If we have an in-text citation and we should suppress the author, the\n // match.index does NOT include the positive lookbehind, so we have to manually\n // shift \"from\" to one before.\n if (match[2] !== undefined) {\n citeStartIdx--\n }\n const newChildren = []\n // if preceding string\n if (citeStartIdx !== 0) {\n // create a new child node\n newChildren.push({\n type: 'text',\n value: node.value.slice(0, citeStartIdx),\n })\n }\n\n const [entries, isComposite] = parseCitation(match)\n\n // If id is not in citation file (e.g. route alias or js package), abort process\n for (const citeItem of entries) {\n if (!citationIds.includes(citeItem.id)) return\n }\n const [citedText, citedTextNode] = genCitation(\n citeproc,\n mode,\n entries,\n idRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n )\n citationDict[citationId] = citedText\n\n // Prepare citationPre and citationId for the next cite instance\n citationPre.push([`${idRoot}-${citationId}`, 0])\n citationId = citationId + 1\n\n newChildren.push(citedTextNode)\n\n // if trailing string\n if (citeEndIdx < node.value.length) {\n newChildren.push({\n type: 'text',\n value: node.value.slice(citeEndIdx),\n })\n }\n\n // insert into the parent\n // @ts-ignore\n parent.children = [\n ...parent.children.slice(0, idx),\n ...newChildren,\n ...parent.children.slice(idx + 1),\n ]\n })\n\n if (options.noCite) {\n citeproc.updateItems(options.noCite.map((x) => x.replace('@', '')))\n }\n\n if (\n citeproc.registry.mylist.length >= 1 &&\n (!options.suppressBibliography || options.inlineBibClass?.length > 0)\n ) {\n const biblioNode = genBiblioNode(citeproc)\n let bilioInserted = false\n\n const biblioMap = {}\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node) => {\n const citekey = node.properties.id.split('-').slice(1).join('-')\n biblioMap[citekey] = { ...node }\n biblioMap[citekey].properties = { id: 'inlinebib-' + citekey }\n })\n\n // Insert it at ^ref, if not found insert it as the last element of the tree\n visit(tree, 'element', (node, idx, parent) => {\n // Add inline bibliography\n if (\n options.inlineBibClass?.length > 0 &&\n node.properties?.id?.toString().startsWith('citation-')\n ) {\n // id is citation--nash1951--nash1950--1\n const [, ...citekeys] = node.properties.id.toString().split('--')\n const citationID = citekeys.pop()\n\n /** @type {Element} */\n const inlineBibNode = {\n type: 'element',\n tagName: 'div',\n properties: {\n className: options.inlineBibClass,\n id: `inlineBib--${citekeys.join('--')}--${citationID}`,\n },\n children: citekeys.map((citekey) => {\n const aBibNode = biblioMap[citekey]\n aBibNode.properties = {\n class: 'inline-entry',\n id: `inline--${citekey}--${citationID}`,\n }\n return aBibNode\n }),\n }\n parent.children.push(inlineBibNode)\n }\n\n // Add bibliography\n if (\n !options.suppressBibliography &&\n (node.tagName === 'p' || node.tagName === 'div') &&\n node.children.length >= 1 &&\n node.children[0].type === 'text' &&\n node.children[0].value === '[^ref]'\n ) {\n parent.children[idx] = biblioNode\n bilioInserted = true\n }\n })\n\n if (!options.suppressBibliography && !bilioInserted) {\n tree.children.push(biblioNode)\n }\n }\n\n let footnoteSection\n visit(tree, 'element', (node, index, parent) => {\n if (node.tagName === 'section' && node.properties.dataFootnotes) {\n footnoteSection = node\n parent.children.splice(index, 1)\n }\n })\n\n // Need to adjust footnote numbering based on existing ones already assigned\n // And insert them into the footnote section (if exists)\n // Footnote comes after bibliography\n if (mode === 'note' && Object.keys(citationDict).length > 0) {\n /** @type {{type: 'citation' | 'existing', oldId: string}[]} */\n let fnArray = []\n let index = 1\n visit(tree, 'element', (node) => {\n if (node.tagName === 'sup' && node.children[0].type === 'element') {\n let nextNode = node.children[0]\n if (nextNode.tagName === 'a') {\n /** @type {{href: string, id: string}} */ // @ts-ignore\n const { href, id } = nextNode.properties\n if (href.includes('fn') && id.includes('fnref')) {\n const oldId = href.split('-').pop()\n fnArray.push({\n type: href.includes('cite') ? 'citation' : 'existing',\n oldId,\n })\n // Update ref number\n nextNode.properties.href = `#user-content-fn-${index}`\n nextNode.properties.id = `user-content-fnref-${index}`\n // @ts-ignore\n nextNode.children[0].value = index.toString()\n index += 1\n }\n }\n }\n })\n // @ts-ignore\n const newFootnoteSection = genFootnoteSection(citationDict, fnArray, footnoteSection)\n tree.children.push(newFootnoteSection)\n } else {\n if (footnoteSection) tree.children.push(footnoteSection)\n }\n }\n }\n}\n\nexport default rehypeCitationGenerator\n","// @ts-nocheck\n/**\n * @memberof module: @citation-js / core.Cite#\n *\n * @return {Number} The latest version of the object\n */\nfunction currentVersion() {\n return this.log.length\n}\n\n/**\n * Returns an image of the object in the version specified.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {Number} [versnum=1] - The number of the version you want to retrieve. Illegal numbers: numbers under or equal to zero, floats, numbers above the current version of the object.\n *\n * @return {module:@citation-js/core.Cite} The version of the object with the version number passed. `undefined` if an illegal number is passed.\n */\nfunction retrieveVersion(versnum = 1) {\n if (versnum <= 0 || versnum > this.currentVersion()) {\n return null\n } else {\n const [data, options] = this.log[versnum - 1]\n const image = new this.constructor(JSON.parse(data), JSON.parse(options))\n image.log = this.log.slice(0, versnum)\n return image\n }\n}\n\n/**\n * Returns the second to last saved image of the object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {Number} [number=1] - number of versions to go back.\n *\n * @return {module:@citation-js/core.Cite} The second to last version of the object. `undefined` if used on first version.\n */\nfunction undo(number = 1) {\n return this.retrieveVersion(this.currentVersion() - number)\n}\n\n/**\n * Returns the last saved image of the object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @return {module:@citation-js/core.Cite} The last version of the object. `undefined` if used on first version.\n */\nfunction retrieveLastVersion() {\n return this.retrieveVersion(this.currentVersion())\n}\n\n/**\n * Save an image of the current version of the object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @return {module:@citation-js/core.Cite} The current version of the object.\n */\nfunction save() {\n this.log.push([JSON.stringify(this.data), JSON.stringify(this._options)])\n\n return this\n}\n\nexport { currentVersion, retrieveVersion, retrieveLastVersion, undo, save }\n","// @ts-nocheck\nconst formats = ['real', 'string']\nconst types = ['json', 'html', 'string', 'rtf']\nconst styles = ['csl', 'bibtex', 'bibtxt', 'citation-*', 'ris', 'ndjson']\nconst wrapperTypes = ['string', 'function']\n\n/**\n * @access public\n * @method validateOutputOptions\n * @memberof module:@citation-js/core.Cite\n *\n * @deprecated\n * @param {module:@citation-js/core~OutputOptions} - options\n *\n * @return {Boolean} true (if valid)\n * @throws {TypeError} Options not an object\n * @throws {TypeError} Invalid options\n * @throws {Error} Invalid options combination\n *\n * @todo check registers if styles and langs are present\n */\n/* istanbul ignore next: deprecated */\nexport function validateOutputOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options not an object!')\n }\n\n const { format, type, style, lang, append, prepend } = options\n\n if (format && !formats.includes(format)) {\n throw new TypeError(`Option format (\"${format}\") should be one of: ${formats}`)\n } else if (type && !types.includes(type)) {\n throw new TypeError(`Option type (\"${type}\") should be one of: ${types}`)\n } else if (style && !styles.includes(style) && !/^citation/.test(style)) {\n throw new TypeError(`Option style (\"${style}\") should be one of: ${styles}`)\n } else if (lang && typeof lang !== 'string') {\n throw new TypeError(`Option lang should be a string, but is a ${typeof lang}`)\n } else if (prepend && !wrapperTypes.includes(typeof prepend)) {\n throw new TypeError(\n `Option prepend should be a string or a function, but is a ${typeof prepend}`\n )\n } else if (append && !wrapperTypes.includes(typeof append)) {\n throw new TypeError(`Option append should be a string or a function, but is a ${typeof append}`)\n }\n\n if (/^citation/.test(style) && type === 'json') {\n throw new Error(`Combination type/style of json/citation-* is not valid: ${type}/${style}`)\n }\n\n return true\n}\n\n/**\n * @access public\n * @method valdiateOptions\n * @memberof module:@citation-js/core.Cite\n *\n * @param {module:@citation-js/core~InputOptions} - options\n *\n * @return {Boolean} true (if valid)\n * @throws {TypeError} Options not an object\n * @throws {TypeError} Invalid options\n *\n * @todo check registers if type is present\n */\nexport function validateOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options should be an object')\n }\n\n /* istanbul ignore if: deprecated */\n if (options.output) {\n validateOutputOptions(options.output)\n } else if (options.maxChainLength && typeof options.maxChainLength !== 'number') {\n throw new TypeError('Option maxChainLength should be a number')\n } else if (options.forceType && typeof options.forceType !== 'string') {\n throw new TypeError('Option forceType should be a string')\n } else if (options.generateGraph != null && typeof options.generateGraph !== 'boolean') {\n throw new TypeError('Option generateGraph should be a boolean')\n } else if (options.strict != null && typeof options.strict !== 'boolean') {\n throw new TypeError('Option strict should be a boolean')\n } else if (options.target != null && typeof options.target !== 'string') {\n throw new TypeError('Option target should be a boolean')\n }\n\n return true\n}\n","import { validateOutputOptions as validate } from './validate.js'\n\n/**\n * @memberof module:@citation-js/core.Cite#\n *\n * @constant {module:@citation-js/core~OutputOptions} defaultOptions - default output options\n */\nconst defaultOptions = { format: 'real', type: 'json', style: 'csl', lang: 'en-US' }\n\n/**\n * Change the default options of a `Cite` object.\n *\n * @memberof Cite#\n *\n * @param {module:@citation-js/core~OutputOptions} options - The options for the output\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction options(options, log) {\n validate(options)\n\n if (log) {\n this.save()\n }\n\n Object.assign(this._options, options)\n\n return this\n}\n\nexport { options, defaultOptions }\n","/**\n * Gets the constructor name, with a special case for `null` and `undefined`\n *\n * @access public\n * @method typeOf\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {*} thing - input data or anything else\n *\n * @return {String} type\n */\nexport function typeOf(thing) {\n switch (thing) {\n case undefined:\n return 'Undefined'\n case null:\n return 'Null'\n default:\n return thing.constructor.name\n }\n}\n\n/**\n * @access public\n * @method dataTypeOf\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {*} thing - input data or anything else\n *\n * @return {module:@citation-js/core.plugins.input~dataType} dataType\n */\nexport function dataTypeOf(thing) {\n switch (typeof thing) {\n case 'string':\n return 'String'\n\n case 'object':\n if (Array.isArray(thing)) {\n return 'Array'\n } else if (typeOf(thing) === 'Object') {\n return 'SimpleObject'\n } else if (typeOf(thing) !== 'Null') {\n return 'ComplexObject'\n }\n // fall through when thing === null, return default value\n\n default:\n return 'Primitive'\n }\n}\n","/**\n * Apply a parse chain graph to an element\n *\n * @access protected\n * @method applyGraph\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {module:@citation-js/core~CSL} entry\n * @param {Array} graph\n *\n * @return {module:@citation-js/core~CSL} entry\n */\nexport function applyGraph(entry, graph) {\n if (entry._graph) {\n const index = graph.findIndex(({ type }) => type === '@else/list+object')\n if (index !== -1) {\n graph.splice(index + 1, 0, ...entry._graph.slice(0, -1))\n }\n }\n\n entry._graph = graph\n return entry\n}\n\n/**\n * Remove the parse chain graph from an element\n *\n * @access protected\n * @method removeGraph\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {module:@citation-js/core~CSL} entry\n *\n * @return {module:@citation-js/core~CSL} entry\n */\nexport function removeGraph(entry) {\n delete entry._graph\n return entry\n}\n","/**\n * @memberof module:@citation-js/core\n * @var {Object} logger\n * @property _output\n * @property {Console} _console\n * @property {Array} _log\n * @property {Array} _levels\n * @property {module:@citation-js/core~logLevel} level\n */\nconst logger = {\n _output(level, scope, msg) {\n this._log.push(scope, msg)\n\n if (this._levels.indexOf(level) < this._levels.indexOf(this.level)) {\n return\n }\n\n this._console.log(scope, ...msg)\n },\n _console: null,\n _log: [],\n\n /**\n * @typedef {String} module:@citation-js/core~logLevel\n */\n _levels: ['http', 'debug', 'unmapped', 'info', 'warn', 'error', 'silent'],\n\n level: 'silent',\n}\n\nfor (const level of logger._levels) {\n logger[level] = (scope, ...msg) => logger._output(level, scope, msg)\n}\n\nif (typeof console.Console === 'function') {\n logger._console = new console.Console(process.stderr)\n} else {\n logger._console = console\n}\n\nexport default logger\n","// @ts-nocheck\nimport logger from '../../logger.js'\nimport { dataTypeOf } from './dataType.js'\n\n// register\nconst types = {}\nconst dataTypes = {}\n\n// extensions not registered as such\nconst unregExts = {}\n\n/**\n * Hard-coded, for reasons\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input\n * @param {module:@citation-js/core.plugins.input~dataType} dataType\n * @return {module:@citation-js/core.plugins.input~format} native format\n */\nfunction parseNativeTypes(input, dataType) {\n switch (dataType) {\n case 'Array':\n if (input.length === 0 || input.every((entry) => type(entry) === '@csl/object')) {\n return '@csl/list+object'\n } else {\n return '@else/list+object'\n }\n\n case 'SimpleObject':\n case 'ComplexObject':\n // might, of course, be something completely else, but this is how the parser works\n return '@csl/object'\n\n default:\n return '@invalid'\n }\n}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {Array} [typeList=[]]\n * @param {module:@citation-js/core~InputData} data\n *\n * @return {module:@citation-js/core.plugins.input~format} native format\n */\nfunction matchType(typeList = [], data) {\n for (const type of typeList) {\n if (types[type].predicate(data)) {\n return matchType(types[type].extensions, data) || type\n }\n }\n}\n\n/**\n * @access public\n * @method type\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input\n *\n * @return {module:@citation-js/core.plugins.input~format} type\n */\nexport function type(input) {\n const dataType = dataTypeOf(input)\n\n // Empty array should be @csl/list+object too\n if (dataType === 'Array' && input.length === 0) {\n // Off-load to parseNativeTypes() to not repeat the name\n // '@csl/list+object' here as well, as it might change\n return parseNativeTypes(input, dataType)\n }\n\n const match = matchType(dataTypes[dataType], input)\n\n // If no matching formats found, test if native format,\n // else invalid input.\n return match || parseNativeTypes(input, dataType)\n}\n\n/**\n * @access public\n * @method addTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format\n * @param {module:@citation-js/core.plugins.input.util.TypeParser} typeParser\n */\nexport function addTypeParser(format, { dataType, predicate, extends: extend }) {\n // 1. check if any subclass formats are waiting for this format\n let extensions = []\n if (format in unregExts) {\n extensions = unregExts[format]\n delete unregExts[format]\n logger.debug(\n '[core]',\n `Subclasses \"${extensions}\" finally registered to parent type \"${format}\"`\n )\n }\n\n // 2. create object with parser info\n const object = { predicate, extensions }\n types[format] = object\n\n // 3. determine which type lists the type should be added to\n if (extend) {\n // 3.1. if format is subclass, check if parent type is registered\n const parentTypeParser = types[extend]\n\n if (parentTypeParser) {\n // 3.1.1. if it is, add the type parser\n parentTypeParser.extensions.push(format)\n } else {\n // 3.1.2. if it isn't, register type as waiting\n if (!unregExts[extend]) {\n unregExts[extend] = []\n }\n unregExts[extend].push(format)\n logger.debug('[core]', `Subclass \"${format}\" is waiting on parent type \"${extend}\"`)\n }\n } else {\n // 3.2. else, add\n const typeList = dataTypes[dataType] || (dataTypes[dataType] = [])\n typeList.push(format)\n }\n}\n\n/**\n * @access public\n * @method hasTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n *\n * @return {Boolean} type parser is registered\n */\nexport function hasTypeParser(type) {\n return Object.prototype.hasOwnProperty.call(types, type)\n}\n\n/**\n * @access public\n * @method removeTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n */\nexport function removeTypeParser(type) {\n delete types[type]\n\n // Removing orphaned type refs\n const typeLists = [\n ...Object.keys(dataTypes).map((key) => dataTypes[key]),\n ...Object.keys(types)\n .map((type) => types[type].extensions)\n .filter((list) => list.length > 0),\n ]\n typeLists.forEach((typeList) => {\n const index = typeList.indexOf(type)\n if (index > -1) {\n typeList.splice(index, 1)\n }\n })\n}\n\n/**\n * @access public\n * @method listTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @return {Array} list of registered type parsers\n */\nexport function listTypeParser() {\n return Object.keys(types)\n}\n\n/**\n * @access public\n * @method treeTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @return {Object} tree structure\n */\n/* istanbul ignore next: debugging */\nexport function treeTypeParser() {\n const attachNode = (name) => ({ name, children: types[name].extensions.map(attachNode) })\n return {\n name: 'Type tree',\n children: Object.keys(dataTypes).map((name) => ({\n name,\n children: dataTypes[name].map(attachNode),\n })),\n }\n}\n\n/**\n * Validate and parse the format name\n *\n * @access public\n * @method typeMatcher\n * @memberof module:@citation-js/core.plugins.input\n * @type {RegExp}\n */\nexport const typeMatcher = /^(?:@(.+?))(?:\\/(?:(.+?)\\+)?(?:(.+)))?$/\n","// @ts-nocheck\nimport { type, typeMatcher } from './type.js'\n\n/**\n * @memberof module:@citation-js/core.plugins.input.util\n * @param {module:@citation-js/core.plugins.input~typeParser} data\n */\nclass TypeParser {\n /**\n * @access protected\n * @type {Array}\n */\n validDataTypes = ['String', 'Array', 'SimpleObject', 'ComplexObject', 'Primitive']\n\n constructor(data) {\n this.data = data\n }\n\n // ==========================================================================\n // Validation\n // ==========================================================================\n\n /**\n * @access protected\n * @throws {RangeError} if dataType is not valid\n */\n validateDataType() {\n const dataType = this.data.dataType\n if (dataType && !this.validDataTypes.includes(dataType)) {\n throw new RangeError(`dataType was ${dataType}; expected one of ${this.validDataTypes}`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if predicate is not valid\n */\n validateParseType() {\n const predicate = this.data.predicate\n if (predicate && !(predicate instanceof RegExp || typeof predicate === 'function')) {\n throw new TypeError(`predicate was ${typeof predicate}; expected RegExp or function`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if predicate is not valid\n */\n validateTokenList() {\n const tokenList = this.data.tokenList\n if (tokenList && typeof tokenList !== 'object') {\n throw new TypeError(`tokenList was ${typeof tokenList}; expected object or RegExp`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if propertyConstraint is not valid\n */\n validatePropertyConstraint() {\n const propertyConstraint = this.data.propertyConstraint\n if (propertyConstraint && typeof propertyConstraint !== 'object') {\n throw new TypeError(\n `propertyConstraint was ${typeof propertyConstraint}; expected array or object`\n )\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if elementConstraint is not valid\n */\n validateElementConstraint() {\n const elementConstraint = this.data.elementConstraint\n if (elementConstraint && typeof elementConstraint !== 'string') {\n throw new TypeError(`elementConstraint was ${typeof elementConstraint}; expected string`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if extends is not valid\n */\n validateExtends() {\n const extend = this.data.extends\n if (extend && typeof extend !== 'string') {\n throw new TypeError(`extends was ${typeof extend}; expected string`)\n }\n }\n\n /**\n * @access public\n * @throws {TypeError|RangeError} if typeParser is not valid\n */\n validate() {\n if (this.data === null || typeof this.data !== 'object') {\n throw new TypeError(`typeParser was ${typeof this.data}; expected object`)\n }\n this.validateDataType()\n this.validateParseType()\n this.validateTokenList()\n this.validatePropertyConstraint()\n this.validateElementConstraint()\n this.validateExtends()\n }\n\n // ==========================================================================\n // Simplification helpers\n // ==========================================================================\n\n /**\n * @access protected\n * @return {Array}\n */\n parseTokenList() {\n let tokenList = this.data.tokenList\n\n if (!tokenList) {\n return []\n } else if (tokenList instanceof RegExp) {\n tokenList = { token: tokenList }\n }\n\n const { token, split = /\\s+/, trim = true, every = true } = tokenList\n\n const trimInput = (input) => (trim ? input.trim() : input)\n const testTokens = every ? 'every' : 'some'\n\n const predicate = (input) =>\n trimInput(input)\n .split(split)\n [testTokens]((part) => token.test(part))\n\n return [predicate]\n }\n\n /**\n * @access protected\n * @return {Array}\n */\n parsePropertyConstraint() {\n const constraints = [].concat(this.data.propertyConstraint || [])\n\n return constraints.map(({ props, match, value }) => {\n props = [].concat(props)\n\n switch (match) {\n case 'any': // fall-through\n case 'some':\n return (input) => props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'none':\n return (input) => !props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'every': // fall-through\n default:\n return (input) => props.every((prop) => prop in input && (!value || value(input[prop])))\n }\n })\n }\n\n /**\n * @access protected\n * @return {Array}\n */\n parseElementConstraint() {\n const constraint = this.data.elementConstraint\n return !constraint ? [] : [(input) => input.every((entry) => type(entry) === constraint)]\n }\n\n /**\n * @access protected\n * @return {Array}\n */\n parsePredicate() {\n if (this.data.predicate instanceof RegExp) {\n return [this.data.predicate.test.bind(this.data.predicate)]\n } else if (this.data.predicate) {\n return [this.data.predicate]\n } else {\n return []\n }\n }\n\n /**\n * @access protected\n * @return {module:@citation-js/core.plugins.input~predicate}\n */\n getCombinedPredicate() {\n const predicates = [\n ...this.parsePredicate(),\n ...this.parseTokenList(),\n ...this.parsePropertyConstraint(),\n ...this.parseElementConstraint(),\n ]\n\n if (predicates.length === 0) {\n return () => true\n } else if (predicates.length === 1) {\n return predicates[0]\n } else {\n return (input) => predicates.every((predicate) => predicate(input))\n }\n }\n\n /**\n * @access protected\n * @return {module:@citation-js/core.plugins.input~dataType}\n */\n getDataType() {\n if (this.data.dataType) {\n return this.data.dataType\n } else if (this.data.predicate instanceof RegExp) {\n return 'String'\n } else if (this.data.tokenList) {\n return 'String'\n } else if (this.data.elementConstraint) {\n return 'Array'\n } else {\n return 'Primitive'\n }\n }\n\n // ==========================================================================\n // Data simplification\n // ==========================================================================\n\n /**\n * @type {module:@citation-js/core.plugins.input~dataType}\n */\n get dataType() {\n return this.getDataType()\n }\n\n /**\n * @type {module:@citation-js/core.plugins.input~predicate}\n */\n get predicate() {\n return this.getCombinedPredicate()\n }\n\n /**\n * @type {module:@citation-js/core.plugins.input~format}\n */\n get extends() {\n return this.data.extends\n }\n}\n\n/**\n * @memberof module:@citation-js/core.plugins.input.util\n * @param {module:@citation-js/core.plugins.input~dataParser|module:@citation-js/core.plugins.input~asyncDataParser} parser\n * @param {Object} options\n * @param {Boolean} [options.async=false]\n */\nclass DataParser {\n constructor(parser, { async } = {}) {\n this.parser = parser\n this.async = async\n }\n\n // ==========================================================================\n // Validation\n // ==========================================================================\n\n /**\n * @throws {TypeError} if dataParser is not valid\n */\n validate() {\n const parser = this.parser\n if (typeof parser !== 'function') {\n throw new TypeError(`parser was ${typeof parser}; expected function`)\n }\n }\n}\n\n/**\n * @memberof module:@citation-js/core.plugins.input.util\n * @param {module:@citation-js/core.plugins.input~format} format\n * @param {module:@citation-js/core.plugins.input~parsers} parsers\n */\nclass FormatParser {\n constructor(format, parsers = {}) {\n this.format = format\n\n if (parsers.parseType) {\n this.typeParser = new TypeParser(parsers.parseType)\n }\n if (parsers.parse) {\n this.dataParser = new DataParser(parsers.parse, { async: false })\n }\n if (parsers.parseAsync) {\n this.asyncDataParser = new DataParser(parsers.parseAsync, { async: true })\n }\n }\n\n // ==========================================================================\n // Validation\n // ==========================================================================\n\n /**\n * @access protected\n * @throws {TypeError} if format is not valid\n */\n validateFormat() {\n const format = this.format\n if (!typeMatcher.test(format)) {\n throw new TypeError(`format name was \"${format}\"; didn't match expected pattern`)\n }\n }\n\n /**\n * @throws {TypeError} if formatParser is not valid\n */\n validate() {\n this.validateFormat()\n if (this.typeParser) {\n this.typeParser.validate()\n }\n if (this.dataParser) {\n this.dataParser.validate()\n }\n if (this.asyncDataParser) {\n this.asyncDataParser.validate()\n }\n }\n}\n\nexport { TypeParser, DataParser, FormatParser }\n","// @ts-nocheck\nimport { parse as parseName } from '@citation-js/name'\n\nconst NAME = 1\nconst NAME_LIST = 2\nconst DATE = 3\nconst TYPE = 4\n\n/**\n * Data from https://github.com/citation-style-language/schema/blob/master/schemas/input/csl-data.json\n *\n * - true if a valid type\n * - string if another type should be used\n *\n * @access private\n * @constant entryTypes\n * @memberof module:@citation-js/core.plugins.input\n */\nconst entryTypes = {\n article: true,\n 'article-journal': true,\n 'article-magazine': true,\n 'article-newspaper': true,\n bill: true,\n book: true,\n broadcast: true,\n chapter: true,\n classic: true,\n collection: true,\n dataset: true,\n document: true,\n entry: true,\n 'entry-dictionary': true,\n 'entry-encyclopedia': true,\n event: true,\n figure: true,\n graphic: true,\n hearing: true,\n interview: true,\n legal_case: true,\n legislation: true,\n manuscript: true,\n map: true,\n motion_picture: true,\n musical_score: true,\n pamphlet: true,\n 'paper-conference': true,\n patent: true,\n performance: true,\n periodical: true,\n personal_communication: true,\n post: true,\n 'post-weblog': true,\n regulation: true,\n report: true,\n review: true,\n 'review-book': true,\n software: true,\n song: true,\n speech: true,\n standard: true,\n thesis: true,\n treaty: true,\n webpage: true,\n\n // From https://github.com/CrossRef/rest-api-doc/issues/187\n 'journal-article': 'article-journal',\n 'book-chapter': 'chapter',\n 'posted-content': 'manuscript',\n 'proceedings-article': 'paper-conference',\n}\n\n/**\n * Object containing type info on CSL-JSON fields.\n *\n * * string: primitive value type\n * * array: list of primitive value types\n * * number: special type\n *\n * Data from https://github.com/citation-style-language/schema/blob/master/csl-data.json\n *\n * @access private\n * @constant fieldTypes\n * @memberof module:@citation-js/core.plugins.input\n */\nconst fieldTypes = {\n author: NAME_LIST,\n chair: NAME_LIST,\n 'collection-editor': NAME_LIST,\n compiler: NAME_LIST,\n composer: NAME_LIST,\n 'container-author': NAME_LIST,\n contributor: NAME_LIST,\n curator: NAME_LIST,\n director: NAME_LIST,\n editor: NAME_LIST,\n 'editorial-director': NAME_LIST,\n 'executive-producer': NAME_LIST,\n guest: NAME_LIST,\n host: NAME_LIST,\n interviewer: NAME_LIST,\n illustrator: NAME_LIST,\n narrator: NAME_LIST,\n organizer: NAME_LIST,\n 'original-author': NAME_LIST,\n performer: NAME_LIST,\n producer: NAME_LIST,\n 'reviewed-author': NAME_LIST,\n recipient: NAME_LIST,\n 'script-writer': NAME_LIST,\n 'series-creator': NAME_LIST,\n translator: NAME_LIST,\n\n accessed: DATE,\n 'available-date': DATE,\n container: DATE,\n 'event-date': DATE,\n issued: DATE,\n 'original-date': DATE,\n submitted: DATE,\n\n type: TYPE,\n\n categories: 'object', // TODO Array\n custom: 'object',\n\n id: ['string', 'number'],\n language: 'string',\n journalAbbreviation: 'string',\n shortTitle: 'string',\n abstract: 'string',\n annote: 'string',\n archive: 'string',\n archive_collection: 'string',\n archive_location: 'string',\n 'archive-place': 'string',\n authority: 'string',\n 'call-number': 'string',\n 'chapter-number': 'string',\n 'citation-number': 'string',\n 'citation-key': 'string',\n 'citation-label': 'string',\n 'collection-number': 'string',\n 'collection-title': 'string',\n 'container-title': 'string',\n 'container-title-short': 'string',\n dimensions: 'string',\n division: 'string',\n DOI: 'string',\n edition: ['string', 'number'],\n event: 'string', // deprecated\n 'event-title': 'string',\n 'event-place': 'string',\n 'first-reference-note-number': 'string',\n genre: 'string',\n ISBN: 'string',\n ISSN: 'string',\n issue: ['string', 'number'],\n jurisdiction: 'string',\n keyword: 'string',\n locator: 'string',\n medium: 'string',\n note: 'string',\n number: ['string', 'number'],\n 'number-of-pages': 'string',\n 'number-of-volumes': ['string', 'number'],\n 'original-publisher': 'string',\n 'original-publisher-place': 'string',\n 'original-title': 'string',\n page: 'string',\n 'page-first': 'string',\n 'part-number': ['string', 'number'],\n 'part-title': 'string',\n PMCID: 'string',\n PMID: 'string',\n printing: 'string',\n publisher: 'string',\n 'publisher-place': 'string',\n references: 'string',\n 'reviewed-title': 'string',\n 'reviewed-genre': 'string',\n scale: 'string',\n section: 'string',\n source: 'string',\n status: 'string',\n supplement: ['string', 'number'],\n title: 'string',\n 'title-short': 'string',\n URL: 'string',\n version: 'string',\n volume: ['string', 'number'],\n 'volume-title': 'string',\n 'volume-title-short': 'string',\n 'year-suffix': 'string',\n}\n\n/**\n * Correct a name.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {*} name - name\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Object} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctName(name, bestGuessConversions) {\n if (typeof name === 'object' && name !== null && (name.literal || name.given || name.family)) {\n return name\n } else if (!bestGuessConversions) {\n return undefined\n } else if (typeof name === 'string') {\n return parseName(name)\n }\n}\n\n/**\n * Correct a name field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {*} nameList - name list\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Array|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctNameList(nameList, bestGuessConversions) {\n if (nameList instanceof Array) {\n const names = nameList.map((name) => correctName(name, bestGuessConversions)).filter(Boolean)\n return names.length ? names : undefined\n }\n}\n\n/**\n * Correct date parts\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {Array} dateParts\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Array|undefined}\n */\nfunction correctDateParts(dateParts, bestGuessConversions) {\n if (dateParts.every((part) => typeof part === 'number')) {\n return dateParts\n } else if (!bestGuessConversions || dateParts.some((part) => isNaN(parseInt(part)))) {\n return undefined\n } else {\n return dateParts.map((part) => parseInt(part))\n }\n}\n\n/**\n * Correct a date field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {*} date - date\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Array|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctDate(date, bestGuessConversions) {\n const dp = 'date-parts'\n\n if (typeof date !== 'object' || date === null) {\n return undefined\n\n // \"{'date-parts': [[2000, 1, 1], ...]}\"\n } else if (date[dp] instanceof Array && date[dp].every((part) => part instanceof Array)) {\n const range = date[dp]\n .map((dateParts) => correctDateParts(dateParts, bestGuessConversions))\n .filter(Boolean)\n return range.length ? { ...date, 'date-parts': range } : undefined\n\n // LEGACY support\n // \"[{'date-parts': [2000, 1, 1]}, ...]\"\n } else if (date instanceof Array && date.every((part) => part[dp] instanceof Array)) {\n const range = date\n .map((dateParts) => correctDateParts(dateParts[dp], bestGuessConversions))\n .filter(Boolean)\n return range.length ? { 'date-parts': range } : undefined\n\n // LEGACY support\n // \"{'date-parts': [2000, 1, 1]}\"\n } else if (date[dp] instanceof Array) {\n const dateParts = correctDateParts(date[dp], bestGuessConversions)\n return dateParts && { 'date-parts': [dateParts] }\n\n // No separate date-parts\n } else if ('literal' in date || 'raw' in date) {\n return date\n }\n}\n\n/**\n * Correct a type field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {String|*} type - type\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {String|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctType(type, bestGuessConversions) {\n // Also anything that can be converted to a string. Taking `language` as a field\n // with similar string constraints, as fields like `title` might take HTML into\n // account in the future.\n type = correctField('language', type, bestGuessConversions)\n\n if (entryTypes[type] === true) {\n return type\n } else if (bestGuessConversions && type in entryTypes) {\n return entryTypes[type]\n } else {\n return undefined\n }\n}\n\n/**\n * Correct a field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {String} fieldName - field name\n * @param {*} value - value\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {*|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctField(fieldName, value, bestGuessConversions) {\n const fieldType = [].concat(fieldTypes[fieldName])\n\n switch (fieldTypes[fieldName]) {\n /* istanbul ignore next: no field has this */\n case NAME:\n return correctName(value, bestGuessConversions)\n case NAME_LIST:\n return correctNameList(value, bestGuessConversions)\n case DATE:\n return correctDate(value, bestGuessConversions)\n case TYPE:\n return correctType(value, bestGuessConversions)\n }\n\n if (bestGuessConversions) {\n if (\n typeof value === 'string' &&\n fieldType.includes('number') &&\n !fieldType.includes('string') &&\n !isNaN(+value)\n ) {\n return parseFloat(value)\n } else if (\n typeof value === 'number' &&\n fieldType.includes('string') &&\n !fieldType.includes('number')\n ) {\n return value.toString()\n } else if (Array.isArray(value) && value.length) {\n return correctField(fieldName, value[0], bestGuessConversions)\n }\n }\n\n if (fieldType.includes(typeof value)) {\n return value\n }\n}\n\n/**\n * Make CSL JSON conform to standards so that plugins don't have to typecheck all the time.\n *\n * @access protected\n * @method clean\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {Array} data - Array of CSL\n * @param {Boolean} [bestGuessConversions=true] - make some best guess conversions on type mismatch\n *\n * @return {Array} Array of clean CSL\n */\nfunction parseCsl(data, bestGuessConversions = true) {\n return data.map(function (entry) {\n const clean = {}\n\n for (const field in entry) {\n const correction = correctField(field, entry[field], bestGuessConversions)\n if (correction !== undefined) {\n clean[field] = correction\n }\n }\n\n return clean\n })\n}\n\nexport { parseCsl as clean }\n","/**\n * Upgrade CSL item from 1.0.1 to 1.0.2\n *\n * @method upgradeCsl\n * @memberof module:@citation-js/core.util\n *\n * @param {Object} item - Input object\n *\n * @return {Object} upgraded item\n */\nexport function upgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(upgradeCsl)\n }\n\n item = { ...item }\n if ('event' in item) {\n item['event-title'] = item.event\n delete item.event\n }\n if (item.type === 'book' && 'version' in item) {\n item.type = 'software'\n }\n return item\n}\n\n/**\n * Downgrade CSL item from 1.0.2 to 1.0.1\n *\n * @method downgradeCsl\n * @memberof module:@citation-js/core.util\n *\n * @param {Object} item - Input object\n *\n * @return {Object} downgraded item\n */\nexport function downgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(downgradeCsl)\n }\n\n item = { ...item }\n if ('event-title' in item) {\n item.event = item['event-title']\n delete item['event-title']\n }\n if (item.type === 'software') {\n item.type = 'book'\n }\n return item\n}\n","// @ts-nocheck\n/**\n * Duplicate objects to prevent Cite changing values outside of own scope\n *\n * @access protected\n * @method deepCopy\n * @memberof module:@citation-js/core.util\n *\n * @param {Object} obj - Input object\n * @param {Set} [seen]\n *\n * @return {Object} Duplicated object\n * @throws {TypeError}\n */\nexport function deepCopy(value, seen = new Set()) {\n if (\n typeof value !== 'object' ||\n value === null ||\n (value.constructor !== Object && value.constructor !== Array)\n ) {\n return value\n }\n\n if (seen.has(value)) {\n throw new TypeError('Recursively copying circular structure')\n }\n\n seen.add(value)\n let copy\n\n if (value.constructor === Array) {\n copy = value.map((value) => deepCopy(value, seen))\n } else {\n const object = {}\n for (const key in value) {\n object[key] = deepCopy(value[key], seen)\n }\n copy = object\n }\n\n seen.delete(value)\n return copy\n}\n\n// // Unfortunately too costly performance-wise, but the\n// // proper way to clone any object (apart from arrays perhaps):\n// const object = Object.create(Object.getPrototypeOf(value))\n// const descriptors = Object.getOwnPropertyDescriptors(value)\n// for (let key in descriptors) {\n// const descriptor = descriptors[key]\n// if (descriptor.value) { descriptor.value = deepCopy(descriptor.value) }\n// Object.defineProperty(object, key, descriptor)\n// }\n\nexport default deepCopy\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError, AbortError };\n","const Stream = require('stream')\n\nfunction serializeHeaders (headers) {\n return headers.raw()\n}\n\nfunction deserializeHeaders (fetch, old = {}) {\n const headers = new fetch.Headers()\n for (const name in old) {\n for (const value of old[name]) {\n headers.append(name, value)\n }\n }\n return headers\n}\n\nfunction serializeRequest (request) {\n return [\n request.url,\n {\n method: request.method,\n headers: request.headers,\n body: request.body,\n mode: request.mode,\n credentials: request.credentials,\n cache: request.cache,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n integrity: request.integrity,\n keepalive: request.keepalive,\n // signal: request.signal,\n\n // node-fetch props\n follow: request.follow,\n timeout: request.timeout,\n compress: request.compress,\n size: request.size\n // agent: request.agent\n }\n ]\n}\n\nfunction deserializeRequest (fetch, resource, init) {\n return new fetch.Request(resource, {\n ...init,\n body: init.body ? Buffer.from(init.body, 'base64') : undefined,\n headers: deserializeHeaders(fetch, init.headers)\n })\n}\n\nfunction serializeResponse (response) {\n return {\n url: response.url,\n headers: response.headers.raw(),\n status: response.status,\n statusText: response.statusText,\n counter: response.redirected ? 1 : 0 // could be more than one, but no way of telling\n }\n}\n\nfunction deserializeResponse (fetch, body, init, bodyError) {\n const buffer = Buffer.from(body, 'base64')\n\n return new fetch.Response(\n body ? createStream(buffer) : createStream(null),\n {\n ...init,\n headers: deserializeHeaders(fetch, init.headers)\n },\n {\n buffer,\n bodyError\n }\n )\n}\n\nconst errors = {\n TypeError\n}\n\nfunction serializeError ({ constructor, message, type, code }) {\n return [\n constructor.name,\n [message, type, { code }]\n ]\n}\n\nfunction deserializeError (fetch, name, init) {\n if (name in errors) {\n return new errors[name](...init)\n } else {\n return new fetch.FetchError(...init)\n }\n}\n\nfunction parseBodyType (body) {\n if (body == null) {\n return 'Null'\n } else if (body.constructor.name === 'URLSearchParams') {\n return 'URLSearchParams'\n } else if (Buffer.isBuffer(body)) {\n return 'Buffer'\n } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n return 'ArrayBuffer'\n } else if (ArrayBuffer.isView(body)) {\n return 'ArrayBufferView'\n } else if (body instanceof Stream) {\n return 'Stream'\n } else {\n return 'String'\n }\n}\n\nfunction parseBody (body, type = parseBodyType(body)) {\n switch (type) {\n case 'Null': return null\n case 'URLSearchParams': return Buffer.from(body.toString())\n case 'Buffer': return body\n case 'ArrayBuffer': return Buffer.from(body)\n case 'ArrayBufferView': return Buffer.from(body.buffer, body.byteOffset, body.byteLength)\n case 'String': return Buffer.from(String(body))\n default: throw new TypeError(`sync-fetch does not support bodies of type: ${type}`)\n }\n}\n\nfunction createStream (buffer) {\n return new Stream.Transform({\n read () {\n this.push(buffer)\n this.push(null)\n }\n })\n}\n\nmodule.exports = {\n serializeHeaders,\n deserializeHeaders,\n serializeRequest,\n deserializeRequest,\n serializeResponse,\n deserializeResponse,\n serializeError,\n deserializeError,\n\n parseBodyType,\n parseBody,\n createStream\n}\n","const exec = require('child_process').execFileSync\nconst path = require('path')\nconst { URL } = require('url')\nconst _fetch = require('node-fetch')\nconst shared = require('./shared')\n\nfunction fetch (resource, init) {\n const request = []\n\n if (resource instanceof fetch.Request) {\n request.push(...shared.serializeRequest(resource))\n } else if (resource instanceof URL) {\n request.push(resource.href, {})\n } else {\n request.push(resource, {})\n }\n\n Object.assign(request[1], init)\n\n request[1].headers = new _fetch.Headers(request[1].headers)\n\n if (request[1].body) {\n const contentType = extractContentType(request)\n if (contentType && !request[1].headers.get('content-type')) { request[1].headers.append('content-type', contentType) }\n request[1].body = shared.parseBody(init.body).toString('base64')\n }\n\n request[1].headers = shared.serializeHeaders(request[1].headers)\n\n // TODO credentials\n\n const response = JSON.parse(sendMessage(request))\n if ('headers' in response[1]) {\n return shared.deserializeResponse(fetch, ...response)\n } else {\n throw shared.deserializeError(fetch, ...response)\n }\n}\n\nfunction sendMessage (message) {\n return exec(process.execPath, [path.join(__dirname, 'worker.js')], {\n windowsHide: true,\n maxBuffer: Infinity,\n input: JSON.stringify(message),\n shell: false\n }).toString()\n}\n\nfunction extractContentType (input) {\n const request = new _fetch.Request(...input)\n return request.headers.get('content-type') || undefined\n}\n\nconst _body = Symbol('bodyBuffer')\nconst _bodyError = Symbol('bodyError')\n\nclass SyncRequest extends _fetch.Request {\n constructor (resource, init = {}) {\n const buffer = shared.parseBody(init.body)\n\n super(resource, init)\n defineBuffer(this, buffer)\n }\n\n clone () {\n checkBody(this)\n return new SyncRequest(...shared.serializeRequest(this))\n }\n}\n\nclass SyncResponse extends _fetch.Response {\n constructor (body, init, options = {}) {\n const {\n buffer = shared.parseBody(body),\n bodyError\n } = options\n\n super(body, init)\n defineBuffer(this, buffer)\n if (bodyError) defineBodyError(this, bodyError)\n }\n\n clone () {\n checkBody(this)\n const buffer = Buffer.from(this[_body])\n return new SyncResponse(\n shared.createStream(buffer),\n shared.serializeResponse(this),\n {\n buffer,\n bodyError: this[_bodyError]\n }\n )\n }\n}\n\nclass Body {\n static mixin (proto) {\n for (const name of Object.getOwnPropertyNames(Body.prototype)) {\n if (name === 'constructor') { continue }\n const desc = Object.getOwnPropertyDescriptor(Body.prototype, name)\n Object.defineProperty(proto, name, {\n ...desc,\n enumerable: true\n })\n }\n }\n\n arrayBuffer () {\n checkBody(this)\n const buf = consumeBody(this)\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n }\n\n text () {\n checkBody(this)\n return consumeBody(this).toString()\n }\n\n json () {\n checkBody(this)\n try {\n return JSON.parse(consumeBody(this).toString())\n } catch (err) {\n throw new fetch.FetchError(`invalid json response body at ${this.url} reason: ${err.message}`, 'invalid-json')\n }\n }\n\n buffer () {\n checkBody(this)\n return Buffer.from(consumeBody(this))\n }\n\n textConverted () {\n throw new fetch.FetchError('textConverted not implemented')\n }\n}\n\nfunction _super (self, method) {\n return Object.getPrototypeOf(Object.getPrototypeOf(self))[method].bind(self)\n}\n\nfunction checkBody (body) {\n if (body[_bodyError]) {\n throw body[_bodyError]\n }\n if (body.bodyUsed) {\n throw new TypeError(`body used already for: ${body.url}`)\n }\n}\n\nfunction consumeBody (body) {\n _super(body, 'buffer')().catch(error => console.error(error))\n return body[_body] || Buffer.alloc(0)\n}\n\nfunction defineBuffer (body, buffer) {\n Object.defineProperty(body, _body, {\n value: buffer,\n enumerable: false\n })\n}\n\nfunction defineBodyError (body, error) {\n Object.defineProperty(body, _bodyError, {\n value: shared.deserializeError(fetch, ...error),\n enumerable: false\n })\n}\n\nBody.mixin(SyncRequest.prototype)\nBody.mixin(SyncResponse.prototype)\nObject.defineProperties(SyncRequest.prototype, { clone: { enumerable: true } })\nObject.defineProperties(SyncResponse.prototype, { clone: { enumerable: true } })\n\nfetch.Headers = _fetch.Headers\nfetch.FetchError = _fetch.FetchError\nfetch.Request = SyncRequest\nfetch.Response = SyncResponse\nmodule.exports = fetch\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","'use strict';\n\nvar fetch = require('node-fetch');\n\nfunction wrapFetchForNode(fetch) {\n // Support schemaless URIs on the server for parity with the browser.\n // https://github.com/matthew-andrews/isomorphic-fetch/pull/10\n return function (u, options) {\n if (typeof u === 'string' && u.slice(0, 2) === '//') {\n return fetch('https:' + u, options);\n }\n\n return fetch(u, options);\n };\n}\n\nmodule.exports = function (context) {\n // Support webpack module import weirdness.\n var fetchFn = fetch.default ? fetch.default : fetch;\n\n // This modifies the global `node-fetch` object, which isn't great, since\n // different callers to `fetch-ponyfill` which pass a different Promise\n // implementation would each expect to have their implementation used. But,\n // given the way `node-fetch` is implemented, this is the only way to make\n // it work at all.\n if (context && context.Promise) {\n fetchFn.Promise = context.Promise;\n }\n\n return {\n fetch: wrapFetchForNode(fetchFn),\n Headers: fetch.Headers,\n Request: fetch.Request,\n Response: fetch.Response\n };\n};\n","//@ts-nocheck\nimport syncFetch from 'sync-fetch'\nimport fetchPolyfill from 'fetch-ponyfill'\nimport logger from '../logger.js'\n// import pkg from '../../package.json';\nconst { fetch, Headers } = fetchPolyfill()\nconst corsEnabled = typeof location !== 'undefined' && typeof document !== 'undefined'\nlet userAgent = `Citation.js/0.65`\n\nfunction normaliseHeaders(headers) {\n const result = {}\n const entries =\n headers instanceof Headers || headers instanceof syncFetch.Headers\n ? Array.from(headers)\n : Object.entries(headers)\n\n for (const [name, header] of entries) {\n result[name.toLowerCase()] = header.toString()\n }\n\n return result\n}\n\nfunction parseOpts(opts = {}) {\n const reqOpts = {\n headers: {\n accept: '*/*',\n },\n method: 'GET',\n checkContentType: opts.checkContentType,\n }\n\n if (userAgent && !corsEnabled) {\n reqOpts.headers['user-agent'] = userAgent\n }\n\n if (opts.body) {\n reqOpts.method = 'POST'\n const isJson = typeof opts.body !== 'string'\n reqOpts.body = isJson ? JSON.stringify(opts.body) : opts.body\n reqOpts.headers['content-type'] = isJson ? 'application/json' : 'text/plain'\n }\n\n if (opts.headers) {\n Object.assign(reqOpts.headers, normaliseHeaders(opts.headers))\n }\n\n return reqOpts\n}\n\nfunction sameType(request, response) {\n if (!request.accept || request.accept === '*/*' || !response['content-type']) {\n return true\n }\n\n const [a, b] = response['content-type'].split(';')[0].trim().split('/')\n return request.accept\n .split(',')\n .map((type) => type.split(';')[0].trim().split('/'))\n .some(([c, d]) => (c === a || c === '*') && (d === b || d === '*'))\n}\n\nfunction checkResponse(response, opts) {\n const { status, headers } = response\n let error\n\n if (status >= 400) {\n error = new Error(`Server responded with status code ${status}`)\n } else if (opts.checkContentType === true && !sameType(opts.headers, normaliseHeaders(headers))) {\n error = new Error(`Server responded with content-type ${headers.get('content-type')}`)\n }\n\n if (error) {\n error.status = status\n error.headers = headers\n error.body = response.body\n throw error\n }\n\n return response\n}\n\nexport function fetchFile(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n const response = checkResponse(syncFetch(url, reqOpts), reqOpts)\n return response.text()\n}\nexport async function fetchFileAsync(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n return fetch(url, reqOpts)\n .then((response) => checkResponse(response, reqOpts))\n .then((response) => response.text())\n}\nexport function setUserAgent(newUserAgent) {\n userAgent = newUserAgent\n}\nexport default fetchFile\n","/**\n * Generate ID\n *\n * @access protected\n * @memberof module:@citation-js/core.util\n *\n * @param {Array} list - old ID list\n * @param {String} prefix - ID prefix\n *\n * @return {String} CSL ID\n */\nfunction fetchId(list, prefix) {\n let id\n\n while (id === undefined || list.includes(id)) {\n id = `${prefix}${Math.random().toString().slice(2)}`\n }\n\n return id\n}\n\nexport default fetchId\n","// @ts-nocheck\n/**\n * @memberof module:@citation-js/core.util\n * @param {Object} [data={}] - initial values\n */\nclass Register {\n constructor(data = {}) {\n this.data = data\n }\n\n /**\n * @param {String} key\n * @param {*} value\n * @return {Register} this\n */\n set(key, value) {\n this.data[key] = value\n return this\n }\n\n /**\n * @param {String} key\n * @param {*} value\n * @return {Register} this\n */\n add(...args) {\n return this.set(...args)\n }\n\n /**\n * @param {String} key\n * @return {Register} this\n */\n delete(key) {\n delete this.data[key]\n return this\n }\n\n /**\n * @param {String} key\n * @return {Register} this\n */\n remove(...args) {\n return this.delete(...args)\n }\n\n /**\n * @param {String} key\n * @return {*} value\n */\n get(key) {\n return this.data[key]\n }\n\n /**\n * @param {String} key\n * @return {Boolean} register has key\n */\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.data, key)\n }\n\n /**\n * @return {Array} list of keys\n */\n list() {\n return Object.keys(this.data)\n }\n}\n\nexport default Register\n","// @ts-nocheck\nimport { deepCopy } from './deepCopy.js'\n\n/**\n * @typedef module:@citation-js/core.util.Grammar~ruleName\n * @type {String}\n */\n\n/**\n * @callback module:@citation-js/core.util.Grammar~rule\n * @this module:@citation-js/core.util.Grammar\n */\n\n/**\n * @memberof module:@citation-js/core.util\n *\n * @param {Object} rules\n * @param {Object} state\n */\nclass Grammar {\n constructor(rules, state) {\n this.rules = rules\n this.defaultState = state\n this.mainRule = Object.keys(rules)[0]\n this.log = []\n }\n\n /**\n * @param iterator - lexer supporting formatError() and next()\n * @param [mainRule] - defaults to the first rule\n * @return result of the main rule\n */\n parse(iterator, mainRule) {\n this.lexer = iterator\n this.token = this.lexer.next()\n this.state = deepCopy(this.defaultState)\n this.log = []\n return this.consumeRule(mainRule || this.mainRule)\n }\n\n /**\n * @return {Boolean} true if there are no more tokens\n */\n matchEndOfFile() {\n return !this.token\n }\n\n /**\n * @param {String} type - a token type\n * @return {Boolean} true if the current token has the given type\n */\n matchToken(type) {\n return this.token && type === this.token.type\n }\n\n /**\n * @param {String} [type] - a token type\n * @param {Boolean} [optional=false] - false if it should throw an error if the type does not match\n * @return {Object} token information\n * @throws {SyntaxError} detailed syntax error if the current token is not the expected type or if there are no tokens left\n */\n consumeToken(type, optional) {\n const token = this.token\n\n if (!type || (token && token.type === type)) {\n this.token = this.lexer.next()\n return token\n } else if (optional) {\n return undefined\n } else {\n const got = token ? `\"${token.type}\"` : 'EOF'\n const error = new SyntaxError(this.lexer.formatError(token, `expected \"${type}\", got ${got}`))\n error.message += ` (${this.log.join('->')})`\n throw error\n }\n }\n\n /**\n * @param {String} rule - a rule name\n * @return whatever the rule function returns\n */\n consumeRule(rule) {\n this.log.push(rule)\n const result = this.rules[rule].call(this)\n this.log.pop()\n return result\n }\n}\n\nexport { Grammar }\n","// @ts-nocheck\n/**\n * Mapping unit.\n *\n * @typedef {Object} module:@citation-js/core.util.Translator~statement\n * @property {String|Array} [source] - properties to source value from\n * @property {String|Array} [target] - properties the value should go to\n * @property {Object} [convert] - convert serialized or nested values\n * @property {module:@citation-js/core.util.Translator~convertProp} [convert.toTarget] - function to convert source prop to target\n * @property {module:@citation-js/core.util.Translator~convertProp} [convert.toSource] - function to convert target prop to source\n * @property {Object} [when] - conditions as to when this statement should apply\n * @property {module:@citation-js/core.util.Translator~condition} [when.source]\n * @property {module:@citation-js/core.util.Translator~condition} [when.target]\n */\n\n/**\n * In the case of toTarget, source is input and target is output. In the case of\n * toSource, source is output and target is input.\n *\n * @callback module:@citation-js/core.util.Translator~convertProp\n * @param {...*} input - input values\n * @return {Array|*} If output is an array and multiple output properties are\n * specified, the output is divided over those properties.\n */\n\n/**\n * A top-level Boolean enables or disables a mapping unit in a given direction.\n * Otherwise, individual properties are checked with an object specifying the\n * property name and one of four things:\n *\n * - A boolean, checking for presence of the property\n * - An array of values for checking whether the property value is in them\n * - A value that should match with the property value\n * - A predicate function taking in the value and returning a boolean\n *\n * All conditions have to be fulfilled for the mapping unit to be enabled.\n *\n * @typedef {Boolean|Object|module:@citation-js/core.util.Translator~conditionPropPredicate|*>} module:@citation-js/core.util.Translator~condition\n */\n\n/**\n * Return, based on a property, whether a mapping should apply.\n *\n * @callback module:@citation-js/core.util.Translator~conditionPropPredicate\n * @param {*} input - input value\n * @return {Boolean}\n */\n\n/**\n * Return, whether a mapping should apply.\n *\n * @callback module:@citation-js/core.util.Translator~conditionPredicate\n * @param {Object} input - input\n * @return {Boolean}\n */\n\n/**\n * @access private\n * @memberof module:@citation-js/core.util.Translator\n * @param {module:@citation-js/core.util.Translator~condition} condition\n * @return {module:@citation-js/core.util.Translator~conditionPredicate}\n */\nfunction createConditionEval(condition) {\n return function conditionEval(input) {\n if (typeof condition === 'boolean') {\n return condition\n }\n\n return Object.keys(condition).every((prop) => {\n const value = condition[prop]\n if (value === true) {\n return prop in input\n } else if (value === false) {\n return !(prop in input)\n } else if (typeof value === 'function') {\n return value(input[prop])\n } else if (Array.isArray(value)) {\n return value.includes(input[prop])\n } else {\n return input[prop] === value\n }\n })\n }\n}\n\n/**\n * @access private\n * @typedef {Object} module:@citation-js/core.util.Translator~normalizedStatement\n * @property {Array} inputProp\n * @property {Array} outputProp\n * @property {module:@citation-js/core.util.Translator~convertProp} convert\n * @property {module:@citation-js/core.util.Translator~conditionPredicate} condition\n */\n\n/**\n * @access private\n * @memberof module:@citation-js/core.util.Translator\n * @param {module:@citation-js/core.util.Translator~statement} prop\n * @param {Boolean} toSource\n * @return {module:@citation-js/core.util.Translator~normalizedStatement} normalized one-directional object\n */\nfunction parsePropStatement(prop, toSource) {\n let inputProp\n let outputProp\n let convert\n let condition\n\n if (typeof prop === 'string') {\n inputProp = outputProp = prop\n } else if (prop) {\n inputProp = toSource ? prop.target : prop.source\n outputProp = toSource ? prop.source : prop.target\n\n if (prop.convert) {\n convert = toSource ? prop.convert.toSource : prop.convert.toTarget\n }\n\n if (prop.when) {\n condition = toSource ? prop.when.target : prop.when.source\n if (condition != null) {\n condition = createConditionEval(condition)\n }\n }\n } else {\n return null\n }\n\n inputProp = [].concat(inputProp).filter(Boolean)\n outputProp = [].concat(outputProp).filter(Boolean)\n\n return { inputProp, outputProp, convert, condition }\n}\n\n/**\n * Return, whether a mapping should apply.\n *\n * @callback module:@citation-js/core.util.Translator~convert\n * @param {Object} input - input\n * @return {Object} output\n */\n\n/**\n * @access private\n * @memberof module:@citation-js/core.util.Translator\n * @param {Array} props\n * @param {Boolean} toSource\n * @return {module:@citation-js/core.util.Translator~convert} converter\n */\nfunction createConverter(props, toSource) {\n toSource = toSource === Translator.CONVERT_TO_SOURCE\n props = props.map((prop) => parsePropStatement(prop, toSource)).filter(Boolean)\n\n return function converter(input) {\n const output = {}\n\n for (const { inputProp, outputProp, convert, condition } of props) {\n // Skip when no output will be assigned\n if (outputProp.length === 0) {\n continue\n // Skip when requested by the requirements of the prop converter\n } else if (condition && !condition(input)) {\n continue\n // Skip when none of the required props are in the input data\n // NOTE: if no input is required, do not skip\n } else if (inputProp.length !== 0 && inputProp.every((prop) => !(prop in input))) {\n continue\n }\n\n let outputData = inputProp.map((prop) => input[prop])\n if (convert) {\n try {\n const converted = convert.apply(input, outputData)\n outputData = outputProp.length === 1 ? [converted] : converted\n } catch (cause) {\n throw new Error(`Failed to convert ${inputProp} to ${outputProp}`, { cause })\n }\n }\n\n outputProp.forEach((prop, index) => {\n const value = outputData[index]\n if (value !== undefined) {\n output[prop] = value\n }\n })\n }\n\n return output\n }\n}\n\n/**\n * @memberof module:@citation-js/core.util\n *\n * @param {Array} props\n *\n * @todo proper merging (?)\n * @todo 'else' conditions\n */\nclass Translator {\n constructor(props) {\n /**\n * @type {module:@citation-js/core.util.Translator~convert}\n */\n this.convertToSource = createConverter(props, Translator.CONVERT_TO_SOURCE)\n\n /**\n * @type {module:@citation-js/core.util.Translator~convert}\n */\n this.convertToTarget = createConverter(props, Translator.CONVERT_TO_TARGET)\n }\n}\n\n/**\n * @memberof module:@citation-js/core.util.Translator\n * @property {Symbol} CONVERT_TO_SOURCE\n */\nTranslator.CONVERT_TO_SOURCE = Symbol('convert to source')\n\n/**\n * @memberof module:@citation-js/core.util.Translator\n * @property {Symbol} CONVERT_TO_TARGET\n */\nTranslator.CONVERT_TO_TARGET = Symbol('convert to target')\n\nexport { Translator }\n","// @ts-nocheck\nimport { deepCopy, upgradeCsl } from '../../util/index.js'\nimport logger from '../../logger.js'\n\nimport { get as getTypeInfo } from './register.js'\nimport { type as parseType } from './type.js'\nimport { data as parseData, dataAsync as parseDataAsync } from './data.js'\nimport { applyGraph, removeGraph } from './graph.js'\n\n/**\n * @access private\n * @param {Array} graph\n * @return {String}\n */\nfunction prepareParseGraph(graph) {\n return (\n graph\n // collapse continuous iterations of the same type\n .reduce((array, next) => {\n const last = array[array.length - 1]\n if (last && last.type === next.type) {\n last.count = last.count + 1 || 2\n } else {\n array.push(next)\n }\n return array\n }, [])\n // presentation\n .map((element) => (element.count > 1 ? element.count + 'x ' : '') + element.type)\n .join(' -> ')\n )\n}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n * @constructor ChainParser\n *\n * @param {module:@citation-js/core~InputData} input\n * @param {module:@citation-js/core~InputOptions} options\n */\nclass ChainParser {\n constructor(input, options = {}) {\n this.options = Object.assign(\n {\n generateGraph: true,\n forceType: parseType(input),\n maxChainLength: 10,\n strict: true,\n target: '@csl/list+object',\n },\n options\n )\n\n this.type = this.options.forceType\n this.data = typeof input === 'object' ? deepCopy(input) : input\n this.graph = [{ type: this.type, data: input }]\n this.iteration = 0\n }\n\n /**\n * After a round of data parsing, update type information and check targets.\n *\n * @access public\n * @return {Boolean} Whether this is the last iteration or not\n */\n iterate() {\n if (this.iteration !== 0) {\n const typeInfo = getTypeInfo(this.type)\n\n if (typeInfo && typeInfo.outputs) {\n this.type = typeInfo.outputs\n } else {\n this.type = parseType(this.data)\n }\n\n this.graph.push({ type: this.type })\n }\n\n if (this.error || this.type === this.options.target) {\n return false\n } else if (this.iteration >= this.options.maxChainLength) {\n this.error = new RangeError(\n `Max. number of parsing iterations reached (${prepareParseGraph(this.graph)})`\n )\n return false\n } else {\n this.iteration++\n return true\n }\n }\n\n /**\n * Finish the iteration and return parsed data.\n *\n * @access public\n * @return Array\n */\n end() {\n if (this.error) {\n logger.error('[core]', this.error.message)\n if (this.options.strict !== false) {\n throw this.error\n } else {\n return []\n }\n } else if (this.options.target === '@csl/list+object') {\n return upgradeCsl(this.data).map(\n this.options.generateGraph ? (entry) => applyGraph(entry, this.graph) : removeGraph\n )\n } else {\n return this.data\n }\n }\n}\n\n/**\n * Parse input until success.\n *\n * @access protected\n * @method chain\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core~InputOptions} [options] - options\n *\n * @return {Array} The parsed input\n */\nexport const chain = (...args) => {\n const chain = new ChainParser(...args)\n\n while (chain.iterate()) {\n try {\n chain.data = parseData(chain.data, chain.type)\n } catch (e) {\n chain.error = e\n }\n }\n\n return chain.end()\n}\n\n/**\n * Parse input once.\n *\n * @access protected\n * @method chainLink\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n *\n * @return {module:@citation-js/core~InputData} The parsed input\n */\nexport const chainLink = (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n\n return parseData(output, type)\n}\n\n/**\n * Parse input until success. (async)\n *\n * @access protected\n * @method chainAsync\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core~InputOptions} [options] - options\n *\n * @return {Promise>} The parsed input\n */\nexport const chainAsync = async (...args) => {\n const chain = new ChainParser(...args)\n\n while (chain.iterate()) {\n chain.data = await parseDataAsync(chain.data, chain.type).catch((e) => {\n chain.error = e\n })\n }\n\n return chain.end()\n}\n\n/**\n * Parse input once. (async)\n *\n * @access protected\n * @method chainLinkAsync\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - The input data\n *\n * @return {Promise} The parsed input\n */\nexport const chainLinkAsync = async (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n\n return parseDataAsync(output, type)\n}\n","// @ts-nocheck\nimport { chain, chainAsync } from './chain.js'\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object} parsers\n */\nconst parsers = {}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object} asyncParsers\n */\nconst asyncParsers = {}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object} nativeParsers\n */\nconst nativeParsers = {\n '@csl/object': (input) => [input],\n '@csl/list+object': (input) => input,\n '@else/list+object': (input) => input.map(chain).flat(),\n '@invalid': () => {\n throw new Error('This format is not supported or recognized')\n },\n}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object} nativeAsyncParsers\n */\nconst nativeAsyncParsers = {\n '@else/list+object': async (input) => (await Promise.all(input.map(chainAsync))).flat(),\n}\n\n/**\n * @access public\n * @method data\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core.plugins.input~format} type - input type\n *\n * @return {*} parsed data\n * @return {Null} if no parser available\n */\nexport function data(input, type) {\n if (typeof parsers[type] === 'function') {\n return parsers[type](input)\n } else {\n throw new Error('This format is not supported or recognized')\n // throw new TypeError(`No synchronous parser found for ${type}`)\n }\n}\n\n/**\n * @access public\n * @method dataAsync\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core.plugins.input~format} type - input type\n *\n * @return {Promise} parsed data\n * @return {Promise} if no parser available\n */\nexport async function dataAsync(input, type) {\n if (typeof asyncParsers[type] === 'function') {\n return asyncParsers[type](input)\n } else if (typeof nativeAsyncParsers[type] === 'function') {\n return nativeAsyncParsers[type](input)\n } else if (hasDataParser(type, false)) {\n return data(input, type)\n } else {\n throw new TypeError(`No parser found for ${type}`)\n }\n}\n\n/**\n * @access protected\n * @method addDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format\n * @param {module:@citation-js/core.plugins.input~parse|module:@citation-js/core.plugins.input~parseAsync} parser\n * @param {Object} [options={}]\n * @param {Boolean} [options.async=false]\n */\nexport function addDataParser(format, { parser, async }) {\n if (async) {\n asyncParsers[format] = parser\n } else {\n parsers[format] = parser\n }\n}\n\n/**\n * @access public\n * @method hasDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n * @param {Boolean} [async=false] - check only for async, or only sync\n *\n * @return {Boolean} parser exists\n */\nexport function hasDataParser(type, async) {\n return async\n ? asyncParsers[type] || nativeAsyncParsers[type]\n : parsers[type] || nativeParsers[type]\n}\n\n/**\n * @access public\n * @method removeDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n * @param {Boolean} [async=false]\n */\nexport function removeDataParser(type, async) {\n delete (async ? asyncParsers : parsers)[type]\n}\n\n/**\n * @access public\n * @method listDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {Boolean} [async=false]\n */\nexport function listDataParser(async) {\n return Object.keys(async ? asyncParsers : parsers)\n}\n","// @ts-nocheck\nimport { FormatParser } from './parser.js'\nimport { addTypeParser, removeTypeParser } from './type.js'\nimport { addDataParser, removeDataParser } from './data.js'\n\n/**\n * @access private\n * @type {Object}\n */\nconst formats = {}\n\n/**\n * See the relevant tutorial: {@tutorial input_plugins}\n *\n * @access public\n * @method add\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n * @param {module:@citation-js/core.plugins.input~parsers} parsers - parsers\n *\n * @tutorial input_plugins\n */\nexport function add(format, parsers) {\n const formatParser = new FormatParser(format, parsers)\n formatParser.validate()\n\n const index = formats[format] || (formats[format] = {})\n\n if (formatParser.typeParser) {\n addTypeParser(format, formatParser.typeParser)\n index.type = true\n }\n if (formatParser.dataParser) {\n addDataParser(format, formatParser.dataParser)\n index.data = true\n }\n if (formatParser.asyncDataParser) {\n addDataParser(format, formatParser.asyncDataParser)\n index.asyncData = true\n }\n\n if (parsers.outputs) {\n index.outputs = parsers.outputs\n }\n}\n\n/**\n * @access public\n * @method get\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n * @returns {Object} index\n */\nexport function get(format) {\n return formats[format]\n}\n\n/**\n * @access public\n * @method remove\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n */\nexport function remove(format) {\n const index = formats[format]\n\n if (!index) {\n return\n }\n\n if (index.type) {\n removeTypeParser(format)\n }\n if (index.data) {\n removeDataParser(format)\n }\n if (index.asyncData) {\n removeDataParser(format, true)\n }\n\n delete formats[format]\n}\n\n/**\n * @access public\n * @method has\n * @memberof module:@citation-js/core.plugins.input\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n * @returns {Boolean} input format is registered\n */\nexport function has(format) {\n return format in formats\n}\n\n/**\n * @access public\n * @method list\n * @memberof module:@citation-js/core.plugins.input\n * @returns {Array} input format is registered\n */\nexport function list() {\n return Object.keys(formats)\n}\n","/**\n * @namespace input\n * @memberof module:@citation-js/core.plugins\n */\n\nimport * as dataType from './dataType.js'\nimport * as graph from './graph.js'\nimport * as parser from './parser.js'\nimport * as csl from './csl.js'\n\n/**\n * @namespace util\n * @memberof module:@citation-js/core.plugins.input\n */\nexport const util = Object.assign({}, dataType, graph, parser, csl)\n\nexport * from './register'\n\nexport * from './chain'\nexport * from './type'\nexport * from './data'\n","// @ts-nocheck\nimport { chain as parseInput, chainAsync as parseInputAsync } from '../plugins/input/index.js'\nimport fetchId from '../util/fetchId.js'\n\n/**\n * Add an object to the array of objects\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - The data to add to your object\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction add(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data.push(...parseInput(data, options))\n\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n\n return this\n}\n\n/**\n * Add an object to the array of objects\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - The data to add to your object\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {Promise} The updated parent object\n */\nasync function addAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data.push(...(await parseInputAsync(data, options)))\n\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n\n return this\n}\n\n/**\n * Recreate a `Cite` object with almost any kind of data, and manipulate it with its default methods.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - Replacement data\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction set(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data = []\n return typeof options !== 'boolean' ? this.add(data, options) : this.add(data)\n}\n\n/**\n * Recreate a `Cite` object with almost any kind of data, and manipulate it with its default methods.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - Replacement data\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {Promise} The updated parent object\n */\nasync function setAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data = []\n return typeof options !== 'boolean' ? this.addAsync(data, options) : this.addAsync(data)\n}\n\n/**\n * Reset a `Cite` object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated, empty parent object (except the log, the log lives)\n */\nfunction reset(log) {\n if (log) {\n this.save()\n }\n\n this.data = []\n this._options = {}\n\n return this\n}\n\nexport { add, addAsync, set, setAsync, reset }\n","// @ts-nocheck\n/**\n * @module output/label\n */\n\n/**\n * Get a label from CSL data\n *\n * @access protected\n * @method getLabel\n * @todo flavors/formats\n *\n * @param {CSL} entry - Input CSL\n *\n * @return {String} The label\n */\nfunction getLabel(entry) {\n if ('citation-label' in entry) {\n return entry['citation-label']\n }\n\n let res = ''\n\n if (entry.author) {\n res += entry.author[0].family || entry.author[0].literal\n }\n if (entry.issued && entry.issued['date-parts'] && entry.issued['date-parts'][0]) {\n res += entry.issued['date-parts'][0][0]\n }\n if (entry['year-suffix']) {\n res += entry['year-suffix']\n } else if (entry.title) {\n res += entry.title.replace(/<\\/?.*?>/g, '').match(/^(?:(?:the|a|an)\\s+)?(\\S+)/i)[1]\n }\n\n return res\n}\n\nexport { getLabel }\nexport default {\n label(data) {\n return data.reduce((object, entry) => {\n object[entry.id] = getLabel(entry)\n return object\n }, {})\n },\n}\n","import { getLabel } from '../plugin-common/output/label.js'\nimport { format as getName } from '@citation-js/name'\n\n/**\n * @callback module:@citation-js/core.Cite#sort~sort\n * @param {module:@citation-js/core~CSL} a - element a\n * @param {module:@citation-js/core~CSL} b - element b\n * @return {Number} positive for a > b, negative for b > a, zero for a = b\n */\n\n/**\n * Get value for comparing\n *\n * @access private\n * @method getComparisonValue\n *\n * @param {module:@citation-js/core~CSL} obj - obj\n * @param {String} prop - The prop in question\n * @param {Boolean} label - Prop is label\n *\n * @return {String|Number} something to compare\n */\nfunction getComparisonValue(obj, prop, label = prop === 'label') {\n let value = label ? getLabel(obj) : obj[prop]\n\n switch (prop) {\n case 'author':\n case 'editor':\n return value.map((name) => name.literal || name.family || getName(name))\n\n case 'accessed':\n case 'issued':\n return value['date-parts'][0]\n\n case 'page':\n return value.split('-').map((num) => parseInt(num))\n\n case 'edition':\n case 'issue':\n case 'volume':\n value = parseInt(value)\n return !isNaN(value) ? value : -Infinity\n\n default:\n return value || -Infinity\n }\n}\n\n/**\n * Compares props\n *\n * @access private\n * @method compareProp\n *\n * @param {module:@citation-js/core~CSL} entryA\n * @param {module:@citation-js/core~CSL} entryB\n * @param {String} prop - The prop in question. Prepend ! to sort the other way around.\n * @param {Boolean} flip - Override flip\n *\n * @return {Number} positive for a > b, negative for b > a, zero for a = b (flips if prop has !)\n */\nfunction compareProp(entryA, entryB, prop, flip = /^!/.test(prop)) {\n prop = prop.replace(/^!/, '')\n const a = getComparisonValue(entryA, prop)\n const b = getComparisonValue(entryB, prop)\n\n return (flip ? -1 : 1) * (a > b ? 1 : a < b ? -1 : 0)\n}\n\n/**\n * Generates a sorting callback based on props.\n *\n * @access private\n * @method getSortCallback\n *\n * @param {...String} props - How to sort\n *\n * @return {module:@citation-js/core.Cite#sort~sort} sorting callback\n */\nfunction getSortCallback(...props) {\n return (a, b) => {\n const keys = props.slice()\n let output = 0\n\n while (!output && keys.length) {\n output = compareProp(a, b, keys.shift())\n }\n\n return output\n }\n}\n\n/**\n * Sort the dataset\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core.Cite#sort~sort|Array} [method=[]] - How to sort\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction sort(method = [], log) {\n if (log) {\n this.save()\n }\n\n this.data.sort(typeof method === 'function' ? method : getSortCallback(...method, 'label'))\n\n return this\n}\n\nexport { sort }\n","// @ts-nocheck\n/**\n * @namespace output\n * @memberof module:@citation-js/core.plugins\n */\n\nimport Register from '../util/register.js'\n\n/**\n * @callback module:@citation-js/core.plugins.output~formatter\n * @param {Array} data\n * @return {String} output\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.output~formatterName\n * @type String\n */\n\n/**\n * Validate input arguments\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.output\n *\n * @param {String} name - output format name\n * @param {module:@citation-js/core.plugins.output~formatter} formatter - outputting function\n * @throws {TypeError} Invalid output format name\n * @throws {TypeError} Invalid formatter\n */\nfunction validate(name, formatter) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid output format name, expected string, got ${typeof name}`)\n } else if (typeof formatter !== 'function') {\n throw new TypeError(`Invalid formatter, expected function, got ${typeof formatter}`)\n }\n}\n\n/**\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @constant register\n *\n * @type module:@citation-js/core.util.Register\n */\nexport const register = new Register()\n\n/**\n * Add output plugin.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method add\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n * @param {module:@citation-js/core.plugins.output~formatter} formatter - outputting function\n * @throws {TypeError} validation errors\n */\nexport function add(name, formatter) {\n validate(name, formatter)\n\n register.set(name, formatter)\n}\n\n/**\n * Remove output plugin.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method remove\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n */\nexport function remove(name) {\n register.remove(name)\n}\n\n/**\n * Check if output plugin exists.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method has\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n * @return {Boolean} register has plugin\n */\nexport function has(name) {\n return register.has(name)\n}\n\n/**\n * List output plugins.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method list\n *\n * @return {Array} list of plugins\n */\nexport function list() {\n return register.list()\n}\n\n/**\n * Call output plugin\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method format\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n * @param {Array} data - all entries\n * @param {...*} options - output options\n */\nexport function format(name, data, ...options) {\n if (!register.has(name)) {\n throw new Error(`Output format \"${name}\" unavailable`)\n }\n return register.get(name)(data, ...options)\n}\n","// @ts-nocheck\nimport { validateOutputOptions as validate } from './validate.js'\nimport { format as formatData } from '../plugins/output.js'\nimport { clean as parseCsl } from '../plugins/input/csl.js'\n\n/**\n * Get a list of the data entry IDs, in the order of that list\n *\n * @access public\n * @method getIds\n * @memberof module:@citation-js/core.Cite#\n *\n * @return {Array} List of IDs\n */\nexport function getIds() {\n return this.data.map((entry) => entry.id)\n}\n\n/**\n * Get formatted data from your object.\n *\n * @access public\n * @method format\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {String} format - format module name\n * @param {...*} options - module options (see relevant documentation)\n *\n * @return {String|Array} formatted data\n */\nexport function format(format, ...options) {\n return formatData(format, parseCsl(this.data), ...options)\n}\n\n/**\n * Get formatted data from your object.\n *\n * @access public\n * @method get\n * @memberof module:@citation-js/core.Cite#\n * @tutorial output\n * @deprecated use {@link module:@citation-js/core.Cite#format}\n *\n * @param {module:@citation-js/core~OutputOptions} [options={}] - Output options\n *\n * @return {String|Array} The formatted data\n */\n/* istanbul ignore next: deprecated */\nexport function get(options = {}) {\n validate(options)\n\n const parsedOptions = Object.assign({}, this.defaultOptions, this._options.output, options)\n\n const { type, style } = parsedOptions\n const [styleType, styleFormat] = style.split('-')\n const newStyle =\n styleType === 'citation' ? 'bibliography' : styleType === 'csl' ? 'data' : styleType\n const newType = type === 'string' ? 'text' : type === 'json' ? 'object' : type\n\n let formatOptions\n\n switch (newStyle) {\n case 'bibliography': {\n const { lang, append, prepend } = parsedOptions\n formatOptions = { template: styleFormat, lang, format: newType, append, prepend }\n break\n }\n\n case 'data':\n case 'bibtex':\n case 'bibtxt':\n case 'ndjson':\n case 'ris':\n formatOptions = { type: newType }\n break\n\n default:\n throw new Error(`Invalid style \"${newStyle}\"`)\n }\n\n const result = this.format(newStyle, Object.assign(formatOptions, options._newOptions))\n\n const { format } = parsedOptions\n if (\n format === 'real' &&\n newType === 'html' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n ) {\n const tmp = document.createElement('div')\n tmp.innerHTML = result\n return tmp.firstChild\n } else if (format === 'string' && typeof result === 'object') {\n return JSON.stringify(result)\n } else {\n return result\n }\n}\n","// @ts-nocheck\n/**\n * @callback module:@citation-js/core.Cite~asyncCallback\n * @param {Cite} data - Cite object\n */\n\n/**\n * @access public\n * @memberof module:@citation-js/core.Cite\n *\n * @param {module:@citation-js/core~InputData} data - input data\n * @param {module:@citation-js/core~InputOptions} [options={}] - cite options\n * @param {module:@citation-js/core.Cite~asyncCallback} [callback] - if not given, function returns promise.\n *\n * @return {Promise} if callback is omitted, returns a promise\n */\nfunction async(data, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options\n options = undefined\n }\n\n const promise = new this().setAsync(data, options)\n\n if (typeof callback === 'function') {\n promise.then(callback)\n return undefined\n } else {\n return promise\n }\n}\n\nexport default async\n","//@ts-nocheck\nimport * as log from './log.js'\nimport * as options from './options.js'\nimport * as set from './set.js'\nimport * as sort from './sort.js'\nimport * as get from './get.js'\nimport * as staticMethods from './static.js'\n\n/**\n * Create a `Cite` object with almost any kind of data, and manipulate it with its default methods.\n *\n * @access public\n * @constructor Cite\n * @memberof module:@citation-js/core\n *\n * @param {module:@citation-js/core~InputData} data - Input data\n * @param {module:@citation-js/core~InputOptions} [options={}] - Input options\n */\nfunction Cite(data, options = {}) {\n // Making it Scope-Safe\n if (!(this instanceof Cite)) {\n return new Cite(data, options)\n }\n\n /**\n * The default options for the output. See [input options](../#cite.in.options)\n *\n * @access protected\n * @memberof module:@citation-js/core.Cite#\n *\n * @var {module:@citation-js/core~InputOptions} _options\n */\n this._options = options\n\n /**\n * The saved-images-log\n *\n * @access protected\n * @memberof module:@citation-js/core.Cite#\n *\n * @var {Array>} log\n */\n this.log = []\n\n /**\n * The parsed data\n *\n * @access protected\n * @memberof module:@citation-js/core.Cite#\n *\n * @var {Array} data\n */\n this.data = []\n\n // Modified citation-js to accept an array of objects\n // Use add instead of set to retain previous data\n data.forEach((d) => {\n this.add(d, options)\n })\n // this.set(data, options)\n this.options(options)\n\n return this\n}\n\nObject.assign(Cite.prototype, log, options, set, sort, get)\n\nCite.prototype[Symbol.iterator] = function* () {\n yield* this.data\n}\n\nObject.assign(Cite, staticMethods)\n\nexport default Cite\n","// @ts-nocheck\n/**\n * @namespace dict\n * @memberof module:@citation-js/core.plugins\n */\n\nimport Register from '../util/register.js'\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~dictName\n * @type String\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~dict\n * @type Object\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~entryName\n * @type String\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~dictEntry\n * @type Array\n */\n\n/**\n * Validate input arguments\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.dict\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n * @param {module:@citation-js/core.plugins.dict~dict} formatter - outputting function\n * @throws {TypeError} Invalid output format name\n * @throws {TypeError} Invalid formatter\n */\nfunction validate(name, dict) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid dict name, expected string, got ${typeof name}`)\n } else if (typeof dict !== 'object') {\n throw new TypeError(`Invalid dict, expected object, got ${typeof dict}`)\n }\n\n for (const entryName in dict) {\n const entry = dict[entryName]\n if (!Array.isArray(entry) || entry.some((part) => typeof part !== 'string')) {\n throw new TypeError(`Invalid dict entry \"${entryName}\", expected array of strings`)\n }\n }\n}\n\n/**\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @constant register\n *\n * @type module:@citation-js/core.util.Register\n */\nexport const register = new Register({\n html: {\n bibliographyContainer: ['
', '
'],\n entry: ['
', '
'],\n list: ['
    ', '
'],\n listItem: ['
  • ', '
  • '],\n },\n text: {\n bibliographyContainer: ['', '\\n'],\n entry: ['', '\\n'],\n list: ['\\n', ''],\n listItem: ['\\t', '\\n'],\n },\n})\n\n/**\n * Add dictionary to register. Can be used by output plugins.\n *\n * @todo docs\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method add\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - dictionary name\n * @param {module:@citation-js/core.plugins.dict~dict} dict - dictionary data\n * @throws {TypeError} argument validation error\n */\nexport function add(name, dict) {\n validate(name, dict)\n register.set(name, dict)\n}\n\n/**\n * Remove dictionary.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method remove\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n */\nexport function remove(name) {\n register.remove(name)\n}\n\n/**\n * Check if dictionary plugin exists.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method has\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n * @return {Boolean} register has plugin\n */\nexport function has(name) {\n return register.has(name)\n}\n\n/**\n * List dictionary plugins.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method list\n *\n * @return {Array} list of plugins\n */\nexport function list() {\n return register.list()\n}\n\n/**\n * Get dictionary data.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method get\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n * @return {module:@citation-js/core.plugins.dict~dict} dictionary data\n */\nexport function get(name) {\n if (!register.has(name)) {\n throw new Error(`Dict \"${name}\" unavailable`)\n }\n return register.get(name)\n}\n\n/**\n * Object containing HTML strings for building JSON and BibTeX. Made to match citeproc, for compatibility.\n *\n * @access protected\n * @memberof module:@citation-js/core.plugins.dict\n * @deprecated use the new formatting dicts: {@link module:@citation-js/core.plugins.dict}\n */\nexport const htmlDict = {\n wr_start: '
    ',\n wr_end: '
    ',\n en_start: '
    ',\n en_end: '
    ',\n ul_start: '
      ',\n ul_end: '
    ',\n li_start: '
  • ',\n li_end: '
  • ',\n}\n\n/**\n * Object containing text strings for building JSON and BibTeX. Made to match citeproc, for compatibility.\n *\n * @access protected\n * @memberof module:@citation-js/core.plugins.dict\n * @deprecated use the new formatting dicts: {@link module:@citation-js/core.plugins.dict}\n */\nexport const textDict = {\n wr_start: '',\n wr_end: '\\n',\n en_start: '',\n en_end: '\\n',\n ul_start: '\\n',\n ul_end: '',\n li_start: '\\t',\n li_end: '\\n',\n}\n","// @ts-nocheck\n/**\n * @namespace config\n * @memberof module:@citation-js/core.plugins\n */\n\nconst configs = {}\n\n/**\n * @access public\n * @method add\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @param {Object} config\n */\nexport function add(ref, config) {\n configs[ref] = config\n}\n\n/**\n * @access public\n * @method get\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @return {Object} config\n */\nexport function get(ref) {\n return configs[ref]\n}\n\n/**\n * @access public\n * @method has\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @return {Boolean}\n */\nexport function has(ref) {\n return Object.prototype.hasOwnProperty.call(configs, ref)\n}\n\n/**\n * @access public\n * @method remove\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n */\nexport function remove(ref) {\n delete configs[ref]\n}\n\n/**\n * @access public\n * @method list\n * @memberof module:@citation-js/core.plugins.config\n * @return {Array} list of available plugin configs\n */\nexport function list() {\n return Object.keys(configs)\n}\n","// @ts-nocheck\n/**\n * @namespace plugins\n * @memberof module:@citation-js/core\n */\n\nimport * as input from './input/index.js'\nimport * as output from './output.js'\nimport * as dict from './dict.js'\nimport * as config from './config.js'\n\nconst registers = {\n input,\n output,\n dict,\n config,\n}\n\nconst indices = {}\n\n/**\n * @access public\n * @method add\n * @memberof module:@citation-js/core.plugins\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @param {module:@citation-js/core.plugins~plugins} [plugins={}]\n */\nexport function add(ref, plugins = {}) {\n const mainIndex = (indices[ref] = {})\n\n for (const type in plugins) {\n if (type === 'config') {\n mainIndex.config = { [ref]: plugins.config }\n registers.config.add(ref, plugins.config)\n continue\n }\n\n const typeIndex = (mainIndex[type] = {})\n const typePlugins = plugins[type]\n\n for (const name in typePlugins) {\n const typePlugin = typePlugins[name]\n\n typeIndex[name] = true\n registers[type].add(name, typePlugin)\n }\n }\n}\n\n/**\n * @access public\n * @method remove\n * @memberof module:@citation-js/core.plugins\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n */\nexport function remove(ref) {\n const mainIndex = indices[ref]\n\n for (const type in mainIndex) {\n const typeIndex = mainIndex[type]\n\n for (const name in typeIndex) {\n registers[type].remove(name)\n }\n }\n\n delete indices[ref]\n}\n\n/**\n * @access public\n * @method has\n * @memberof module:@citation-js/core.plugins\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @returns {Boolean} plugin is registered\n */\nexport function has(ref) {\n return ref in indices\n}\n\n/**\n * @access public\n * @method list\n * @memberof module:@citation-js/core.plugins\n * @returns {Array} list of registered plugins\n */\nexport function list() {\n return Object.keys(indices)\n}\n\n/**\n * @typedef {String} module:@citation-js/core.plugins~pluginRef\n */\n\n/**\n * @typedef {Object} module:@citation-js/core.plugins~plugins\n * @property {Object} input\n * @property {Object} output\n * @property {Object} dict\n * @property {Object} config\n */\n\nexport { input, output, dict, config }\n","export function parse() {\n return []\n}\n","// @ts-nocheck\n/**\n * @module input/other\n */\n\nimport logger from '../../logger.js'\n\n/**\n *\n * @access private\n * @constant substituters\n * @default\n */\nconst substituters = [\n [/((?:\\[|:|,)\\s*)'((?:\\\\'|[^'])*?[^\\\\])?'(?=\\s*(?:\\]|}|,))/g, '$1\"$2\"'],\n [\n /((?:(?:\"|]|}|\\/[gmiuys]|\\.|(?:\\d|\\.|-)*\\d)\\s*,|{)\\s*)(?:\"([^\":\\n]+?)\"|'([^\":\\n]+?)'|([^\":\\n]+?))(\\s*):/g,\n '$1\"$2$3$4\"$5:',\n ],\n]\n\n/**\n * Parse (in)valid JSON\n *\n * @access protected\n * @method parseJSON\n *\n * @param {String} str - The input string\n *\n * @return {Object|Array|Array} The parsed object\n */\nfunction parseJSON(str) {\n if (typeof str !== 'string') {\n return JSON.parse(str)\n }\n\n try {\n return JSON.parse(str)\n } catch (e) {\n logger.debug('[plugin-common]', 'Invalid JSON, switching to experimental parser')\n substituters.forEach(([regex, subst]) => {\n str = str.replace(regex, subst)\n })\n return JSON.parse(str)\n }\n}\n\nexport { parseJSON as parse, parseJSON as default }\n","export /* istanbul ignore next: not testable in Node */ function parse(input) {\n return input.val() || input.text() || input.html()\n}\n","export function parse(input) {\n return input.value || input.textContent\n}\n","// @ts-nocheck\n/* global jQuery, HTMLElement */\n\n/**\n * @module input/other\n */\n\nimport * as empty from './empty.js'\nimport * as json from './json.js'\nimport * as jquery from './jquery.js'\nimport * as html from './html.js'\n\nexport const ref = '@else'\nexport const parsers = { empty, json, jquery, html }\nexport const formats = {\n '@empty/text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: (input) => input === '',\n },\n },\n '@empty/whitespace+text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s+$/,\n },\n },\n '@empty': {\n parse: empty.parse,\n parseType: {\n dataType: 'Primitive',\n predicate: (input) => input == null,\n },\n },\n '@else/json': {\n parse: json.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\{[\\S\\s]*\\}|\\[[\\S\\s]*\\])\\s*$/,\n },\n },\n '@else/url': {\n parseType: {\n dataType: 'String',\n predicate: /^https?:\\/\\/(([\\w-]+\\.)*[\\w-]+)(:\\d+)?(\\/[^?/]*)*(\\?[^#]*)?(#.*)?$/i,\n },\n },\n '@else/jquery': {\n parse: jquery.parse,\n parseType: {\n dataType: 'ComplexObject',\n /* istanbul ignore next: not testable in Node */\n predicate(input) {\n return typeof jQuery !== 'undefined' && input instanceof jQuery\n },\n },\n },\n '@else/html': {\n parse: html.parse,\n parseType: {\n dataType: 'ComplexObject',\n /* istanbul ignore next: not testable in Node */\n predicate(input) {\n return typeof HTMLElement !== 'undefined' && input instanceof HTMLElement\n },\n },\n },\n}\n","// @ts-nocheck\n/**\n * @module output/json\n */\n\nimport * as plugins from '../../plugins/index.js'\nimport * as util from '../../util/index.js'\nimport logger from '../../logger.js'\n\n/**\n * Append commas to every item but the last. Should unfortunately, probably be a utility.\n *\n * @access private\n *\n * @param {String} item\n * @param {Number} index\n * @param {Array} array\n *\n * @return {String} modified item\n */\nfunction appendCommas(string, index, array) {\n return string + (index < array.length - 1 ? ',' : '')\n}\n\n/**\n * Convert a JSON array or object to HTML.\n *\n * @access private\n *\n * @param {Object|Array} src - The data\n * @param {Cite.get.dict~dict} dict - Dictionary\n *\n * @return {String} string form\n */\nfunction getJsonObject(src, dict) {\n const isArray = Array.isArray(src)\n let entries\n\n if (isArray) {\n entries = src.map((entry) => getJsonValue(entry, dict))\n } else {\n entries = Object.keys(src)\n // remove values that cannot be stringified, as is custom\n .filter((prop) => JSON.stringify(src[prop]))\n .map((prop) => `\"${prop}\": ${getJsonValue(src[prop], dict)}`)\n }\n\n entries = entries.map(appendCommas).map((entry) => dict.listItem.join(entry))\n entries = dict.list.join(entries.join(''))\n\n return isArray ? `[${entries}]` : `{${entries}}`\n}\n\n/**\n * Convert JSON to HTML.\n *\n * @access private\n *\n * @param {*} src - The data\n * @param {Cite.get.dict~dict} dict - Dictionary\n *\n * @return {String} string form\n */\nfunction getJsonValue(src, dict) {\n if (typeof src === 'object' && src !== null) {\n if (src.length === 0) {\n return '[]'\n } else if (Object.keys(src).length === 0) {\n return '{}'\n } else {\n return getJsonObject(src, dict)\n }\n } else {\n return JSON.stringify(src)\n }\n}\n\n/**\n * Get a JSON string from CSL\n *\n * @access protected\n * @method getJson\n *\n * @param {Array} src - Input CSL\n * @param {Cite.get.dict~dict} dict - Dictionary\n *\n * @return {String} JSON string\n */\nfunction getJson(src, dict) {\n let entries = src.map((entry) => getJsonObject(entry, dict))\n entries = entries.map(appendCommas).map((entry) => dict.entry.join(entry))\n entries = entries.join('')\n\n return dict.bibliographyContainer.join(`[${entries}]`)\n}\n\n/**\n * Get a JSON HTML string from CSL\n *\n * @access protected\n * @method getJsonWrapper\n * @deprecated use the generalised method: {@link module:output/json~getJson}\n *\n * @param {Array} src - Input CSL\n *\n * @return {String} JSON HTML string\n */\nexport /* istanbul ignore next: deprecated */ function getJsonWrapper(src) {\n return getJson(src, plugins.dict.get('html'))\n}\n\nexport default {\n data(data, { type, format = type || 'text', version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n\n if (format === 'object') {\n return util.deepCopy(data)\n } else if (format === 'text') {\n return JSON.stringify(data, null, 2)\n } else {\n logger.warn(\n '[core]',\n 'This feature (JSON output with special formatting) is unstable. See https://github.com/larsgw/citation.js/issues/144'\n )\n return getJson(data, plugins.dict.get(format))\n }\n },\n ndjson(data, { version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n\n return data.map((entry) => JSON.stringify(entry)).join('\\n')\n },\n}\n","import json from './json.js'\nimport label from './label.js'\n\nexport default Object.assign({}, json, label)\n","import * as plugins from '../plugins/index.js'\nimport { ref, formats as input } from './input/index.js'\nimport output from './output/index.js'\nplugins.add(ref, {\n input,\n output,\n})\n","// @ts-nocheck\nimport { parse as parseDate } from '@citation-js/date'\nimport { parse as parseName } from '@citation-js/name'\n\nfunction nameProps(person) {\n const { firstname, lastname, firstName: given = firstname, lastName: family = lastname } = person\n\n if (given && family) {\n return { given, family }\n } else if (person.name) {\n return parseName(person.name)\n }\n}\n\nconst identifiers = [\n 'PMID',\n 'PMCID',\n 'DOI',\n 'ISBN',\n // 'URL' is actually the URL of the record collection, if I understand it correctly,\n // and not of the record. Otherwise, it should be included.\n]\n\nconst journalIdentifiers = ['ISSN']\n\nfunction idProps(input, identifiers) {\n const output = {}\n\n for (const prop in input) {\n const upperCaseProp = prop.toUpperCase()\n\n if (identifiers.includes(upperCaseProp)) {\n output[upperCaseProp] = input[prop]\n }\n }\n\n if (input.identifier) {\n for (let { id, type = '' } of input.identifier) {\n type = type.toUpperCase()\n if (identifiers.includes(type)) {\n output[type] = id\n }\n }\n }\n\n return output\n}\n\n// copied from BibTeX, as BibJSON is based on BibTeX\nconst typeMap = {\n article: 'article',\n book: 'book',\n booklet: 'book',\n proceedings: 'book',\n mastersthesis: 'thesis',\n inbook: 'chapter',\n incollection: 'chapter',\n conference: 'paper-conference',\n inproceedings: 'paper-conference',\n manual: 'report',\n misc: 'document',\n online: 'website',\n patent: 'patent',\n phdthesis: 'thesis',\n techreport: 'report',\n unpublished: 'manuscript',\n}\n\nfunction quickscrapeSpecificProps() {\n return { type: 'article-journal' }\n}\n\nfunction generalProps(input) {\n const output = {\n type: typeMap[input.type] || 'document',\n title: input.title,\n }\n\n if (input.author) {\n output.author = input.author.map(nameProps).filter(Boolean)\n }\n if (input.editor) {\n output.editor = input.editor.map(nameProps).filter(Boolean)\n }\n if (input.reviewer) {\n if (input.author) {\n output['reviewed-author'] = output.author\n }\n output.author = input.reviewer.map(nameProps).filter(Boolean)\n }\n\n /* istanbul ignore next: no examples found */\n if (Array.isArray(input.keywords)) {\n output.keyword = input.keywords.join()\n } else if (input.keywords) {\n output.keyword = input.keywords\n }\n\n if (input.publisher) {\n output.publisher = input.publisher.name || input.publisher\n }\n\n if (input.date && input.date.published) {\n output.issued = parseDate(input.date.published)\n } else if (input.year) {\n output.issued = { 'date-parts': [[+input.year]] }\n }\n if (input.date && input.date.submitted) {\n output.submitted = parseDate(input.date.submitted)\n }\n\n if (input.journal) {\n const journal = input.journal\n if (journal.name) {\n output['container-title'] = journal.name\n }\n if (journal.volume) {\n output.volume = journal.volume\n }\n if (journal.issue) {\n output.issue = journal.issue\n }\n\n Object.assign(output, idProps(journal, journalIdentifiers))\n\n if (journal.firstpage) {\n output['page-first'] = journal.firstpage\n }\n /* istanbul ignore else: no examples found */\n if (journal.pages) {\n output.page = journal.pages.replace('--', '-')\n } else if (journal.firstpage && journal.lastpage) {\n output.page = journal.firstpage + '-' + journal.lastpage\n }\n }\n\n if (input.link && typeof input.link[0] === 'object') {\n output.URL = input.link[0].url\n }\n\n Object.assign(output, idProps(input, identifiers))\n\n if (input.cid) {\n output.id = input.cid\n } else if (output.DOI) {\n output.id = output.DOI\n }\n\n return output\n}\n\n/**\n * Parse ContentMine quickscrape data\n *\n * @access protected\n * @memberof module:@citation-js/plugin-bibjson.parsers.json\n * @param {Object} data - The input data\n * @return {Array} The formatted input data\n */\nconst parseContentMine = function (data) {\n return Object.assign(generalProps(data), quickscrapeSpecificProps(data))\n}\n\n/**\n * Parse BibJSON data\n *\n * @access protected\n * @memberof module:@citation-js/plugin-bibjson.parsers.json\n * @param {Object} data - The input data\n * @return {Array} The formatted input data\n */\nconst parseBibJson = function (data) {\n return generalProps(data)\n}\n\nexport { parseContentMine as quickscrapeRecord, parseBibJson as record }\n","/**\n * ## Formats\n *\n * ### BibJSON\n *\n * This plugin adds input support for the [BibJSON format](http://okfnlabs.org/bibjson/), with three variants:\n *\n * * collections, where the records are extracted and parsed\n * * records, which are parsed\n * * records of the [quickscrape](https://github.com/ContentMine/quickscrape) variant, which are parsed\n *\n * @module module:@citation-js/plugin-bibjson\n */\n\nimport * as json from './json.js'\nimport { plugins } from '../core/index.js'\n\nconst scraperLinks = ['fulltext_html', 'fulltext_xml', 'fulltext_pdf']\nconst authorNameFields = ['name', 'lastname', 'lastName', 'firstname', 'firstName']\n\n/**\n * @constant {module:@citation-js/core.plugins~pluginRef} ref\n * @memberof module:@citation-js/plugin-bibjson\n * @default '@bibjson'\n */\nconst ref = '@bibjson'\n\n/**\n * @access protected\n * @namespace parsers\n * @memberof module:@citation-js/plugin-bibjson\n */\nconst parsers = {\n /**\n * @access protected\n * @namespace json\n * @memberof module:@citation-js/plugin-bibjson.parsers\n */\n json,\n}\n\n/**\n * @namespace formats\n * @type module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson\n */\nconst formats = {\n /**\n * Object with quickscrape-style BibJSON.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibjson/quickscrape+record+object': {\n parse: json.quickscrapeRecord,\n parseType: {\n propertyConstraint: {\n props: 'link',\n value(links) {\n return scraperLinks.some((link) => links.find(({ type }) => type === link))\n },\n },\n extends: '@bibjson/record+object',\n },\n },\n /**\n * Object with BibJSON.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibjson/record+object': {\n parse: json.record,\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'title',\n },\n {\n props: ['author', 'editor'],\n match: 'some',\n value(authors) {\n return (\n Array.isArray(authors) &&\n authors[0] &&\n authorNameFields.some((field) => field in authors[0])\n )\n },\n },\n ],\n },\n },\n /**\n * Array of {@link module:@citation-js/plugin-bibjson.formats.\"@bibjson/record+object\"|BibJSON objects}.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibjson/collection+object': {\n parse(collection) {\n return collection.records\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'metadata',\n value(metadata) {\n return 'collection' in metadata\n },\n },\n {\n props: 'records',\n value(records) {\n return Array.isArray(records)\n },\n },\n ],\n },\n },\n}\n\nplugins.add(ref, {\n input: formats,\n})\n\nexport { ref, parsers, formats }\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory) /* global define */\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory()\n } else {\n root.moo = factory()\n }\n}(this, function() {\n 'use strict';\n\n var hasOwnProperty = Object.prototype.hasOwnProperty\n var toString = Object.prototype.toString\n var hasSticky = typeof new RegExp().sticky === 'boolean'\n\n /***************************************************************************/\n\n function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' }\n function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) }\n\n function reEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n }\n function reGroups(s) {\n var re = new RegExp('|' + s)\n return re.exec('').length - 1\n }\n function reCapture(s) {\n return '(' + s + ')'\n }\n function reUnion(regexps) {\n if (!regexps.length) return '(?!)'\n var source = regexps.map(function(s) {\n return \"(?:\" + s + \")\"\n }).join('|')\n return \"(?:\" + source + \")\"\n }\n\n function regexpOrLiteral(obj) {\n if (typeof obj === 'string') {\n return '(?:' + reEscape(obj) + ')'\n\n } else if (isRegExp(obj)) {\n // TODO: consider /u support\n if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed')\n if (obj.global) throw new Error('RegExp /g flag is implied')\n if (obj.sticky) throw new Error('RegExp /y flag is implied')\n if (obj.multiline) throw new Error('RegExp /m flag is implied')\n return obj.source\n\n } else {\n throw new Error('Not a pattern: ' + obj)\n }\n }\n\n function pad(s, length) {\n if (s.length > length) {\n return s\n }\n return Array(length - s.length + 1).join(\" \") + s\n }\n\n function lastNLines(string, numLines) {\n var position = string.length\n var lineBreaks = 0;\n while (true) {\n var idx = string.lastIndexOf(\"\\n\", position - 1)\n if (idx === -1) {\n break;\n } else {\n lineBreaks++\n }\n position = idx\n if (lineBreaks === numLines) {\n break;\n }\n if (position === 0) {\n break;\n }\n }\n var startPosition = \n lineBreaks < numLines ?\n 0 : \n position + 1\n return string.substring(startPosition).split(\"\\n\")\n }\n\n function objectToRules(object) {\n var keys = Object.getOwnPropertyNames(object)\n var result = []\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var thing = object[key]\n var rules = [].concat(thing)\n if (key === 'include') {\n for (var j = 0; j < rules.length; j++) {\n result.push({include: rules[j]})\n }\n continue\n }\n var match = []\n rules.forEach(function(rule) {\n if (isObject(rule)) {\n if (match.length) result.push(ruleOptions(key, match))\n result.push(ruleOptions(key, rule))\n match = []\n } else {\n match.push(rule)\n }\n })\n if (match.length) result.push(ruleOptions(key, match))\n }\n return result\n }\n\n function arrayToRules(array) {\n var result = []\n for (var i = 0; i < array.length; i++) {\n var obj = array[i]\n if (obj.include) {\n var include = [].concat(obj.include)\n for (var j = 0; j < include.length; j++) {\n result.push({include: include[j]})\n }\n continue\n }\n if (!obj.type) {\n throw new Error('Rule has no type: ' + JSON.stringify(obj))\n }\n result.push(ruleOptions(obj.type, obj))\n }\n return result\n }\n\n function ruleOptions(type, obj) {\n if (!isObject(obj)) {\n obj = { match: obj }\n }\n if (obj.include) {\n throw new Error('Matching rules cannot also include states')\n }\n\n // nb. error and fallback imply lineBreaks\n var options = {\n defaultType: type,\n lineBreaks: !!obj.error || !!obj.fallback,\n pop: false,\n next: null,\n push: null,\n error: false,\n fallback: false,\n value: null,\n type: null,\n shouldThrow: false,\n }\n\n // Avoid Object.assign(), so we support IE9+\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n options[key] = obj[key]\n }\n }\n\n // type transform cannot be a string\n if (typeof options.type === 'string' && type !== options.type) {\n throw new Error(\"Type transform cannot be a string (type '\" + options.type + \"' for token '\" + type + \"')\")\n }\n\n // convert to array\n var match = options.match\n options.match = Array.isArray(match) ? match : match ? [match] : []\n options.match.sort(function(a, b) {\n return isRegExp(a) && isRegExp(b) ? 0\n : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length\n })\n return options\n }\n\n function toRules(spec) {\n return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec)\n }\n\n var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true})\n function compileRules(rules, hasStates) {\n var errorRule = null\n var fast = Object.create(null)\n var fastAllowed = true\n var unicodeFlag = null\n var groups = []\n var parts = []\n\n // If there is a fallback rule, then disable fast matching\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].fallback) {\n fastAllowed = false\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var options = rules[i]\n\n if (options.include) {\n // all valid inclusions are removed by states() preprocessor\n throw new Error('Inheritance is not allowed in stateless lexers')\n }\n\n if (options.error || options.fallback) {\n // errorRule can only be set once\n if (errorRule) {\n if (!options.fallback === !errorRule.fallback) {\n throw new Error(\"Multiple \" + (options.fallback ? \"fallback\" : \"error\") + \" rules not allowed (for token '\" + options.defaultType + \"')\")\n } else {\n throw new Error(\"fallback and error are mutually exclusive (for token '\" + options.defaultType + \"')\")\n }\n }\n errorRule = options\n }\n\n var match = options.match.slice()\n if (fastAllowed) {\n while (match.length && typeof match[0] === 'string' && match[0].length === 1) {\n var word = match.shift()\n fast[word.charCodeAt(0)] = options\n }\n }\n\n // Warn about inappropriate state-switching options\n if (options.pop || options.push || options.next) {\n if (!hasStates) {\n throw new Error(\"State-switching options are not allowed in stateless lexers (for token '\" + options.defaultType + \"')\")\n }\n if (options.fallback) {\n throw new Error(\"State-switching options are not allowed on fallback tokens (for token '\" + options.defaultType + \"')\")\n }\n }\n\n // Only rules with a .match are included in the RegExp\n if (match.length === 0) {\n continue\n }\n fastAllowed = false\n\n groups.push(options)\n\n // Check unicode flag is used everywhere or nowhere\n for (var j = 0; j < match.length; j++) {\n var obj = match[j]\n if (!isRegExp(obj)) {\n continue\n }\n\n if (unicodeFlag === null) {\n unicodeFlag = obj.unicode\n } else if (unicodeFlag !== obj.unicode && options.fallback === false) {\n throw new Error('If one rule is /u then all must be')\n }\n }\n\n // convert to RegExp\n var pat = reUnion(match.map(regexpOrLiteral))\n\n // validate\n var regexp = new RegExp(pat)\n if (regexp.test(\"\")) {\n throw new Error(\"RegExp matches empty string: \" + regexp)\n }\n var groupCount = reGroups(pat)\n if (groupCount > 0) {\n throw new Error(\"RegExp has capture groups: \" + regexp + \"\\nUse (?: … ) instead\")\n }\n\n // try and detect rules matching newlines\n if (!options.lineBreaks && regexp.test('\\n')) {\n throw new Error('Rule should declare lineBreaks: ' + regexp)\n }\n\n // store regex\n parts.push(reCapture(pat))\n }\n\n\n // If there's no fallback rule, use the sticky flag so we only look for\n // matches at the current index.\n //\n // If we don't support the sticky flag, then fake it using an irrefutable\n // match (i.e. an empty pattern).\n var fallbackRule = errorRule && errorRule.fallback\n var flags = hasSticky && !fallbackRule ? 'ym' : 'gm'\n var suffix = hasSticky || fallbackRule ? '' : '|'\n\n if (unicodeFlag === true) flags += \"u\"\n var combined = new RegExp(reUnion(parts) + suffix, flags)\n return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule}\n }\n\n function compile(rules) {\n var result = compileRules(toRules(rules))\n return new Lexer({start: result}, 'start')\n }\n\n function checkStateGroup(g, name, map) {\n var state = g && (g.push || g.next)\n if (state && !map[state]) {\n throw new Error(\"Missing state '\" + state + \"' (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n if (g && g.pop && +g.pop !== 1) {\n throw new Error(\"pop must be 1 (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n }\n function compileStates(states, start) {\n var all = states.$all ? toRules(states.$all) : []\n delete states.$all\n\n var keys = Object.getOwnPropertyNames(states)\n if (!start) start = keys[0]\n\n var ruleMap = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n ruleMap[key] = toRules(states[key]).concat(all)\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var rules = ruleMap[key]\n var included = Object.create(null)\n for (var j = 0; j < rules.length; j++) {\n var rule = rules[j]\n if (!rule.include) continue\n var splice = [j, 1]\n if (rule.include !== key && !included[rule.include]) {\n included[rule.include] = true\n var newRules = ruleMap[rule.include]\n if (!newRules) {\n throw new Error(\"Cannot include nonexistent state '\" + rule.include + \"' (in state '\" + key + \"')\")\n }\n for (var k = 0; k < newRules.length; k++) {\n var newRule = newRules[k]\n if (rules.indexOf(newRule) !== -1) continue\n splice.push(newRule)\n }\n }\n rules.splice.apply(rules, splice)\n j--\n }\n }\n\n var map = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n map[key] = compileRules(ruleMap[key], true)\n }\n\n for (var i = 0; i < keys.length; i++) {\n var name = keys[i]\n var state = map[name]\n var groups = state.groups\n for (var j = 0; j < groups.length; j++) {\n checkStateGroup(groups[j], name, map)\n }\n var fastKeys = Object.getOwnPropertyNames(state.fast)\n for (var j = 0; j < fastKeys.length; j++) {\n checkStateGroup(state.fast[fastKeys[j]], name, map)\n }\n }\n\n return new Lexer(map, start)\n }\n\n function keywordTransform(map) {\n\n // Use a JavaScript Map to map keywords to their corresponding token type\n // unless Map is unsupported, then fall back to using an Object:\n var isMap = typeof Map !== 'undefined'\n var reverseMap = isMap ? new Map : Object.create(null)\n\n var types = Object.getOwnPropertyNames(map)\n for (var i = 0; i < types.length; i++) {\n var tokenType = types[i]\n var item = map[tokenType]\n var keywordList = Array.isArray(item) ? item : [item]\n keywordList.forEach(function(keyword) {\n if (typeof keyword !== 'string') {\n throw new Error(\"keyword must be string (in keyword '\" + tokenType + \"')\")\n }\n if (isMap) {\n reverseMap.set(keyword, tokenType)\n } else {\n reverseMap[keyword] = tokenType\n }\n })\n }\n return function(k) {\n return isMap ? reverseMap.get(k) : reverseMap[k]\n }\n }\n\n /***************************************************************************/\n\n var Lexer = function(states, state) {\n this.startState = state\n this.states = states\n this.buffer = ''\n this.stack = []\n this.reset()\n }\n\n Lexer.prototype.reset = function(data, info) {\n this.buffer = data || ''\n this.index = 0\n this.line = info ? info.line : 1\n this.col = info ? info.col : 1\n this.queuedToken = info ? info.queuedToken : null\n this.queuedText = info ? info.queuedText: \"\";\n this.queuedThrow = info ? info.queuedThrow : null\n this.setState(info ? info.state : this.startState)\n this.stack = info && info.stack ? info.stack.slice() : []\n return this\n }\n\n Lexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.col,\n state: this.state,\n stack: this.stack.slice(),\n queuedToken: this.queuedToken,\n queuedText: this.queuedText,\n queuedThrow: this.queuedThrow,\n }\n }\n\n Lexer.prototype.setState = function(state) {\n if (!state || this.state === state) return\n this.state = state\n var info = this.states[state]\n this.groups = info.groups\n this.error = info.error\n this.re = info.regexp\n this.fast = info.fast\n }\n\n Lexer.prototype.popState = function() {\n this.setState(this.stack.pop())\n }\n\n Lexer.prototype.pushState = function(state) {\n this.stack.push(this.state)\n this.setState(state)\n }\n\n var eat = hasSticky ? function(re, buffer) { // assume re is /y\n return re.exec(buffer)\n } : function(re, buffer) { // assume re is /g\n var match = re.exec(buffer)\n // will always match, since we used the |(?:) trick\n if (match[0].length === 0) {\n return null\n }\n return match\n }\n\n Lexer.prototype._getGroup = function(match) {\n var groupCount = this.groups.length\n for (var i = 0; i < groupCount; i++) {\n if (match[i + 1] !== undefined) {\n return this.groups[i]\n }\n }\n throw new Error('Cannot find token type for matched text')\n }\n\n function tokenToString() {\n return this.value\n }\n\n Lexer.prototype.next = function() {\n var index = this.index\n\n // If a fallback token matched, we don't need to re-run the RegExp\n if (this.queuedGroup) {\n var token = this._token(this.queuedGroup, this.queuedText, index)\n this.queuedGroup = null\n this.queuedText = \"\"\n return token\n }\n\n var buffer = this.buffer\n if (index === buffer.length) {\n return // EOF\n }\n\n // Fast matching for single characters\n var group = this.fast[buffer.charCodeAt(index)]\n if (group) {\n return this._token(group, buffer.charAt(index), index)\n }\n\n // Execute RegExp\n var re = this.re\n re.lastIndex = index\n var match = eat(re, buffer)\n\n // Error tokens match the remaining buffer\n var error = this.error\n if (match == null) {\n return this._token(error, buffer.slice(index, buffer.length), index)\n }\n\n var group = this._getGroup(match)\n var text = match[0]\n\n if (error.fallback && match.index !== index) {\n this.queuedGroup = group\n this.queuedText = text\n\n // Fallback tokens contain the unmatched portion of the buffer\n return this._token(error, buffer.slice(index, match.index), index)\n }\n\n return this._token(group, text, index)\n }\n\n Lexer.prototype._token = function(group, text, offset) {\n // count line breaks\n var lineBreaks = 0\n if (group.lineBreaks) {\n var matchNL = /\\n/g\n var nl = 1\n if (text === '\\n') {\n lineBreaks = 1\n } else {\n while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex }\n }\n }\n\n var token = {\n type: (typeof group.type === 'function' && group.type(text)) || group.defaultType,\n value: typeof group.value === 'function' ? group.value(text) : text,\n text: text,\n toString: tokenToString,\n offset: offset,\n lineBreaks: lineBreaks,\n line: this.line,\n col: this.col,\n }\n // nb. adding more props to token object will make V8 sad!\n\n var size = text.length\n this.index += size\n this.line += lineBreaks\n if (lineBreaks !== 0) {\n this.col = size - nl + 1\n } else {\n this.col += size\n }\n\n // throw, if no rule with {error: true}\n if (group.shouldThrow) {\n var err = new Error(this.formatError(token, \"invalid syntax\"))\n throw err;\n }\n\n if (group.pop) this.popState()\n else if (group.push) this.pushState(group.push)\n else if (group.next) this.setState(group.next)\n\n return token\n }\n\n if (typeof Symbol !== 'undefined' && Symbol.iterator) {\n var LexerIterator = function(lexer) {\n this.lexer = lexer\n }\n\n LexerIterator.prototype.next = function() {\n var token = this.lexer.next()\n return {value: token, done: !token}\n }\n\n LexerIterator.prototype[Symbol.iterator] = function() {\n return this\n }\n\n Lexer.prototype[Symbol.iterator] = function() {\n return new LexerIterator(this)\n }\n }\n\n Lexer.prototype.formatError = function(token, message) {\n if (token == null) {\n // An undefined token indicates EOF\n var text = this.buffer.slice(this.index)\n var token = {\n text: text,\n offset: this.index,\n lineBreaks: text.indexOf('\\n') === -1 ? 0 : 1,\n line: this.line,\n col: this.col,\n }\n }\n \n var numLinesAround = 2\n var firstDisplayedLine = Math.max(token.line - numLinesAround, 1)\n var lastDisplayedLine = token.line + numLinesAround\n var lastLineDigits = String(lastDisplayedLine).length\n var displayedLines = lastNLines(\n this.buffer, \n (this.line - token.line) + numLinesAround + 1\n )\n .slice(0, 5)\n var errorLines = []\n errorLines.push(message + \" at line \" + token.line + \" col \" + token.col + \":\")\n errorLines.push(\"\")\n for (var i = 0; i < displayedLines.length; i++) {\n var line = displayedLines[i]\n var lineNo = firstDisplayedLine + i\n errorLines.push(pad(String(lineNo), lastLineDigits) + \" \" + line);\n if (lineNo === token.line) {\n errorLines.push(pad(\"\", lastLineDigits + token.col + 1) + \"^\")\n }\n }\n return errorLines.join(\"\\n\")\n }\n\n Lexer.prototype.clone = function() {\n return new Lexer(this.states, this.state)\n }\n\n Lexer.prototype.has = function(tokenType) {\n return true\n }\n\n\n return {\n compile: compile,\n states: compileStates,\n error: Object.freeze({error: true}),\n fallback: Object.freeze({fallback: true}),\n keywords: keywordTransform,\n }\n\n}));\n","const required = {\n biblatex: {\n article: ['author', 'title', 'journaltitle', ['year', 'date']],\n book: ['author', 'title', ['year', 'date']],\n mvbook: ['author', 'title', ['year', 'date']],\n inbook: ['author', 'title', 'booktitle', ['year', 'date']],\n booklet: [['author', 'editor'], 'title', ['year', 'date']],\n collection: ['editor', 'title', ['year', 'date']],\n mvcollection: ['editor', 'title', ['year', 'date']],\n incollection: ['author', 'title', 'booktitle', ['year', 'date']],\n dataset: [['author', 'editor'], 'title', ['year', 'date']],\n online: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n patent: ['author', 'title', 'number', ['year', 'date']],\n periodical: ['editor', 'title', ['year', 'date']],\n proceedings: ['title', ['year', 'date']],\n mvproceedings: ['title', ['year', 'date']],\n inproceedings: ['author', 'title', 'booktitle', ['year', 'date']],\n report: ['author', 'title', 'type', 'institution', ['year', 'date']],\n thesis: ['author', 'title', 'type', 'institution', ['year', 'date']],\n unpublished: ['author', 'title', ['year', 'date']],\n conference: ['author', 'title', 'booktitle', ['year', 'date']],\n electronic: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n mastersthesis: ['author', 'title', 'institution', ['year', 'date']],\n phdthesis: ['author', 'title', 'institution', ['year', 'date']],\n techreport: ['author', 'title', 'institution', ['year', 'date']],\n www: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n },\n bibtex: {\n article: ['author', 'title', 'journal', 'year'],\n book: [['author', 'editor'], 'title', 'publisher', 'year'],\n booklet: ['title'],\n inbook: [['author', 'editor'], 'title', ['chapter', 'pages'], 'publisher', 'year'],\n incollection: ['author', 'title', 'booktitle', 'publisher', 'year'],\n inproceedings: ['author', 'title', 'booktitle', 'year'],\n mastersthesis: ['author', 'title', 'school', 'year'],\n phdthesis: ['author', 'title', 'school', 'year'],\n proceedings: ['title', 'year'],\n techreport: ['author', 'title', 'institution', 'year'],\n unpublished: ['author', 'title', 'note'],\n },\n}\n\nexport default required\n","const fieldTypes = {\n abstract: ['field', 'literal'],\n addendum: ['field', 'literal'],\n afterword: ['list', 'name'],\n annotation: ['field', 'literal'],\n annotator: ['list', 'name'],\n author: ['list', 'name'],\n authortype: ['field', 'key'],\n bookauthor: ['list', 'name'],\n bookpagination: ['field', 'key'],\n booksubtitle: ['field', 'literal'],\n booktitle: ['field', 'title'],\n booktitleaddon: ['field', 'literal'],\n chapter: ['field', 'literal'],\n commentator: ['list', 'name'],\n date: ['field', 'date'],\n doi: ['field', 'verbatim'],\n edition: ['field', 'literal'],\n editor: ['list', 'name'],\n editora: ['list', 'name'],\n editorb: ['list', 'name'],\n editorc: ['list', 'name'],\n editortype: ['field', 'key'],\n editoratype: ['field', 'key'],\n editorbtype: ['field', 'key'],\n editorctype: ['field', 'key'],\n eid: ['field', 'literal'],\n entrysubtype: ['field', 'literal'],\n eprint: ['field', 'verbatim'],\n eprintclass: ['field', 'literal'],\n eprinttype: ['field', 'literal'],\n eventdate: ['field', 'date'],\n eventtitle: ['field', 'title'],\n eventtitleaddon: ['field', 'literal'],\n file: ['field', 'verbatim'],\n foreword: ['list', 'name'],\n holder: ['list', 'name'],\n howpublished: ['field', 'literal'],\n indextitle: ['field', 'literal'],\n institution: ['list', 'literal'],\n introduction: ['list', 'name'],\n isan: ['field', 'literal'],\n isbn: ['field', 'literal'],\n ismn: ['field', 'literal'],\n isrn: ['field', 'literal'],\n issn: ['field', 'literal'],\n issue: ['field', 'literal'],\n issuesubtitle: ['field', 'literal'],\n issuetitle: ['field', 'literal'],\n iswc: ['field', 'literal'],\n journalsubtitle: ['field', 'literal'],\n journaltitle: ['field', 'literal'],\n label: ['field', 'literal'],\n language: ['list', 'key'],\n library: ['field', 'literal'],\n location: ['list', 'literal'],\n mainsubtitle: ['field', 'literal'],\n maintitle: ['field', 'title'],\n maintitleaddon: ['field', 'literal'],\n month: ['field', 'literal'],\n nameaddon: ['field', 'literal'],\n note: ['field', 'literal'],\n number: ['field', 'literal'],\n organization: ['list', 'literal'],\n origdate: ['field', 'date'],\n origlanguage: ['list', 'key'],\n origlocation: ['list', 'literal'],\n origpublisher: ['list', 'literal'],\n origtitle: ['field', 'title'],\n pages: ['field', 'range'],\n pagetotal: ['field', 'literal'],\n pagination: ['field', 'key'],\n part: ['field', 'literal'],\n publisher: ['list', 'literal'],\n pubstate: ['field', 'key'],\n reprinttitle: ['field', 'literal'],\n series: ['field', 'title'],\n shortauthor: ['list', 'name'],\n shorteditor: ['list', 'name'],\n shorthand: ['field', 'literal'],\n shorthandintro: ['field', 'literal'],\n shortjournal: ['field', 'literal'],\n shortseries: ['field', 'literal'],\n shorttitle: ['field', 'title'],\n subtitle: ['field', 'literal'],\n title: ['field', 'title'],\n titleaddon: ['field', 'literal'],\n translator: ['list', 'name'],\n type: ['field', 'title'],\n url: ['field', 'uri'],\n urldate: ['field', 'date'],\n venue: ['field', 'literal'],\n version: ['field', 'literal'],\n volume: ['field', 'integer'],\n volumes: ['field', 'integer'],\n year: ['field', 'literal'],\n crossref: ['field', 'entry key'],\n entryset: ['separated', 'literal'],\n execute: ['field', 'code'],\n gender: ['field', 'gender'],\n langid: ['field', 'identifier'],\n langidopts: ['field', 'literal'],\n ids: ['separated', 'entry key'],\n indexsorttitle: ['field', 'literal'],\n keywords: ['separated', 'literal'],\n options: ['separated', 'options'],\n presort: ['field', 'string'],\n related: ['separated', 'literal'],\n relatedoptions: ['separated', 'literal'],\n relatedtype: ['field', 'identifier'],\n relatedstring: ['field', 'literal'],\n sortkey: ['field', 'literal'],\n sortname: ['list', 'name'],\n sortshorthand: ['field', 'literal'],\n sorttitle: ['field', 'literal'],\n sortyear: ['field', 'integer'],\n xdata: ['separated', 'entry key'],\n xref: ['field', 'entry key'],\n namea: ['list', 'name'],\n nameb: ['list', 'name'],\n namec: ['list', 'name'],\n nameatype: ['field', 'key'],\n namebtype: ['field', 'key'],\n namectype: ['field', 'key'],\n lista: ['list', 'literal'],\n listb: ['list', 'literal'],\n listc: ['list', 'literal'],\n listd: ['list', 'literal'],\n liste: ['list', 'literal'],\n listf: ['list', 'literal'],\n usera: ['field', 'literal'],\n userb: ['field', 'literal'],\n userc: ['field', 'literal'],\n userd: ['field', 'literal'],\n usere: ['field', 'literal'],\n userf: ['field', 'literal'],\n verba: ['field', 'literal'],\n verbb: ['field', 'literal'],\n verbc: ['field', 'literal'],\n address: ['list', 'literal'],\n annote: ['field', 'literal'],\n archiveprefix: ['field', 'literal'],\n journal: ['field', 'literal'],\n key: ['field', 'literal'],\n pdf: ['field', 'verbatim'],\n primaryclass: ['field', 'literal'],\n school: ['list', 'literal'],\n numpages: ['field', 'integer'],\n pmid: ['field', 'literal'],\n pmcid: ['field', 'literal'],\n}\n\nexport default fieldTypes\n","const unicode = {\n diacritics: {\n '`': '̀',\n \"'\": '́',\n '^': '̂',\n '~': '̃',\n '=': '̄',\n u: '̆',\n '.': '̇',\n '\"': '̈',\n r: '̊',\n H: '̋',\n v: '̌',\n b: '̲',\n d: '̣',\n c: '̧',\n k: '̨',\n t: '͡',\n textcommabelow: '̦',\n },\n commands: {\n textquotesingle: \"'\",\n textasciigrave: '`',\n textquotedbl: '\"',\n textdollar: '$',\n textless: '<',\n textgreater: '>',\n textbackslash: '\\\\',\n textasciicircum: '^',\n textunderscore: '_',\n textbraceleft: '{',\n textbar: '|',\n textbraceright: '}',\n textasciitilde: '~',\n textexclamdown: '¡',\n textcent: '¢',\n textsterling: '£',\n textcurrency: '¤',\n textyen: '¥',\n textbrokenbar: '¦',\n textsection: '§',\n textasciidieresis: '¨',\n textcopyright: '©',\n textordfeminine: 'ª',\n guillemetleft: '«',\n guillemotleft: '«',\n textlnot: '¬',\n textregistered: '®',\n textasciimacron: '¯',\n textdegree: '°',\n textpm: '±',\n texttwosuperior: '²',\n textthreesuperior: '³',\n textasciiacute: '´',\n textmu: 'µ',\n textparagraph: '¶',\n textperiodcentered: '·',\n textonesuperior: '¹',\n textordmasculine: 'º',\n guillemetright: '»',\n guillemotright: '»',\n textonequarter: '¼',\n textonehalf: '½',\n textthreequarters: '¾',\n textquestiondown: '¿',\n AE: 'Æ',\n DH: 'Ð',\n texttimes: '×',\n O: 'Ø',\n TH: 'Þ',\n ss: 'ß',\n ae: 'æ',\n dh: 'ð',\n textdiv: '÷',\n o: 'ø',\n th: 'þ',\n DJ: 'Đ',\n dj: 'đ',\n i: 'ı',\n IJ: 'IJ',\n ij: 'ij',\n L: 'Ł',\n l: 'ł',\n NG: 'Ŋ',\n ng: 'ŋ',\n OE: 'Œ',\n oe: 'œ',\n textflorin: 'ƒ',\n j: 'ȷ',\n textasciicaron: 'ˇ',\n textasciibreve: '˘',\n textacutedbl: '˝',\n textgravedbl: '˵',\n texttildelow: '˷',\n textbaht: '฿',\n SS: 'ẞ',\n textcompwordmark: '‌',\n textendash: '–',\n textemdash: '—',\n textbardbl: '‖',\n textquoteleft: '‘',\n textquoteright: '’',\n quotesinglbase: '‚',\n textquotedblleft: '“',\n textquotedblright: '”',\n quotedblbase: '„',\n textdagger: '†',\n textdaggerdbl: '‡',\n textbullet: '•',\n textellipsis: '…',\n textperthousand: '‰',\n textpertenthousand: '‱',\n guilsinglleft: '‹',\n guilsinglright: '›',\n textreferencemark: '※',\n textinterrobang: '‽',\n textfractionsolidus: '⁄',\n textlquill: '⁅',\n textrquill: '⁆',\n textdiscount: '⁒',\n textcolonmonetary: '₡',\n textlira: '₤',\n textnaira: '₦',\n textwon: '₩',\n textdong: '₫',\n texteuro: '€',\n textpeso: '₱',\n textcelsius: '℃',\n textnumero: '№',\n textcircledP: '℗',\n textrecipe: '℞',\n textservicemark: '℠',\n texttrademark: '™',\n textohm: 'Ω',\n textmho: '℧',\n textestimated: '℮',\n textleftarrow: '←',\n textuparrow: '↑',\n textrightarrow: '→',\n textdownarrow: '↓',\n textminus: '−',\n Hwithstroke: 'Ħ',\n hwithstroke: 'ħ',\n textasteriskcentered: '∗',\n textsurd: '√',\n textlangle: '〈',\n textrangle: '〉',\n textblank: '␢',\n textvisiblespace: '␣',\n textopenbullet: '◦',\n textbigcircle: '◯',\n textmusicalnote: '♪',\n textmarried: '⚭',\n textdivorced: '⚮',\n textinterrobangdown: '⸘',\n textcommabelow: null,\n copyright: '©',\n Gamma: 'Γ',\n Delta: 'Δ',\n Theta: 'Θ',\n Lambda: 'Λ',\n Xi: 'Ξ',\n Pi: 'Π',\n Sigma: 'Σ',\n Phi: 'Φ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n varepsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n pi: 'π',\n rho: 'ρ',\n varsigma: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n varphi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n vartheta: 'ϑ',\n Upsilon: 'ϒ',\n phi: 'ϕ',\n varpi: 'ϖ',\n varrho: 'ϱ',\n epsilon: 'ϵ',\n },\n}\n\nexport default unicode\n","import _required from './required.js'\nimport _fieldTypes from './fieldTypes.js'\nimport unicode from './unicode.js'\nexport const required = _required\nexport const fieldTypes = _fieldTypes\nexport const diacritics = unicode.diacritics\nexport const commands = unicode.commands\n\n// Adapted from astrocite-bibtex (accessed 2018-02-22)\n// https://github.com/dsifford/astrocite/blob/668a9e4/packages/astrocite-bibtex/src/constants.ts#L112-L148\nexport const defaultStrings = {\n jan: '01',\n feb: '02',\n mar: '03',\n apr: '04',\n may: '05',\n jun: '06',\n jul: '07',\n aug: '08',\n sep: '09',\n oct: '10',\n nov: '11',\n dec: '12',\n acmcs: 'ACM Computing Surveys',\n acta: 'Acta Informatica',\n cacm: 'Communications of the ACM',\n ibmjrd: 'IBM Journal of Research and Development',\n ibmsj: 'IBM Systems Journal',\n ieeese: 'IEEE Transactions on Software Engineering',\n ieeetc: 'IEEE Transactions on Computers',\n ieeetcad: 'IEEE Transactions on Computer-Aided Design of Integrated Circuits',\n ipl: 'Information Processing Letters',\n jacm: 'Journal of the ACM',\n jcss: 'Journal of Computer and System Sciences',\n scp: 'Science of Computer Programming',\n sicomp: 'SIAM Journal on Computing',\n tocs: 'ACM Transactions on Computer Systems',\n tods: 'ACM Transactions on Database Systems',\n tog: 'ACM Transactions on Graphics',\n toms: 'ACM Transactions on Mathematical Software',\n toois: 'ACM Transactions on Office Information Systems',\n toplas: 'ACM Transactions on Programming Languages and Systems',\n tcs: 'Theoretical Computer Science',\n}\nexport const formattingEnvs = {\n it: 'italics',\n itshape: 'italics',\n sl: 'italics',\n slshape: 'italics',\n em: 'italics',\n\n bf: 'bold',\n bfseries: 'bold',\n\n sc: 'smallcaps',\n scshape: 'smallcaps',\n\n // Font selection\n rm: undefined,\n sf: undefined,\n tt: undefined,\n}\n\nexport const formattingCommands = {\n textit: 'italics',\n textsl: 'italics',\n emph: 'italics',\n mkbibitalic: 'italics',\n mkbibemph: 'italics',\n\n textbf: 'bold',\n strong: 'bold',\n mkbibbold: 'bold',\n\n textsc: 'smallcaps',\n\n textsuperscript: 'superscript',\n textsubscript: 'subscript',\n\n enquote: 'quotes',\n mkbibquote: 'quotes',\n\n // Font selection\n textmd: undefined,\n textrm: undefined,\n textsf: undefined,\n texttt: undefined,\n textup: undefined,\n}\n\nexport const formatting = {\n italics: ['', ''],\n bold: ['', ''],\n superscript: ['', ''],\n subscript: ['', ''],\n smallcaps: ['', ''],\n nocase: ['', ''],\n quotes: ['\\u201C', '\\u201D'],\n}\n\n// Partly adapted from retorquere/bibtex-parser (2020-11-16)\n// https://github.com/retorquere/bibtex-parser/blob/7ad73df/index.ts\nexport const argumentCommands = {\n ElsevierGlyph(glyph) {\n return String.fromCharCode(parseInt(glyph, 16))\n },\n href(url, text) {\n return url\n },\n url(url) {\n return url\n },\n}\n\nexport const ligaturePattern = /---?|''|``|~/g\n\nexport const ligatures = {\n '--': '\\u2013',\n '---': '\\u2014',\n '``': '\\u201C',\n \"''\": '\\u201D',\n '~': '\\u00A0',\n}\n\nexport const mathScriptFormatting = {\n '^': 'superscript',\n sp: 'superscript',\n\n _: 'subscript',\n sb: 'subscript',\n\n mathrm: undefined,\n}\n\n/* eslint-disable quote-props */\nexport const mathScripts = {\n '^': {\n 0: '\\u2070',\n 1: '\\u00B9',\n 2: '\\u00B2',\n 3: '\\u00B3',\n 4: '\\u2074',\n 5: '\\u2075',\n 6: '\\u2076',\n 7: '\\u2077',\n 8: '\\u2078',\n 9: '\\u2079',\n '+': '\\u207A',\n '-': '\\u207B',\n '=': '\\u207C',\n '(': '\\u207D',\n ')': '\\u207E',\n i: '\\u2071',\n n: '\\u207F',\n },\n _: {\n 0: '\\u2080',\n 1: '\\u2081',\n 2: '\\u2082',\n 3: '\\u2083',\n 4: '\\u2084',\n 5: '\\u2085',\n 6: '\\u2086',\n 7: '\\u2087',\n 8: '\\u2088',\n 9: '\\u2089',\n '+': '\\u208A',\n '-': '\\u208B',\n '=': '\\u208C',\n '(': '\\u208D',\n ')': '\\u208E',\n a: '\\u2090',\n e: '\\u2091',\n o: '\\u2092',\n x: '\\u2093',\n '\\u0259': '\\u2094',\n h: '\\u2095',\n k: '\\u2096',\n l: '\\u2097',\n m: '\\u2098',\n n: '\\u2099',\n s: '\\u209A',\n p: '\\u209B',\n t: '\\u209C',\n },\n}\n/* eslint-enable quote-props */\n\n// Adapted from retorquere/bibtex-parser (2020-10-15)\n// https://github.com/retorquere/bibtex-parser/blob/0c8bd92/index.ts#L416-L441\nexport const sentenceCaseLanguages = [\n 'american',\n 'british',\n 'canadian',\n 'english',\n 'australian',\n 'newzealand',\n 'usenglish',\n 'ukenglish',\n 'en',\n 'eng',\n 'en-au',\n 'en-bz',\n 'en-ca',\n 'en-cb',\n 'en-gb',\n 'en-ie',\n 'en-jm',\n 'en-nz',\n 'en-ph',\n 'en-tt',\n 'en-us',\n 'en-za',\n 'en-zw',\n 'anglais',\n]\n","import { util, logger } from '../../core/index.js'\n\nimport moo from 'moo'\nimport { defaultStrings } from './constants.js'\n\nconst identifier = /[a-zA-Z_][a-zA-Z0-9_:-]*/\nconst whitespace = {\n comment: /%.*/,\n whitespace: { match: /\\s+/, lineBreaks: true },\n}\n\nconst lexer = moo.states({\n main: {\n junk: { match: /@[cC][oO][mM][mM][eE][nN][tT].+|[^@]+/, lineBreaks: true },\n at: { match: '@', push: 'entry' },\n },\n entry: {\n ...whitespace,\n otherEntryType: {\n match: /[sS][tT][rR][iI][nN][gG]|[pP][rR][eE][aA][mM][bB][lL][eE]/,\n next: 'otherEntryContents',\n },\n dataEntryType: {\n match: identifier,\n next: 'dataEntryContents',\n },\n },\n otherEntryContents: {\n ...whitespace,\n lbrace: { match: /[{(]/, next: 'fields' },\n },\n dataEntryContents: {\n ...whitespace,\n lbrace: { match: /[{(]/, next: 'dataEntryContents' },\n label: /[^,\\s]+/,\n comma: { match: ',', next: 'fields' },\n },\n fields: {\n ...whitespace,\n identifier,\n number: /-?\\d+/,\n hash: '#',\n equals: '=',\n comma: ',',\n quote: { match: '\"', push: 'quotedLiteral' },\n lbrace: { match: '{', push: 'bracedLiteral' },\n rbrace: { match: /[})]/, pop: true },\n },\n quotedLiteral: {\n lbrace: { match: '{', push: 'bracedLiteral' },\n quote: { match: '\"', pop: true },\n text: { match: /(?:\\\\[\\\\{]|[^{\"])+/, lineBreaks: true },\n },\n bracedLiteral: {\n lbrace: { match: '{', push: 'bracedLiteral' },\n rbrace: { match: '}', pop: true },\n text: { match: /(?:\\\\[\\\\{}]|[^{}])+/, lineBreaks: true },\n },\n})\n\nconst delimiters = {\n '(': ')',\n '{': '}',\n}\n\nexport const bibtexGrammar = new util.Grammar(\n {\n Main() {\n const entries = []\n\n while (true) {\n while (this.matchToken('junk')) {\n this.consumeToken('junk')\n }\n\n if (this.matchEndOfFile()) {\n break\n }\n\n entries.push(this.consumeRule('Entry'))\n }\n\n return entries.filter(Boolean)\n },\n\n _() {\n let oldToken\n while (oldToken !== this.token) {\n oldToken = this.token\n this.consumeToken('whitespace', true)\n this.consumeToken('comment', true)\n }\n },\n\n Entry() {\n this.consumeToken('at')\n this.consumeRule('_')\n\n const type = (\n this.matchToken('otherEntryType')\n ? this.consumeToken('otherEntryType')\n : this.consumeToken('dataEntryType')\n ).value.toLowerCase()\n\n this.consumeRule('_')\n const openBrace = this.consumeToken('lbrace').value\n this.consumeRule('_')\n\n let result\n\n if (type === 'string') {\n const [key, value] = this.consumeRule('Field')\n this.state.strings[key] = value\n } else if (type === 'preamble') {\n this.consumeRule('Expression')\n } else {\n const label = this.consumeToken('label').value\n\n this.consumeRule('_')\n this.consumeToken('comma')\n this.consumeRule('_')\n\n const properties = this.consumeRule('EntryBody')\n\n result = { type, label, properties }\n }\n\n this.consumeRule('_')\n const closeBrace = this.consumeToken('rbrace').value\n if (closeBrace !== delimiters[openBrace]) {\n logger.warn(\n '[plugin-bibtex]',\n `entry started with \"${openBrace}\", but ends with \"${closeBrace}\"`\n )\n }\n\n return result\n },\n\n EntryBody() {\n const properties = {}\n\n while (this.matchToken('identifier')) {\n const [field, value] = this.consumeRule('Field')\n properties[field] = value\n\n this.consumeRule('_')\n if (this.consumeToken('comma', true)) {\n this.consumeRule('_')\n } else {\n break\n }\n }\n\n return properties\n },\n\n Field() {\n const field = this.consumeToken('identifier').value.toLowerCase()\n\n this.consumeRule('_')\n this.consumeToken('equals')\n this.consumeRule('_')\n\n const value = this.consumeRule('Expression')\n\n return [field, value]\n },\n\n Expression() {\n let output = this.consumeRule('ExpressionPart')\n this.consumeRule('_')\n\n while (this.matchToken('hash')) {\n this.consumeToken('hash')\n this.consumeRule('_')\n output += this.consumeRule('ExpressionPart').toString()\n this.consumeRule('_')\n }\n\n return output\n },\n\n ExpressionPart() {\n if (this.matchToken('identifier')) {\n return this.state.strings[this.consumeToken('identifier').value.toLowerCase()] || ''\n } else if (this.matchToken('number')) {\n return parseInt(this.consumeToken('number'))\n } else if (this.matchToken('quote')) {\n return this.consumeRule('QuoteString')\n } else {\n return this.consumeRule('BracketString')\n }\n },\n\n QuoteString() {\n let output = ''\n this.consumeToken('quote')\n while (!this.matchToken('quote')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('quote')\n return output\n },\n\n BracketString() {\n let output = ''\n this.consumeToken('lbrace')\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('rbrace')\n return output\n },\n\n Text() {\n if (this.matchToken('lbrace')) {\n return `{${this.consumeRule('BracketString')}}`\n } else {\n return this.consumeToken('text').value\n }\n },\n },\n {\n strings: defaultStrings,\n }\n)\n\nexport function parse(text) {\n return bibtexGrammar.parse(lexer.reset(text))\n}\n","/**\n * @access private\n * @constant bibTxtRegex\n * @default\n */\nconst bibTxtRegex = {\n splitEntries: /\\n\\s*(?=\\[)/g,\n parseEntry: /^\\[(.+?)\\]\\s*(?:\\n([\\s\\S]+))?$/,\n splitPairs: /((?=.)\\s)*\\n\\s*/g,\n splitPair: /:(.*)/,\n}\n\n/**\n * Parse single Bib.TXT entry\n *\n * @access private\n * @method parseBibTxtEntry\n *\n * @param {String} entry - The input data\n *\n * @return {Object} Array of BibTeX-JSON\n */\nconst parseBibTxtEntry = (entry) => {\n const [, label, pairs] = entry.match(bibTxtRegex.parseEntry) || []\n\n if (!label || !pairs) {\n return {}\n } else {\n const out = {\n type: 'book',\n label,\n properties: {},\n }\n\n pairs\n .trim()\n .split(bibTxtRegex.splitPairs)\n .filter((v) => v)\n .forEach((pair) => {\n let [key, value] = pair.split(bibTxtRegex.splitPair)\n\n /* istanbul ignore else */\n if (value) {\n key = key.trim()\n value = value.trim()\n\n if (key === 'type') {\n out.type = value\n } else {\n out.properties[key] = value\n }\n }\n })\n\n return out\n }\n}\n\n/**\n * Parse Bib.TXT data\n *\n * @access private\n * @method parseBibTxt\n *\n * @param {String} src - The input data\n *\n * @return {Array} Array of BibTeX-JSON\n */\nconst parseBibTxt = (src) => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry)\n\nexport { parseBibTxt as parse, parseBibTxt as text, parseBibTxtEntry as textEntry }\n","const biblatexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n mvbook: 'book',\n inbook: 'chapter',\n bookinbook: 'book',\n booklet: 'book',\n collection: 'book',\n mvcollection: 'book',\n incollection: 'chapter',\n dataset: 'dataset',\n online: 'webpage',\n patent: 'patent',\n periodical: 'article-journal',\n proceedings: 'book',\n mvproceedings: 'book',\n inproceedings: 'paper-conference',\n reference: 'book',\n mvreference: 'book',\n inreference: 'entry',\n report: 'report',\n software: 'book',\n thesis: 'thesis',\n unpublished: 'manuscript',\n artwork: 'graphic',\n audio: 'song',\n image: 'figure',\n jurisdiction: 'legal_case',\n legislation: 'legislation',\n legal: 'treaty',\n letter: 'personal_communication',\n movie: 'motion_picture',\n music: 'musical_score',\n review: 'review',\n video: 'motion_picture',\n conference: 'paper-conference',\n electronic: 'webpage',\n mastersthesis: 'thesis',\n phdthesis: 'thesis',\n techreport: 'report',\n www: 'webpage',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n bill: 'legislation',\n book: 'book',\n broadcast: 'audio',\n chapter: 'inbook',\n dataset: 'dataset',\n entry: 'inreference',\n 'entry-dictionary': 'inreference',\n 'entry-encyclopedia': 'inreference',\n figure: 'artwork',\n graphic: 'artwork',\n interview: 'audio',\n legal_case: 'jurisdiction',\n legislation: 'legislation',\n manuscript: 'unpublished',\n motion_picture: 'movie',\n musical_score: 'music',\n 'paper-conference': 'inproceedings',\n patent: 'patent',\n personal_communication: 'letter',\n post: 'online',\n 'post-weblog': 'online',\n report: 'report',\n review: 'review',\n 'review-book': 'review',\n song: 'music',\n speech: 'audio',\n thesis: 'thesis',\n treaty: 'legal',\n webpage: 'online',\n },\n}\n\nexport default biblatexTypes\n","const bibtexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n booklet: 'book',\n conference: 'paper-conference',\n inbook: 'chapter',\n incollection: 'chapter',\n inproceedings: 'paper-conference',\n mastersthesis: 'thesis',\n phdthesis: 'thesis',\n proceedings: 'book',\n techreport: 'report',\n unpublished: 'manuscript',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n book: 'book',\n chapter: 'inbook',\n manuscript: 'unpublished',\n 'paper-conference': 'inproceedings',\n report: 'techreport',\n review: 'article',\n 'review-book': 'article',\n },\n}\n\nexport default bibtexTypes\n","import biblatex from './mapping/biblatexTypes.js'\nimport bibtex from './mapping/bibtexTypes.js'\nimport * as constants from './input/constants.js'\nexport default {\n constants,\n types: {\n biblatex,\n bibtex,\n },\n parse: {\n biblatex: true,\n strict: false,\n sentenceCase: 'never',\n },\n format: {\n useIdAsLabel: false,\n },\n}\n","//@ts-nocheck\nimport { util } from '../../core/index.js'\nimport config from '../config.js'\nconst stopWords = new Set(['the', 'a', 'an'])\nconst unsafeChars = /(?:<\\/?.*?>|[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F])+/g\nconst unicode = /[^\\u0020-\\u007F]+/g\n\nfunction firstWord(text) {\n if (!text) {\n return ''\n } else {\n return text\n .normalize('NFKD')\n .replace(unicode, '')\n .split(unsafeChars)\n .find((word) => word.length && !stopWords.has(word.toLowerCase()))\n }\n}\n\nconst name = new util.Translator([\n {\n source: 'given',\n target: 'given',\n },\n {\n source: 'family',\n target: 'family',\n },\n {\n source: 'suffix',\n target: 'suffix',\n },\n {\n source: 'prefix',\n target: 'non-dropping-particle',\n },\n {\n source: 'family',\n target: 'literal',\n when: {\n source: false,\n target: {\n family: false,\n given: false,\n },\n },\n },\n])\nconst months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']\nexport const TYPE = 'BibTeX type'\nexport const LABEL = 'BibTeX label'\nexport const MONTHS = {\n jan: 1,\n feb: 2,\n mar: 3,\n apr: 4,\n may: 5,\n jun: 6,\n jul: 7,\n aug: 8,\n sep: 9,\n oct: 10,\n nov: 11,\n dec: 12,\n january: 1,\n february: 2,\n march: 3,\n april: 4,\n may: 5,\n june: 6,\n july: 7,\n august: 8,\n september: 9,\n october: 10,\n november: 11,\n december: 12,\n}\nexport const TYPE_KEYS = {\n bathesis: \"Bachelor's thesis\",\n mathesis: \"Master's thesis\",\n phdthesis: 'PhD thesis',\n candthesis: 'Candidate thesis',\n techreport: 'technical report',\n resreport: 'research report',\n software: 'computer software',\n datacd: 'data cd',\n audiocd: 'audio cd',\n patent: 'patent',\n patentde: 'German patent',\n patenteu: 'European patent',\n patentfr: 'French patent',\n patentuk: 'British patent',\n patentus: 'U.S. patent',\n patreq: 'patent request',\n patreqde: 'German patent request',\n patreqeu: 'European patent request',\n patreqfr: 'French patent request',\n patrequk: 'British patent request',\n patrequs: 'U.S. patent request',\n}\nexport const STANDARD_NUMBERS_PATTERN =\n /(^(?:ISAN )?(?:[0-9a-f]{4}-){4}[0-9a-z](?:-(?:[0-9a-f]{4}-){2}[0-9a-z])?$)|(^(?:979-?0-?|M-?)(?:\\d{9}|(?=[\\d-]{11}$)\\d+-\\d+-\\d)$)|(^ISRN .{1,36}$)|(^(?:ISWC )?T-?\\d{9}-?\\d$)/i\nexport function parseDate(date) {\n const parts = date\n .split('T')[0]\n .replace(/[?~%]$/, '')\n .split('-')\n const year = +parts[0].replace(/^Y(?=-?\\d{4}\\d+)/, '').replace(/X/g, '0')\n const month = +parts[1]\n const day = +parts[2]\n\n if (!month || month > 20) {\n return [year]\n } else if (!day) {\n return [year, month]\n } else {\n return [year, month, day]\n }\n}\nexport function parseMonth(value) {\n if (value == null) {\n return []\n }\n\n if (+value) {\n return [parseInt(value, 10)]\n }\n\n value = value.trim().toLowerCase()\n\n if (value in MONTHS) {\n return [MONTHS[value]]\n }\n\n const parts = value.split(/\\s+/)\n let month\n let day\n\n if (parts[0] in MONTHS) {\n month = MONTHS[parts[0]]\n day = parseInt(parts[1])\n } else if (parts[1] in MONTHS) {\n month = MONTHS[parts[1]]\n day = parseInt(parts[0])\n }\n\n return day ? [month, day] : month ? [month] : []\n}\nexport function formatLabel(author, issued, suffix, title) {\n let label = ''\n\n if (author && author[0]) {\n label += firstWord(author[0].family || author[0].literal)\n }\n\n if (issued && issued['date-parts'] && issued['date-parts'][0]) {\n label += issued['date-parts'][0][0]\n }\n\n if (suffix) {\n label += suffix\n } else if (title) {\n label += firstWord(title)\n }\n\n return label\n}\nexport const Converters = {\n PICK: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n\n toSource(value) {\n return [value]\n },\n },\n DATE: {\n toTarget(date) {\n const parts = date\n .split('/')\n .map((part) => (part && part !== '..' ? parseDate(part) : undefined))\n return isNaN(parts[0][0])\n ? {\n literal: date,\n }\n : {\n 'date-parts': parts,\n }\n },\n\n toSource(date) {\n if ('date-parts' in date) {\n return date['date-parts']\n .map((datePart) =>\n datePart.map((datePart) => datePart.toString().padStart(2, '0')).join('-')\n )\n .join('/')\n }\n },\n },\n YEAR_MONTH: {\n toTarget(year, month, day) {\n if (isNaN(+year)) {\n return {\n literal: year,\n }\n } else if (!isNaN(+day) && !isNaN(+month)) {\n return {\n 'date-parts': [[+year, +month, +day]],\n }\n } else {\n return {\n 'date-parts': [[+year, ...parseMonth(month)]],\n }\n }\n },\n\n toSource(date) {\n if ('date-parts' in date) {\n const [year, month, day] = date['date-parts'][0]\n return [year.toString(), month ? (day ? `${months[month - 1]} ${day}` : month) : undefined]\n }\n },\n },\n EPRINT: {\n toTarget(id, type) {\n if (type === 'pubmed') {\n return id\n }\n },\n\n toSource(id) {\n return [id, 'pubmed']\n },\n },\n HOW_PUBLISHED: {\n toTarget(howPublished) {\n if (howPublished.startsWith('http')) {\n return howPublished\n }\n },\n },\n KEYWORDS: {\n toTarget(list) {\n return list.join(',')\n },\n\n toSource(list) {\n return list.split(',')\n },\n },\n LABEL: {\n toTarget(label) {\n return [label, label]\n },\n\n toSource(id, label, author, issued, suffix, title) {\n let safeId\n\n if (id === null) {\n safeId = 'null'\n } else if (id === undefined) {\n safeId = 'undefined'\n } else {\n safeId = id.toString().replace(unsafeChars, '')\n }\n\n if (config.format.useIdAsLabel) {\n return safeId\n }\n\n if (label && !unsafeChars.test(label)) {\n return label\n } else {\n return formatLabel(author, issued, suffix, title) || safeId\n }\n },\n },\n NAMES: {\n toTarget(list) {\n return list.map(name.convertToTarget)\n },\n\n toSource(list) {\n return list.map(name.convertToSource)\n },\n },\n STANDARD_NUMBERS: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n\n toSource(number) {\n const match = number.toString().match(STANDARD_NUMBERS_PATTERN)\n return match ? match.slice(1, 5) : []\n },\n },\n STATUS: {\n toSource(state) {\n if (/^(inpreparation|submitted|forthcoming|inpress|prepublished)$/i.test(state)) {\n return state\n }\n },\n },\n TITLE: {\n toTarget(title, subtitle, addon) {\n if (subtitle) {\n title += ': ' + subtitle\n }\n\n return title\n },\n\n toSource(title) {\n return [title]\n },\n },\n}\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './biblatexTypes.js'\nimport { TYPE, LABEL, TYPE_KEYS, Converters } from './shared.js'\nconst nonSpec = [\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: { note: false, addendum: false },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'numpages',\n target: 'number-of-pages',\n when: {\n source: { pagetotal: false },\n target: false,\n },\n },\n {\n source: 'pmid',\n target: 'PMID',\n when: {\n source: {\n eprinttype(type) {\n return type !== 'pmid'\n },\n archiveprefix(type) {\n return type !== 'pmid'\n },\n },\n target: false,\n },\n },\n {\n source: 'pmcid',\n target: 'PMCID',\n when: {\n target: false,\n },\n },\n {\n source: 's2id',\n target: 'custom',\n convert: {\n toTarget(S2ID) {\n return { S2ID }\n },\n toSource({ S2ID }) {\n return S2ID\n },\n },\n },\n]\n\nconst aliases = [\n {\n source: 'annote',\n target: 'annote',\n when: {\n source: { annotation: false },\n target: false,\n },\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n when: {\n source: { location: false },\n target: false,\n },\n },\n {\n source: ['eprint', 'archiveprefix'],\n target: 'PMID',\n convert: Converters.EPRINT,\n when: {\n source: { eprinttype: false },\n target: false,\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n booktitle: false,\n journaltitle: false,\n },\n target: false,\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: false,\n },\n },\n]\n\nexport default new util.Translator([\n ...aliases,\n ...nonSpec,\n {\n source: 'abstract',\n target: 'abstract',\n },\n {\n source: 'urldate',\n target: 'accessed',\n convert: Converters.DATE,\n },\n {\n source: 'annotation',\n target: 'annote',\n },\n {\n source: 'author',\n target: 'author',\n convert: Converters.NAMES,\n },\n {\n source: 'library',\n target: 'call-number',\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'bookauthor',\n target: 'container-author',\n convert: Converters.NAMES,\n },\n\n // Regarding maintitle, booktitle & journaltitle:\n // When importing, maintitle is preferred, since it represents the\n // larger container. When exporting, booktitle is preferred since\n // it is more common, unless number-of-volumes is present indicating a\n // multi-volume book.\n // journaltitle is only used for articles.\n {\n source: ['maintitle', 'mainsubtitle', 'maintitleaddon'],\n target: 'container-title',\n when: {\n source: true,\n target: { 'number-of-volumes': true },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['booktitle', 'booksubtitle', 'booktitleaddon'],\n target: 'container-title',\n when: {\n source: { maintitle: false },\n target: {\n 'number-of-volumes': false,\n type(type) {\n return !type || !type.startsWith('article')\n },\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['journaltitle', 'journalsubtitle', 'journaltitleaddon'],\n target: 'container-title',\n when: {\n source: { [TYPE]: 'article' },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: 'shortjournal',\n target: 'container-title-short',\n when: {\n source: { [TYPE]: 'article' },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'shortjournal',\n target: 'journalAbbreviation',\n when: {\n source: false,\n target: {\n 'container-title-short': false,\n },\n },\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'bookinbook',\n 'suppbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'shortseries',\n target: 'collection-title-short',\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: [TYPE, 'entrysubtype', 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(type, subtype, typeKey) {\n if (!typeKey) {\n if (type === 'mastersthesis') {\n typeKey = 'mathesis'\n }\n if (type === 'phdthesis') {\n typeKey = 'phdthesis'\n }\n if (type === 'techreport') {\n typeKey = 'techreport'\n }\n }\n\n return [types.source[type] || 'document', typeKey || subtype]\n },\n toSource(type, genre) {\n const sourceType = types.target[type] || 'misc'\n return genre in TYPE_KEYS ? [sourceType, undefined, genre] : [sourceType, genre]\n },\n },\n },\n {\n source: TYPE,\n when: { target: { type: false } },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'eventdate',\n target: 'event-date',\n convert: Converters.DATE,\n },\n {\n source: 'venue',\n target: 'event-place',\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event-title',\n convert: Converters.EVENT_TITLE,\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event',\n convert: Converters.EVENT_TITLE,\n when: { source: false, target: { 'event-title': false } },\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'issue',\n target: 'issue',\n when: {\n source: {\n number: false,\n [TYPE]: ['article', 'periodical'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'string' && !issue.match(/\\d+/)\n },\n type: ['article', 'article-journal', 'article-newspaper', 'article-magazine', 'periodical'],\n },\n },\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return issue && (typeof issue === 'number' || issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: 'date',\n target: 'issued',\n convert: Converters.DATE,\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n when: {\n source: { date: false },\n target: false,\n },\n },\n {\n source: 'location',\n target: 'jurisdiction',\n when: {\n source: { type: 'patent' },\n target: { type: 'patent' },\n },\n },\n {\n source: 'keywords',\n target: 'keyword',\n convert: Converters.KEYWORDS,\n },\n {\n source: 'language',\n target: 'language',\n convert: Converters.PICK,\n },\n {\n source: 'langid',\n target: 'language',\n when: { source: { language: false }, target: false },\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'addendum',\n target: 'note',\n when: { source: { note: false }, target: false },\n },\n {\n source: 'eid',\n target: 'number',\n when: { target: { type: ['article-journal'] } },\n },\n {\n source: ['isan', 'ismn', 'isrn', 'iswc'],\n target: 'number',\n convert: Converters.STANDARD_NUMBERS,\n when: {\n source: {\n [TYPE](type) {\n return type !== 'patent'\n },\n },\n target: {\n type(type) {\n return type !== 'patent'\n },\n },\n },\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: { [TYPE]: ['patent', 'report', 'techreport', 'legislation'] },\n target: { type: ['patent', 'report', 'legislation'] },\n },\n },\n {\n source: 'origdate',\n target: 'original-date',\n convert: Converters.DATE,\n },\n {\n source: 'origlocation',\n target: 'original-publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'origpublisher',\n target: 'original-publisher',\n convert: Converters.PICK,\n },\n {\n source: 'origtitle',\n target: 'original-title',\n },\n {\n source: 'pages',\n target: 'page',\n when: { source: { bookpagination: [undefined, 'page'] } },\n convert: Converters.PAGES,\n },\n {\n source: 'pagetotal',\n target: 'number-of-pages',\n },\n {\n source: 'part',\n target: 'part-number',\n },\n {\n source: ['eprint', 'eprinttype'],\n target: 'PMID',\n convert: Converters.EPRINT,\n },\n {\n source: 'location',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: true,\n target: {\n // All except:\n // - thesis, report: institution\n // - webpage: organization\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'paper-conference',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'webpage', // TODO paper-conference?\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: ['report', 'thesis'],\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: ['pages', 'bookpagination'],\n target: 'section',\n when: {\n source: { bookpagination: 'section' },\n target: { page: false },\n },\n convert: {\n toTarget(section) {\n return section\n },\n toSource(section) {\n return [section, 'section']\n },\n },\n },\n {\n source: 'pubstate',\n target: 'status',\n convert: Converters.STATUS,\n },\n {\n source: 'shorttitle',\n target: 'title-short',\n },\n {\n source: 'shorttitle',\n target: 'shortTitle',\n when: { source: false, target: { 'title-short': false } },\n },\n {\n source: ['title', 'subtitle', 'titleaddon'],\n target: 'title',\n convert: Converters.TITLE,\n },\n {\n source: 'translator',\n target: 'translator',\n convert: Converters.NAMES,\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n source: {\n url: false,\n },\n target: false,\n },\n },\n {\n source: 'version',\n target: 'version',\n },\n {\n source: 'volume',\n target: 'volume',\n },\n {\n source: 'volumes',\n target: 'number-of-volumes',\n },\n {\n source: ['issuetitle', 'issuesubtitle', 'issuetitleaddon'],\n target: 'volume-title',\n convert: Converters.TITLE,\n },\n])\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './bibtexTypes.js'\nimport { TYPE, LABEL, Converters } from './shared.js'\nexport default new util.Translator([\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: { note: false },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'annote',\n target: 'annote',\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'author',\n target: 'author',\n convert: Converters.NAMES,\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'booktitle',\n target: 'container-title',\n when: {\n target: {\n type: ['chapter', 'paper-conference'],\n },\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'number' || (typeof issue === 'string' && issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: { [TYPE]: ['patent', 'report', 'techreport'] },\n target: { type: ['patent', 'report'] },\n },\n },\n {\n source: 'pages',\n target: 'page',\n convert: Converters.PAGES,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n target: {\n // All except manuscript, paper-conference, techreport and thesis\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: { publisher: false },\n target: { type: 'paper-conference' },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: { type: 'report' },\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: { type: 'thesis' },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n school: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: 'title',\n target: 'title',\n },\n {\n source: [TYPE, 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(sourceType, subType) {\n /* istanbul ignore next */\n const type = types.source[sourceType] || 'document'\n\n if (subType) {\n return [type, subType]\n } else if (sourceType === 'mastersthesis') {\n return [type, \"Master's thesis\"]\n } else if (sourceType === 'phdthesis') {\n return [type, 'PhD thesis']\n } else {\n return [type]\n }\n },\n toSource(targetType, genre) {\n const type = types.target[targetType] || 'misc'\n\n if (/^(master'?s|diploma) thesis$/i.test(genre)) {\n return ['mastersthesis']\n } else if (/^(phd|doctoral) thesis$/i.test(genre)) {\n return ['phdthesis']\n } else {\n return [type, genre]\n }\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: { type: false },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n target: {\n publisher: false,\n },\n },\n },\n {\n source: 'volume',\n target: 'volume',\n },\n])\n","function _objectWithoutProperties(source, excluded) {\n if (source == null) return {}\n var target = _objectWithoutPropertiesLoose(source, excluded)\n var key, i\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source)\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue\n target[key] = source[key]\n }\n }\n return target\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {}\n var target = {}\n var sourceKeys = Object.keys(source)\n var key, i\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n target[key] = source[key]\n }\n return target\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string')\n return typeof key === 'symbol' ? key : String(key)\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input\n var prim = input[Symbol.toPrimitive]\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default')\n if (typeof res !== 'object') return res\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return (hint === 'string' ? String : Number)(input)\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object)\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object)\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\n })\n }\n keys.push.apply(keys, symbols)\n }\n return keys\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {}\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key])\n })\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\n })\n }\n }\n return target\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\n\nimport { TYPE, LABEL } from './shared.js'\nimport biblatex from './biblatex.js'\nimport bibtex from './bibtex.js'\n\nfunction crossref(entry, registry) {\n if (entry.crossref in registry) {\n const parent = registry[entry.crossref].properties\n\n if (parent === entry) {\n return entry\n }\n\n return Object.assign({}, crossref(parent, registry), entry)\n }\n\n return entry\n}\n\nfunction _parse(input, spec) {\n const registry = {}\n\n for (const entry of input) {\n registry[entry.label] = entry\n }\n\n return input.map(({ type, label, properties }) =>\n spec.convertToTarget(\n _objectSpread(\n {\n [TYPE]: type,\n [LABEL]: label,\n },\n crossref(properties, registry)\n )\n )\n )\n}\n\nfunction _format(input, spec) {\n return input.map((entry) => {\n const _spec$convertToSource = spec.convertToSource(entry),\n { [TYPE]: type, [LABEL]: label } = _spec$convertToSource,\n properties = _objectWithoutProperties(\n _spec$convertToSource,\n [TYPE, LABEL].map(_toPropertyKey)\n )\n\n return {\n type,\n label,\n properties,\n }\n })\n}\n\nexport function parseBibtex(input) {\n return _parse(input, bibtex)\n}\nexport function formatBibtex(input) {\n return _format(input, bibtex)\n}\nexport function parse(input) {\n return _parse(input, biblatex)\n}\nexport function format(input) {\n return _format(input, biblatex)\n}\n","// @ts-nocheck\n/**\n * @access private\n * @param {String}\n * @returns {Boolean|null} true if uppercase, false if lowercase, null if neither\n */\nexport function getStringCase(string) {\n const a = string.toUpperCase()\n const b = string.toLowerCase()\n\n for (let i = 0; i < string.length; i++) {\n if (a[i] !== b[i]) {\n return a[i] === string[i]\n }\n }\n\n return null\n}\n\n/**\n * @access private\n * @param {Array} parts\n * @return {String|undefined}\n */\nexport function formatNameParts(parts) {\n if (parts.length === 0) {\n return undefined\n }\n\n let piece = ''\n\n while (parts.length > 1) {\n const { value, hyphenated } = parts.shift()\n piece += value + (hyphenated ? '-' : ' ')\n }\n\n const output = piece + parts[0].value\n return output[0] && output\n}\n\n/**\n * @access private\n * @param {Array} parts\n * @param {Boolean} [orderGiven=true] - also consider the given name\n * @return {Array}\n */\nexport function orderNameParts(parts, /* istanbul ignore next */ orderGiven = true) {\n const given = []\n const undecided = []\n\n if (orderGiven) {\n while (parts.length > 1 && parts[0].upperCase !== false) {\n given.push(...undecided)\n undecided.length = 0\n\n while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) {\n given.push(parts.shift())\n }\n\n while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) {\n undecided.push(parts.shift())\n }\n }\n }\n\n const prefix = []\n const family = []\n\n while (parts.length > 1) {\n prefix.push(...family)\n family.length = 0\n\n while (parts.length > 1 && parts[0].upperCase === false) {\n prefix.push(parts.shift())\n }\n\n while (parts.length > 0 && parts[0].upperCase !== false) {\n family.push(parts.shift())\n }\n }\n\n if (undecided.length) {\n family.unshift(...undecided)\n }\n if (parts.length) {\n family.push(parts[0])\n }\n\n return [formatNameParts(given), formatNameParts(prefix), formatNameParts(family)]\n}\n\n/**\n * @access private\n * @param {Array>} pieces\n * @return {Object}\n */\nexport function orderNamePieces(pieces) {\n if (pieces[0][0].label) {\n const name = {}\n for (const [{ value, label }] of pieces) {\n name[label] = value\n }\n return name\n }\n\n const name = {}\n const [given, prefix, family] = orderNameParts(pieces[0], pieces.length === 1)\n\n if (family) {\n name.family = family\n }\n if (prefix) {\n name.prefix = prefix\n }\n\n if (pieces.length === 3) {\n name.given = formatNameParts(pieces[2])\n name.suffix = formatNameParts(pieces[1])\n } else if (pieces.length === 2) {\n name.given = formatNameParts(pieces[1])\n } else if (given) {\n name.given = given\n }\n\n return name\n}\n","import { util } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport * as constants from './constants.js'\nimport { orderNamePieces, formatNameParts, getStringCase } from './name.js'\n\nconst text = {\n command: {\n match: /\\\\(?:[a-zA-Z]+|.) */,\n type: moo.keywords({\n commandBegin: '\\\\begin',\n commandEnd: '\\\\end',\n }),\n value: (s) => s.slice(1).trim(),\n },\n lbrace: { match: '{', push: 'bracedLiteral' },\n mathShift: { match: '$', push: 'mathLiteral' },\n whitespace: {\n match: /[\\s]+|~/,\n lineBreaks: true,\n // \\xa0 = Non-breakable space\n value(token) {\n return token === '~' ? '\\xa0' : ' '\n },\n },\n}\n\nconst lexer = moo.states({\n stringLiteral: {\n ...text,\n text: /[^{$}\\s~\\\\]+/,\n },\n namesLiteral: {\n and: /\\s+[aA][nN][dD]\\s+/,\n comma: ',',\n hyphen: '-',\n equals: '=',\n ...text,\n text: /[^{$}\\s~\\\\,=-]+/,\n },\n listLiteral: {\n and: /\\s+and\\s+/,\n ...text,\n text: /[^{$}\\s~\\\\]+/,\n },\n separatedLiteral: {\n comma: ',',\n ...text,\n text: /[^{$}\\s~\\\\,]+/,\n },\n bracedLiteral: {\n ...text,\n rbrace: { match: '}', pop: true },\n text: /[^{$}\\s~\\\\]+/,\n },\n mathLiteral: {\n ...text,\n mathShift: { match: '$', pop: true },\n script: /[\\^_]/,\n text: /[^{$}\\s~\\\\^_]+/,\n },\n})\n\nfunction flattenConsString(string) {\n // eslint-disable-next-line no-unused-expressions\n string[0]\n return string\n}\n\nfunction applyFormatting(text, format) {\n if (format in constants.formatting) {\n return text && constants.formatting[format].join(text)\n } else {\n return text\n }\n}\n\nexport const valueGrammar = new util.Grammar(\n {\n String() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n\n StringNames() {\n const list = []\n\n while (true) {\n this.consumeToken('whitespace', true)\n list.push(this.consumeRule('Name'))\n this.consumeToken('whitespace', true)\n\n if (this.matchEndOfFile()) {\n return list\n } else {\n this.consumeToken('and')\n }\n }\n },\n\n Name() {\n const pieces = []\n\n while (true) {\n pieces.push(this.consumeRule('NamePiece'))\n\n if (this.matchEndOfFile() || this.matchToken('and')) {\n return orderNamePieces(pieces)\n } else {\n this.consumeToken('comma')\n this.consumeToken('whitespace', true)\n }\n }\n },\n\n NamePiece() {\n const parts = []\n\n while (true) {\n const part = this.consumeRule('NameToken')\n\n if (part.label) {\n part.label = formatNameParts([...parts, { value: part.label }])\n return [part]\n }\n\n parts.push(part)\n\n if (this.matchEndOfFile() || this.matchToken('and') || this.matchToken('comma')) {\n return parts\n } else {\n while (this.matchToken('hyphen') || this.matchToken('whitespace')) {\n this.consumeToken()\n }\n }\n }\n },\n\n NameToken() {\n let upperCase = null\n let value = ''\n\n while (true) {\n // If needed, test regular text for case\n if (upperCase === null && this.matchToken('text')) {\n const text = this.consumeToken().value\n value += text\n upperCase = getStringCase(text)\n\n // If end of name part, return up\n } else if (\n this.matchEndOfFile() ||\n this.matchToken('and') ||\n this.matchToken('comma') ||\n this.matchToken('whitespace')\n ) {\n return { value, upperCase }\n\n // Same for hyphen, but note it is hyphenated\n } else if (this.matchToken('hyphen')) {\n return { value, upperCase, hyphenated: true }\n\n // If equals we are in BibLaTeX extended mode\n // 'family=Last, given=First, prefix=von'\n } else if (this.matchToken('equals')) {\n this.consumeToken('equals')\n const text = this.consumeRule('NamePiece')\n if (text[0].label) {\n value += '=' + text[0].label\n }\n return { value: formatNameParts(text), label: value }\n\n // Else consume other text\n } else {\n value += this.consumeRule('Text')\n }\n }\n },\n\n StringList() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('and')) {\n output += this.consumeRule('Text')\n }\n list.push(flattenConsString(output))\n\n this.consumeToken('and', true)\n }\n return list.length === 1 ? list[0] : list\n },\n\n StringSeparated() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('comma')) {\n output += this.consumeRule('Text')\n }\n list.push(output.trim())\n\n this.consumeToken('comma', true)\n this.consumeToken('whitespace', true)\n }\n return list\n },\n\n StringVerbatim() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeToken().text\n }\n return flattenConsString(output)\n },\n\n StringUri() {\n const uri = this.consumeRule('StringVerbatim')\n try {\n if (decodeURI(uri) === uri) {\n return encodeURI(uri)\n } else {\n return uri\n }\n } catch (e) {\n // malformed URI\n return encodeURI(uri)\n }\n },\n\n StringTitleCase() {\n this.state.sentenceCase = true\n let output = ''\n\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n\n return flattenConsString(output)\n },\n\n BracketString() {\n let output = ''\n this.consumeToken('lbrace')\n\n const sentenceCase = this.state.sentenceCase\n // If the bracket string starts with a command the sentence case behavior\n // is maintained within the brackets.\n this.state.sentenceCase = sentenceCase && this.matchToken('command')\n this.state.partlyLowercase &&= this.state.sentenceCase\n\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n\n // topLevel meaning that the bracket string is not top level but a direct\n // child of the top level value.\n const topLevel = sentenceCase && !this.state.sentenceCase\n // Protect the case of the bracket string if it is a direct child of the top\n // level, and the string is partly lowercase.\n const protectCase = topLevel && this.state.partlyLowercase\n // Restore the sentence case of the outside of the brackets.\n this.state.sentenceCase = sentenceCase\n\n this.consumeToken('rbrace')\n\n return protectCase ? applyFormatting(output, 'nocase') : output\n },\n\n MathString() {\n let output = ''\n this.consumeToken('mathShift')\n while (!this.matchToken('mathShift')) {\n if (this.matchToken('script')) {\n const script = this.consumeToken('script').value\n const text = this.consumeRule('Text').split('')\n if (text.every((char) => char in constants.mathScripts[script])) {\n output += text.map((char) => constants.mathScripts[script][char]).join('')\n } else {\n const formatName = constants.mathScriptFormatting[script]\n output += constants.formatting[formatName].join(text.join(''))\n }\n\n continue\n }\n\n if (this.matchToken('command')) {\n const command = this.token.value\n if (command in constants.mathScriptFormatting) {\n this.consumeToken('command')\n const text = this.consumeRule('BracketString')\n output += applyFormatting(text, constants.mathScriptFormatting[command])\n continue\n }\n }\n\n output += this.consumeRule('Text')\n }\n this.consumeToken('mathShift')\n return output\n },\n\n Text() {\n /* eslint-disable padded-blocks */\n if (this.matchToken('lbrace')) {\n return this.consumeRule('BracketString')\n } else if (this.matchToken('mathShift')) {\n return this.consumeRule('MathString')\n } else if (this.matchToken('whitespace')) {\n return this.consumeToken('whitespace').value\n } else if (this.matchToken('commandBegin')) {\n return this.consumeRule('EnclosedEnv')\n } else if (this.matchToken('command')) {\n return this.consumeRule('Command')\n }\n /* eslint-enable padded-blocks */\n\n const text = this.consumeToken('text').value.replace(\n constants.ligaturePattern,\n (ligature) => constants.ligatures[ligature]\n )\n\n const afterPunctuation = this.state.afterPunctuation\n this.state.afterPunctuation = /[?!.:]$/.test(text)\n\n // If the text fragment is not topLevel and has a case, check whether lowercase\n if (!this.state.sentenceCase) {\n this.state.partlyLowercase ||= text === text.toLowerCase() && text !== text.toUpperCase()\n return text\n }\n\n // Unicode-safe splitting (as in, accounting for surrogate pairs)\n const [first, ...otherCharacters] = text\n const rest = otherCharacters.join('')\n const restLowerCase = rest.toLowerCase()\n\n // Word case should be preserved for proper nouns (e.g. those with capital\n // letters in other places than the first letter).\n if (rest !== restLowerCase) {\n return text\n }\n\n if (!afterPunctuation) {\n return text.toLowerCase()\n }\n\n return first + restLowerCase\n // return first.toUpperCase() + restLowerCase\n },\n\n Command() {\n const commandToken = this.consumeToken('command')\n const command = commandToken.value\n\n // formatting envs\n if (command in constants.formattingEnvs) {\n const text = this.consumeRule('Env')\n const format = constants.formattingEnvs[command]\n return applyFormatting(text, format)\n\n // formatting commands\n } else if (command in constants.formattingCommands) {\n const text = this.consumeRule('BracketString')\n const format = constants.formattingCommands[command]\n return applyFormatting(text, format)\n\n // commands\n } else if (command in constants.commands) {\n return constants.commands[command]\n\n // diacritics\n } else if (command in constants.diacritics && !this.matchEndOfFile()) {\n const text = this.consumeRule('Text')\n const diacritic = text[0] + constants.diacritics[command]\n return diacritic.normalize('NFC') + text.slice(1)\n\n // argument commands\n } else if (command in constants.argumentCommands) {\n const func = constants.argumentCommands[command]\n const args = []\n let arity = func.length\n\n while (arity-- > 0) {\n this.consumeToken('whitespace', true)\n args.push(this.consumeRule('BracketString'))\n }\n\n return func(...args)\n\n // escapes\n } else if (/^[&%$#_{}]$/.test(command)) {\n return commandToken.text.slice(1)\n\n // unknown commands\n } else {\n return commandToken.text\n }\n },\n\n Env() {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n return output\n },\n\n EnclosedEnv() {\n this.consumeToken('commandBegin')\n const beginEnv = this.consumeRule('BracketString')\n\n let output = ''\n\n while (!this.matchToken('commandEnd')) {\n output += this.consumeRule('Text')\n }\n\n const end = this.consumeToken('commandEnd')\n const endEnv = this.consumeRule('BracketString')\n\n if (beginEnv !== endEnv) {\n throw new SyntaxError(\n this.lexer.formatError(\n end,\n `environment started with \"${beginEnv}\", ended with \"${endEnv}\"`\n )\n )\n }\n\n return applyFormatting(output, constants.formattingEnvs[beginEnv])\n },\n },\n {\n sentenceCase: false,\n partlyLowercase: false,\n afterPunctuation: true,\n }\n)\n\nfunction singleLanguageIsEnglish(language) {\n return constants.sentenceCaseLanguages.includes(language.toLowerCase())\n}\n\nfunction isEnglish(languages) {\n if (Array.isArray(languages)) {\n return languages.every(singleLanguageIsEnglish)\n }\n return singleLanguageIsEnglish(languages)\n}\n\nfunction getMainRule(fieldType, languages) {\n if (fieldType[1] === 'name') {\n /* istanbul ignore next: does not exist */\n return fieldType[0] === 'list' ? 'StringNames' : 'Name'\n }\n\n if (fieldType[1] === 'title') {\n const option = config.parse.sentenceCase\n if (option === 'always' || (option === 'english' && isEnglish(languages))) {\n return 'StringTitleCase'\n } else {\n return 'String'\n }\n }\n\n switch (fieldType[0] === 'field' ? fieldType[1] : fieldType[0]) {\n case 'list':\n return 'StringList'\n case 'separated':\n return 'StringSeparated'\n case 'verbatim':\n return 'StringVerbatim'\n case 'uri':\n return 'StringUri'\n case 'title':\n case 'literal':\n default:\n return 'String'\n }\n}\n\nfunction getLexerState(fieldType) {\n if (fieldType[1] === 'name') {\n return 'namesLiteral'\n }\n\n switch (fieldType[0]) {\n case 'list':\n return 'listLiteral'\n case 'separated':\n return 'separatedLiteral'\n case 'field':\n default:\n return 'stringLiteral'\n }\n}\n\nexport function parse(text, field, languages = []) {\n const fieldType = constants.fieldTypes[field] || []\n return valueGrammar.parse(\n lexer.reset(text, {\n state: getLexerState(fieldType),\n line: 0,\n col: 0,\n }),\n getMainRule(fieldType, languages)\n )\n}\n","import config from '../config.js'\nimport { parse as mapBiblatex, parseBibtex as mapBibtex } from '../mapping/index.js'\nimport { parse as parseValue } from './value.js'\nimport { required } from './constants.js'\n\nfunction validate(entries, requirements) {\n const problems = []\n\n for (const { type, label, properties } of entries) {\n if (type in requirements) {\n const missing = []\n for (const field of requirements[type]) {\n if (Array.isArray(field) && !field.some((field) => field in properties)) {\n missing.push(field.join('/'))\n } else if (typeof field === 'string' && !(field in properties)) {\n missing.push(field)\n }\n }\n if (missing.length) {\n problems.push([label, `missing fields: ${missing.join(', ')}`])\n }\n } else {\n problems.push([label, `invalid type: \"${type}\"`])\n }\n }\n\n if (problems.length) {\n throw new RangeError(\n ['Invalid entries:']\n .concat(problems.map(([label, problem]) => ` - ${label} has ${problem}`))\n .join('\\n')\n )\n }\n}\n\nfunction parseEntryValues(entry) {\n const output = {}\n\n if ('language' in entry.properties) {\n output.language = parseValue(entry.properties.language, 'language')\n }\n\n for (const property in entry.properties) {\n const value = entry.properties[property]\n if (value === '') {\n continue\n }\n output[property] = parseValue(value + '', property, output.language)\n }\n\n return { ...entry, properties: output }\n}\n\nexport function parse(entries) {\n if (config.parse.strict) {\n validate(entries, required.biblatex)\n }\n\n return mapBiblatex(entries.map(parseEntryValues))\n}\n\nexport function parseBibtex(entries) {\n if (config.parse.strict) {\n validate(entries, required.bibtex)\n }\n\n return mapBibtex(entries.map(parseEntryValues))\n}\n","import { parse as parseFile } from './file.js'\nimport { parse as parseBibtxt } from './bibtxt.js'\nimport { parse as parseEntries, parseBibtex } from './entries.js'\n\n/**\n * @constant {module:@citation-js/core.plugins~pluginRef} ref\n * @memberof module:@citation-js/plugin-bibtex\n * @default '@bibtex'\n */\nexport const ref = '@bibtex'\n\n/**\n * @namespace formats\n * @type module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex\n */\nexport const formats = {\n /**\n * BibLaTeX file.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@biblatex/text': {\n parse: parseFile,\n parseType: {\n dataType: 'String',\n predicate: /@\\s{0,5}[A-Za-z]{1,13}\\s{0,5}\\{\\s{0,5}[^@{}\"=,\\\\\\s]{0,100}\\s{0,5},[\\s\\S]*\\}/,\n },\n },\n\n /**\n * BibLaTeX object.\n *\n * ```js\n * {\n * type: '...',\n * label: '...',\n * properties: {...}\n * }\n * ```\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@biblatex/entry+object': {\n parse(input) {\n return parseEntries([input])\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: { props: ['type', 'label', 'properties'] },\n },\n },\n\n /**\n * Array of {@link module:@citation-js/plugin-bibtex.formats.\"@biblatex/entries+list\"|BibLaTeX objects}.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@biblatex/entries+list': {\n parse: parseEntries,\n parseType: { elementConstraint: '@biblatex/entry+object' },\n },\n\n /**\n * BibTeX file.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~format} outputs\n */\n '@bibtex/text': {\n parse: parseFile,\n outputs: '@bibtex/entries+list',\n },\n\n /**\n * BibTeX object.\n *\n * ```js\n * {\n * type: '...',\n * label: '...',\n * properties: {...}\n * }\n * ```\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n */\n '@bibtex/entry+object': {\n parse(input) {\n return parseBibtex([input])\n },\n },\n\n /**\n * Array of {@link module:@citation-js/plugin-bibtex.formats.\"@bibtex/entries+list\"|BibTeX objects}.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n */\n '@bibtex/entries+list': {\n parse: parseBibtex,\n },\n\n /**\n * Bib.TXT file.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibtxt/text': {\n parse: parseBibtxt,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\[(?!\\s*[{[]).*?\\]\\s*(\\n\\s*[^[]((?!:)\\S)+\\s*:\\s*.+?\\s*)*\\s*)+$/,\n },\n },\n}\n","//@ts-nocheck\nimport { diacritics, commands, ligatures, fieldTypes } from '../input/constants.js'\nconst unicode = {}\n\nfor (const command in commands) {\n unicode[commands[command]] = command\n}\n\nfor (const diacritic in diacritics) {\n unicode[diacritics[diacritic]] = diacritic\n}\n\nfor (const ligature in ligatures) {\n unicode[ligatures[ligature]] = ligature\n}\n\nconst UNSAFE_UNICODE =\n /[^a-zA-Z0-9\\s!\"#%&'()*+,\\-./:;=?@[\\]{}\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst DIACRITIC_PATTERN = /.[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]+/g\nconst listDelimiters = {\n separated: ',',\n list: ' and ',\n}\nconst richTextMappings = {\n i: '\\\\textit{',\n b: '\\\\textbf{',\n sc: '\\\\textsc{',\n sup: '\\\\textsuperscript{',\n sub: '\\\\textsubscript{',\n 'span style=\"font-variant:small-caps;\"': '\\\\textsc{',\n 'span class=\"nocase\"': '{',\n}\n\nfunction escapeValue(value) {\n return value\n .normalize('NFKD')\n .replace(UNSAFE_UNICODE, (char) =>\n char in unicode ? (unicode[char] in ligatures ? unicode[char] : `\\\\${unicode[char]}{}`) : ''\n )\n .replace(DIACRITIC_PATTERN, (match) =>\n Array.from(match).reduce((subject, diacritic) => `{\\\\${unicode[diacritic]} ${subject}}`)\n )\n}\n\nfunction formatRichText(value) {\n const closingTags = []\n let tokens = value.split(/<(\\/?(?:i|b|sc|sup|sub|span)|span .*?)>/g)\n tokens = tokens.map((token, index) => {\n if (index % 2 === 0) {\n return escapeValue(token)\n } else if (token in richTextMappings) {\n closingTags.push('/' + token.split(' ')[0])\n return richTextMappings[token]\n } else if (token === closingTags[closingTags.length - 1]) {\n closingTags.pop()\n return '}'\n } else {\n return ''\n }\n })\n return tokens.join('')\n}\n\nfunction formatName(name) {\n if (name.family && !name.prefix && !name.given & !name.suffix) {\n return name.family.includes(listDelimiters.list) ? name.family : `{${name.family}}`\n }\n\n const parts = ['']\n\n if (name.prefix && name.family) {\n parts[0] += name.prefix + ' '\n }\n\n if (name.family) {\n parts[0] += name.family\n }\n\n if (name.suffix) {\n parts.push(name.suffix)\n parts.push(name.given || '')\n } else {\n parts.push(name.given)\n }\n\n return escapeValue(parts.join(', ').trim())\n}\n\nfunction formatTitle(title) {\n return formatRichText(title)\n .split(/(:\\s*)/)\n .map((part, i) => (i % 2 ? part : part.replace(/(?!^)\\b[a-z]*[A-Z].*?\\b/g, '{$&}')))\n .join('')\n}\n\nfunction formatSingleValue(value, valueType) {\n switch (valueType) {\n case 'title':\n return formatTitle(value)\n\n case 'literal':\n return formatRichText(value.toString())\n\n case 'name':\n return formatName(value)\n\n case 'verbatim':\n case 'uri':\n return value.toString()\n\n default:\n return escapeValue(value.toString())\n }\n}\n\nfunction formatList(values, valueType, listType) {\n const delimiter = listDelimiters[listType]\n return values\n .map((value) => {\n const formatted = formatSingleValue(value, valueType)\n return formatted.includes(delimiter) ? `{${formatted}}` : formatted\n })\n .join(delimiter)\n}\n\nexport function format(field, value) {\n if (!(field in fieldTypes)) {\n return formatSingleValue(value, 'verbatim')\n }\n\n const [listType, valueType] = fieldTypes[field]\n\n if (listType in listDelimiters) {\n return formatList(value, valueType, listType)\n } else {\n return formatSingleValue(value, valueType)\n }\n}\n","import { format as mapBiblatex, formatBibtex as mapBibtex } from '../mapping/index.js'\nimport { format as formatValue } from './value.js'\n\nfunction formatEntryValues({ type, label, properties }) {\n const output = {}\n\n for (const property in properties) {\n const value = properties[property]\n output[property] = formatValue(property, value)\n }\n\n return {\n type,\n label,\n properties: output,\n }\n}\n\nexport function format(entries) {\n return mapBiblatex(entries).map(formatEntryValues)\n}\nexport function formatBibtex(entries) {\n return mapBibtex(entries).map(formatEntryValues)\n}\n","function formatEntry({ type, label, properties }, dict) {\n const fields = Object.entries(properties).map(([field, value]) =>\n dict.listItem.join(`${field} = {${value}},`)\n )\n return dict.entry.join(`@${type}{${label},${dict.list.join(fields.join(''))}}`)\n}\n\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('')\n return dict.bibliographyContainer.join(entries)\n}\n","function formatEntry({ type, label, properties }, dict) {\n const fields = Object.entries(properties)\n .concat([['type', type]])\n .map(([field, value]) => dict.listItem.join(`${field}: ${value}`))\n return dict.entry.join(`[${label}]${dict.list.join(fields.join(''))}`)\n}\n\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('\\n')\n return dict.bibliographyContainer.join(entries)\n}\n","import { plugins } from '../../core/index.js'\nimport { format as mapBiblatex, formatBibtex as mapBibtex } from './entries.js'\nimport { format } from './bibtex.js'\nimport { format as formatBibtxt } from './bibtxt.js'\n\nconst factory = function (mapper, formatter) {\n return function (data, opts = {}) {\n const { type, format = type || 'text' } = opts\n data = mapper(data)\n\n if (format === 'object') {\n return data\n } else if (plugins.dict.has(format)) {\n return formatter(data, plugins.dict.get(format), opts)\n } else {\n throw new RangeError(`Output dictionary \"${format}\" not available`)\n }\n }\n}\n\nexport default {\n bibtex: factory(mapBibtex, format),\n biblatex: factory(mapBiblatex, format),\n bibtxt: factory(mapBibtex, formatBibtxt),\n}\n","import { plugins } from '../core/index.js'\nimport { ref, formats as input } from './input/index.js'\nimport config from './config.js'\nimport output from './output/index.js'\nplugins.add(ref, {\n input,\n output,\n config,\n})\n","import { util } from '../core/index.js'\n\nconst defaultLocales = {\n 'en-US': `Andrew DunningSebastian KarcherRintze M. ZelleDenis MeierBrenton M. WiernikThis work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License2015-10-10T23:31:02+00:00advance online publicationalbumaudio recordingfilmhenceforthloc. cit.no placen.p.no publishern.p.onop. cit.original work publishedpersonal communicationpodcastpodcast episodepreprintradio broadcastradio seriesradio series episodespecial issuespecial sectiontelevision broadcasttelevision seriestelevision series episodevideoworking paperaccessedandand othersanonymousanon.atavailable atbycircac.citededitioneditionsed.et al.forthcomingfromibid.inin pressinternetinterviewletterno daten.d.onlinepresented at thereferencereferencesref.refs.retrievedscaleversionpreprintjournal articlemagazine articlenewspaper articlebillbookbroadcastbook chapterclassiccollectiondatasetdocumententrydictionary entryencyclopedia entryeventgraphichearinginterviewlegal caselegislationmanuscriptmapvideo recordingmusical scorepamphletconference paperpatentperformanceperiodicalpersonal communicationpostblog postregulationreportreviewbook reviewsoftwareaudio recordingpresentationstandardthesistreatywebpagejournal art.mag. art.newspaper art.bk.bk. chap.doc.graph.interv.MSvideo rec.rep.rev.bk. rev.audio rec.ADBCBCECE:,;thstndrdthththfirstsecondthirdfourthfifthsixthseventheighthninthtenthactactsappendixappendicesarticlearticlescanoncanonslocationlocationsequationequationsrulerulesscenescenestabletablestitletitlesbookbookschapterchapterscolumncolumnsfigurefiguresfoliofoliosnumbernumberslinelinesnotenotesopusoperapagepagespagepagesparagraphparagraphspartpartssectionsectionssub verbosub verbisverseversesvolumevolumesapp.apps.art.arts.loc.locs.eq.eqs.r.rr.sc.scs.tbl.tbls.tit.tits.bk.bks.chap.chaps.col.cols.fig.figs.fol.fols.no.nos.l.ll.n.nn.op.opp.p.pp.p.pp.para.paras.pt.pts.sec.secs.s.v.s.vv.v.vv.vol.vols.¶¶§§§chairchairscompilercompilerscontributorcontributorscuratorcuratorsexecutive producerexecutive producersguestguestshosthostsnarratornarratorsorganizerorganizersperformerperformersproducerproducerswriterwritersseries creatorseries creatorsdirectordirectorseditoreditorseditoreditorsillustratorillustratorstranslatortranslatorseditor & translatoreditors & translatorscomp.comps.contrib.contribs.cur.curs.exec. prod.exec. prods.narr.narrs.org.orgs.perf.perfs.prod.prods.writ.writs.cre.cres.dir.dirs.ed.eds.ed.eds.ill.ills.tran.trans.ed. & tran.eds. & trans.chaired bycompiled bywithcurated byexecutive produced bywith guesthosted bynarrated byorganized byperformed byproduced bywritten bycreated bybydirected byedited byedited byillustrated byinterview bytobytranslated byedited & translated bycomp. byw.cur. byexec. prod. byw. guesthosted bynarr. byorg. byperf. byprod. bywrit. bycre. bydir. byed. byed. byillus. bytrans. byed. & trans. byJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberJan.Feb.Mar.Apr.MayJun.Jul.Aug.Sep.Oct.Nov.Dec.SpringSummerAutumnWinter`,\n}\n\nconst locales = new util.Register(defaultLocales)\n\nconst fetchLocale = (lang) => {\n if (locales.has(lang)) {\n return locales.get(lang)\n } else {\n return locales.get('en-US')\n }\n}\n\nexport default fetchLocale\nexport { locales }\n","import { util } from '../core/index.js'\n\nconst defaultTemplates = {\n apa: ``,\n}\nconst templates = new util.Register(defaultTemplates)\n\nconst fetchStyle = (style) => {\n if (templates.has(style)) {\n return templates.get(style)\n } else {\n return templates.get('apa')\n }\n}\n\nexport default fetchStyle\nexport { templates }\n","// @ts-nocheck\nimport CSL from 'citeproc'\n\nimport { templates } from './styles.js'\nimport { locales } from './locales.js'\n\n// BEGIN add sys function\nconst proxied = Symbol.for('proxied')\nconst getWrapperProxy = function (original) {\n const proxy = function (state, entry) {\n if (state.sys.wrapBibliographyEntry) {\n const [prefix, postfix] = state.sys.wrapBibliographyEntry(this.system_id)\n entry = [prefix, entry, postfix].join('')\n }\n return original.call(this, state, entry)\n }\n proxy[proxied] = true\n return proxy\n}\n\nfor (const format in CSL.Output.Formats) {\n const original = CSL.Output.Formats[format]['@bibliography/entry']\n\n /* istanbul ignore if: currently unreachable */\n if (!original || original[proxied]) {\n continue\n }\n\n CSL.Output.Formats[format]['@bibliography/entry'] = getWrapperProxy(original)\n}\n// END\n\n/**\n * @access private\n * @param {String} locale - locale code\n * @return {String} locale XML\n */\nfunction retrieveLocale(locale) {\n if (locales.has(locale)) {\n return locales.get(locale)\n }\n\n const unnormalised = locale.replace('-', '_')\n if (locales.has(unnormalised)) {\n return locales.get(unnormalised)\n }\n\n // Should only occur when a cs:style default-locale is unknown\n return {}\n}\n\n/**\n * Object containing CSL Engines\n *\n * @access private\n * @constant\n */\nconst engines = {}\n\n/**\n * Retrieve CSL parsing engine\n *\n * @access private\n *\n * @param {String} style - CSL style id\n * @param {String} lang - Language code\n * @param {String} template - CSL XML template\n * @param {module:output/csl~retrieveItem} retrieveItem - Code to retreive item\n * @param {module:output/csl~retrieveLocale} retrieveLocale - Code to retreive locale\n *\n * @return {Object} CSL Engine\n */\nconst fetchEngine = function (style, locale, styleXml, retrieveItem, retrieveLocale) {\n const engineHash = `${style}|${locale}`\n let engine\n\n if (engines[engineHash] instanceof CSL.Engine) {\n engine = engines[engineHash]\n engine.sys.retrieveItem = retrieveItem\n engine.sys.wrapBibliographyEntry = undefined\n engine.updateItems([])\n } else {\n engine = engines[engineHash] = new CSL.Engine(\n { retrieveLocale, retrieveItem },\n styleXml,\n locale,\n true\n )\n }\n\n return engine\n}\n\n/**\n * Prepare CSL parsing engine\n *\n * @access private\n *\n * @param {Array} data\n * @param {String} templateName\n * @param {String} language\n * @param {String} format\n *\n * @return {Object} CSL Engine\n */\nconst prepareEngine = function (data, style, locale, format) {\n if (!CSL.Output.Formats[format] || !CSL.Output.Formats[format]['@bibliography/entry']) {\n throw new TypeError(`Cannot find format '${format}'`)\n }\n\n const items = data.reduce((store, entry) => {\n store[entry.id] = entry\n return store\n }, {})\n const template = templates.get(templates.has(style) ? style : 'apa')\n locale = locales.has(locale) ? locale : undefined\n\n const callback = function (key) {\n if (Object.prototype.hasOwnProperty.call(items, key)) {\n return items[key]\n } else {\n throw new Error(`Cannot find entry with id '${key}'`)\n }\n }\n\n const engine = fetchEngine(style, locale, template, callback, retrieveLocale)\n engine.setOutputFormat(format)\n\n return engine\n}\n\nexport default prepareEngine\nexport { fetchEngine }\n","/**\n * Add data-* attribute to a HTML string\n *\n * @access private\n *\n * @param {String} string - HTML string\n * @param {String} name - attribute name\n * @param {String} value - attribute value\n *\n * @return {String} HTML string with attribute\n */\nconst getAttributedEntry = (string, name, value) =>\n string.replace(/^\\s*<[a-z]+/i, `$& data-${name}=\"${value}\"`)\n\n/**\n * Add CSL identifiers to entry\n *\n * @access private\n *\n * @param {String} value - HTML string\n * @param {String} id - ID\n *\n * @return {String} HTML string with CSL ID\n */\nconst getPrefixedEntry = (value, id) => getAttributedEntry(value, 'csl-entry-id', id)\n\nexport { getAttributedEntry, getPrefixedEntry }\n","// @ts-nocheck\nimport { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nimport { getPrefixedEntry } from './attr.js'\n\n/**\n * Get a rendered affix\n *\n * @access private\n *\n * @param {CSL} source - source element\n * @param {String|Cite~wrapper} affix\n *\n * @return {String} Rendered affixs\n */\nconst getAffix = (source, affix) => (typeof affix === 'function' ? affix(source) : affix || '')\n\n/**\n * This plugin adds the output format `bibliography`, and accepts the following specific options:\n *\n * * `prepend` (`String`, `Function`): prepend static or dynamic text to each entry\n * * `append` (`String`, `Function`): append static or dynamic text to each entry\n * * `nosort` (`Boolean`, default: `false`): do not sort according to the style-defined rules\n * * `asEntryArray` (`Boolean`, default: `false`): return an array of entries consisting of an id and the output for that individual entry\n *\n * Here's an example for `prepend` and `append`:\n *\n * ```js\n * let cite = new Cite({ id: 'a', title: 'Item A' })\n *\n * cite.format('bibliography', { append: ' [foobar]' })\n * // 'Item A. (n.d.). [foobar]\\n'\n *\n * cite.format('bibliography', { prepend (entry) { return `${entry.id}: ` } })\n * // 'a: Item A. (n.d.).\\n'\n * ```\n *\n * And here's another example, possibly more realistic:\n *\n * ```js\n * let cite = new Cite('Q30000000')\n *\n * let date = (new Date()).toLocaleDateString()\n *\n * cite.format('bibliography', {\n * format: 'html',\n * template: 'apa',\n * prepend (entry) {\n * return `[${entry.id}]: `\n * },\n * append: ` [Retrieved on ${date}]`\n * })\n *\n * // `
    \n * //
    \n * // [Q30000000]: Miccadei, S., De Leo, R., Zammarchi, E., Natali, P. G., & Civitareale, D. (2002). The Synergistic Activity of Thyroid Transcription Factor 1 and Pax 8 Relies on the Promoter/Enhancer Interplay. Molecular Endocrinology, 16(4), 837–846. https://doi.org/10.1210/MEND.16.4.0808 [Retrieved on 2018-7-10]\n * //
    \n * //
    `\n * ```\n *\n * This prepends `[$ID]: ` to each entry, where `$ID` is the ID of that entry, and appends ` [Retrieved on $DATE]`, where `$DATE` is today (constant for all entries).\n *\n * Here's an example for `asEntryArray`:\n *\n * ```js\n * const cite = new Cite([\n * { id: 'a', title: 'Item A', issued: { literal: 2021 } },\n * { id: 'b', title: 'Item B', issued: { literal: 2021 } }\n * ])\n *\n * cite.format('bibliography', { asEntryArray: true })\n * // [\n * // [\n * // \"a\"\n * // \"Item A. (2021).\\n\"\n * // ],\n * // [\n * // \"b\"\n * // \"Item B. (2021).\\n\"\n * // ]\n * // ]\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.output\n * @implements module:@citation-js/core.plugins.output~formatter\n * @method bibliography\n *\n * @param {Array} data\n * @param {Object} [options={}]\n * @param {String} [options.template='apa']\n * @param {String} [options.lang]\n * @param {String} [options.format='text']\n * @param {Booolean} [options.asEntryArray=false]\n * @param {Booolean} [options.nosort=false]\n * @param {String|Array} [options.entry]\n * @param {Cite~wrapper} [options.prepend]\n * @param {Cite~wrapper} [options.append]\n *\n * @return {String} output\n */\nexport default function bibliography(data, options = {}) {\n const { template = 'apa', lang, format = 'text', nosort = false } = options\n const ids = options.entry ? [].concat(options.entry) : data.map(({ id }) => id)\n data = util.downgradeCsl(data)\n\n const citeproc = prepareEngine(data, template, lang, format)\n const sortedIds = citeproc.updateItems(ids, nosort)\n\n if (options.append || options.prepend) {\n const items = data.reduce((items, entry) => {\n items[entry.id] = entry\n return items\n }, {})\n\n citeproc.sys.wrapBibliographyEntry = function (id) {\n const entry = items[id]\n return [getAffix(entry, options.prepend), getAffix(entry, options.append)]\n }\n }\n\n const bibliography = citeproc.makeBibliography()\n const [{ bibstart, bibend }, bibBody] = bibliography\n const entries = bibBody.map((element, index) => getPrefixedEntry(element, sortedIds[index]))\n\n if (options.asEntryArray) {\n return entries.map((element, index) => [sortedIds[index], element])\n }\n\n return bibstart + entries.join('') + bibend\n}\n","// @ts-nocheck\nimport { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\n\n/**\n * https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html#cite-items\n *\n * @typedef {Object} module:@citation-js/plugin-csl.output~CiteItem\n * @property {String} id\n */\n\n/**\n * https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html#citations\n *\n * @typedef {Object} module:@citation-js/plugin-csl.output~Citation\n * @property {Array} citationItems\n * @property {Object} properties\n * @property {Number} properties.noteIndex\n */\n\n/**\n * @access private\n * @param {String|module:@citation-js/plugin-csl.output~CiteItem} citeItem\n * @return {module:@citation-js/plugin-csl.output~CiteItem} citeItem\n */\nfunction prepareCiteItem(citeItem) {\n return typeof citeItem === 'object' ? citeItem : { id: citeItem }\n}\n\n/**\n * @access private\n * @param {String|Array|Array|module:@citation-js/plugin-csl.output~CiteItem|module:@citation-js/plugin-csl.output~Citation} citation\n * @return {module:@citation-js/plugin-csl.output~Citation} citation\n */\nfunction prepareCitation(citation) {\n if (citation.citationItems) {\n return citation\n }\n\n return {\n citationItems: [].concat(citation).map(prepareCiteItem),\n properties: { noteIndex: 0 },\n }\n}\n\n/**\n * @access private\n * @param {Array|Array|Array} [context=[]]\n * @return {Array} citations\n */\nfunction prepareCitations(context) {\n if (!context) {\n return []\n }\n return context.map(prepareCitation)\n}\n\n/**\n * Here's an example for `entry`:\n *\n * ```js\n * let cite = new Cite([\n * { id: 'a', title: 'Item A', issued: { 'date-parts': [[2016]] } },\n * { id: 'b', title: 'Item B', issued: { 'date-parts': [[2017]] } },\n * { id: 'c', title: 'Item C', issued: { 'date-parts': [[2018]] } }\n * ])\n *\n * cite.format('citation')\n * // '(“Item A,” 2016; “Item B,” 2017; “Item C,” 2018)'\n *\n * cite.format('citation', { entry: ['a', 'b'] })\n * // '(“Item A,” 2016; “Item B,” 2017)'\n *\n * cite.format('citation', { entry: 'a' })\n * // '(“Item A,” 2016)'\n *\n * cite.format('citation', { entry: [{ id: 'a', label: 'page', locator: 123 }] })\n * // '(“Item A,” 2016, p. 123)'\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.output\n * @implements module:@citation-js/core.plugins.output~formatter\n * @method citation\n *\n * @param {Array} data\n * @param {Object} [options={}]\n * @param {String} [options.template='apa']\n * @param {String} [options.lang]\n * @param {String} [options.format='text']\n * @param {module:@citation-js/plugin-csl.output~Entries} [options.entry] - list of ids or cite-items of entries to include in the citation (defaults to all)\n * @param {Array} [options.citationsPre=[]]\n * @param {Array} [options.citationsPost=[]]\n *\n * @return {String} output\n */\nexport default function citation(data, options = {}) {\n const { template = 'apa', lang, format = 'text' } = options\n const ids = data.map(({ id }) => id)\n const entries = options.entry ? options.entry : ids\n data = util.downgradeCsl(data)\n\n const citeproc = prepareEngine(data, template, lang, format)\n\n const before = prepareCitations(options.citationsPre)\n const citation = prepareCitation(entries)\n const after = prepareCitations(options.citationsPost)\n const output = citeproc.rebuildProcessorState([...before, citation, ...after], format, [])\n\n return output[before.length][2]\n}\n","// @ts-nocheck\n/**\n * ## Formats\n *\n * Formats and other features added by this plugin. General output options:\n *\n * * `template`: the style template to use. Currently, the following are built-in:\n * * `apa` (default)\n * * `vancouver`\n * * `harvard1`\n * * `lang`: the locale to use. Currently, the following are built-in:\n * * `en-US` (default)\n * * `es-ES`\n * * `de-DE`\n * * `fr-FR`\n * * `nl-NL`\n * * `format`: output (markup) format. Note: this doesn't support the output format dictionaries\n * * `entry` (`String`, `Array[String]`): entry ID or list of entry IDs to identify the items to cite\n *\n * For all formats and format-specific options, check out {@link module:@citation-js/plugin-csl.output}.\n *\n * @module @citation-js/plugin-csl\n */\n\n/**\n * @callback module:output/csl~retrieveItem\n * @param {String} id - Citation id\n * @return {CSL} CSL Citation object\n */\n\n/**\n * @callback module:output/csl~retrieveLocale\n * @param {String} lang - Language code\n * @return {String} CSL Locale\n */\n\n/**\n * @typedef {module:@citation-js/plugin-csl.output~Entry|Array} module:@citation-js/plugin-csl.output~Entries\n */\n\n/**\n * @typedef {String|module:@citation-js/plugin-csl.output~DetailedEntry} module:@citation-js/plugin-csl.output~Entry\n */\n\n/**\n * Corresponds directly to the {@link https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html#cite-items|cite-items of citeproc-js}.\n *\n * @typedef {Object} module:@citation-js/plugin-csl.output~DetailedEntry\n * @property {Number|String} [locator] - page, figure, section etc. number of the citation\n * @property {String} [label='page'] - type of locator to accompany the locator number\n * @property {Boolean} [suppress-author=false]\n * @property {Boolean} [author-only=false]\n * @property {String} [prefix]\n * @property {String} [suffix]\n */\n\nimport { plugins } from '../core/index.js'\n\nimport { locales } from './locales.js'\nimport { templates } from './styles.js'\nimport engine from './engines.js'\n\nimport bibliography from './bibliography.js'\nimport citation from './citation.js'\n\nplugins.add('@csl', {\n /**\n * @namespace output\n * @type Object\n * @memberof module:@citation-js/plugin-csl\n */\n output: {\n bibliography,\n citation,\n },\n\n /**\n * @namespace config\n * @memberof module:@citation-js/plugin-csl\n */\n config: {\n /**\n * The configuration object also exposes an internal method to prepare a Citeproc engine with given data and configuration:\n *\n * ```js\n * let config = plugins.config.get('@csl')\n *\n * let citeproc = plugins.engine(\n * [{ ... }], // data\n * 'apa', // style\n * 'en-US', // locale\n * 'html' // format\n * )\n *\n * let sortedIds = citeproc.updateItems(\n * [...] // data ids\n * )\n * let makeBibliography = citeproc.makeBibliography()\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.config\n * @method engine\n * @param {module:@citation-js/core~CSL} data\n * @param {String} style\n * @param {String} locale\n * @param {String} format\n */\n engine,\n\n /**\n * Different [CSL Locales](https://github.com/citation-style-language/locales) can be registered like this:\n *\n * ```js\n * let language = 'en-GB'\n * let locale = '...' // The actual XML file\n *\n * let config = plugins.config.get('@csl')\n * config.locales.add(language, locale)\n *\n * let example = new Cite(...)\n * example.format('bibliography', {\n * format: 'html',\n * template: 'apa',\n * lang: language\n * })\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.config\n * @var {module:@citation-js/core.util.Register} locales\n */\n locales,\n\n /**\n * Different [CSL Templates](https://github.com/citation-style-language/styles) can be registered like this:\n *\n * ```js\n * let templateName = 'custom'\n * let template = '' // The actual XML file\n *\n * let config = plugins.config.get('@csl')\n * config.templates.add(templateName, template)\n *\n * let example = new Cite(...)\n * example.format('bibliography', {\n * format: 'html',\n * template: templateName,\n * lang: 'en-US'\n * })\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.config\n * @var {module:@citation-js/core.util.Register} templates\n */\n templates,\n },\n})\n","import yaml from 'js-yaml'\nimport { plugins } from '../core/index.js'\n\n// See https://github.com/nodeca/js-yaml/issues/569\nconst timestampTag = 'tag:yaml.org,2002:timestamp'\nconst timestamp = yaml.DEFAULT_SCHEMA.compiledTypeMap.scalar[timestampTag]\n\nconst date = new yaml.Type(timestampTag, {\n kind: 'scalar',\n resolve: timestamp.resolve,\n construct: timestamp.construct,\n instanceOf: Date,\n represent(object) {\n return object.toISOString().split('T')[0]\n },\n})\n\nconst CFF_SCHEMA = yaml.DEFAULT_SCHEMA.extend({\n implicit: [date],\n explicit: [],\n})\n\nplugins.add('@else', {\n input: {\n '@else/yaml': {\n parseType: {\n dataType: 'String',\n tokenList: {\n split: /\\n(\\s{2})*(-\\s)?/,\n token: /^[\\w-]*: /,\n every: false,\n },\n },\n parse(file) {\n return yaml.load(file, { json: true })\n },\n },\n },\n output: {\n yaml(data) {\n return yaml.dump(data, { schema: CFF_SCHEMA })\n },\n },\n})\n","import { plugins, util } from '../core/index.js'\nimport { parse as parseDate } from '@citation-js/date'\n\nimport '../plugin-yaml/index.js'\n\n/**\n * Format: Citation File Format (CFF) version 1.2.0\n * Spec: https://github.com/citation-file-format/citation-file-format/blob/1.2.0/schema-guide.md\n */\n\nconst TYPES_TO_TARGET = {\n art: 'graphic',\n article: 'article-journal', // more likely\n audiovisual: 'motion_picture',\n bill: 'bill',\n blog: 'post-weblog',\n book: 'book',\n catalogue: 'collection',\n conference: 'event',\n 'conference-paper': 'paper-conference',\n data: 'dataset',\n database: 'dataset',\n dictionary: 'entry-dictionary',\n 'edited-work': 'document', // unmapped\n encyclopedia: 'entry-encyclopedia',\n 'film-broadcast': 'broadcast',\n generic: 'document',\n 'government-document': 'regulation',\n grant: 'document', // unmapped\n hearing: 'hearing',\n 'historical-work': 'classic',\n 'legal-case': 'legal_case',\n 'legal-rule': 'legislation',\n 'magazine-article': 'article-magazine',\n manual: 'report', // substitute presented in the CSL specification\n map: 'map',\n multimedia: 'motion_picture',\n music: 'musical_score',\n 'newspaper-article': 'article-newspaper',\n pamphlet: 'pamphlet',\n patent: 'patent',\n 'personal-communication': 'personal_communication',\n proceedings: 'book', // substitute presented in the CSL specification\n report: 'report',\n serial: 'periodical',\n slides: 'speech',\n software: 'software',\n 'software-code': 'software',\n 'software-container': 'software',\n 'software-executable': 'software',\n 'software-virtual-machine': 'software',\n 'sound-recording': 'song',\n standard: 'standard',\n statute: 'legislation',\n thesis: 'thesis',\n unpublished: 'article',\n video: 'motion_picture',\n website: 'webpage',\n}\n\nconst TYPES_TO_SOURCE = {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'magazine-article',\n 'article-newspaper': 'newspaper-article',\n bill: 'bill',\n book: 'book',\n broadcast: 'film-broadcast',\n chapter: 'generic', // unmapped\n classic: 'historical-work',\n collection: 'catalogue',\n dataset: 'data',\n document: 'generic',\n entry: 'generic', // unmapped\n 'entry-dictionary': 'dictionary',\n 'entry-encyclopedia': 'encyclopedia',\n event: 'conference',\n figure: 'generic', // unmapped\n graphic: 'art',\n hearing: 'hearing',\n interview: 'sound-recording',\n legal_case: 'legal-case',\n legislation: 'statute',\n manuscript: 'historical-work',\n map: 'map',\n motion_picture: 'film-broadcast',\n musical_score: 'music',\n pamphlet: 'pamphlet',\n 'paper-conference': 'conference-paper',\n patent: 'patent',\n performance: 'generic', // unmapped\n periodical: 'serial',\n personal_communication: 'personal-communication',\n post: 'serial',\n 'post-weblog': 'blog',\n regulation: 'government-document',\n report: 'report',\n review: 'generic', // unmapped\n 'review-book': 'generic', // unmapped\n software: 'software',\n song: 'sound-recording',\n speech: 'slides',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'generic',\n webpage: 'website',\n}\n\nconst ENTITY_PROPS = [\n { source: 'family-names', target: 'family' },\n { source: 'given-names', target: 'given' },\n { source: 'name-particle', target: 'non-dropping-particle' },\n { source: 'name-suffix', target: 'suffix' },\n { source: 'name', target: 'literal' },\n { source: 'orcid', target: '_orcid' },\n]\n\nconst entity = new util.Translator(ENTITY_PROPS)\n\nconst PROP_CONVERTERS = {\n names: {\n toTarget(names) {\n return names.map(entity.convertToTarget)\n },\n toSource(names) {\n return names.map(entity.convertToSource)\n },\n },\n publisher: {\n toTarget({ name, city, region, country }) {\n const place = [city, region, country].filter(Boolean).join(', ')\n return [name, place || undefined]\n },\n toSource(name, place) {\n const entity = { name }\n\n if (place) {\n // Parse the following:\n // - Country\n // - City, Country\n // - City, Region, Country\n const parts = place.split(', ')\n entity.country = parts.pop()\n if (parts.length === 2) {\n entity.region = parts.pop()\n }\n if (parts.length === 1) {\n entity.city = parts.pop()\n }\n }\n\n return entity\n },\n },\n date: {\n toTarget(date) {\n if (date instanceof Date) {\n return parseDate(date.toISOString())\n } else {\n return parseDate(new Date(date).toISOString())\n }\n },\n toSource(date) {\n if (date.raw) {\n return date.raw\n }\n const [year, month, day] = date['date-parts'][0]\n if (day) {\n return new Date(Date.UTC(year, month - 1, day))\n } else if (month) {\n return new Date(Date.UTC(year, month - 1))\n } else {\n return new Date(Date.UTC(year))\n }\n },\n },\n}\n\nconst SHARED_PROPS = [\n 'abstract',\n\n { source: 'authors', target: 'author', convert: PROP_CONVERTERS.names },\n\n // TODO cff: commit\n\n // TODO cff: contact\n\n {\n source: 'date-released',\n target: 'issued',\n when: { target: { type: 'software' } },\n convert: PROP_CONVERTERS.date,\n },\n\n { source: 'doi', target: 'DOI' },\n\n {\n source: 'identifiers',\n target: ['DOI', 'ISBN', 'ISSN', 'PMCID', 'PMID', 'URL'],\n convert: {\n toTarget(identifiers) {\n const newIdentifiers = Array(6).fill(undefined)\n for (const { type, value } of identifiers) {\n if (!this.doi && type === 'doi') {\n newIdentifiers[0] = value\n }\n if (!this.url && type === 'url') {\n newIdentifiers[5] = value\n }\n if (type === 'other' && value.startsWith('urn:isbn:')) {\n newIdentifiers[1] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('urn:issn:')) {\n newIdentifiers[2] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('pmcid:')) {\n newIdentifiers[3] = value.slice(6)\n }\n if (type === 'other' && value.startsWith('pmid:')) {\n newIdentifiers[4] = value.slice(5)\n }\n }\n return newIdentifiers\n },\n toSource(doi, isbn, issn, pmcid, pmid, url) {\n return [\n doi && { type: 'doi', value: doi },\n url && { type: 'url', value: url },\n\n isbn && { type: 'other', value: `urn:isbn:${isbn}` },\n issn && { type: 'other', value: `urn:issn:${issn}` },\n pmcid && { type: 'other', value: `pmcid:${pmcid}` },\n pmid && { type: 'other', value: `pmid:${pmid}` },\n ].filter(Boolean)\n },\n },\n },\n\n {\n source: 'keywords',\n target: 'keyword',\n convert: {\n toTarget(keywords) {\n return keywords.join(',')\n },\n toSource(keywords) {\n return keywords.split(/,\\s*/g)\n },\n },\n },\n\n // TODO cff: license\n // TODO cff: license-url\n\n // TODO cff: message *\n\n // TODO cff: repository\n // TODO cff: repository-code\n // TODO cff: repository-artifact\n\n {\n source: 'title',\n target: 'title',\n when: {\n source: { term: false, entry: false },\n target: {\n type(type) {\n return !['entry', 'entry-dictionary', 'entry-encyclopedia'].includes(type)\n },\n },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { entry: true, journal: false },\n target: { type: ['entry'] },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { term: true, journal: false },\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n { source: 'url', target: 'URL' },\n\n 'version',\n]\n\nconst MAIN_PROPS = [\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toSource(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n toTarget(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n },\n },\n\n // Include main mappings\n ...SHARED_PROPS,\n]\n\nconst REF_PROPS = [\n // Include main mappings\n ...SHARED_PROPS,\n\n // ABBREVIATION\n { source: 'abbreviation', target: 'title-short' },\n { source: 'abbreviation', target: 'shortTitle' },\n\n // COLLECTIONS\n // TODO cff: collection-doi\n // TODO cff: collection-type\n 'collection-title',\n\n // COMMUNICATION\n { source: 'recipients', target: 'recipient', convert: PROP_CONVERTERS.names },\n { source: 'senders', target: 'authors', convert: PROP_CONVERTERS.names },\n\n // CONFERENCE\n {\n source: 'conference',\n target: ['event-title', 'event-date', 'event-place', 'event'],\n convert: {\n toSource(name, date, place, nameFallback) {\n const entity = { name: name || nameFallback }\n\n if (place) {\n entity.location = place\n }\n if (date) {\n entity['date-start'] = PROP_CONVERTERS.date.toSource(date)\n\n if (date['date-parts'] && date['date-parts'].length === 2) {\n entity['date-end'] = PROP_CONVERTERS.date.toSource({\n 'date-parts': [date['date-parts'][1]],\n })\n }\n }\n\n return entity\n },\n toTarget(event) {\n return [\n event.name,\n parseDate(event['date-start'].toISOString(), event['date-end'].toISOString()),\n event.location,\n ]\n },\n },\n },\n\n // COPYRIGHT\n // TODO cff: contact\n // TODO cff: copyright\n\n // DATABASE\n { source: 'database', target: 'source' },\n // TODO cff: database-provider NOTE entity\n\n // DATE\n { source: 'date-accessed', target: 'accessed', convert: PROP_CONVERTERS.date },\n\n {\n source: 'date-downloaded',\n target: 'accessed',\n convert: PROP_CONVERTERS.date,\n when: { source: { 'date-accessed': false }, target: false },\n },\n\n {\n source: 'date-published',\n target: 'issued',\n convert: PROP_CONVERTERS.date,\n when: {\n source: { 'date-released': false },\n target() {\n return this.type !== 'book' || !this.version\n },\n },\n },\n\n {\n source: ['year', 'month'],\n target: 'issued',\n when: { source: { 'date-published': false, 'date-released': false, year: true } },\n convert: {\n toTarget(year, month) {\n const date = month ? [year, month] : [year]\n return { 'date-parts': [date] }\n },\n toSource(issued) {\n const [year, month] = issued['date-parts'][0]\n return [year, month]\n },\n },\n },\n\n {\n source: 'year-original',\n target: 'original-date',\n convert: {\n toTarget(year) {\n return { 'date-parts': [[year]] }\n },\n toSource(date) {\n return date['date-parts'][0][0]\n },\n },\n },\n\n // EDITION\n 'edition',\n\n // EDITORS\n { source: 'editors', target: 'editor', convert: PROP_CONVERTERS.names },\n { source: 'editors-series', target: 'collection-editor', convert: PROP_CONVERTERS.names },\n\n // ENTRY\n {\n source: 'entry',\n target: 'title',\n when: {\n source: { term: false },\n target: { type: 'entry' },\n },\n },\n {\n source: 'term',\n target: 'title',\n when: {\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n // FORMAT\n { source: 'format', target: 'dimensions' },\n 'medium',\n\n // GENRE\n {\n source: 'data-type',\n target: 'genre',\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n },\n {\n source: 'thesis-type',\n target: 'genre',\n when: {\n source: { 'data-type': false },\n target: { type: 'thesis' },\n },\n },\n\n // IDENTIFIERS\n { source: 'isbn', target: 'ISBN' },\n { source: 'issn', target: 'ISSN' },\n // TODO cff: nihmsid\n { source: 'pmcid', target: 'PMCID' },\n\n // ISSUE\n 'issue',\n\n // JOURNAL\n { source: 'journal', target: 'container-title' },\n { source: 'volume-title', target: 'volume-title' },\n {\n source: 'issue-title',\n target: 'volume-title',\n when: {\n source: { 'volume-title': false },\n target: false,\n },\n },\n // TODO cff: issue-date\n\n // LANGUAGE\n {\n source: 'languages',\n target: 'language',\n when: {\n target: true,\n // NOTE: possible values not as strict in csl, so test (crudely) if the value is ok first\n source: {\n language(code) {\n return /[a-z]{2,3}/.test(code)\n },\n },\n },\n convert: {\n // NOTE: CSL can only hold one language\n toSource(language) {\n return [language]\n },\n toTarget(languages) {\n return languages[0]\n },\n },\n },\n\n // LOCATION\n {\n source: 'location',\n target: ['archive', 'archive-place'],\n convert: PROP_CONVERTERS.publisher,\n },\n\n // LOCATION (CODE)\n // TODO cff: filename\n // TODO cff: loc-start\n // TODO cff: loc-end\n\n // NOTES\n { source: 'notes', target: 'note', when: { source: { scope: false } } },\n { source: 'scope', target: 'note', when: { target: false } },\n\n // NUMBER\n 'number',\n\n // PATENT\n {\n source: 'patent-states',\n target: 'jurisdiction',\n // NOTE: CSL jurisdiction can contain more than just US states\n when: { target: false },\n convert: {\n toTarget(states) {\n return states.join(', ')\n },\n },\n },\n\n // PUBLISHER\n {\n source: ['institution', 'department'],\n target: ['publisher', 'publisher-place'],\n when: { source: { publisher: false }, target: { type: 'thesis' } },\n convert: {\n toTarget(institution, department) {\n const [name, place] = PROP_CONVERTERS.publisher.toTarget(institution)\n return [department ? `${department}, ${name}` : name, place]\n },\n toSource(name, place) {\n return [PROP_CONVERTERS.publisher.toSource(name, place)]\n },\n },\n },\n {\n source: 'publisher',\n target: ['publisher', 'publisher-place'],\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n convert: PROP_CONVERTERS.publisher,\n },\n\n // SECTION\n 'section',\n\n // STATUS\n {\n source: 'status',\n target: 'status',\n when: {\n source: true,\n // NOTE: possible values not as strict in csl, so test if the value is ok first\n target: {\n status: [\n 'in-preparation',\n 'abstract',\n 'submitted',\n 'in-press',\n 'advance-online',\n 'preprint',\n ],\n },\n },\n },\n\n // PAGES\n { source: 'start', target: 'page-first', when: { target: { page: false } } },\n {\n source: ['start', 'end'],\n target: 'page',\n convert: {\n toTarget(start, end) {\n return end ? `${start}-${end}` : start\n },\n toSource(page) {\n const [start, end] = page.split('-')\n return end ? [start, end] : [start]\n },\n },\n },\n { source: 'pages', target: 'number-of-pages' },\n\n // TRANSLATORS\n { source: 'translators', target: 'translator', convert: PROP_CONVERTERS.names },\n\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toTarget(type) {\n return TYPES_TO_TARGET[type] || 'document'\n },\n toSource(type) {\n if (type === 'book' && this['event-title']) {\n return 'proceedings'\n }\n return TYPES_TO_SOURCE[type] || 'generic'\n },\n },\n },\n\n // VOLUMES\n 'volume',\n { source: 'number-volumes', target: 'number-of-volumes' },\n]\n\nconst mainTranslator = new util.Translator(MAIN_PROPS)\nconst refTranslator = new util.Translator(REF_PROPS)\nconst CFF_VERSION = '1.2.0'\n\n/** Add doi or url as unique id if available to make citation easy */\nfunction addId(entry) {\n if ('DOI' in entry) {\n entry.id = entry.DOI\n } else if ('URL' in entry) {\n entry.id = entry.URL.replace('http://', '').replace('https://', '')\n }\n}\n\nfunction parse(input) {\n const main = mainTranslator.convertToTarget(input)\n if (input['cff-version'] <= '1.1.0') {\n main.type = TYPES_TO_TARGET.software\n }\n main._cff_mainReference = true\n addId(main)\n\n const output = [main]\n if (input['preferred-citation']) {\n const preferredCitation = refTranslator.convertToTarget(input['preferred-citation'])\n addId(preferredCitation)\n output.push(preferredCitation)\n }\n\n if (Array.isArray(input.references)) {\n output.push(...input.references.map(refTranslator.convertToTarget))\n }\n\n return output\n}\n\nfunction format(input, options = {}) {\n input = input.slice()\n const {\n main,\n preferred,\n cffVersion = CFF_VERSION,\n message = 'Please cite the following works when using this software.',\n } = options\n\n let preferredCitation\n const preferredIndex = input.findIndex((entry) => preferred && entry.id === preferred)\n if (cffVersion >= '1.2.0' && preferredIndex > -1) {\n preferredCitation = refTranslator.convertToSource(...input.splice(preferredIndex, 1))\n }\n\n let mainIndex = input.findIndex((entry) => (main ? entry.id === main : entry._cff_mainReference))\n mainIndex = mainIndex > -1 ? mainIndex : 0\n const mainRef = input[mainIndex]\n ? mainTranslator.convertToSource(...input.splice(mainIndex, 1))\n : {}\n if (mainRef && cffVersion < '1.2.0') {\n delete mainRef.type\n }\n\n const cff = { 'cff-version': cffVersion, message, ...mainRef }\n\n if (preferredCitation) {\n cff['preferred-citation'] = preferredCitation\n }\n\n if (input.length) {\n cff.references = input.map(refTranslator.convertToSource)\n }\n\n return cff\n}\n\nplugins.add('@cff', {\n input: {\n '@cff/object': {\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: 'cff-version',\n },\n },\n parse,\n },\n },\n output: {\n cff(data, options = {}) {\n const output = format(data, options)\n if (options.type === 'object') {\n return output\n } else {\n return plugins.output.format('yaml', output)\n }\n },\n },\n})\n","import { Cite as CiteCore, plugins } from './citation-js/core/index.js'\nimport './citation-js/plugin-bibjson/index.js'\nimport './citation-js/plugin-bibtex/index.js'\nimport './citation-js/plugin-csl/index.js'\nimport './citation-js/plugin-cff/index.js'\n\nfunction clone(obj) {\n const copy = {}\n for (const key in obj) {\n copy[key] = typeof obj[key] === 'object' ? clone(obj[key]) : obj[key]\n }\n return copy\n}\n\nfunction Cite(data, opts) {\n if (!(this instanceof Cite)) {\n return new Cite(data, opts)\n }\n\n const self = new CiteCore(data, opts)\n this._options = self._options\n this.log = self.log\n this.data = self.data\n}\n\nCite.plugins = clone(plugins)\n\nexport default Cite\n","export default ``\n","export default ``\n","export default ``\n","export default ``\n","import rehypeCitationGenerator from './generator.js'\n// @ts-ignore\nimport Cite from './cite.js'\nimport mla from '../styles/mla.js'\nimport chicago from '../styles/chicago.js'\nimport harvard1 from '../styles/harvard1.js'\nimport vancouver from '../styles/vancouver.js'\n\nconst config = Cite.plugins.config.get('@csl')\n\n// Citation.js comes with apa\nconfig.templates.add('vancouver', vancouver)\nconfig.templates.add('harvard1', harvard1)\nconfig.templates.add('mla', mla)\nconfig.templates.add('chicago', chicago)\n\nconst rehypeCitation = rehypeCitationGenerator(Cite)\n\nexport default rehypeCitation\n"],"names":["citationRE","fullCitationRE","_wrapRegExp","prefix","citekey","explicitLocator","explicitLocatorInSuffix","suffix","locatorRE","locatorLabels","book","chapter","column","figure","folio","issue","line","note","opus","page","paragraph","part","section","verse","volume","parseCitation","regexMatch","entries","isComposite","fullCitation","inTextSuppressAuthor","inTextCitation","optionalSuffix","undefined","citationPart","split","match","exec","trim","thisCitation","id","groups","replace","locator","label","rawPrefix","endsWith","substring","length","rawSuffix","suffixToParse","containsLocator","parseSuffix","push","_extends","retValue","natural","toLowerCase","startsWith","substr","readFile","path","isValidHttpUrl","fetch","then","response","text","data","fs","readFileSync","str","url","URL","_","protocol","getBibliography","options","file","_file$data","bibliography","frontmatter","i","join","cwd","loadCSL","Cite","format","root","config","plugins","get","Object","keys","templates","includes","cslName","Math","random","toString","slice","cslPath","add","err","Error","loadLocale","locales","localePath","xmlLangRe","localeName","getCitationFormat","citeproc","info","cslXml","dataObj","children","node","find","x","citationFormat","getSortedRelevantRegistryItems","relevantIds","sorted","res","item","registry","reflist","index","isSameAuthor","item2","authorList","ref","author","authorList2","family","htmlToHast","html","p5ast","parseFragment","fromParse5","genCitation","mode","citationIdRoot","citationId","citationPre","inlineClass","linkCitations","key","c","processCitationCluster","citationID","citationItems","properties","noteIndex","citationText","ids","map","refIds","e","output","d","results","opt","sort_citations","citeMatch","ambig","indexOf","issued","year","startPos","start","rest","genBiblioNode","params","bibBody","makeBibliography","biblioNode","filter","_node$properties","className","forEach","entry_ids","genFootnoteSection","citationDict","footnoteArray","footnoteSection","list","type","tagName","value","oldFootnoteList","n","idx","oldId","href","dataFootnoteBackref","ariaLabel","liNode","aNode","newfootnoteSection","dataFootnotes","defaultCiteFormat","permittedTags","idRoot","rehypeCitationGenerator","tree","_options$inlineBibCla","bibtexFile","inputCiteformat","csl","inputLang","lang","citeFormat","citations","citationIds","engine","xclass","visit","parent","citeStartIdx","citeEndIdx","newChildren","citeItem","citedText","citedTextNode","noCite","updateItems","mylist","suppressBibliography","inlineBibClass","bilioInserted","biblioMap","_options$inlineBibCla2","_node$properties2","citekeys","pop","inlineBibNode","aBibNode","class","splice","fnArray","nextNode","newFootnoteSection","currentVersion","log","retrieveVersion","versnum","image","constructor","JSON","parse","undo","number","retrieveLastVersion","save","stringify","_options","formats","types","styles","wrapperTypes","validateOutputOptions","TypeError","style","append","prepend","test","validateOptions","maxChainLength","forceType","generateGraph","strict","target","defaultOptions","validate","assign","typeOf","thing","name","dataTypeOf","Array","isArray","applyGraph","entry","graph","_graph","findIndex","removeGraph","logger","_output","level","scope","msg","_log","_levels","_console","console","Console","process","stderr","dataTypes","unregExts","parseNativeTypes","input","dataType","every","matchType","typeList","predicate","extensions","addTypeParser","extends","extend","debug","object","parentTypeParser","hasTypeParser","prototype","hasOwnProperty","call","removeTypeParser","typeLists","listTypeParser","treeTypeParser","attachNode","typeMatcher","TypeParser","validDataTypes","validateDataType","RangeError","validateParseType","RegExp","validateTokenList","tokenList","validatePropertyConstraint","propertyConstraint","validateElementConstraint","elementConstraint","validateExtends","parseTokenList","token","trimInput","testTokens","parsePropertyConstraint","constraints","concat","props","some","prop","parseElementConstraint","constraint","parsePredicate","bind","getCombinedPredicate","predicates","getDataType","DataParser","parser","async","FormatParser","parsers","parseType","typeParser","dataParser","parseAsync","asyncDataParser","validateFormat","NAME","NAME_LIST","DATE","TYPE","entryTypes","article","bill","broadcast","classic","collection","dataset","document","event","graphic","hearing","interview","legal_case","legislation","manuscript","motion_picture","musical_score","pamphlet","patent","performance","periodical","personal_communication","post","regulation","report","review","software","song","speech","standard","thesis","treaty","webpage","fieldTypes","chair","compiler","composer","contributor","curator","director","editor","guest","host","interviewer","illustrator","narrator","organizer","performer","producer","recipient","translator","accessed","container","submitted","categories","custom","language","journalAbbreviation","shortTitle","abstract","annote","archive","archive_collection","archive_location","authority","dimensions","division","DOI","edition","genre","ISBN","ISSN","jurisdiction","keyword","medium","PMCID","PMID","printing","publisher","references","scale","source","status","supplement","title","version","correctName","bestGuessConversions","literal","given","parseName","correctNameList","nameList","names","Boolean","correctDateParts","dateParts","isNaN","parseInt","correctDate","date","dp","range","correctType","correctField","fieldName","fieldType","parseFloat","parseCsl","clean","field","correction","upgradeCsl","downgradeCsl","deepCopy","seen","Set","has","copy","delete","conversions","lib","sign","evenRound","floor","round","createNumberConversion","bitLength","typeOpts","unsigned","lowerBound","pow","upperBound","moduloVal","moduloBitLength","moduloBound","V","opts","enforceRange","Number","isFinite","abs","clamp","val","treatNullAsEmptyString","String","codePointAt","S","U","charCodeAt","fromCodePoint","a","b","Date","module","exports","mixin","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","wrapperSymbol","Symbol","implSymbol","wrapperForImpl","impl","implForWrapper","wrapper","PROCESSING_OPTIONS","TRANSITIONAL","NONTRANSITIONAL","normalize","s","findStatus","end","mappingTable","mid","regexAstralSymbols","countSymbols","string","mapChars","domain_name","useSTD3","processing_option","hasError","processed","len","codePoint","apply","error","combiningMarksRegex","validateLabel","punycode","toUnicode","search","processing","result","labels","validation","toASCII","verifyDnsLength","l","total","domain","PROCESSING_OPTIONS_1","specialSchemes","ftp","gopher","http","https","ws","wss","failure","ucs2","decode","at","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","scheme","isSpecial","defaultPort","percentEncode","hex","toUpperCase","utf8PercentEncode","buf","Buffer","utf8PercentDecode","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","parseIPv4Number","R","charAt","regex","parseIPv4","parts","numbers","ipv4","counter","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","temp","serializeIPv6","seqResult","findLongestZeroSequence","ignore0","separator","parseHost","isSpecialArg","parseOpaqueHost","asciiDomain","tr46","ipv4Host","decoded","arr","maxIdx","maxLen","currStart","currLen","serializeHost","trimControlChars","trimTabAndNewline","shortenPath","isNormalizedWindowsDriveLetter","includesCredentials","username","password","cannotHaveAUsernamePasswordPort","cannotBeABaseURL","URLStateMachine","base","encodingOverride","stateOverride","parseError","port","query","fragment","state","atFlag","arrFlag","passwordTokenSeenFlag","ret","parseSchemeStart","parseScheme","parseNoScheme","parseSpecialRelativeOrAuthority","parsePathOrAuthority","parseRelative","parseRelativeSlash","parseSpecialAuthoritySlashes","parseSpecialAuthorityIgnoreSlashes","parseAuthority","encodedCodePoints","parseHostName","parsePort","fileOtherwiseCodePoints","parseFile","parseFileSlash","parseFileHost","parsePathStart","parsePath","shift","parseCannotBeABaseURLPath","parseQuery","serializeURL","excludeFragment","serializeOrigin","tuple","serializeURLOrigin","parseURL","basicURLParse","usm","baseURL","setTheUsername","setThePassword","serializeInteger","integer","implementation","URLImpl","constructorArgs","parsedBase","parsedURL","_url","v","origin","hostname","pathname","hash","toJSON","utils","arguments","args","setup","is","set","enumerable","configurable","obj","Impl","create","privateData","interface","expose","Window","Worker","require$$0","require$$1","Readable","Stream","BUFFER","Blob","blobParts","buffers","element","ArrayBuffer","isView","from","byteOffset","byteLength","size","Promise","resolve","arrayBuffer","ab","stream","readable","_read","relativeStart","relativeEnd","max","min","span","slicedBuffer","blob","defineProperties","toStringTag","writable","FetchError","message","systemError","code","errno","captureStackTrace","convert","require","INTERNALS","PassThrough","Body","body","_this","_ref","_ref$size","_ref$timeout","timeout","isURLSearchParams","isBlob","isBuffer","disturbed","on","bodyUsed","consumeBody","ct","headers","json","_this2","reject","textConverted","_this3","convertBody","mixIn","proto","desc","_this4","alloc","accum","accumBytes","abort","resTimeout","setTimeout","chunk","clearTimeout","charset","getAll","sort","clone","instance","p1","p2","getBoundary","pipe","extractContentType","getTotalBytes","getLengthSync","_lengthRetrievers","hasKnownLength","writeToStream","dest","write","global","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","MAP","Headers","init","rawHeaders","raw","headerNames","headerName","method","iterator","pairs","pair","callback","thisArg","getHeaders","_pairs$i","createHeadersIterator","values","kind","k","INTERNAL","HeadersIteratorPrototype","setPrototypeOf","next","getPrototypeOf","_INTERNAL","done","exportNodeCompatibleHeaders","__proto__","hostHeaderKey","createHeadersLenient","INTERNALS$1","STATUS_CODES","Response","contentType","statusText","ok","redirected","INTERNALS$2","Url","whatwgUrl","parse_url","format_url","urlStr","streamDestructionSupported","isRequest","isAbortSignal","signal","Request","inputBody","redirect","follow","agent","getNodeRequestOptions","request","contentLengthValue","totalBytes","AbortError","URL$1","PassThrough$1","isDomainOrSubdomain","destination","original","orig","isSameProtocol","send","destroyStream","emit","aborted","abortAndFinalize","finalize","req","reqTimeout","addEventListener","removeEventListener","once","socket","fixResponseChunkedTransferBadEnding","addListener","hadError","hasDataListener","listenerCount","isRedirect","statusCode","location","locationURL","requestOpts","response_options","statusMessage","codings","zlibOptions","flush","zlib","Z_SYNC_FLUSH","finishFlush","createGunzip","createInflate","createInflateRaw","createBrotliDecompress","errorCallback","destroy","serializeHeaders","deserializeHeaders","old","serializeRequest","credentials","cache","referrer","referrerPolicy","integrity","keepalive","deserializeRequest","resource","serializeResponse","deserializeResponse","bodyError","createStream","errors","serializeError","deserializeError","parseBodyType","parseBody","Transform","read","shared","execFileSync","_fetch","sendMessage","execPath","__dirname","windowsHide","maxBuffer","Infinity","shell","_body","_bodyError","SyncRequest","defineBuffer","checkBody","SyncResponse","defineBodyError","_super","self","catch","wrapFetchForNode","u","fetchNode","context","fetchFn","default","fetchPolyfill","fetchId","Register","remove","Grammar","rules","defaultState","mainRule","lexer","consumeRule","matchEndOfFile","matchToken","consumeToken","optional","got","SyntaxError","formatError","rule","createConditionEval","condition","conditionEval","parsePropStatement","toSource","inputProp","outputProp","toTarget","when","createConverter","Translator","CONVERT_TO_SOURCE","converter","outputData","converted","cause","convertToSource","convertToTarget","CONVERT_TO_TARGET","prepareParseGraph","reduce","array","last","count","ChainParser","iteration","iterate","typeInfo","getTypeInfo","outputs","chain","parseData","chainLink","chainAsync","parseDataAsync","chainLinkAsync","asyncParsers","nativeParsers","flat","@invalid","nativeAsyncParsers","all","dataAsync","hasDataParser","addDataParser","removeDataParser","listDataParser","formatParser","asyncData","util","parseInput","getIds","addAsync","parseInputAsync","setAsync","reset","getLabel","getComparisonValue","getName","num","compareProp","entryA","entryB","flip","getSortCallback","formatter","register","formatData","parsedOptions","styleType","styleFormat","newStyle","newType","formatOptions","template","_newOptions","createElement","tmp","innerHTML","firstChild","promise","staticMethods","dict","entryName","bibliographyContainer","listItem","htmlDict","wr_start","wr_end","en_start","en_end","ul_start","ul_end","li_start","li_end","textDict","configs","registers","indices","mainIndex","typeIndex","typePlugins","typePlugin","substituters","parseJSON","subst","textContent","empty","jquery","jQuery","HTMLElement","appendCommas","getJsonObject","src","getJsonValue","getJson","warn","ndjson","nameProps","person","firstname","lastname","firstName","lastName","identifiers","journalIdentifiers","idProps","upperCaseProp","identifier","typeMap","booklet","proceedings","mastersthesis","inbook","incollection","conference","inproceedings","manual","misc","online","phdthesis","techreport","unpublished","quickscrapeSpecificProps","generalProps","reviewer","keywords","published","parseDate","journal","firstpage","pages","lastpage","link","cid","parseContentMine","parseBibJson","scraperLinks","authorNameFields","links","authors","records","metadata","factory","moo","this","hasSticky","sticky","isRegExp","o","isObject","reEscape","reGroups","re","reCapture","reUnion","regexps","regexpOrLiteral","ignoreCase","multiline","pad","lastNLines","numLines","position","lineBreaks","lastIndexOf","startPosition","objectToRules","j","include","ruleOptions","arrayToRules","defaultType","fallback","shouldThrow","toRules","spec","defaultErrorRule","compileRules","hasStates","errorRule","fast","fastAllowed","unicodeFlag","word","unicode","pat","regexp","groupCount","fallbackRule","flags","combined","compile","Lexer","checkStateGroup","g","compileStates","states","$all","ruleMap","included","newRules","newRule","fastKeys","keywordTransform","isMap","Map","reverseMap","tokenType","keywordList","startState","stack","col","queuedToken","queuedText","queuedThrow","setState","popState","pushState","eat","_getGroup","tokenToString","queuedGroup","_token","group","lastIndex","offset","matchNL","nl","LexerIterator","numLinesAround","firstDisplayedLine","lastDisplayedLine","lastLineDigits","displayedLines","errorLines","lineNo","freeze","required","biblatex","mvbook","mvcollection","mvproceedings","electronic","www","bibtex","addendum","afterword","annotation","annotator","authortype","bookauthor","bookpagination","booksubtitle","booktitle","booktitleaddon","commentator","doi","editora","editorb","editorc","editortype","editoratype","editorbtype","editorctype","eid","entrysubtype","eprint","eprintclass","eprinttype","eventdate","eventtitle","eventtitleaddon","foreword","holder","howpublished","indextitle","institution","introduction","isan","isbn","ismn","isrn","issn","issuesubtitle","issuetitle","iswc","journalsubtitle","journaltitle","library","mainsubtitle","maintitle","maintitleaddon","month","nameaddon","organization","origdate","origlanguage","origlocation","origpublisher","origtitle","pagetotal","pagination","pubstate","reprinttitle","series","shortauthor","shorteditor","shorthand","shorthandintro","shortjournal","shortseries","shorttitle","subtitle","titleaddon","urldate","venue","volumes","crossref","entryset","execute","gender","langid","langidopts","indexsorttitle","presort","related","relatedoptions","relatedtype","relatedstring","sortkey","sortname","sortshorthand","sorttitle","sortyear","xdata","xref","namea","nameb","namec","nameatype","namebtype","namectype","lista","listb","listc","listd","liste","listf","usera","userb","userc","userd","usere","userf","verba","verbb","verbc","archiveprefix","pdf","primaryclass","school","numpages","pmid","pmcid","diacritics","r","H","t","textcommabelow","commands","textquotesingle","textasciigrave","textquotedbl","textdollar","textless","textgreater","textbackslash","textasciicircum","textunderscore","textbraceleft","textbar","textbraceright","textasciitilde","textexclamdown","textcent","textsterling","textcurrency","textyen","textbrokenbar","textsection","textasciidieresis","textcopyright","textordfeminine","guillemetleft","guillemotleft","textlnot","textregistered","textasciimacron","textdegree","textpm","texttwosuperior","textthreesuperior","textasciiacute","textmu","textparagraph","textperiodcentered","textonesuperior","textordmasculine","guillemetright","guillemotright","textonequarter","textonehalf","textthreequarters","textquestiondown","AE","DH","texttimes","O","TH","ss","ae","dh","textdiv","th","DJ","dj","IJ","ij","L","NG","ng","OE","oe","textflorin","textasciicaron","textasciibreve","textacutedbl","textgravedbl","texttildelow","textbaht","SS","textcompwordmark","textendash","textemdash","textbardbl","textquoteleft","textquoteright","quotesinglbase","textquotedblleft","textquotedblright","quotedblbase","textdagger","textdaggerdbl","textbullet","textellipsis","textperthousand","textpertenthousand","guilsinglleft","guilsinglright","textreferencemark","textinterrobang","textfractionsolidus","textlquill","textrquill","textdiscount","textcolonmonetary","textlira","textnaira","textwon","textdong","texteuro","textpeso","textcelsius","textnumero","textcircledP","textrecipe","textservicemark","texttrademark","textohm","textmho","textestimated","textleftarrow","textuparrow","textrightarrow","textdownarrow","textminus","Hwithstroke","hwithstroke","textasteriskcentered","textsurd","textlangle","textrangle","textblank","textvisiblespace","textopenbullet","textbigcircle","textmusicalnote","textmarried","textdivorced","textinterrobangdown","copyright","Gamma","Delta","Theta","Lambda","Xi","Pi","Sigma","Phi","Psi","Omega","alpha","beta","gamma","delta","varepsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","pi","rho","varsigma","sigma","tau","upsilon","varphi","chi","psi","omega","vartheta","Upsilon","phi","varpi","varrho","epsilon","_required","_fieldTypes","defaultStrings","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","acmcs","acta","cacm","ibmjrd","ibmsj","ieeese","ieeetc","ieeetcad","ipl","jacm","jcss","scp","sicomp","tocs","tods","tog","toms","toois","toplas","tcs","formattingEnvs","it","itshape","sl","slshape","em","bf","bfseries","sc","scshape","rm","sf","tt","formattingCommands","textit","textsl","emph","mkbibitalic","mkbibemph","textbf","strong","mkbibbold","textsc","textsuperscript","textsubscript","enquote","mkbibquote","textmd","textrm","textsf","texttt","textup","formatting","italics","bold","superscript","subscript","smallcaps","nocase","quotes","argumentCommands","ElsevierGlyph","glyph","fromCharCode","ligaturePattern","ligatures","mathScriptFormatting","sp","sb","mathrm","mathScripts","h","m","p","sentenceCaseLanguages","whitespace","comment","main","junk","otherEntryType","dataEntryType","otherEntryContents","lbrace","dataEntryContents","comma","fields","equals","quote","rbrace","quotedLiteral","bracedLiteral","delimiters","bibtexGrammar","Main","oldToken","Entry","openBrace","strings","closeBrace","EntryBody","Field","Expression","ExpressionPart","QuoteString","BracketString","Text","bibTxtRegex","splitEntries","parseEntry","splitPairs","splitPair","parseBibTxtEntry","out","parseBibTxt","biblatexTypes","bookinbook","reference","mvreference","inreference","artwork","audio","legal","letter","movie","music","video","bibtexTypes","constants","sentenceCase","useIdAsLabel","stopWords","unsafeChars","firstWord","months","LABEL","MONTHS","january","february","march","april","june","july","august","september","october","november","december","TYPE_KEYS","bathesis","mathesis","candthesis","resreport","datacd","audiocd","patentde","patenteu","patentfr","patentuk","patentus","patreq","patreqde","patreqeu","patreqfr","patrequk","patrequs","STANDARD_NUMBERS_PATTERN","day","parseMonth","formatLabel","Converters","PICK","datePart","padStart","YEAR_MONTH","EPRINT","HOW_PUBLISHED","howPublished","KEYWORDS","safeId","NAMES","STANDARD_NUMBERS","STATUS","TITLE","addon","nonSpec","formatDate","S2ID","aliases","subtype","typeKey","sourceType","EVENT_TITLE","PAGES","subType","targetType","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","_toPropertyKey","arg","_toPrimitive","hint","prim","toPrimitive","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","_parse","_format","_spec$convertToSource","parseBibtex","formatBibtex","getStringCase","formatNameParts","piece","hyphenated","orderNameParts","orderGiven","undecided","upperCase","unshift","orderNamePieces","pieces","command","commandBegin","commandEnd","mathShift","stringLiteral","namesLiteral","and","hyphen","listLiteral","separatedLiteral","mathLiteral","script","flattenConsString","applyFormatting","valueGrammar","StringNames","Name","NamePiece","NameToken","StringList","StringSeparated","StringVerbatim","StringUri","uri","decodeURI","encodeURI","StringTitleCase","_this$state","partlyLowercase","topLevel","protectCase","MathString","char","formatName","ligature","afterPunctuation","_this$state2","first","otherCharacters","restLowerCase","Command","commandToken","diacritic","func","arity","Env","EnclosedEnv","beginEnv","endEnv","singleLanguageIsEnglish","isEnglish","languages","getMainRule","option","getLexerState","requirements","problems","missing","problem","parseEntryValues","parseValue","property","mapBiblatex","mapBibtex","parseEntries","parseBibtxt","UNSAFE_UNICODE","DIACRITIC_PATTERN","listDelimiters","separated","richTextMappings","sup","sub","escapeValue","subject","formatRichText","closingTags","tokens","formatTitle","formatSingleValue","valueType","formatList","listType","delimiter","formatted","formatEntryValues","formatValue","formatEntry","mapper","bibtxt","formatBibtxt","defaultLocales","defaultTemplates","apa","proxied","for","getWrapperProxy","proxy","sys","wrapBibliographyEntry","postfix","system_id","CSL","Output","Formats","retrieveLocale","locale","unnormalised","engines","fetchEngine","styleXml","retrieveItem","engineHash","Engine","prepareEngine","items","store","setOutputFormat","getAttributedEntry","getPrefixedEntry","getAffix","affix","nosort","sortedIds","bibstart","bibend","asEntryArray","prepareCiteItem","prepareCitation","citation","prepareCitations","before","citationsPre","after","citationsPost","rebuildProcessorState","timestampTag","timestamp","yaml","DEFAULT_SCHEMA","compiledTypeMap","scalar","Type","construct","instanceOf","represent","toISOString","CFF_SCHEMA","implicit","explicit","load","dump","schema","TYPES_TO_TARGET","art","audiovisual","blog","catalogue","database","dictionary","encyclopedia","generic","grant","multimedia","serial","slides","statute","website","TYPES_TO_SOURCE","ENTITY_PROPS","entity","PROP_CONVERTERS","city","region","country","place","UTC","SHARED_PROPS","newIdentifiers","fill","term","MAIN_PROPS","REF_PROPS","nameFallback","department","mainTranslator","refTranslator","CFF_VERSION","addId","_cff_mainReference","preferredCitation","preferred","cffVersion","preferredIndex","mainRef","cff","CiteCore","vancouver","harvard1","mla","chicago","rehypeCitation"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}