1 line
986 KiB
XML
1 line
986 KiB
XML
{"version":3,"file":"cite.mjs","sources":["../../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"],"sourcesContent":["// @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<Object>} 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<String>} _log\n * @property {Array<module:@citation-js/core~logLevel>} _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<module:@citation-js/core.plugins.input~format>} [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<module:@citation-js/core.plugins.input~format>} 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<module:@citation-js/core.plugins.input~dataType>}\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<module:@citation-js/core.plugins.input~predicate>}\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<module:@citation-js/core.plugins.input~predicate>}\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<module:@citation-js/core.plugins.input~predicate>}\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<module:@citation-js/core.plugins.input~predicate>}\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<String>\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<Object>|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<Number>|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<Object>|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<module:@citation-js/core~CSL>} data - Array of CSL\n * @param {Boolean} [bestGuessConversions=true] - make some best guess conversions on type mismatch\n *\n * @return {Array<module:@citation-js/core~CSL>} 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 = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 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<sequence<ByteString>>\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<ByteString, ByteString>\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 = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 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<sequence<ByteString>>\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<ByteString, ByteString>\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<String>} 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<String>} 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<module:@citation-js/core.util.Grammar~ruleName,module:@citation-js/core.util.Grammar~rule>} 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<String>} [source] - properties to source value from\n * @property {String|Array<String>} [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<String,Boolean|Array<*>|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<String>} inputProp\n * @property {Array<String>} 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<module:@citation-js/core.util.Translator~statement>} 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<module:@citation-js/core.util.Translator~statement>} 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<Object>} 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<module:@citation-js/core~CSL>\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<module:@citation-js/core~CSL>} 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<Array<module:@citation-js/core~CSL>>} 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<module:@citation-js/core~InputData>} 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<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parse>} parsers\n */\nconst parsers = {}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parseAsync>} asyncParsers\n */\nconst asyncParsers = {}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parse>} 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<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parseAsync>} 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<Null>} 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<module:@citation-js/core.plugins.input~format, 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<module:@citation-js/core.plugins.input~format>} 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<module:@citation-js/core.Cite>} 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<module:@citation-js/core.Cite>} 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<String>} [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<module:@citation-js/core~InputData>} 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<String>} 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<module:@citation-js/core~CSL>} 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<String>} 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<Object>} 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<Object>} 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<module:@citation-js/core.Cite>} 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<Array<String>>} 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<module:@citation-js/core~CSL>} 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<module:@citation-js/core.plugins.dict~entryName,module:@citation-js/core.plugins.dict~dictEntry>\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<String>\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: ['<div class=\"csl-bib-body\">', '</div>'],\n entry: ['<div class=\"csl-entry\">', '</div>'],\n list: ['<ul style=\"list-style-type:none\">', '</ul>'],\n listItem: ['<li>', '</li>'],\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<String>} 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: '<div class=\"csl-bib-body\">',\n wr_end: '</div>',\n en_start: '<div class=\"csl-entry\">',\n en_end: '</div>',\n ul_start: '<ul style=\"list-style-type:none\">',\n ul_end: '</ul>',\n li_start: '<li>',\n li_end: '</li>',\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<module:@citation-js/core.plugins~pluginRef>} 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<module:@citation-js/core.plugins~pluginRef>} 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<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parsers>} input\n * @property {Object<module:@citation-js/core.plugins.output~formatterName,module:@citation-js/core.plugins.output~formatter>} output\n * @property {Object<module:@citation-js/core.plugins.dict~dictName,module:@citation-js/core.plugins.dict~dict>} 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<Object>|Array<String>} 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<String>} 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<CSL>} 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<CSL>} 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<CSL>} 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<CSL>} 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: ['<i>', '</i>'],\n bold: ['<b>', '</b>'],\n superscript: ['<sup>', '</sup>'],\n subscript: ['<sub>', '</sub>'],\n smallcaps: ['<span style=\"font-variant:small-caps;\">', '</span>'],\n nocase: ['<span class=\"nocase\">', '</span>'],\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<Object>} 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<Object>} 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<Object>} parts\n * @param {Boolean} [orderGiven=true] - also consider the given name\n * @return {Array<String>}\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<Array<Object>>} 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': `<?xml version=\"1.0\" encoding=\"utf-8\"?><locale xmlns=\"http://purl.org/net/xbiblio/csl\" version=\"1.0\" xml:lang=\"en-US\"><info><translator><name>Andrew Dunning</name></translator><translator><name>Sebastian Karcher</name></translator><translator><name>Rintze M. Zelle</name></translator><translator><name>Denis Meier</name></translator><translator><name>Brenton M. Wiernik</name></translator><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights><updated>2015-10-10T23:31:02+00:00</updated></info><style-options punctuation-in-quote=\"true\"/><date form=\"text\"><date-part name=\"month\" suffix=\" \"/><date-part name=\"day\" suffix=\", \"/><date-part name=\"year\"/></date><date form=\"numeric\"><date-part name=\"month\" form=\"numeric-leading-zeros\" suffix=\"/\"/><date-part name=\"day\" form=\"numeric-leading-zeros\" suffix=\"/\"/><date-part name=\"year\"/></date><terms><term name=\"advance-online-publication\">advance online publication</term><term name=\"album\">album</term><term name=\"audio-recording\">audio recording</term><term name=\"film\">film</term><term name=\"henceforth\">henceforth</term><term name=\"loc-cit\">loc. cit.</term><term name=\"no-place\">no place</term><term name=\"no-place\" form=\"short\">n.p.</term><term name=\"no-publisher\">no publisher</term><term name=\"no-publisher\" form=\"short\">n.p.</term><term name=\"on\">on</term><term name=\"op-cit\">op. cit.</term><term name=\"original-work-published\">original work published</term><term name=\"personal-communication\">personal communication</term><term name=\"podcast\">podcast</term><term name=\"podcast-episode\">podcast episode</term><term name=\"preprint\">preprint</term><term name=\"radio-broadcast\">radio broadcast</term><term name=\"radio-series\">radio series</term><term name=\"radio-series-episode\">radio series episode</term><term name=\"special-issue\">special issue</term><term name=\"special-section\">special section</term><term name=\"television-broadcast\">television broadcast</term><term name=\"television-series\">television series</term><term name=\"television-series-episode\">television series episode</term><term name=\"video\">video</term><term name=\"working-paper\">working paper</term><term name=\"accessed\">accessed</term><term name=\"and\">and</term><term name=\"and others\">and others</term><term name=\"anonymous\">anonymous</term><term name=\"anonymous\" form=\"short\">anon.</term><term name=\"at\">at</term><term name=\"available at\">available at</term><term name=\"by\">by</term><term name=\"circa\">circa</term><term name=\"circa\" form=\"short\">c.</term><term name=\"cited\">cited</term><term name=\"edition\"><single>edition</single><multiple>editions</multiple></term><term name=\"edition\" form=\"short\">ed.</term><term name=\"et-al\">et al.</term><term name=\"forthcoming\">forthcoming</term><term name=\"from\">from</term><term name=\"ibid\">ibid.</term><term name=\"in\">in</term><term name=\"in press\">in press</term><term name=\"internet\">internet</term><term name=\"interview\">interview</term><term name=\"letter\">letter</term><term name=\"no date\">no date</term><term name=\"no date\" form=\"short\">n.d.</term><term name=\"online\">online</term><term name=\"presented at\">presented at the</term><term name=\"reference\"><single>reference</single><multiple>references</multiple></term><term name=\"reference\" form=\"short\"><single>ref.</single><multiple>refs.</multiple></term><term name=\"retrieved\">retrieved</term><term name=\"scale\">scale</term><term name=\"version\">version</term><term name=\"article\">preprint</term><term name=\"article-journal\">journal article</term><term name=\"article-magazine\">magazine article</term><term name=\"article-newspaper\">newspaper article</term><term name=\"bill\">bill</term><term name=\"book\">book</term><term name=\"broadcast\">broadcast</term><term name=\"chapter\">book chapter</term><term name=\"classic\">classic</term><term name=\"collection\">collection</term><term name=\"dataset\">dataset</term><term name=\"document\">document</term><term name=\"entry\">entry</term><term name=\"entry-dictionary\">dictionary entry</term><term name=\"entry-encyclopedia\">encyclopedia entry</term><term name=\"event\">event</term><term name=\"graphic\">graphic</term><term name=\"hearing\">hearing</term><term name=\"interview\">interview</term><term name=\"legal_case\">legal case</term><term name=\"legislation\">legislation</term><term name=\"manuscript\">manuscript</term><term name=\"map\">map</term><term name=\"motion_picture\">video recording</term><term name=\"musical_score\">musical score</term><term name=\"pamphlet\">pamphlet</term><term name=\"paper-conference\">conference paper</term><term name=\"patent\">patent</term><term name=\"performance\">performance</term><term name=\"periodical\">periodical</term><term name=\"personal_communication\">personal communication</term><term name=\"post\">post</term><term name=\"post-weblog\">blog post</term><term name=\"regulation\">regulation</term><term name=\"report\">report</term><term name=\"review\">review</term><term name=\"review-book\">book review</term><term name=\"software\">software</term><term name=\"song\">audio recording</term><term name=\"speech\">presentation</term><term name=\"standard\">standard</term><term name=\"thesis\">thesis</term><term name=\"treaty\">treaty</term><term name=\"webpage\">webpage</term><term name=\"article-journal\" form=\"short\">journal art.</term><term name=\"article-magazine\" form=\"short\">mag. art.</term><term name=\"article-newspaper\" form=\"short\">newspaper art.</term><term name=\"book\" form=\"short\">bk.</term><term name=\"chapter\" form=\"short\">bk. chap.</term><term name=\"document\" form=\"short\">doc.</term><term name=\"graphic\" form=\"short\">graph.</term><term name=\"interview\" form=\"short\">interv.</term><term name=\"manuscript\" form=\"short\">MS</term><term name=\"motion_picture\" form=\"short\">video rec.</term><term name=\"report\" form=\"short\">rep.</term><term name=\"review\" form=\"short\">rev.</term><term name=\"review-book\" form=\"short\">bk. rev.</term><term name=\"song\" form=\"short\">audio rec.</term><term name=\"ad\">AD</term><term name=\"bc\">BC</term><term name=\"bce\">BCE</term><term name=\"ce\">CE</term><term name=\"open-quote\">“</term><term name=\"close-quote\">”</term><term name=\"open-inner-quote\">‘</term><term name=\"close-inner-quote\">’</term><term name=\"page-range-delimiter\">–</term><term name=\"colon\">:</term><term name=\"comma\">,</term><term name=\"semicolon\">;</term><term name=\"ordinal\">th</term><term name=\"ordinal-01\">st</term><term name=\"ordinal-02\">nd</term><term name=\"ordinal-03\">rd</term><term name=\"ordinal-11\">th</term><term name=\"ordinal-12\">th</term><term name=\"ordinal-13\">th</term><term name=\"long-ordinal-01\">first</term><term name=\"long-ordinal-02\">second</term><term name=\"long-ordinal-03\">third</term><term name=\"long-ordinal-04\">fourth</term><term name=\"long-ordinal-05\">fifth</term><term name=\"long-ordinal-06\">sixth</term><term name=\"long-ordinal-07\">seventh</term><term name=\"long-ordinal-08\">eighth</term><term name=\"long-ordinal-09\">ninth</term><term name=\"long-ordinal-10\">tenth</term><term name=\"act\"><single>act</single><multiple>acts</multiple></term><term name=\"appendix\"><single>appendix</single><multiple>appendices</multiple></term><term name=\"article-locator\"><single>article</single><multiple>articles</multiple></term><term name=\"canon\"><single>canon</single><multiple>canons</multiple></term><term name=\"elocation\"><single>location</single><multiple>locations</multiple></term><term name=\"equation\"><single>equation</single><multiple>equations</multiple></term><term name=\"rule\"><single>rule</single><multiple>rules</multiple></term><term name=\"scene\"><single>scene</single><multiple>scenes</multiple></term><term name=\"table\"><single>table</single><multiple>tables</multiple></term><term name=\"timestamp\"><single></single><multiple></multiple></term><term name=\"title-locator\"><single>title</single><multiple>titles</multiple></term><term name=\"book\"><single>book</single><multiple>books</multiple></term><term name=\"chapter\"><single>chapter</single><multiple>chapters</multiple></term><term name=\"column\"><single>column</single><multiple>columns</multiple></term><term name=\"figure\"><single>figure</single><multiple>figures</multiple></term><term name=\"folio\"><single>folio</single><multiple>folios</multiple></term><term name=\"issue\"><single>number</single><multiple>numbers</multiple></term><term name=\"line\"><single>line</single><multiple>lines</multiple></term><term name=\"note\"><single>note</single><multiple>notes</multiple></term><term name=\"opus\"><single>opus</single><multiple>opera</multiple></term><term name=\"page\"><single>page</single><multiple>pages</multiple></term><term name=\"number-of-pages\"><single>page</single><multiple>pages</multiple></term><term name=\"paragraph\"><single>paragraph</single><multiple>paragraphs</multiple></term><term name=\"part\"><single>part</single><multiple>parts</multiple></term><term name=\"section\"><single>section</single><multiple>sections</multiple></term><term name=\"sub-verbo\"><single>sub verbo</single><multiple>sub verbis</multiple></term><term name=\"verse\"><single>verse</single><multiple>verses</multiple></term><term name=\"volume\"><single>volume</single><multiple>volumes</multiple></term><term name=\"appendix\"><single>app.</single><multiple>apps.</multiple></term><term name=\"article-locator\"><single>art.</single><multiple>arts.</multiple></term><term name=\"elocation\"><single>loc.</single><multiple>locs.</multiple></term><term name=\"equation\"><single>eq.</single><multiple>eqs.</multiple></term><term name=\"rule\"><single>r.</single><multiple>rr.</multiple></term><term name=\"scene\"><single>sc.</single><multiple>scs.</multiple></term><term name=\"table\"><single>tbl.</single><multiple>tbls.</multiple></term><term name=\"timestamp\"><single></single><multiple></multiple></term><term name=\"title-locator\"><single>tit.</single><multiple>tits.</multiple></term><term name=\"book\" form=\"short\"><single>bk.</single><multiple>bks.</multiple></term><term name=\"chapter\" form=\"short\"><single>chap.</single><multiple>chaps.</multiple></term><term name=\"column\" form=\"short\"><single>col.</single><multiple>cols.</multiple></term><term name=\"figure\" form=\"short\"><single>fig.</single><multiple>figs.</multiple></term><term name=\"folio\" form=\"short\"><single>fol.</single><multiple>fols.</multiple></term><term name=\"issue\" form=\"short\"><single>no.</single><multiple>nos.</multiple></term><term name=\"line\" form=\"short\"><single>l.</single><multiple>ll.</multiple></term><term name=\"note\" form=\"short\"><single>n.</single><multiple>nn.</multiple></term><term name=\"opus\" form=\"short\"><single>op.</single><multiple>opp.</multiple></term><term name=\"page\" form=\"short\"><single>p.</single><multiple>pp.</multiple></term><term name=\"number-of-pages\" form=\"short\"><single>p.</single><multiple>pp.</multiple></term><term name=\"paragraph\" form=\"short\"><single>para.</single><multiple>paras.</multiple></term><term name=\"part\" form=\"short\"><single>pt.</single><multiple>pts.</multiple></term><term name=\"section\" form=\"short\"><single>sec.</single><multiple>secs.</multiple></term><term name=\"sub-verbo\" form=\"short\"><single>s.v.</single><multiple>s.vv.</multiple></term><term name=\"verse\" form=\"short\"><single>v.</single><multiple>vv.</multiple></term><term name=\"volume\" form=\"short\"><single>vol.</single><multiple>vols.</multiple></term><term name=\"paragraph\" form=\"symbol\"><single>¶</single><multiple>¶¶</multiple></term><term name=\"section\" form=\"symbol\"><single>§</single><multiple>§§</multiple></term><term name=\"chair\"><single>chair</single><multiple>chairs</multiple></term><term name=\"compiler\"><single>compiler</single><multiple>compilers</multiple></term><term name=\"contributor\"><single>contributor</single><multiple>contributors</multiple></term><term name=\"curator\"><single>curator</single><multiple>curators</multiple></term><term name=\"executive-producer\"><single>executive producer</single><multiple>executive producers</multiple></term><term name=\"guest\"><single>guest</single><multiple>guests</multiple></term><term name=\"host\"><single>host</single><multiple>hosts</multiple></term><term name=\"narrator\"><single>narrator</single><multiple>narrators</multiple></term><term name=\"organizer\"><single>organizer</single><multiple>organizers</multiple></term><term name=\"performer\"><single>performer</single><multiple>performers</multiple></term><term name=\"producer\"><single>producer</single><multiple>producers</multiple></term><term name=\"script-writer\"><single>writer</single><multiple>writers</multiple></term><term name=\"series-creator\"><single>series creator</single><multiple>series creators</multiple></term><term name=\"director\"><single>director</single><multiple>directors</multiple></term><term name=\"editor\"><single>editor</single><multiple>editors</multiple></term><term name=\"editorial-director\"><single>editor</single><multiple>editors</multiple></term><term name=\"illustrator\"><single>illustrator</single><multiple>illustrators</multiple></term><term name=\"translator\"><single>translator</single><multiple>translators</multiple></term><term name=\"editortranslator\"><single>editor & translator</single><multiple>editors & translators</multiple></term><term name=\"compiler\" form=\"short\"><single>comp.</single><multiple>comps.</multiple></term><term name=\"contributor\" form=\"short\"><single>contrib.</single><multiple>contribs.</multiple></term><term name=\"curator\" form=\"short\"><single>cur.</single><multiple>curs.</multiple></term><term name=\"executive-producer\" form=\"short\"><single>exec. prod.</single><multiple>exec. prods.</multiple></term><term name=\"narrator\" form=\"short\"><single>narr.</single><multiple>narrs.</multiple></term><term name=\"organizer\" form=\"short\"><single>org.</single><multiple>orgs.</multiple></term><term name=\"performer\" form=\"short\"><single>perf.</single><multiple>perfs.</multiple></term><term name=\"producer\" form=\"short\"><single>prod.</single><multiple>prods.</multiple></term><term name=\"script-writer\" form=\"short\"><single>writ.</single><multiple>writs.</multiple></term><term name=\"series-creator\" form=\"short\"><single>cre.</single><multiple>cres.</multiple></term><term name=\"director\" form=\"short\"><single>dir.</single><multiple>dirs.</multiple></term><term name=\"editor\" form=\"short\"><single>ed.</single><multiple>eds.</multiple></term><term name=\"editorial-director\" form=\"short\"><single>ed.</single><multiple>eds.</multiple></term><term name=\"illustrator\" form=\"short\"><single>ill.</single><multiple>ills.</multiple></term><term name=\"translator\" form=\"short\"><single>tran.</single><multiple>trans.</multiple></term><term name=\"editortranslator\" form=\"short\"><single>ed. & tran.</single><multiple>eds. & trans.</multiple></term><term name=\"chair\" form=\"verb\">chaired by</term><term name=\"compiler\" form=\"verb\">compiled by</term><term name=\"contributor\" form=\"verb\">with</term><term name=\"curator\" form=\"verb\">curated by</term><term name=\"executive-producer\" form=\"verb\">executive produced by</term><term name=\"guest\" form=\"verb\">with guest</term><term name=\"host\" form=\"verb\">hosted by</term><term name=\"narrator\" form=\"verb\">narrated by</term><term name=\"organizer\" form=\"verb\">organized by</term><term name=\"performer\" form=\"verb\">performed by</term><term name=\"producer\" form=\"verb\">produced by</term><term name=\"script-writer\" form=\"verb\">written by</term><term name=\"series-creator\" form=\"verb\">created by</term><term name=\"container-author\" form=\"verb\">by</term><term name=\"director\" form=\"verb\">directed by</term><term name=\"editor\" form=\"verb\">edited by</term><term name=\"editorial-director\" form=\"verb\">edited by</term><term name=\"illustrator\" form=\"verb\">illustrated by</term><term name=\"interviewer\" form=\"verb\">interview by</term><term name=\"recipient\" form=\"verb\">to</term><term name=\"reviewed-author\" form=\"verb\">by</term><term name=\"translator\" form=\"verb\">translated by</term><term name=\"editortranslator\" form=\"verb\">edited & translated by</term><term name=\"compiler\" form=\"verb-short\">comp. by</term><term name=\"contributor\" form=\"verb-short\">w.</term><term name=\"curator\" form=\"verb-short\">cur. by</term><term name=\"executive-producer\" form=\"verb-short\">exec. prod. by</term><term name=\"guest\" form=\"verb-short\">w. guest</term><term name=\"host\" form=\"verb-short\">hosted by</term><term name=\"narrator\" form=\"verb-short\">narr. by</term><term name=\"organizer\" form=\"verb-short\">org. by</term><term name=\"performer\" form=\"verb-short\">perf. by</term><term name=\"producer\" form=\"verb-short\">prod. by</term><term name=\"script-writer\" form=\"verb-short\">writ. by</term><term name=\"series-creator\" form=\"verb-short\">cre. by</term><term name=\"director\" form=\"verb-short\">dir. by</term><term name=\"editor\" form=\"verb-short\">ed. by</term><term name=\"editorial-director\" form=\"verb-short\">ed. by</term><term name=\"illustrator\" form=\"verb-short\">illus. by</term><term name=\"translator\" form=\"verb-short\">trans. by</term><term name=\"editortranslator\" form=\"verb-short\">ed. & trans. by</term><term name=\"month-01\">January</term><term name=\"month-02\">February</term><term name=\"month-03\">March</term><term name=\"month-04\">April</term><term name=\"month-05\">May</term><term name=\"month-06\">June</term><term name=\"month-07\">July</term><term name=\"month-08\">August</term><term name=\"month-09\">September</term><term name=\"month-10\">October</term><term name=\"month-11\">November</term><term name=\"month-12\">December</term><term name=\"month-01\" form=\"short\">Jan.</term><term name=\"month-02\" form=\"short\">Feb.</term><term name=\"month-03\" form=\"short\">Mar.</term><term name=\"month-04\" form=\"short\">Apr.</term><term name=\"month-05\" form=\"short\">May</term><term name=\"month-06\" form=\"short\">Jun.</term><term name=\"month-07\" form=\"short\">Jul.</term><term name=\"month-08\" form=\"short\">Aug.</term><term name=\"month-09\" form=\"short\">Sep.</term><term name=\"month-10\" form=\"short\">Oct.</term><term name=\"month-11\" form=\"short\">Nov.</term><term name=\"month-12\" form=\"short\">Dec.</term><term name=\"season-01\">Spring</term><term name=\"season-02\">Summer</term><term name=\"season-03\">Autumn</term><term name=\"season-04\">Winter</term></terms></locale>`,\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: `<?xml version=\"1.0\" encoding=\"utf-8\"?><style xmlns=\"http://purl.org/net/xbiblio/csl\" class=\"in-text\" version=\"1.0\" demote-non-dropping-particle=\"never\" page-range-format=\"expanded\"><info><title>American Psychological Association 7th edition</title><title-short>APA</title-short><id>http://www.zotero.org/styles/apa</id><link href=\"http://www.zotero.org/styles/apa\" rel=\"self\"/><link href=\"http://www.zotero.org/styles/apa-6th-edition\" rel=\"template\"/><link href=\"https://apastyle.apa.org/style-grammar-guidelines/references/examples\" rel=\"documentation\"/><author><name>Brenton M. Wiernik</name><email>zotero@wiernik.org</email></author><category citation-format=\"author-date\"/><category field=\"psychology\"/><category field=\"generic-base\"/><updated>2022-01-31T14:30:00+00:00</updated><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang=\"en\"><terms><term name=\"editortranslator\" form=\"short\"><single>ed. & trans.</single><multiple>eds. & trans.</multiple></term><term name=\"translator\" form=\"short\">trans.</term><term name=\"interviewer\" form=\"short\"><single>interviewer</single><multiple>interviewers</multiple></term><term name=\"collection-editor\" form=\"short\"><single>ed.</single><multiple>eds.</multiple></term><term name=\"circa\" form=\"short\">ca.</term><term name=\"bc\"> B.C.E.</term><term name=\"ad\"> C.E.</term><term name=\"letter\">personal communication</term><term name=\"letter\" form=\"short\">letter</term><term name=\"issue\" form=\"long\"><single>issue</single><multiple>issues</multiple></term></terms></locale><locale xml:lang=\"af\"><terms><term name=\"letter\">persoonlike kommunikasie</term><term name=\"letter\" form=\"short\">brief</term></terms></locale><locale xml:lang=\"ar\"><terms><term name=\"letter\">اتصال شخصي</term><term name=\"letter\" form=\"short\">خطاب</term></terms></locale><locale xml:lang=\"bg\"><terms><term name=\"letter\">лична комуникация</term><term name=\"letter\" form=\"short\">писмо</term></terms></locale><locale xml:lang=\"ca\"><terms><term name=\"letter\">comunicació personal</term><term name=\"letter\" form=\"short\">carta</term></terms></locale><locale xml:lang=\"cs\"><terms><term name=\"letter\">osobní komunikace</term><term name=\"letter\" form=\"short\">dopis</term></terms></locale><locale xml:lang=\"cy\"><terms><term name=\"letter\">cyfathrebu personol</term><term name=\"letter\" form=\"short\">llythyr</term></terms></locale><locale xml:lang=\"da\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">personlig kommunikation</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"de\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">persönliche Kommunikation</term><term name=\"letter\" form=\"short\">Brief</term></terms></locale><locale xml:lang=\"el\"><terms><term name=\"letter\">προσωπική επικοινωνία</term><term name=\"letter\" form=\"short\">επιστολή</term></terms></locale><locale xml:lang=\"es\"><terms><term name=\"from\">de</term><term name=\"letter\">comunicación personal</term><term name=\"letter\" form=\"short\">carta</term></terms></locale><locale xml:lang=\"et\"><terms><term name=\"letter\">isiklik suhtlus</term><term name=\"letter\" form=\"short\">kiri</term></terms></locale><locale xml:lang=\"eu\"><terms><term name=\"letter\">komunikazio pertsonala</term><term name=\"letter\" form=\"short\">gutuna</term></terms></locale><locale xml:lang=\"fa\"><terms><term name=\"letter\">ارتباط شخصی</term><term name=\"letter\" form=\"short\">نامه</term></terms></locale><locale xml:lang=\"fi\"><terms><term name=\"letter\">henkilökohtainen viestintä</term><term name=\"letter\" form=\"short\">kirje</term></terms></locale><locale xml:lang=\"fr\"><terms><term name=\"letter\">communication personnelle</term><term name=\"letter\" form=\"short\">lettre</term><term name=\"editor\" form=\"short\"><single>éd.</single><multiple>éds.</multiple></term></terms></locale><locale xml:lang=\"he\"><terms><term name=\"letter\">תקשורת אישית</term><term name=\"letter\" form=\"short\">מכתב</term></terms></locale><locale xml:lang=\"hr\"><terms><term name=\"letter\">osobna komunikacija</term><term name=\"letter\" form=\"short\">pismo</term></terms></locale><locale xml:lang=\"hu\"><terms><term name=\"letter\">személyes kommunikáció</term><term name=\"letter\" form=\"short\">levél</term></terms></locale><locale xml:lang=\"id\"><terms><term name=\"letter\">komunikasi pribadi</term><term name=\"letter\" form=\"short\">surat</term></terms></locale><locale xml:lang=\"is\"><terms><term name=\"letter\">persónuleg samskipti</term><term name=\"letter\" form=\"short\">bréf</term></terms></locale><locale xml:lang=\"it\"><terms><term name=\"letter\">comunicazione personale</term><term name=\"letter\" form=\"short\">lettera</term></terms></locale><locale xml:lang=\"ja\"><terms><term name=\"letter\">個人的なやり取り</term><term name=\"letter\" form=\"short\">手紙</term></terms></locale><locale xml:lang=\"ko\"><terms><term name=\"letter\">개인 서신</term><term name=\"letter\" form=\"short\">편지</term></terms></locale><locale xml:lang=\"la\"><terms><term name=\"letter\"/><term name=\"letter\" form=\"short\">epistula</term></terms></locale><locale xml:lang=\"lt\"><terms><term name=\"letter\">communicationis personalis</term><term name=\"letter\" form=\"short\"/></terms></locale><locale xml:lang=\"lv\"><terms><term name=\"letter\">personīga komunikācija</term><term name=\"letter\" form=\"short\">vēstule</term></terms></locale><locale xml:lang=\"mn\"><terms><term name=\"letter\">хувийн харилцаа холбоо</term><term name=\"letter\" form=\"short\">захиа</term></terms></locale><locale xml:lang=\"nb\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">personlig kommunikasjon</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"nl\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">persoonlijke communicatie</term><term name=\"letter\" form=\"short\">brief</term></terms></locale><locale xml:lang=\"nn\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">personlig kommunikasjon</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"pl\"><terms><term name=\"letter\">osobista komunikacja</term><term name=\"letter\" form=\"short\">list</term></terms></locale><locale xml:lang=\"pt\"><terms><term name=\"letter\">comunicação pessoal</term><term name=\"letter\" form=\"short\">carta</term></terms></locale><locale xml:lang=\"ro\"><terms><term name=\"letter\">comunicare personală</term><term name=\"letter\" form=\"short\">scrisoare</term></terms></locale><locale xml:lang=\"ru\"><terms><term name=\"letter\">личная переписка</term><term name=\"letter\" form=\"short\">письмо</term></terms></locale><locale xml:lang=\"sk\"><terms><term name=\"letter\">osobná komunikácia</term><term name=\"letter\" form=\"short\">list</term></terms></locale><locale xml:lang=\"sl\"><terms><term name=\"letter\">osebna komunikacija</term><term name=\"letter\" form=\"short\">pismo</term></terms></locale><locale xml:lang=\"sr\"><terms><term name=\"letter\">лична комуникација</term><term name=\"letter\" form=\"short\">писмо</term></terms></locale><locale xml:lang=\"sv\"><terms><term name=\"letter\">personlig kommunikation</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"th\"><terms><term name=\"letter\">การสื่อสารส่วนบุคคล</term><term name=\"letter\" form=\"short\">จดหมาย</term></terms></locale><locale xml:lang=\"tr\"><terms><term name=\"letter\">kişisel iletişim</term><term name=\"letter\" form=\"short\">mektup</term></terms></locale><locale xml:lang=\"uk\"><terms><term name=\"letter\">особисте спілкування</term><term name=\"letter\" form=\"short\">лист</term></terms></locale><locale xml:lang=\"vi\"><terms><term name=\"letter\">giao tiếp cá nhân</term><term name=\"letter\" form=\"short\">thư</term></terms></locale><locale xml:lang=\"zh-CN\"><terms><term name=\"letter\">的私人交流</term><term name=\"letter\" form=\"short\">信函</term></terms></locale><locale xml:lang=\"zh-TW\"><terms><term name=\"letter\">私人通訊</term><term name=\"letter\" form=\"short\">信函</term></terms></locale><macro name=\"author-bib\"><names variable=\"composer\" delimiter=\", \"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><substitute><names variable=\"author\"/><names variable=\"illustrator\"/><names variable=\"director\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><choose><if variable=\"container-title\"><choose><if type=\"book entry entry-dictionary entry-encyclopedia\" match=\"any\"><choose><if variable=\"title\"><group delimiter=\" \"><text macro=\"title\"/><text macro=\"parenthetical\"/></group></if><else><text macro=\"title-and-descriptions\"/></else></choose></if></choose></if></choose><names variable=\"editor\" delimiter=\", \"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><names variable=\"editorial-director\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><names variable=\"collection-editor\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><choose><if variable=\"title\"><group delimiter=\" \"><text macro=\"title\"/><text macro=\"parenthetical\"/></group></if><else><text macro=\"title-and-descriptions\"/></else></choose></substitute></names></macro><macro name=\"author-intext\"><choose><if type=\"bill legal_case legislation treaty\" match=\"any\"><text macro=\"title-intext\"/></if><else-if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><group delimiter=\", \"><names variable=\"author\"><name and=\"symbol\" delimiter=\", \" initialize-with=\". \"/><substitute><text macro=\"title-intext\"/></substitute></names><text term=\"letter\"/></group></if><else><names variable=\"author\" delimiter=\", \"><name form=\"short\" and=\"symbol\" delimiter=\", \" initialize-with=\". \"/><substitute><text macro=\"title-intext\"/></substitute></names></else></choose></else-if><else><names variable=\"composer\" delimiter=\", \"><name form=\"short\" and=\"symbol\" delimiter=\", \" initialize-with=\". \"/><substitute><names variable=\"author\"/><names variable=\"illustrator\"/><names variable=\"director\"/><choose><if variable=\"container-title\"><choose><if type=\"book entry entry-dictionary entry-encyclopedia\" match=\"any\"><text macro=\"title-intext\"/></if></choose></if></choose><names variable=\"editor\"/><names variable=\"editorial-director\"/><text macro=\"title-intext\"/></substitute></names></else></choose></macro><macro name=\"date-bib\"><group delimiter=\" \" prefix=\"(\" suffix=\")\"><choose><if is-uncertain-date=\"issued\"><text term=\"circa\" form=\"short\"/></if></choose><group><choose><if variable=\"issued\"><date variable=\"issued\"><date-part name=\"year\"/></date><text variable=\"year-suffix\"/><choose><if type=\"article-magazine article-newspaper broadcast interview motion_picture pamphlet personal_communication post post-weblog song speech webpage\" match=\"any\"><date variable=\"issued\"><date-part prefix=\", \" name=\"month\"/><date-part prefix=\" \" name=\"day\"/></date></if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"none\"><date variable=\"issued\"><date-part prefix=\", \" name=\"month\"/><date-part prefix=\" \" name=\"day\"/></date></if></choose></else-if></choose></if><else-if variable=\"status\"><group><text variable=\"status\" text-case=\"lowercase\"/><text variable=\"year-suffix\" prefix=\"-\"/></group></else-if><else><text term=\"no date\" form=\"short\"/><text variable=\"year-suffix\" prefix=\"-\"/></else></choose></group></group></macro><macro name=\"date-sort-group\"><choose><if variable=\"issued\"><text value=\"1\"/></if><else-if variable=\"status\"><text value=\"2\"/></else-if><else><text value=\"0\"/></else></choose></macro><macro name=\"date-sort-date\"><date variable=\"issued\" form=\"numeric\"/></macro><macro name=\"date-intext\"><choose><if variable=\"issued\"><group delimiter=\"/\"><group delimiter=\" \"><choose><if is-uncertain-date=\"original-date\"><text term=\"circa\" form=\"short\"/></if></choose><date variable=\"original-date\"><date-part name=\"year\"/></date></group><group delimiter=\" \"><choose><if is-uncertain-date=\"issued\"><text term=\"circa\" form=\"short\"/></if></choose><group><choose><if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><date variable=\"issued\" form=\"text\"/></if><else><date variable=\"issued\"><date-part name=\"year\"/></date></else></choose></if><else><date variable=\"issued\"><date-part name=\"year\"/></date></else></choose><text variable=\"year-suffix\"/></group></group></group></if><else-if variable=\"status\"><text variable=\"status\" text-case=\"lowercase\"/><text variable=\"year-suffix\" prefix=\"-\"/></else-if><else><text term=\"no date\" form=\"short\"/><text variable=\"year-suffix\" prefix=\"-\"/></else></choose></macro><macro name=\"title-and-descriptions\"><choose><if variable=\"title\"><group delimiter=\" \"><text macro=\"title\"/><text macro=\"parenthetical\"/><text macro=\"bracketed\"/></group></if><else><group delimiter=\" \"><text macro=\"bracketed\"/><text macro=\"parenthetical\"/></group></else></choose></macro><macro name=\"title\"><choose><if type=\"post webpage\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></if><else-if variable=\"container-title\" match=\"any\"><text variable=\"title\"/></else-if><else><choose><if type=\"article-journal article-magazine article-newspaper post-weblog review review-book\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><group delimiter=\": \" font-style=\"italic\"><text variable=\"title\"/><choose><if is-numeric=\"volume\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose></group></if><else><text variable=\"title\" font-style=\"italic\"/></else></choose></else-if><else><group delimiter=\": \" font-style=\"italic\"><text variable=\"title\"/><choose><if is-numeric=\"volume\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose></group></else></choose></else></choose></macro><macro name=\"title-intext\"><choose><if variable=\"title\" match=\"none\"><text macro=\"bracketed-intext\" prefix=\"[\" suffix=\"]\"/></if><else-if type=\"bill\"><choose><if variable=\"number container-title\" match=\"none\"><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></if><else-if variable=\"title\"><text variable=\"title\" form=\"short\" text-case=\"title\"/></else-if><else><group delimiter=\" \"><text variable=\"genre\"/><group delimiter=\" \"><choose><if variable=\"chapter-number container-title\" match=\"none\"><text term=\"issue\" form=\"short\"/></if></choose><text variable=\"number\"/></group></group></else></choose></else-if><else-if type=\"legal_case\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></else-if><else-if type=\"legislation treaty\" match=\"any\"><text variable=\"title\" form=\"short\" text-case=\"title\"/></else-if><else-if type=\"post webpage\" match=\"any\"><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else-if><else-if variable=\"container-title\" match=\"any\"><text variable=\"title\" form=\"short\" quotes=\"true\" text-case=\"title\"/></else-if><else><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"parenthetical\"><group prefix=\"(\" suffix=\")\"><choose><if type=\"patent\"><group delimiter=\" \"><text variable=\"authority\" form=\"short\"/><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else><text value=\"patent\" text-case=\"capitalize-first\"/></else></choose><group delimiter=\" \"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"number\"/></group></group></if><else-if type=\"post webpage\" match=\"any\"><group delimiter=\"; \"><text macro=\"secondary-contributors\"/><text macro=\"database-location\"/><text macro=\"number\"/><text macro=\"locators-booklike\"/></group></else-if><else-if variable=\"container-title\"><group delimiter=\"; \"><text macro=\"secondary-contributors\"/><choose><if type=\"broadcast graphic map motion_picture song\" match=\"any\"><text macro=\"number\"/></if></choose></group></else-if><else><group delimiter=\"; \"><text macro=\"secondary-contributors\"/><text macro=\"database-location\"/><text macro=\"number\"/><text macro=\"locators-booklike\"/></group></else></choose></group></macro><macro name=\"parenthetical-container\"><choose><if variable=\"container-title\" match=\"any\"><group prefix=\"(\" suffix=\")\"><group delimiter=\"; \"><text macro=\"database-location\"/><choose><if type=\"broadcast graphic map motion_picture song\" match=\"none\"><text macro=\"number\"/></if></choose><text macro=\"locators-booklike\"/></group></group></if></choose></macro><macro name=\"bracketed\"><group prefix=\"[\" suffix=\"]\"><choose><if variable=\"reviewed-author reviewed-title\" type=\"review review-book\" match=\"any\"><group delimiter=\"; \"><group delimiter=\", \"><group delimiter=\" \"><choose><if variable=\"number\" match=\"none\"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></else-if><else><text value=\"Review of\"/></else></choose></if><else><choose><if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if><else><text value=\"Review of\"/></else></choose></else></choose><text macro=\"reviewed-title\"/></group><names variable=\"reviewed-author\"><label form=\"verb-short\" suffix=\" \"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></group><choose><if variable=\"genre\" match=\"any\"><choose><if variable=\"number\" match=\"none\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></if><else-if type=\"thesis\"><group delimiter=\"; \"><choose><if variable=\"number\" match=\"none\"><group delimiter=\", \"><text variable=\"genre\" text-case=\"capitalize-first\"/><choose><if variable=\"archive DOI URL\" match=\"any\"><text variable=\"publisher\"/></if></choose></group></if></choose><text variable=\"medium\" text-case=\"capitalize-first\"/></group></else-if><else-if variable=\"interviewer\" type=\"interview\" match=\"any\"><choose><if variable=\"title\"><text macro=\"format\"/></if><else-if variable=\"genre\"><group delimiter=\"; \"><group delimiter=\" \"><text variable=\"genre\" text-case=\"capitalize-first\"/><group delimiter=\" \"><text term=\"author\" form=\"verb\"/><names variable=\"interviewer\"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></group></group></group></else-if><else-if variable=\"interviewer\"><group delimiter=\"; \"><names variable=\"interviewer\"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names><text variable=\"medium\" text-case=\"capitalize-first\"/></group></else-if><else><text macro=\"format\"/></else></choose></else-if><else-if type=\"personal_communication\"><choose><if variable=\"recipient\"><group delimiter=\"; \"><group delimiter=\" \"><choose><if variable=\"number\" match=\"none\"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></else-if><else><text term=\"letter\" form=\"short\" text-case=\"capitalize-first\"/></else></choose></if><else><choose><if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if><else><text term=\"letter\" form=\"short\" text-case=\"capitalize-first\"/></else></choose></else></choose><names variable=\"recipient\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"symbol\" delimiter=\", \"/></names></group><choose><if variable=\"genre\" match=\"any\"><choose><if variable=\"number\" match=\"none\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></if><else><text macro=\"format\"/></else></choose></else-if><else-if variable=\"composer\" type=\"song\" match=\"all\"><group delimiter=\"; \"><choose><if variable=\"number\" match=\"none\"><group delimiter=\" \"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/><names variable=\"author\" prefix=\"recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/><names variable=\"author\" prefix=\"recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></else-if><else><names variable=\"author\" prefix=\"Recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></else></choose></group></if><else><group delimiter=\" \"><choose><if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/><names variable=\"author\" prefix=\"recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></if><else><names variable=\"author\" prefix=\"Recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></else></choose></group></else></choose><choose><if variable=\"genre\" match=\"any\"><choose><if variable=\"number\" match=\"none\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></else-if><else-if variable=\"container-title\" match=\"none\"><text macro=\"format\"/></else-if><else><choose><if type=\"paper-conference speech\" match=\"any\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"any\"><text macro=\"format\"/></if></choose></if><else-if type=\"book\"><choose><if variable=\"version\" match=\"none\"><text macro=\"format\"/></if></choose></else-if><else-if type=\"report\" match=\"none\"><text macro=\"format\"/></else-if></choose></else></choose></group></macro><macro name=\"bracketed-intext\"><group prefix=\"[\" suffix=\"]\"><choose><if variable=\"reviewed-author reviewed-title\" type=\"review review-book\" match=\"any\"><text macro=\"reviewed-title-intext\" prefix=\"Review of \"/></if><else-if variable=\"interviewer\" type=\"interview\" match=\"any\"><names variable=\"interviewer\"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><substitute><text macro=\"format-intext\"/></substitute></names></else-if><else-if type=\"personal_communication\"><choose><if variable=\"recipient\"><group delimiter=\" \"><choose><if variable=\"number\" match=\"none\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else><text term=\"letter\" form=\"short\" text-case=\"capitalize-first\"/></else></choose><names variable=\"recipient\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"symbol\" delimiter=\", \"/></names></group></if><else><text macro=\"format-intext\"/></else></choose></else-if><else><text macro=\"format-intext\"/></else></choose></group></macro><macro name=\"bracketed-container\"><group prefix=\"[\" suffix=\"]\"><choose><if type=\"paper-conference speech\" match=\"any\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"none\"><text macro=\"format\"/></if></choose></if><else-if type=\"book\" variable=\"version\" match=\"all\"><text macro=\"format\"/></else-if><else-if type=\"report\"><text macro=\"format\"/></else-if></choose></group></macro><macro name=\"secondary-contributors\"><choose><if type=\"article-journal article-magazine article-newspaper post-weblog review review-book\" match=\"any\"><text macro=\"secondary-contributors-periodical\"/></if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><text macro=\"secondary-contributors-booklike\"/></if><else><text macro=\"secondary-contributors-periodical\"/></else></choose></else-if><else><text macro=\"secondary-contributors-booklike\"/></else></choose></macro><macro name=\"secondary-contributors-periodical\"><group delimiter=\"; \"><choose><if variable=\"title\"><names variable=\"interviewer\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></if></choose><names variable=\"translator\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></group></macro><macro name=\"secondary-contributors-booklike\"><group delimiter=\"; \"><choose><if variable=\"title\"><names variable=\"interviewer\"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></if></choose><choose><if type=\"post webpage\" match=\"none\"><choose><if variable=\"container-title\" match=\"none\"><group delimiter=\"; \"><names variable=\"container-author\"><label form=\"verb-short\" suffix=\" \" text-case=\"title\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names><names variable=\"editor translator\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></group></if></choose></if><else><group delimiter=\"; \"><names variable=\"container-author\"><label form=\"verb-short\" suffix=\" \" text-case=\"title\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names><names variable=\"editor translator\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></group></else></choose></group></macro><macro name=\"database-location\"><choose><if variable=\"archive-place\" match=\"none\"><text variable=\"archive_location\"/></if></choose></macro><macro name=\"number\"><choose><if variable=\"number\"><group delimiter=\", \"><group delimiter=\" \"><text variable=\"genre\" text-case=\"title\"/><choose><if is-numeric=\"number\"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"number\"/></if><else><text variable=\"number\"/></else></choose></group><choose><if type=\"thesis\"><choose><if variable=\"archive DOI URL\" match=\"any\"><text variable=\"publisher\"/></if></choose></if></choose></group></if></choose></macro><macro name=\"locators-booklike\"><choose><if type=\"article-journal article-magazine article-newspaper broadcast interview patent post post-weblog review review-book speech webpage\" match=\"any\"/><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><group delimiter=\", \"><text macro=\"version\"/><text macro=\"edition\"/><text macro=\"volume-booklike\"/></group></if></choose></else-if><else><group delimiter=\", \"><text macro=\"version\"/><text macro=\"edition\"/><text macro=\"volume-booklike\"/></group></else></choose></macro><macro name=\"version\"><choose><if is-numeric=\"version\"><group delimiter=\" \"><text term=\"version\" text-case=\"capitalize-first\"/><text variable=\"version\"/></group></if><else><text variable=\"version\"/></else></choose></macro><macro name=\"edition\"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><label variable=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\"/></else></choose></macro><macro name=\"volume-booklike\"><group delimiter=\", \"><choose><if type=\"report\"><group delimiter=\" \"><text variable=\"collection-title\" text-case=\"title\"/><text variable=\"collection-number\"/></group></if></choose><choose><if variable=\"volume\" match=\"any\"><choose><if is-numeric=\"volume\" match=\"none\"/><else><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><number variable=\"volume\" form=\"numeric\"/></group></else></choose></if><else><group><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\" suffix=\" \"/><text term=\"page-range-delimiter\" prefix=\"1\"/><number variable=\"number-of-volumes\" form=\"numeric\"/></group></else></choose><group delimiter=\" \"><label variable=\"issue\" text-case=\"capitalize-first\"/><text variable=\"issue\"/></group><group delimiter=\" \"><label variable=\"page\" form=\"short\" suffix=\" \"/><text variable=\"page\"/></group></group></macro><macro name=\"reviewed-title\"><choose><if variable=\"reviewed-title\"><text variable=\"reviewed-title\" font-style=\"italic\"/></if><else><text variable=\"title\" font-style=\"italic\"/></else></choose></macro><macro name=\"reviewed-title-intext\"><choose><if variable=\"reviewed-title\"><text variable=\"reviewed-title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></if><else><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"format\"><choose><if variable=\"genre medium\" match=\"any\"><group delimiter=\"; \"><choose><if variable=\"number\" match=\"none\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if></choose><text variable=\"medium\" text-case=\"capitalize-first\"/></group></if><else-if type=\"dataset\"><text value=\"Data set\"/></else-if><else-if type=\"book\" variable=\"version\" match=\"all\"><text value=\"Computer software\"/></else-if><else-if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><text term=\"letter\" text-case=\"capitalize-first\"/></if><else-if type=\"interview\"><text term=\"interview\" text-case=\"capitalize-first\"/></else-if></choose></else-if><else-if type=\"map\"><text value=\"Map\"/></else-if></choose></macro><macro name=\"format-intext\"><choose><if variable=\"genre\" match=\"any\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></else-if><else-if type=\"dataset\"><text value=\"Data set\"/></else-if><else-if type=\"book\" variable=\"version\" match=\"all\"><text value=\"Computer software\"/></else-if><else-if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><text term=\"letter\" text-case=\"capitalize-first\"/></if><else-if type=\"interview\"><text term=\"interview\" text-case=\"capitalize-first\"/></else-if></choose></else-if><else-if type=\"map\"><text value=\"Map\"/></else-if></choose></macro><macro name=\"container\"><choose><if type=\"article-journal article-magazine article-newspaper post-weblog review review-book\" match=\"any\"><text macro=\"container-periodical\"/></if><else-if type=\"paper-conference\"><choose><if variable=\"editor editorial-director collection-editor container-author\" match=\"any\"><text macro=\"container-booklike\"/></if><else><text macro=\"container-periodical\"/></else></choose></else-if><else-if type=\"post webpage\" match=\"none\"><text macro=\"container-booklike\"/></else-if></choose></macro><macro name=\"container-periodical\"><group delimiter=\". \"><group delimiter=\", \"><text variable=\"container-title\" font-style=\"italic\" text-case=\"title\"/><choose><if variable=\"volume\"><group><text variable=\"volume\" font-style=\"italic\"/><text variable=\"issue\" prefix=\"(\" suffix=\")\"/></group></if><else><text variable=\"issue\" font-style=\"italic\"/></else></choose><choose><if variable=\"page\"><text variable=\"page\"/></if><else><text variable=\"number\" prefix=\"Article \"/></else></choose></group><choose><if variable=\"issued\"><choose><if variable=\"issue page volume\" match=\"none\"><text variable=\"status\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></macro><macro name=\"container-booklike\"><choose><if variable=\"container-title\" match=\"any\"><group delimiter=\" \"><text term=\"in\" text-case=\"capitalize-first\"/><group delimiter=\", \"><names variable=\"editor translator\" delimiter=\", & \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" text-case=\"title\" prefix=\" (\" suffix=\")\"/><substitute><names variable=\"editorial-director\"/><names variable=\"collection-editor\"/><names variable=\"container-author\"/></substitute></names><group delimiter=\": \" font-style=\"italic\"><text variable=\"container-title\"/><choose><if is-numeric=\"volume\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose></group></group><text macro=\"parenthetical-container\"/><text macro=\"bracketed-container\"/></group></if></choose></macro><macro name=\"publisher\"><group delimiter=\"; \"><choose><if type=\"thesis\"><choose><if variable=\"archive DOI URL\" match=\"none\"><text variable=\"publisher\"/></if></choose></if><else-if type=\"post webpage\" match=\"any\"><group delimiter=\"; \"><text variable=\"container-title\" text-case=\"title\"/><text variable=\"publisher\"/></group></else-if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><text variable=\"publisher\"/></if></choose></else-if><else-if type=\"article-journal article-magazine article-newspaper post-weblog\" match=\"none\"><text variable=\"publisher\"/></else-if></choose><group delimiter=\", \"><choose><if variable=\"archive-place\"><text variable=\"archive_location\"/></if></choose><text variable=\"archive\"/><text variable=\"archive-place\"/></group></group></macro><macro name=\"access\"><choose><if variable=\"DOI\" match=\"any\"><text variable=\"DOI\" prefix=\"https://doi.org/\"/></if><else-if variable=\"URL\"><group delimiter=\" \"><choose><if variable=\"issued status\" match=\"none\"><group delimiter=\" \"><text term=\"retrieved\" text-case=\"capitalize-first\"/><date variable=\"accessed\" form=\"text\" suffix=\",\"/><text term=\"from\"/></group></if></choose><text variable=\"URL\"/></group></else-if></choose></macro><macro name=\"event\"><choose><if variable=\"event\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"none\"><group delimiter=\", \"><text variable=\"event\"/><text variable=\"event-place\"/></group></if></choose></if></choose></macro><macro name=\"publication-history\"><choose><if type=\"patent\" match=\"none\"><group prefix=\"(\" suffix=\")\"><choose><if variable=\"references\"><text variable=\"references\"/></if><else><group delimiter=\" \"><text value=\"Original work published\"/><choose><if is-uncertain-date=\"original-date\"><text term=\"circa\" form=\"short\"/></if></choose><date variable=\"original-date\"><date-part name=\"year\"/></date></group></else></choose></group></if><else><text variable=\"references\" prefix=\"(\" suffix=\")\"/></else></choose></macro><macro name=\"legal-cites\"><choose><if type=\"legal_case\"><group delimiter=\". \"><group delimiter=\", \"><text variable=\"title\"/><group delimiter=\" \"><text macro=\"container-legal\"/><text macro=\"date-legal\"/></group><text variable=\"references\"/></group><text macro=\"access\"/></group></if><else-if type=\"bill\"><group delimiter=\". \"><group delimiter=\", \"><choose><if variable=\"number container-title\" match=\"none\"><text variable=\"title\" font-style=\"italic\"/></if><else><text variable=\"title\"/></else></choose><group delimiter=\" \"><text macro=\"container-legal\"/><text macro=\"date-legal\"/><choose><if variable=\"number container-title\" match=\"none\"><names variable=\"author\" prefix=\"(testimony of \" suffix=\")\"><name and=\"symbol\" delimiter=\", \"/></names></if><else><text variable=\"status\" prefix=\"(\" suffix=\")\"/></else></choose></group><text variable=\"references\"/></group><text macro=\"access\"/></group></else-if><else-if type=\"legislation\"><group delimiter=\". \"><group delimiter=\", \"><text variable=\"title\"/><group delimiter=\" \"><text macro=\"container-legal\"/><text macro=\"date-legal\"/><text variable=\"status\" prefix=\"(\" suffix=\")\"/></group><text variable=\"references\"/></group><text macro=\"access\"/></group></else-if><else-if type=\"treaty\"><group delimiter=\", \"><text variable=\"title\" text-case=\"title\"/><names variable=\"author\"><name initialize-with=\".\" form=\"short\" delimiter=\"-\"/></names><text macro=\"date-legal\"/><text macro=\"container-legal\"/><text macro=\"access\"/></group></else-if></choose></macro><macro name=\"date-legal\"><choose><if type=\"legal_case\"><group prefix=\"(\" suffix=\")\" delimiter=\" \"><text variable=\"authority\"/><choose><if variable=\"container-title\" match=\"any\"><date variable=\"issued\" form=\"numeric\" date-parts=\"year\"/></if><else><date variable=\"issued\" form=\"text\"/></else></choose></group></if><else-if type=\"bill legislation\" match=\"any\"><group prefix=\"(\" suffix=\")\" delimiter=\" \"><group delimiter=\" \"><date variable=\"original-date\"><date-part name=\"year\"/></date><text term=\"and\" form=\"symbol\"/></group><date variable=\"issued\"><date-part name=\"year\"/></date></group></else-if><else-if type=\"treaty\"><date variable=\"issued\" form=\"text\"/></else-if></choose></macro><macro name=\"container-legal\"><choose><if type=\"legal_case\"><group delimiter=\" \"><choose><if variable=\"container-title\"><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><group delimiter=\" \"><text term=\"section\" form=\"symbol\"/><text variable=\"section\"/></group><choose><if variable=\"page page-first\" match=\"any\"><text variable=\"page-first\"/></if><else><text value=\"___\"/></else></choose></group></if><else><group delimiter=\" \"><choose><if is-numeric=\"number\"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/></if></choose><text variable=\"number\"/></group></else></choose></group></if><else-if type=\"bill\"><group delimiter=\", \"><group delimiter=\" \"><text variable=\"genre\"/><group delimiter=\" \"><choose><if variable=\"chapter-number container-title\" match=\"none\"><text term=\"issue\" form=\"short\"/></if></choose><text variable=\"number\"/></group></group><text variable=\"authority\"/><text variable=\"chapter-number\"/><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><text variable=\"page-first\"/></group></group></else-if><else-if type=\"legislation\"><choose><if variable=\"number\"><group delimiter=\", \"><text variable=\"number\" prefix=\"Pub. L. No. \"/><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><text variable=\"page-first\"/></group></group></if><else><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><choose><if variable=\"section\"><group delimiter=\" \"><text term=\"section\" form=\"symbol\"/><text variable=\"section\"/></group></if><else><text variable=\"page-first\"/></else></choose></group></else></choose></else-if><else-if type=\"treaty\"><group delimiter=\" \"><number variable=\"volume\"/><text variable=\"container-title\"/><choose><if variable=\"page page-first\" match=\"any\"><text variable=\"page-first\"/></if><else><group delimiter=\" \"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"number\"/></group></else></choose></group></else-if></choose></macro><macro name=\"citation-locator\"><group delimiter=\" \"><choose><if locator=\"chapter\"><label variable=\"locator\" text-case=\"capitalize-first\"/></if><else><label variable=\"locator\" form=\"short\"/></else></choose><text variable=\"locator\"/></group></macro><citation et-al-min=\"3\" et-al-use-first=\"1\" disambiguate-add-year-suffix=\"true\" disambiguate-add-names=\"true\" disambiguate-add-givenname=\"true\" collapse=\"year\" givenname-disambiguation-rule=\"primary-name-with-initials\"><sort><key macro=\"author-bib\" names-min=\"3\" names-use-first=\"1\"/><key macro=\"date-sort-group\"/><key macro=\"date-sort-date\" sort=\"ascending\"/><key variable=\"status\"/></sort><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><group delimiter=\", \"><text macro=\"author-intext\"/><text macro=\"date-intext\"/><text macro=\"citation-locator\"/></group></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"21\" et-al-use-first=\"19\" et-al-use-last=\"true\" entry-spacing=\"0\" line-spacing=\"2\"><sort><key macro=\"author-bib\"/><key macro=\"date-sort-group\"/><key macro=\"date-sort-date\" sort=\"ascending\"/><key variable=\"status\"/><key macro=\"title\"/></sort><layout><choose><if type=\"bill legal_case legislation treaty\" match=\"any\"><choose><if variable=\"DOI URL\" match=\"any\"><text macro=\"legal-cites\"/></if><else><text macro=\"legal-cites\" suffix=\".\"/></else></choose></if><else><group delimiter=\" \"><group delimiter=\". \" suffix=\".\"><text macro=\"author-bib\"/><text macro=\"date-bib\"/><text macro=\"title-and-descriptions\"/><text macro=\"container\"/><text macro=\"event\"/><text macro=\"publisher\"/></group><text macro=\"access\"/><text macro=\"publication-history\"/></group></else></choose></layout></bibliography></style>`,\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<CSL>} 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 * // `<div class=\"csl-bib-body\">\n * // <div data-csl-entry-id=\"Q30000000\" class=\"csl-entry\">\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. <i>Molecular Endocrinology</i>, <i>16</i>(4), 837–846. https://doi.org/10.1210/MEND.16.4.0808 [Retrieved on 2018-7-10]\n * // </div>\n * // </div>`\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<CSL>} 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<String>} [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<module:@citation-js/plugin-csl.output~CiteItem>} 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<String>|Array<module:@citation-js/plugin-csl.output~CiteItem>|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<String>|Array<module:@citation-js/plugin-csl.output~CiteItem>|Array<module:@citation-js/plugin-csl.output~Citation>} [context=[]]\n * @return {Array<module:@citation-js/plugin-csl.output~Citation>} 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<CSL>} 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<String>} [options.citationsPre=[]]\n * @param {Array<String>} [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~Entry>} 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<module:@citation-js/core.plugins.output~formatterName,module:@citation-js/core.plugins.output~formatter>\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 = '<?xml version=\"1.0\" encoding=\"utf-8\"?><locale ...>...</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 = '<?xml version=\"1.0\" encoding=\"utf-8\"?><style ...>...</style>' // 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"],"names":["currentVersion","log","length","retrieveVersion","versnum","data","options","image","constructor","JSON","parse","slice","undo","number","retrieveLastVersion","save","push","stringify","_options","formats","types","styles","wrapperTypes","validateOutputOptions","TypeError","format","type","style","lang","append","prepend","includes","test","Error","validateOptions","output","maxChainLength","forceType","generateGraph","strict","target","defaultOptions","validate","Object","assign","typeOf","thing","undefined","name","dataTypeOf","Array","isArray","applyGraph","entry","graph","_graph","index","findIndex","splice","removeGraph","logger","_output","level","scope","msg","_log","_levels","indexOf","_console","console","Console","process","stderr","dataTypes","unregExts","parseNativeTypes","input","dataType","every","matchType","typeList","predicate","extensions","match","addTypeParser","extends","extend","debug","object","parentTypeParser","hasTypeParser","prototype","hasOwnProperty","call","removeTypeParser","typeLists","keys","map","key","filter","list","forEach","listTypeParser","treeTypeParser","attachNode","children","typeMatcher","TypeParser","validDataTypes","validateDataType","RangeError","validateParseType","RegExp","validateTokenList","tokenList","validatePropertyConstraint","propertyConstraint","validateElementConstraint","elementConstraint","validateExtends","parseTokenList","token","split","trim","trimInput","testTokens","part","parsePropertyConstraint","constraints","concat","props","value","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","book","broadcast","chapter","classic","collection","dataset","document","event","figure","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","author","chair","compiler","composer","contributor","curator","director","editor","guest","host","interviewer","illustrator","narrator","organizer","performer","producer","recipient","translator","accessed","container","issued","submitted","categories","custom","id","language","journalAbbreviation","shortTitle","abstract","annote","archive","archive_collection","archive_location","authority","dimensions","division","DOI","edition","genre","ISBN","ISSN","issue","jurisdiction","keyword","locator","medium","note","page","PMCID","PMID","printing","publisher","references","scale","section","source","status","supplement","title","URL","version","volume","correctName","bestGuessConversions","literal","given","family","parseName","correctNameList","nameList","names","Boolean","correctDateParts","dateParts","isNaN","parseInt","correctDate","date","dp","range","_extends","correctType","correctField","fieldName","fieldType","parseFloat","toString","parseCsl","clean","field","correction","upgradeCsl","item","downgradeCsl","deepCopy","seen","Set","has","add","copy","delete","conversions","lib","sign","x","evenRound","Math","floor","round","createNumberConversion","bitLength","typeOpts","unsigned","lowerBound","pow","upperBound","moduloVal","moduloBitLength","moduloBound","V","opts","enforceRange","Number","isFinite","abs","clamp","val","treatNullAsEmptyString","String","c","i","codePointAt","S","n","U","charCodeAt","fromCodePoint","d","a","b","join","Date","module","exports","mixin","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","wrapperSymbol","Symbol","implSymbol","wrapperForImpl","impl","implForWrapper","wrapper","PROCESSING_OPTIONS","TRANSITIONAL","NONTRANSITIONAL","normalize","str","s","findStatus","start","end","mappingTable","mid","regexAstralSymbols","countSymbols","string","replace","mapChars","domain_name","useSTD3","processing_option","hasError","processed","len","codePoint","apply","error","combiningMarksRegex","validateLabel","label","substr","punycode","toUnicode","search","processing","result","labels","validation","e","toASCII","verifyDnsLength","l","total","domain","PROCESSING_OPTIONS_1","specialSchemes","ftp","file","gopher","http","https","ws","wss","failure","ucs2","decode","at","idx","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","isSingleDot","buffer","toLowerCase","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","scheme","isSpecial","url","defaultPort","percentEncode","hex","toUpperCase","utf8PercentEncode","buf","Buffer","utf8PercentDecode","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","parseIPv4Number","R","charAt","substring","regex","parseIPv4","parts","pop","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","path","isNormalizedWindowsDriveLetter","includesCredentials","username","password","cannotHaveAUsernamePasswordPort","cannotBeABaseURL","URLStateMachine","base","encodingOverride","stateOverride","parseError","port","query","fragment","res","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","parseFragment","serializeURL","excludeFragment","serializeOrigin","tuple","serializeURLOrigin","parseURL","basicURLParse","usm","baseURL","setTheUsername","setThePassword","serializeInteger","integer","implementation","URLImpl","constructorArgs","parsedBase","parsedURL","_url","href","v","origin","protocol","hostname","pathname","hash","toJSON","utils","arguments","args","setup","is","get","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","text","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","err","bodyUsed","consumeBody","then","ct","headers","json","_this2","reject","textConverted","_this3","convertBody","mixIn","proto","desc","_this4","alloc","accum","accumBytes","abort","resTimeout","setTimeout","chunk","clearTimeout","charset","exec","getAll","sort","clone","instance","p1","p2","getBoundary","pipe","extractContentType","getTotalBytes","getLengthSync","_lengthRetrievers","hasKnownLength","writeToStream","dest","write","global","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","find","MAP","Headers","init","rawHeaders","raw","headerNames","headerName","method","iterator","pairs","pair","callback","thisArg","getHeaders","_pairs$i","createHeadersIterator","values","entries","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","endsWith","isSameProtocol","fetch","send","response","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","mode","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","prefix","random","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","csl","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","Cite","staticMethods","dict","entryName","html","bibliographyContainer","listItem","htmlDict","wr_start","wr_end","en_start","en_end","ul_start","ul_end","li_start","li_end","textDict","configs","ref","config","registers","indices","plugins","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","year","journal","firstpage","pages","lastpage","link","cid","parseContentMine","parseBibJson","scraperLinks","authorNameFields","links","authors","records","metadata","root","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","groups","word","unicode","pat","regexp","groupCount","fallbackRule","flags","suffix","combined","compile","Lexer","checkStateGroup","g","compileStates","states","$all","ruleMap","included","newRules","newRule","fastKeys","keywordTransform","isMap","Map","reverseMap","tokenType","keywordList","startState","stack","info","line","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","ids","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","properties","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","startsWith","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","registry","parent","_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","rest","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","locales","defaultTemplates","apa","templates","proxied","for","getWrapperProxy","proxy","sys","wrapBibliographyEntry","postfix","system_id","CSL","Output","Formats","retrieveLocale","locale","unnormalised","engines","fetchEngine","styleXml","retrieveItem","engineHash","engine","Engine","updateItems","prepareEngine","items","store","setOutputFormat","getAttributedEntry","getPrefixedEntry","getAffix","affix","bibliography","nosort","citeproc","sortedIds","makeBibliography","bibstart","bibend","bibBody","asEntryArray","prepareCiteItem","citeItem","prepareCitation","citation","citationItems","noteIndex","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"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"} |