{"version":3,"file":"rehype-citation.mjs","sources":["../../src/regex.js","../../src/parse-citation.js","../../src/utils.js","../../src/html-transform-node.js","../../src/gen-citation.js","../../src/gen-biblio.js","../../src/gen-footnote.js","../../src/generator.js","../../src/citation-js/core/Cite/log.js","../../src/citation-js/core/Cite/validate.js","../../src/citation-js/core/Cite/options.js","../../src/citation-js/core/plugins/input/dataType.js","../../src/citation-js/core/plugins/input/graph.js","../../src/citation-js/core/logger.js","../../src/citation-js/core/plugins/input/type.js","../../src/citation-js/core/plugins/input/parser.js","../../src/citation-js/core/plugins/input/csl.js","../../src/citation-js/core/util/csl.js","../../src/citation-js/core/util/deepCopy.js","../../node_modules/webidl-conversions/lib/index.js","../../node_modules/whatwg-url/lib/utils.js","../../node_modules/tr46/index.js","../../node_modules/whatwg-url/lib/url-state-machine.js","../../node_modules/whatwg-url/lib/URL-impl.js","../../node_modules/whatwg-url/lib/URL.js","../../node_modules/whatwg-url/lib/public-api.js","../../node_modules/node-fetch/lib/index.mjs","../../node_modules/sync-fetch/shared.js","../../node_modules/sync-fetch/index.js","../../node_modules/fetch-ponyfill/node_modules/node-fetch/lib/index.mjs","../../node_modules/fetch-ponyfill/fetch-node.js","../../src/citation-js/core/util/fetchFile.js","../../src/citation-js/core/util/fetchId.js","../../src/citation-js/core/util/register.js","../../src/citation-js/core/util/grammar.js","../../src/citation-js/core/util/translator.js","../../src/citation-js/core/plugins/input/chain.js","../../src/citation-js/core/plugins/input/data.js","../../src/citation-js/core/plugins/input/register.js","../../src/citation-js/core/plugins/input/index.js","../../src/citation-js/core/Cite/set.js","../../src/citation-js/core/plugin-common/output/label.js","../../src/citation-js/core/Cite/sort.js","../../src/citation-js/core/plugins/output.js","../../src/citation-js/core/Cite/get.js","../../src/citation-js/core/Cite/async.js","../../src/citation-js/core/Cite/index.js","../../src/citation-js/core/plugins/dict.js","../../src/citation-js/core/plugins/config.js","../../src/citation-js/core/plugins/index.js","../../src/citation-js/core/plugin-common/input/empty.js","../../src/citation-js/core/plugin-common/input/json.js","../../src/citation-js/core/plugin-common/input/jquery.js","../../src/citation-js/core/plugin-common/input/html.js","../../src/citation-js/core/plugin-common/input/index.js","../../src/citation-js/core/plugin-common/output/json.js","../../src/citation-js/core/plugin-common/output/index.js","../../src/citation-js/core/plugin-common/index.js","../../src/citation-js/plugin-bibjson/json.js","../../src/citation-js/plugin-bibjson/index.js","../../node_modules/moo/moo.js","../../src/citation-js/plugin-bibtex/mapping/biblatexTypes.js","../../src/citation-js/plugin-bibtex/mapping/bibtexTypes.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/config.js","../../src/citation-js/plugin-bibtex/input/file.js","../../src/citation-js/plugin-bibtex/input/bibtxt.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/crossref.js","../../src/citation-js/plugin-bibtex/mapping/index.js","../../src/citation-js/plugin-bibtex/input/name.js","../../src/citation-js/plugin-bibtex/input/value.js","../../src/citation-js/plugin-bibtex/input/entries.js","../../src/citation-js/plugin-bibtex/input/index.js","../../src/citation-js/plugin-bibtex/output/value.js","../../src/citation-js/plugin-bibtex/output/entries.js","../../src/citation-js/plugin-bibtex/output/bibtex.js","../../src/citation-js/plugin-bibtex/output/bibtxt.js","../../src/citation-js/plugin-bibtex/output/index.js","../../src/citation-js/plugin-bibtex/index.js","../../src/citation-js/plugin-csl/locales.js","../../src/citation-js/plugin-csl/styles.js","../../src/citation-js/plugin-csl/engines.js","../../src/citation-js/plugin-csl/attr.js","../../src/citation-js/plugin-csl/bibliography.js","../../src/citation-js/plugin-csl/citation.js","../../src/citation-js/plugin-csl/index.js","../../src/citation-js/plugin-yaml/index.js","../../src/citation-js/plugin-cff/index.js","../../src/cite.js","../../styles/mla.js","../../styles/chicago.js","../../styles/harvard1.js","../../styles/vancouver.js","../../src/index.js"],"sourcesContent":["// Regex adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n\n/**\n * Citation detection: The first alternative matches \"full\" citations surrounded\n * by square brackets, whereas the second one matches in-text citations,\n * optionally with suffixes.\n *\n * * Group 1 matches regular \"full\" citations\n * * Group 2 matches in-text citations (not surrounded by brackets)\n * * Group 3 matches optional square-brackets suffixes to group 2 matches\n *\n * For more information, see https://pandoc.org/MANUAL.html#extension-citations\n *\n * @var {RegExp}\n */\nexport const citationRE =\n  /(?:\\[([^[\\]]*@[^[\\]]+)\\])|(?<=\\s|^|(-))(?:@([\\p{L}\\d_][^\\s]*[\\p{L}\\d_]|\\{.+\\})(?:\\s+\\[(.*?)\\])?)/u\n\n/**\n * I hate everything at this. This can match every single possible variation on\n * whatever the f*** you can possibly do within square brackets according to the\n * documentation. I opted for named groups for these because otherwise I have no\n * idea what I have been doing here.\n *\n * * Group prefix: Contains the prefix, ends with a dash if we should suppress the author\n * * Group citekey: Contains the actual citekey, can be surrounded in curly brackets\n * * Group explicitLocator: Contains an explicit locator statement. If given, we MUST ignore any form of locator in the suffix\n * * Group explicitLocatorInSuffix: Same as above, but not concatenated to the citekey\n * * Group suffix: Contains the suffix, but may start with a locator (if explicitLocator and explicitLocatorInSuffix are not given)\n *\n * @var {RegExp}\n */\nexport const fullCitationRE =\n  /(?<prefix>.+)?(?:@(?<citekey>[\\p{L}\\d_][^\\s{]*[\\p{L}\\d_]|\\{.+\\}))(?:\\{(?<explicitLocator>.*)\\})?(?:,\\s+(?:\\{(?<explicitLocatorInSuffix>.*)\\})?(?<suffix>.*))?/u\n\n/**\n * This regular expression matches locator ranges, like the following:\n *\n * * 23-45, and further (here it matches up to, not including the comma)\n * * 45\n * * 15423\n * * 14235-12532\n * * 12-34, 23, 56\n * * 12, 23-14, 23\n * * 12, 54, 12-23\n * * 1, 1-4\n * * 3\n * * NEW NEW NEW: Now also matches Roman numerals as sometimes used in forewords!\n *\n * @var {RegExp}\n */\nexport const locatorRE = /^(?:[\\d, -]*\\d|[ivxlcdm, -]*[ivxlcdm])/i\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').CiteItemSuffix} CiteItemSuffix\n */\n\nimport { fullCitationRE, locatorRE } from './regex.js'\n\n/**\n * The locatorLabels have been sourced from the Citr library. Basically it's just\n * a map with valid CSL locator labels and an array of possible natural labels\n * which a user might want to write (instead of the standardized labels).\n *\n * @var {{ [key: string]: string[] }}}\n */\nconst locatorLabels = {\n  book: ['Buch', 'Bücher', 'B.', 'book', 'books', 'bk.', 'bks.', 'livre', 'livres', 'liv.'],\n  chapter: ['Kapitel', 'Kap.', 'chapter', 'chapters', 'chap.', 'chaps', 'chapitre', 'chapitres'],\n  column: ['Spalte', 'Spalten', 'Sp.', 'column', 'columns', 'col.', 'cols', 'colonne', 'colonnes'],\n  figure: ['Abbildung', 'Abbildungen', 'Abb.', 'figure', 'figures', 'fig.', 'figs'],\n  folio: ['Blatt', 'Blätter', 'Fol.', 'folio', 'folios', 'fol.', 'fols', 'fᵒ', 'fᵒˢ'],\n  issue: [\n    'Nummer',\n    'Nummern',\n    'Nr.',\n    'number',\n    'numbers',\n    'no.',\n    'nos.',\n    'numéro',\n    'numéros',\n    'nᵒ',\n    'nᵒˢ',\n  ],\n  line: ['Zeile', 'Zeilen', 'Z', 'line', 'lines', 'l.', 'll.', 'ligne', 'lignes'],\n  note: ['Note', 'Noten', 'N.', 'note', 'notes', 'n.', 'nn.'],\n  opus: ['Opus', 'Opera', 'op.', 'opus', 'opera', 'opp.'],\n  page: ['Seite', 'Seiten', 'S.', 'page', 'pages', 'p.', 'pp.'],\n  paragraph: [\n    'Absatz',\n    'Absätze',\n    'Abs.',\n    '¶',\n    '¶¶',\n    'paragraph',\n    'paragraphs',\n    'para.',\n    'paras',\n    'paragraphe',\n    'paragraphes',\n    'paragr.',\n  ],\n  part: ['Teil', 'Teile', 'part', 'parts', 'pt.', 'pts', 'partie', 'parties', 'part.'],\n  section: [\n    'Abschnitt',\n    'Abschnitte',\n    'Abschn.',\n    '§',\n    '§§',\n    'section',\n    'sections',\n    'sec.',\n    'secs',\n    'sect.',\n  ],\n  'sub verbo': ['sub verbo', 'sub verbis', 's.&#160;v.', 's.&#160;vv.', 's.v.', 's.vv.'],\n  verse: ['Vers', 'Verse', 'V.', 'verse', 'verses', 'v.', 'vv.', 'verset', 'versets'],\n  volume: ['Band', 'Bände', 'Bd.', 'Bde.', 'volume', 'volumes', 'vol.', 'vols.'],\n}\n\n/**\n * Parses a given citation string and return entries and isComposite flag required for cite-proc.\n * Adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n *\n * @param {RegExpMatchArray} regexMatch Cite string in the form of '[@item]' or '@item'\n * @return {[CiteItem[], boolean]} [entries, isComposite]\n */\nexport const parseCitation = (regexMatch) => {\n  /** @type {CiteItem[]} */\n  let entries = []\n  let isComposite = false\n  const fullCitation = regexMatch[1]\n  const inTextSuppressAuthor = regexMatch[2]\n  const inTextCitation = regexMatch[3]\n  const optionalSuffix = regexMatch[4]\n\n  if (fullCitation !== undefined) {\n    // Handle citations in the form of [@item1; @item2]\n    for (const citationPart of fullCitation.split(';')) {\n      const match = fullCitationRE.exec(citationPart.trim())\n      if (match === null) {\n        continue // Faulty citation\n      }\n      // Prefix is the portion before @ e.g. [see @item1] or an empty string\n      // We explicitly cast groups since we have groups in our RegExp and as\n      // such the groups object will be set.\n      /** @type {CiteItem} */\n      const thisCitation = {\n        id: match.groups.citekey.replace(/{(.+)}/, '$1'),\n        prefix: undefined,\n        locator: undefined,\n        label: 'page',\n        'suppress-author': false,\n        suffix: undefined,\n      }\n\n      // First, deal with the prefix. The speciality here is that it can\n      // indicate if we should suppress the author.\n      const rawPrefix = match.groups.prefix\n      if (rawPrefix !== undefined) {\n        thisCitation['suppress-author'] = rawPrefix.trim().endsWith('-')\n        if (thisCitation['suppress-author']) {\n          thisCitation.prefix = rawPrefix.substring(0, rawPrefix.trim().length - 1).trim()\n        } else {\n          thisCitation.prefix = rawPrefix.trim()\n        }\n      }\n\n      // Second, deal with the suffix. This one can be much more tricky than\n      // the prefix. We have three alternatives where the locator may be\n      // present: If we have an explicitLocator or an explicitLocatorInSuffix,\n      // we should extract the locator from there and leave the actual suffix\n      // untouched. Only if those two alternatives are not present, then we\n      // have a look at the rawSuffix and extract a (potential) locator.\n      const explicitLocator = match.groups.explicitLocator\n      const explicitLocatorInSuffix = match.groups.explicitLocatorInSuffix\n      const rawSuffix = match.groups.suffix\n\n      let suffixToParse\n      let containsLocator = true\n      if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n        // Potential locator in rawSuffix. Only in this case should we overwrite\n        // the suffix (hence the same if-condition below)\n        suffixToParse = rawSuffix\n        containsLocator = false\n      } else if (explicitLocatorInSuffix !== undefined || explicitLocator !== undefined) {\n        suffixToParse = explicitLocator !== undefined ? explicitLocator : explicitLocatorInSuffix\n        thisCitation.suffix = rawSuffix?.trim()\n      }\n\n      const { label, locator, suffix } = parseSuffix(suffixToParse, containsLocator)\n      thisCitation.locator = locator\n\n      if (label !== undefined) {\n        thisCitation.label = label\n      }\n\n      if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n        thisCitation.suffix = suffix\n      } else if (suffix !== undefined && thisCitation.locator !== undefined) {\n        // If we're here, we should not change the suffix, but parseSuffix may\n        // have put something into the suffix return. If we're here, that will\n        // definitely be a part of the locator.\n        thisCitation.locator += suffix\n      }\n\n      entries.push(thisCitation)\n    }\n  } else {\n    // We have an in-text citation, so we can take a shortcut\n    isComposite = true\n    entries.push({\n      prefix: undefined,\n      id: inTextCitation.replace(/{(.+)}/, '$1'),\n      'suppress-author': inTextSuppressAuthor !== undefined,\n      ...parseSuffix(optionalSuffix, false), // Populate more depending on the suffix\n    })\n  }\n  return [entries, isComposite]\n}\n\n/**\n * This takes a suffix and extracts optional label and locator from this. Pass\n * true for the containsLocator property to indicate to this function that what\n * it got was not a regular suffix with an optional locator, but an explicit\n * locator so it knows it just needs to look for an optional label.\n *\n * @param {string} suffix           The suffix to parse\n * @param {boolean} containsLocator  If true, forces parseSuffix to return a locator\n *\n * @return {CiteItemSuffix} An object containing three optional properties locator, label, or suffix.\n */\nfunction parseSuffix(suffix, containsLocator) {\n  /** @type {CiteItemSuffix} */\n  const retValue = {\n    locator: undefined,\n    label: 'page',\n    suffix: undefined,\n  }\n\n  if (suffix === undefined) {\n    return retValue\n  }\n\n  // Make sure the suffix does not start or end with spaces\n  suffix = suffix.trim()\n\n  // If there is a label, the suffix must start with it\n  for (const label in locatorLabels) {\n    for (const natural of locatorLabels[label]) {\n      if (suffix.toLowerCase().startsWith(natural.toLowerCase())) {\n        retValue.label = label\n        if (containsLocator) {\n          // The suffix actually is the full locator, we just had to extract\n          // the label from it. There is no remaining suffix.\n          retValue.locator = suffix.substr(natural.length).trim()\n        } else {\n          // The caller indicated that this is a regular suffix, so we must also\n          // extract the locator from what is left after label extraction.\n          retValue.suffix = suffix.substr(natural.length).trim()\n          const match = locatorRE.exec(retValue.suffix)\n          if (match !== null) {\n            retValue.locator = match[0] // Extract the full match\n            retValue.suffix = retValue.suffix.substr(match[0].length).trim()\n          }\n        }\n\n        return retValue // Early exit\n      }\n    }\n  }\n\n  // If we're here, there was no explicit label given, but the caller has indicated\n  // that this suffix MUST contain a locator. This means that the whole suffix is\n  // the locator.\n  if (containsLocator) {\n    retValue.locator = suffix\n  } else {\n    // The caller has not indicated that the whole suffix is the locator, so it\n    // can be at the beginning. We only accept simple page/number ranges here.\n    // For everything, the user should please be more specific.\n    const match = locatorRE.exec(suffix)\n    if (match !== null) {\n      retValue.locator = match[0] // Full match is the locator\n      retValue.suffix = suffix.substr(match[0].length).trim() // The rest is the suffix.\n    }\n  }\n\n  return retValue\n}\n","import fetch from 'cross-fetch'\n\nexport const isNode = typeof window === 'undefined'\n\nexport const readFile = async (path) => {\n  if (isValidHttpUrl(path)) {\n    try {\n      const response = await fetch(path)\n      return await response.text()\n    } catch (error) {\n      throw new Error(`Cannot fetch bibliography URL: ${error}.`)\n    }\n  } else {\n    if (isNode) {\n      try {\n        return import('fs').then((fs) => fs.readFileSync(path, 'utf8'))\n      } catch (error) {\n        throw new Error(`Cannot read non valid URL in node env.`)\n      }\n    }\n  }\n}\n\n/**\n * Check if valid URL\n * https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n *\n * @param {string} str\n * @return {boolean}\n */\nexport const isValidHttpUrl = (str) => {\n  let url\n\n  try {\n    url = new URL(str)\n  } catch (_) {\n    return false\n  }\n\n  return url.protocol === 'http:' || url.protocol === 'https:' || url.protocol === 'blob:'\n}\n\n/**\n * Get bibliography by merging options and vfile data\n *\n * @param {import('./generator.js').Options} options\n * @param {import('vfile').VFile} file\n */\nexport const getBibliography = async (options, file) => {\n  /** @type {string[]} */\n  let bibliography = []\n  const frontmatterBibliography = getFrontmatterField(file, 'bibliography')\n  if (options.bibliography) {\n    bibliography =\n      typeof options.bibliography === 'string' ? [options.bibliography] : options.bibliography\n  } else if (frontmatterBibliography) {\n    bibliography =\n      typeof frontmatterBibliography === 'string'\n        ? [frontmatterBibliography]\n        : frontmatterBibliography\n  }\n  // If local path, get absolute path\n  for (let i = 0; i < bibliography.length; i++) {\n    if (!isValidHttpUrl(bibliography[i])) {\n      // Case options.path is provided and non empty\n      if (options.path) {\n        // if node env we construct the full path using options.path\n        if (isNode) {\n          bibliography[i] = await import('path').then((path) =>\n            path.join(options.path, bibliography[i])\n          )\n          // else we throw as it's non valid http url\n        } else {\n          throw new Error(`Cannot read non valid bibliography URL.`)\n        }\n        // Case options.path is empt\n      } else {\n        // if node env we construct the full path using default `process.cwd`\n        if (isNode) {\n          bibliography[i] = await import('path').then((path) =>\n            path.join(file.cwd, bibliography[i])\n          )\n          // else as it's a non valid http url we throw as a base url must be provided using options.path\n        } else {\n          throw new Error(\n            `Non valid bibliography URL: Provide a full valid path for biblio ${bibliography[i]} or set an appropriate \"options.path\"`\n          )\n        }\n      }\n    }\n  }\n\n  return bibliography\n}\n\n/**\n * Load CSL - supports predefined name from config.templates.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format CSL name e.g. apa or file path to CSL file\n * @param {string} root optional root path\n */\nexport const loadCSL = async (Cite, format, root = '') => {\n  const config = Cite.plugins.config.get('@csl')\n  if (!Object.keys(config.templates.data).includes(format)) {\n    const cslName = `customCSL-${Math.random().toString(36).slice(2, 7)}`\n    let cslPath = ''\n    if (isValidHttpUrl(format)) cslPath = format\n    else {\n      if (isNode) cslPath = await import('path').then((path) => path.join(root, format))\n    }\n    try {\n      config.templates.add(cslName, await readFile(cslPath))\n    } catch (err) {\n      throw new Error(`Input CSL option, ${format}, is invalid or is an unknown file.`)\n    }\n    return cslName\n  } else {\n    return format\n  }\n}\n\n/**\n * Load locale - supports predefined name from config.locales.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format locale name\n * @param {string} root optional root path\n */\nexport const loadLocale = async (Cite, format, root = '') => {\n  const config = Cite.plugins.config.get('@csl')\n  if (!Object.keys(config.locales.data).includes(format)) {\n    let localePath = ''\n    if (isValidHttpUrl(format)) localePath = format\n    else {\n      if (isNode) localePath = await import('path').then((path) => path.join(root, format))\n    }\n    try {\n      const file = await readFile(localePath)\n      const xmlLangRe = /xml:lang=\"(.+)\"/\n      const localeName = file.match(xmlLangRe)[1]\n      config.locales.add(localeName, file)\n      return localeName\n    } catch (err) {\n      throw new Error(`Input locale option, ${format}, is invalid or is an unknown file.`)\n    }\n  } else {\n    return format\n  }\n}\n\n/**\n * Get citation format\n *\n * @param {*} citeproc citeproc\n * @returns string\n */\nexport const getCitationFormat = (citeproc) => {\n  const info = citeproc.cslXml.dataObj.children[0]\n  const node = info.children.find((x) => x['attrs'] && x['attrs']['citation-format'])\n  // citation-format takes 5 possible values\n  // https://docs.citationstyles.org/en/stable/specification.html#toc-entry-14\n  /** @type {'author-date' | 'author' | 'numeric' | 'note' | 'label'} */\n  const citationFormat = node['attrs']['citation-format']\n  return citationFormat\n}\n\n/**\n * Get registry objects that matches a list of relevantIds\n * If sorted is false, retrieve registry item in the order of the given relevantIds\n *\n * @param {*} citeproc citeproc\n * @param {string[]} relevantIds\n * @param {boolean} sorted\n * @return {*} registry objects that matches Ids, in the correct order\n */\nexport const getSortedRelevantRegistryItems = (citeproc, relevantIds, sorted) => {\n  const res = []\n  if (sorted) {\n    // If sorted follow registry order\n    for (const item of citeproc.registry.reflist) {\n      if (relevantIds.includes(item.id)) res.push(item)\n    }\n  } else {\n    // Otherwise follow the relevantIds\n    for (const id of relevantIds) {\n      res.push(citeproc.registry.reflist.find((x) => x.id === id))\n    }\n  }\n  return res\n}\n\n/**\n * Split a string into two parts based on a given index position\n *\n * @param {string} str\n * @param {number} index\n * @return {string[]}\n */\nexport const split = (str, index) => {\n  return [str.slice(0, index), str.slice(index)]\n}\n\n/**\n * Check if two registry objects belong to the same author\n * Currently only checks on family name\n *\n * @param {*} item registry object\n * @param {*} item2 registry object\n * @return {boolean}\n */\nexport const isSameAuthor = (item, item2) => {\n  const authorList = item.ref.author\n  const authorList2 = item2.ref.author\n  if (authorList.length !== authorList2.length) return false\n  for (let i = 0; i < authorList.length; i++) {\n    if (authorList[i].family !== authorList2[i].family) return false\n  }\n  return true\n}\n\n/**\n * @typedef {Object} FrontmatterSource\n * @property {Record<string, any>} [matter]\n * @property {Record<string, any>} [frontmatter]\n * @property {{ frontmatter?: Record<string, any> }} [astro]\n */\n\n/**\n * @param {{ data?: FrontmatterSource }} file\n * @param {string} fieldName\n * @returns {any}\n */\nexport const getFrontmatterField = (file, fieldName) => {\n  if (!file || !file.data) {\n    return undefined\n  }\n\n  const sources = [file.data.matter, file.data.frontmatter, file.data.astro?.frontmatter]\n\n  for (const source of sources) {\n    if (source && fieldName in source) {\n      return source[fieldName]\n    }\n  }\n\n  return undefined\n}\n\n/**\n * Get bibliography entry text for a citation ID\n *\n * @param {*} citeproc citeproc engine\n * @param {string} id citation ID\n * @return {string} formatted bibliography entry without HTML tags\n */\nexport const getBibliographyEntryText = (citeproc, id) => {\n  try {\n    // Save the current state\n    const originalItemIds = [...citeproc.registry.mylist]\n\n    // Since creating bibliography affects the state we need to save the current state and restore it\n    citeproc.updateItems([id])\n    const bibOutput = citeproc.makeBibliography([id])\n    if (!bibOutput || !bibOutput[1] || bibOutput[1].length === 0) {\n      citeproc.updateItems(originalItemIds)\n      return ''\n    }\n\n    // Get the text\n    let entryText = bibOutput[1][0].replace(/<[^>]*>/g, '')\n    entryText = entryText.replace(/\\s+/g, ' ').trim()\n\n    // Restore the original state\n    citeproc.updateItems(originalItemIds)\n\n    return entryText\n  } catch (error) {\n    console.error('Error getting bibliography entry text:', error)\n    return ''\n  }\n}\n","import { parseFragment } from 'parse5'\nimport { fromParse5 } from 'hast-util-from-parse5'\n\n/**\n * Convert HTML to HAST node\n *\n * @param {string} html\n */\nexport const htmlToHast = (html) => {\n  const p5ast = parseFragment(html)\n  // @ts-ignore\n  return fromParse5(p5ast).children[0]\n}\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport {\n  getSortedRelevantRegistryItems,\n  split,\n  isSameAuthor,\n  getBibliographyEntryText,\n} from './utils.js'\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate citation using citeproc\n * This accounts for prev citations and additional properties\n *\n * @param {*} citeproc\n * @param {Mode} mode\n * @param {CiteItem[]} entries\n * @param {string} citationIdRoot\n * @param {number} citationId\n * @param {any[]} citationPre\n * @param {Options} options\n * @param {boolean} isComposite\n * @param {import('./types').CitationFormat} citationFormat\n * @return {[string, string]}\n */\nexport const genCitation = (\n  citeproc,\n  mode,\n  entries,\n  citationIdRoot,\n  citationId,\n  citationPre,\n  options,\n  isComposite,\n  citationFormat\n) => {\n  const { inlineClass, linkCitations, showTooltips = false, tooltipAttribute = 'title' } = options\n  const key = `${citationIdRoot}-${citationId}`\n  const c = citeproc.processCitationCluster(\n    {\n      citationID: key,\n      citationItems: entries,\n      properties:\n        mode === 'in-text'\n          ? { noteIndex: 0, mode: isComposite ? 'composite' : '' }\n          : { noteIndex: citationId, mode: isComposite ? 'composite' : '' },\n    },\n    citationPre.length > 0 ? citationPre : [],\n    []\n  )\n\n  const citationText = c[1].find((x) => x[2] === key)[1]\n  const ids = `citation--${entries.map((x) => x.id.toLowerCase()).join('--')}--${citationId}`\n\n  // Generate tooltip map for each entry if enabled\n  const tooltipMap = {}\n  if (showTooltips) {\n    entries.forEach((entry) => {\n      const entryText = getBibliographyEntryText(citeproc, entry.id)\n      // Escape quotes and HTML entities for attribute value\n      tooltipMap[entry.id.toLowerCase()] = entryText.replace(/\"/g, '&quot;').replace(/&/g, '&amp;')\n    })\n  }\n\n  // Wrapper tooltip for the span element (combined tooltip for all entries)\n  const wrapperTooltipAttr = showTooltips\n    ? ` ${tooltipAttribute}=\"${entries.map((e) => tooltipMap[e.id.toLowerCase()]).join('; ')}\"`\n    : ''\n\n  if (mode === 'note') {\n    return [\n      citationText,\n      htmlToHast(\n        `<span class=\"${(inlineClass ?? []).join(\n          ' '\n        )}\" id=${ids}${wrapperTooltipAttr}><sup><a href=\"#cite-fn-${citationId}\" id=\"cite-fnref-${citationId}\" data-footnote-ref aria-describedby=\"footnote-label\">${citationId}</a></sup></span>`\n      ),\n    ]\n  } else if (linkCitations && citationFormat === 'numeric') {\n    // e.g. [1, 2]\n    let i = 0\n    const refIds = entries.map((e) => e.id)\n    const output = citationText.replace(/\\d+/g, function (d) {\n      const refId = refIds[i].toLowerCase()\n      const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n      const url = `<a href=\"#bib-${refId}\"${tooltipAttr}>${d}</a>`\n      i++\n      return url\n    })\n\n    return [\n      citationText,\n      htmlToHast(`<span class=\"${(inlineClass ?? []).join(' ')}\" id=${ids}>${output}</span>`),\n    ]\n  } else if (linkCitations && citationFormat === 'author-date') {\n    // E.g. (see Nash, 1950, pp. 12–13, 1951); (Nash, 1950; Xie, 2016)\n    if (entries.length === 1) {\n      // Do not link bracket\n      const refId = entries[0].id.toLowerCase()\n      const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n\n      const output = isComposite\n        ? `<a href=\"#bib-${refId}\"${tooltipAttr}>${citationText}</a>`\n        : `${citationText.slice(0, 1)}<a href=\"#bib-${refId}\"${tooltipAttr}>${citationText.slice(\n            1,\n            -1\n          )}</a>${citationText.slice(-1)}`\n\n      return [\n        citationText,\n        htmlToHast(`<span class=\"${(inlineClass ?? []).join(' ')}\" id=${ids}>${output}</span>`),\n      ]\n    } else {\n      // Retrieve the items in the correct order and attach link each of them\n      const refIds = entries.map((e) => e.id)\n      const results = getSortedRelevantRegistryItems(citeproc, refIds, citeproc.opt.sort_citations)\n      const output = []\n      let str = citationText\n\n      for (const [i, item] of results.entries()) {\n        // Need to compare author. If same just match on date.\n        const id = item.id\n        let citeMatch = item.ambig\n        // If author is the same as the previous, some styles like apa collapse the author\n        if (i > 0 && isSameAuthor(results[i - 1], item) && str.indexOf(citeMatch) === -1) {\n          // Just match on year\n          citeMatch = item.ref.issued.year.toString()\n        }\n        const startPos = str.indexOf(citeMatch)\n        const [start, rest] = split(str, startPos)\n        output.push(start) // Irrelevant parts\n\n        const refId = id.toLowerCase()\n        const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n        const url = `<a href=\"#bib-${refId}\"${tooltipAttr}>${rest.substring(\n          0,\n          citeMatch.length\n        )}</a>`\n\n        output.push(url)\n        str = rest.substring(citeMatch.length)\n      }\n      output.push(str)\n      return [\n        citationText,\n        htmlToHast(\n          `<span class=\"${(inlineClass ?? []).join(' ')}\" id=${ids}>${output.join('')}</span>`\n        ),\n      ]\n    }\n  } else {\n    return [\n      citationText,\n      htmlToHast(\n        `<span class=\"${(inlineClass ?? []).join(\n          ' '\n        )}\" id=${ids}${wrapperTooltipAttr}>${citationText}</span>`\n      ),\n    ]\n  }\n}\n","import { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate bibliography in html and convert it to hast\n *\n * @param {*} citeproc\n */\nexport const genBiblioNode = (citeproc) => {\n  const [params, bibBody] = citeproc.makeBibliography()\n  const bibliography =\n    '<div id=\"refs\" class=\"references csl-bib-body\">\\n' + bibBody.join('') + '</div>'\n  const biblioNode = htmlToHast(bibliography)\n\n  // Add citekey id to each bibliography entry.\n  biblioNode.children\n    .filter((node) => node.properties?.className?.includes('csl-entry'))\n    .forEach((node, i) => {\n      const citekey = params.entry_ids[i][0].toLowerCase()\n      node.properties = node.properties || {}\n      node.properties.id = 'bib-' + citekey\n    })\n  return biblioNode\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n */\n\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Create new footnote section node based on footnoteArray mappings\n *\n * @param {{int: string}} citationDict\n * @param {{type: 'citation' | 'existing', oldId: string}[]} footnoteArray\n * @param {Element | undefined} footnoteSection\n * @return {Element}\n */\nexport const genFootnoteSection = (citationDict, footnoteArray, footnoteSection) => {\n  /** @type {Element} */\n  const list = {\n    type: 'element',\n    tagName: 'ol',\n    properties: {},\n    children: [{ type: 'text', value: '\\n' }],\n  }\n  let oldFootnoteList\n  if (footnoteSection) {\n    /** @type {Element} */ // @ts-ignore - for some reason, the type does not narrow even after filtering\n    oldFootnoteList = footnoteSection.children.filter(n => (n.type == \"element\")).find((n) => (n.tagName === 'ol'))\n  }\n  for (const [idx, item] of footnoteArray.entries()) {\n    const { type, oldId } = item\n    if (type === 'citation') {\n      list.children.push({\n        type: 'element',\n        tagName: 'li',\n        properties: { id: `user-content-fn-${idx + 1}` },\n        children: [\n          {\n            type: 'element',\n            tagName: 'p',\n            properties: {},\n            children: [\n              htmlToHast(`<span>${citationDict[oldId]}</span>`),\n              {\n                type: 'element',\n                tagName: 'a',\n                properties: {\n                  href: `#user-content-fnref-${idx + 1}`,\n                  dataFootnoteBackref: true,\n                  className: ['data-footnote-backref'],\n                  ariaLabel: 'Back to content',\n                },\n                children: [{ type: 'text', value: '↩' }],\n              },\n            ],\n          },\n          { type: 'text', value: '\\n' },\n        ],\n      })\n    } else if (type === 'existing') {\n      // @ts-ignore\n      const liNode = oldFootnoteList.children.find(\n        (n) => n.tagName === 'li' && n.properties.id === `user-content-fn-${oldId}`\n      )\n      liNode.properties.id = `user-content-fn-${idx + 1}`\n      const aNode = liNode.children[1].children.find((n) => n.tagName === 'a')\n      aNode.properties.href = `#user-content-fnref-${idx + 1}`\n      list.children.push(liNode)\n    }\n  }\n\n  /** @type {Element} */\n  const newfootnoteSection = {\n    type: 'element',\n    tagName: 'section',\n    properties: { dataFootnotes: true, className: ['footnotes'] },\n    children: [\n      {\n        type: 'element',\n        tagName: 'h2',\n        properties: { className: ['sr-only'], id: 'footnote-label' },\n        children: [{ type: 'text', value: 'Footnotes' }],\n      },\n      { type: 'text', value: '\\n' },\n      list,\n    ],\n  }\n  return newfootnoteSection\n}\n","/**\n * @typedef {import('hast').Node} Node\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {import('unist-util-visit').Visitor<Node>} Visitor\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport { visit } from 'unist-util-visit'\nimport fetch from 'cross-fetch'\nimport { parseCitation } from './parse-citation.js'\nimport { genCitation } from './gen-citation.js'\nimport { genBiblioNode } from './gen-biblio.js'\nimport { genFootnoteSection } from './gen-footnote.js'\nimport { citationRE } from './regex.js'\nimport {\n  isNode,\n  isValidHttpUrl,\n  readFile,\n  getBibliography,\n  loadCSL,\n  loadLocale,\n  getCitationFormat,\n  getFrontmatterField,\n} from './utils.js'\n\nconst defaultCiteFormat = 'apa'\nconst permittedTags = ['div', 'p', 'span', 'li', 'td', 'th']\nconst idRoot = 'CITATION'\n\n/**\n * Rehype plugin that formats citations in markdown documents and insert bibliography in html format\n *\n *    [-@wadler1990]                              --> (1990)\n *    [@hughes1989, sec 3.4]                      --> (Hughes 1989, sec 3.4)\n *    [see @wadler1990; and @hughes1989, pp. 4]   --> (see Wadler 1990 and Hughes 1989, pp. 4)\n *\n * @param {*} Cite cite object from citation-js configured with the required CSLs\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypeCitationGenerator = (Cite) => {\n  return (options = {}) => {\n    return async (tree, file) => {\n      /** @type {string[]} */\n      let bibtexFile = []\n      const inputCiteformat =\n        /** @type {string} */\n        options.csl || getFrontmatterField(file, 'csl') || defaultCiteFormat\n      const noCite =\n        /**  @type {string[] | false} */\n        options.noCite || getFrontmatterField(file, 'noCite') || false\n      const inputLang = options.lang || 'en-US'\n      const config = Cite.plugins.config.get('@csl')\n      const citeFormat = await loadCSL(Cite, inputCiteformat, options.path)\n      const lang = await loadLocale(Cite, inputLang, options.path)\n\n      let bibliography = await getBibliography(options, file)\n      if (bibliography.length === 0) {\n        return\n      }\n\n      for (let i = 0; i < bibliography.length; i++) {\n        /**\n         * getBibibliography is building full path/url safely in both node and browser\n         * If it's a valid http url, we can try to fetch safely \n         * else we can try to read from file system safely \n         */\n        if (isValidHttpUrl(bibliography[i])) {\n          try {\n            const response = await fetch(bibliography[i])\n            bibtexFile.push(await response.text())\n          } catch (error) {\n            throw new Error(`Cannot fetch bibliography URL: ${error}.`)\n          }\n        } else {\n          try {\n            bibtexFile.push(await readFile(bibliography[i]))\n          } catch (error) {\n            throw new Error(`Cannot read non valid bibliography URL in node env.`)\n          }\n        }\n      }\n      const citations = new Cite(bibtexFile, { generateGraph: false })\n      const citationIds = citations.data.map((x) => x.id)\n      const citationPre = []\n      const citationDict = {}\n      let citationId = 1\n      const citeproc = config.engine(citations.data, citeFormat, lang, 'html')\n      /** @type {Mode} */\n      const mode = citeproc.opt.xclass\n      const citationFormat = getCitationFormat(citeproc)\n      let parsedEntries = []\n      visit(tree, 'text', (node, idx, parent) => {\n        const match = node.value.match(citationRE)\n        if (!match || ('tagName' in parent && !permittedTags.includes(parent.tagName))) return\n        let citeStartIdx = match.index\n        let citeEndIdx = match.index + match[0].length\n        // If we have an in-text citation and we should suppress the author, the\n        // match.index does NOT include the positive lookbehind, so we have to manually\n        // shift \"from\" to one before.\n        if (match[2] !== undefined) {\n          citeStartIdx--\n        }\n        const newChildren = []\n        // if preceding string\n        if (citeStartIdx !== 0) {\n          // create a new child node\n          newChildren.push({\n            type: 'text',\n            value: node.value.slice(0, citeStartIdx),\n          })\n        }\n\n        const [entries, isComposite] = parseCitation(match)\n        parsedEntries = entries\n\n        // If id is not in citation file (e.g. route alias or js package), abort process\n        for (const citeItem of entries) {\n          if (!citationIds.includes(citeItem.id)) return\n        }\n        const [citedText, citedTextNode] = genCitation(\n          citeproc,\n          mode,\n          entries,\n          idRoot,\n          citationId,\n          citationPre,\n          options,\n          isComposite,\n          citationFormat\n        )\n        citationDict[citationId] = citedText\n\n        // Prepare citationPre and citationId for the next cite instance\n        citationPre.push([`${idRoot}-${citationId}`, 0])\n        citationId = citationId + 1\n\n        newChildren.push(citedTextNode)\n\n        // if trailing string\n        if (citeEndIdx < node.value.length) {\n          newChildren.push({\n            type: 'text',\n            value: node.value.slice(citeEndIdx),\n          })\n        }\n\n        // insert into the parent\n        // @ts-ignore\n        parent.children = [\n          ...parent.children.slice(0, idx),\n          ...newChildren,\n          ...parent.children.slice(idx + 1),\n        ]\n      })\n\n      if (noCite) {\n        if (noCite.length === 1 && noCite[0] === '@*') {\n          citeproc.updateItems(citationIds)\n        } else {\n          const mergedIds = citations.data\n            .filter((x) => noCite.map((x) => x.replace('@', '')).includes(x['citation-key']))\n            .map((x) => x.id)\n            .concat(parsedEntries.map((x) => x.id))\n\n          citeproc.updateItems(mergedIds)\n        }\n      }\n\n      if (\n        citeproc.registry.mylist.length >= 1 &&\n        (!options.suppressBibliography || options.inlineBibClass?.length > 0)\n      ) {\n        const biblioNode = genBiblioNode(citeproc)\n        let bilioInserted = false\n\n        const biblioMap = {}\n        biblioNode.children\n          .filter((node) => node.properties?.className?.includes('csl-entry'))\n          .forEach((node) => {\n            const citekey = node.properties.id.split('-').slice(1).join('-')\n            biblioMap[citekey] = { ...node }\n            biblioMap[citekey].properties = { id: 'inlinebib-' + citekey }\n          })\n\n        // Insert it at ^ref, if not found insert it as the last element of the tree\n        visit(tree, 'element', (node, idx, parent) => {\n          // Add inline bibliography\n          if (\n            options.inlineBibClass?.length > 0 &&\n            node.properties?.id?.toString().startsWith('citation-')\n          ) {\n            // id is citation--nash1951--nash1950--1\n            const [, ...citekeys] = node.properties.id.toString().split('--')\n            const citationID = citekeys.pop()\n\n            /** @type {Element} */\n            const inlineBibNode = {\n              type: 'element',\n              tagName: 'div',\n              properties: {\n                className: options.inlineBibClass,\n                id: `inlineBib--${citekeys.join('--')}--${citationID}`,\n              },\n              children: citekeys.map((citekey) => {\n                const aBibNode = biblioMap[citekey]\n                aBibNode.properties = {\n                  class: 'inline-entry',\n                  id: `inline--${citekey}--${citationID}`,\n                }\n                return aBibNode\n              }),\n            }\n            parent.children.push(inlineBibNode)\n          }\n\n          // Add bibliography\n          if (\n            !options.suppressBibliography &&\n            (node.tagName === 'p' || node.tagName === 'div') &&\n            node.children.length >= 1 &&\n            node.children[0].type === 'text' &&\n            node.children[0].value === '[^ref]'\n          ) {\n            parent.children[idx] = biblioNode\n            bilioInserted = true\n          }\n        })\n\n        if (!options.suppressBibliography && !bilioInserted) {\n          tree.children.push(biblioNode)\n        }\n      }\n\n      let footnoteSection\n      visit(tree, 'element', (node, index, parent) => {\n        if (node.tagName === 'section' && node.properties.dataFootnotes) {\n          footnoteSection = node\n          parent.children.splice(index, 1)\n        }\n      })\n\n      // Need to adjust footnote numbering based on existing ones already assigned\n      // And insert them into the footnote section (if exists)\n      // Footnote comes after bibliography\n      if (mode === 'note' && Object.keys(citationDict).length > 0) {\n        /** @type {{type: 'citation' | 'existing', oldId: string}[]} */\n        let fnArray = []\n        let index = 1\n        visit(tree, 'element', (node) => {\n          if (node.tagName === 'sup' && node.children[0].type === 'element') {\n            let nextNode = node.children[0]\n            if (nextNode.tagName === 'a') {\n              /** @type {{href: string, id: string}} */ // @ts-ignore\n              const { href, id } = nextNode.properties\n              if (href.includes('fn') && id.includes('fnref')) {\n                const oldId = href.split('-').pop()\n                fnArray.push({\n                  type: href.includes('cite') ? 'citation' : 'existing',\n                  oldId,\n                })\n                // Update ref number\n                nextNode.properties.href = `#user-content-fn-${index}`\n                nextNode.properties.id = `user-content-fnref-${index}`\n                // @ts-ignore\n                nextNode.children[0].value = index.toString()\n                index += 1\n              }\n            }\n          }\n        })\n        // @ts-ignore\n        const newFootnoteSection = genFootnoteSection(citationDict, fnArray, footnoteSection)\n        tree.children.push(newFootnoteSection)\n      } else {\n        if (footnoteSection) tree.children.push(footnoteSection)\n      }\n    }\n  }\n}\n\nexport default rehypeCitationGenerator\n","function currentVersion() {\n  return this.log.length\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}\nfunction undo(number = 1) {\n  return this.retrieveVersion(this.currentVersion() - number)\n}\nfunction retrieveLastVersion() {\n  return this.retrieveVersion(this.currentVersion())\n}\nfunction save() {\n  this.log.push([JSON.stringify(this.data), JSON.stringify(this._options)])\n  return this\n}\nexport { currentVersion, retrieveVersion, retrieveLastVersion, undo, save }\n","const formats = ['real', 'string']\nconst types = ['json', 'html', 'string', 'rtf']\nconst styles = ['csl', 'bibtex', 'bibtxt', 'citation-*', 'ris', 'ndjson']\nconst wrapperTypes = ['string', 'function']\nexport function validateOutputOptions(options) {\n  if (typeof options !== 'object') {\n    throw new TypeError('Options not an object!')\n  }\n  const { format, type, style, lang, append, prepend } = options\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  if (/^citation/.test(style) && type === 'json') {\n    throw new Error(`Combination type/style of json/citation-* is not valid: ${type}/${style}`)\n  }\n  return true\n}\nexport function validateOptions(options) {\n  if (typeof options !== 'object') {\n    throw new TypeError('Options should be an object')\n  }\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  return true\n}\n","import { validateOutputOptions as validate } from './validate.js'\nconst defaultOptions = {\n  format: 'real',\n  type: 'json',\n  style: 'csl',\n  lang: 'en-US',\n}\nfunction options(options, log) {\n  validate(options)\n  if (log) {\n    this.save()\n  }\n  Object.assign(this._options, options)\n  return this\n}\nexport { options, defaultOptions }\n","export 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}\nexport function dataTypeOf(thing) {\n  switch (typeof thing) {\n    case 'string':\n      return 'String'\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    default:\n      return 'Primitive'\n  }\n}\n","export 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  entry._graph = graph\n  return entry\n}\nexport function removeGraph(entry) {\n  delete entry._graph\n  return entry\n}\n","const logger = {\n  _output(level, scope, msg) {\n    this._log.push(scope, msg)\n    if (this._levels.indexOf(level) < this._levels.indexOf(this.level)) {\n      return\n    }\n    this._console.log(scope, ...msg)\n  },\n  _console: null,\n  _log: [],\n  _levels: ['http', 'debug', 'unmapped', 'info', 'warn', 'error', 'silent'],\n  level: 'silent',\n}\nfor (const level of logger._levels) {\n  logger[level] = (scope, ...msg) => logger._output(level, scope, msg)\n}\nif (typeof console.Console === 'function') {\n  logger._console = new console.Console(process.stderr)\n} else {\n  logger._console = console\n}\nexport default logger\n","import logger from '../../logger.js'\nimport { dataTypeOf } from './dataType.js'\nconst types = {}\nconst dataTypes = {}\nconst unregExts = {}\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    case 'SimpleObject':\n    case 'ComplexObject':\n      return '@csl/object'\n    default:\n      return '@invalid'\n  }\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}\nexport function type(input) {\n  const dataType = dataTypeOf(input)\n  if (dataType === 'Array' && input.length === 0) {\n    return parseNativeTypes(input, dataType)\n  }\n  const match = matchType(dataTypes[dataType], input)\n  return match || parseNativeTypes(input, dataType)\n}\nexport function addTypeParser(format, { dataType, predicate, extends: extend }) {\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  const object = {\n    predicate,\n    extensions,\n  }\n  types[format] = object\n  if (extend) {\n    const parentTypeParser = types[extend]\n    if (parentTypeParser) {\n      parentTypeParser.extensions.push(format)\n    } else {\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    const typeList = dataTypes[dataType] || (dataTypes[dataType] = [])\n    typeList.push(format)\n  }\n}\nexport function hasTypeParser(type) {\n  return Object.prototype.hasOwnProperty.call(types, type)\n}\nexport function removeTypeParser(type) {\n  delete types[type]\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}\nexport function listTypeParser() {\n  return Object.keys(types)\n}\nexport function treeTypeParser() {\n  const attachNode = (name) => ({\n    name,\n    children: types[name].extensions.map(attachNode),\n  })\n  return {\n    name: 'Type tree',\n    children: Object.keys(dataTypes).map((name) => ({\n      name,\n      children: dataTypes[name].map(attachNode),\n    })),\n  }\n}\nexport const typeMatcher = /^(?:@(.+?))(?:\\/(?:(.+?)\\+)?(?:(.+)))?$/\n","// @ts-nocheck\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nimport { type, typeMatcher } from './type.js'\nclass TypeParser {\n  constructor(data) {\n    _defineProperty(this, 'validDataTypes', [\n      'String',\n      'Array',\n      'SimpleObject',\n      'ComplexObject',\n      'Primitive',\n    ])\n    this.data = data\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  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  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  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  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  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  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  parseTokenList() {\n    let tokenList = this.data.tokenList\n    if (!tokenList) {\n      return []\n    } else if (tokenList instanceof RegExp) {\n      tokenList = {\n        token: tokenList,\n      }\n    }\n    const { token, split = /\\s+/, trim = true, every = true } = tokenList\n    const trimInput = (input) => (trim ? input.trim() : input)\n    const testTokens = every ? 'every' : 'some'\n    const predicate = (input) =>\n      trimInput(input)\n        .split(split)\n        [testTokens]((part) => token.test(part))\n    return [predicate]\n  }\n  parsePropertyConstraint() {\n    const constraints = [].concat(this.data.propertyConstraint || [])\n    return constraints.map(({ props, match, value }) => {\n      props = [].concat(props)\n      switch (match) {\n        case 'any':\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':\n        default:\n          return (input) => props.every((prop) => prop in input && (!value || value(input[prop])))\n      }\n    })\n  }\n  parseElementConstraint() {\n    const constraint = this.data.elementConstraint\n    return !constraint ? [] : [(input) => input.every((entry) => type(entry) === constraint)]\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  getCombinedPredicate() {\n    const predicates = [\n      ...this.parsePredicate(),\n      ...this.parseTokenList(),\n      ...this.parsePropertyConstraint(),\n      ...this.parseElementConstraint(),\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  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  get dataType() {\n    return this.getDataType()\n  }\n  get predicate() {\n    return this.getCombinedPredicate()\n  }\n  get extends() {\n    return this.data.extends\n  }\n}\nclass DataParser {\n  constructor(parser, { async } = {}) {\n    this.parser = parser\n    this.async = async\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}\nclass FormatParser {\n  constructor(format, parsers = {}) {\n    this.format = format\n    if (parsers.parseType) {\n      this.typeParser = new TypeParser(parsers.parseType)\n    }\n    if (parsers.parse) {\n      this.dataParser = new DataParser(parsers.parse, {\n        async: false,\n      })\n    }\n    if (parsers.parseAsync) {\n      this.asyncDataParser = new DataParser(parsers.parseAsync, {\n        async: true,\n      })\n    }\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  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}\nexport { TypeParser, DataParser, FormatParser }\n","function ownKeys(e, r) {\n  var t = Object.keys(e)\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e)\n    r &&\n      (o = o.filter(function (r) {\n        return Object.getOwnPropertyDescriptor(e, r).enumerable\n      })),\n      t.push.apply(t, o)\n  }\n  return t\n}\nfunction _objectSpread(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {}\n    r % 2\n      ? ownKeys(Object(t), !0).forEach(function (r) {\n          _defineProperty(e, r, t[r])\n        })\n      : Object.getOwnPropertyDescriptors\n      ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n      : ownKeys(Object(t)).forEach(function (r) {\n          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n        })\n  }\n  return e\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nimport { parse as parseName } from '@citation-js/name'\nconst NAME = 1\nconst NAME_LIST = 2\nconst DATE = 3\nconst TYPE = 4\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  'journal-article': 'article-journal',\n  'book-chapter': 'chapter',\n  'posted-content': 'manuscript',\n  'proceedings-article': 'paper-conference',\n  dissertation: 'thesis',\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  accessed: DATE,\n  'available-date': DATE,\n  container: DATE,\n  'event-date': DATE,\n  issued: DATE,\n  'original-date': DATE,\n  submitted: DATE,\n  type: TYPE,\n  categories: 'object',\n  custom: 'object',\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',\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}\nfunction correctName(name, bestGuessConversions) {\n  if (typeof name === 'object' && name !== null && (name.literal || name.given || name.family)) {\n    if (name.ORCID || name.orcid || name._ORCID) {\n      name = _objectSpread(\n        {\n          _orcid: name.ORCID || name.orcid || name._ORCID,\n        },\n        name\n      )\n      delete name.ORCID\n      delete name.orcid\n      delete name._ORCID\n    }\n    return name\n  } else if (!bestGuessConversions) {\n    return undefined\n  } else if (typeof name === 'string') {\n    return parseName(name)\n  }\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}\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}\nfunction correctDate(date, bestGuessConversions) {\n  const dp = 'date-parts'\n  if (typeof date !== 'object' || date === null) {\n    return undefined\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\n      ? _objectSpread(\n          _objectSpread({}, date),\n          {},\n          {\n            'date-parts': range,\n          }\n        )\n      : undefined\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\n      ? {\n          'date-parts': range,\n        }\n      : undefined\n  } else if (date[dp] instanceof Array) {\n    const dateParts = correctDateParts(date[dp], bestGuessConversions)\n    return (\n      dateParts && {\n        'date-parts': [dateParts],\n      }\n    )\n  } else if ('literal' in date || 'raw' in date) {\n    return date\n  }\n}\nfunction correctType(type, bestGuessConversions) {\n  type = correctField('language', type, bestGuessConversions)\n  if (entryTypes[type] === true) {\n    return type\n  }\n  if (bestGuessConversions) {\n    if (type in entryTypes) {\n      return entryTypes[type]\n    } else if (type.toLowerCase() !== type) {\n      return correctType(type.toLowerCase(), bestGuessConversions)\n    }\n  }\n  return undefined\n}\nfunction correctField(fieldName, value, bestGuessConversions) {\n  const fieldType = [].concat(fieldTypes[fieldName])\n  switch (fieldTypes[fieldName]) {\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  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  if (fieldType.includes(typeof value)) {\n    return value\n  }\n}\nfunction parseCsl(data, bestGuessConversions = true) {\n  return data.map(function (entry) {\n    const clean = {}\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    return clean\n  })\n}\nexport { parseCsl as clean }\n","function ownKeys(e, r) {\n  var t = Object.keys(e)\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e)\n    r &&\n      (o = o.filter(function (r) {\n        return Object.getOwnPropertyDescriptor(e, r).enumerable\n      })),\n      t.push.apply(t, o)\n  }\n  return t\n}\nfunction _objectSpread(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {}\n    r % 2\n      ? ownKeys(Object(t), !0).forEach(function (r) {\n          _defineProperty(e, r, t[r])\n        })\n      : Object.getOwnPropertyDescriptors\n      ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n      : ownKeys(Object(t)).forEach(function (r) {\n          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n        })\n  }\n  return e\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nexport function upgradeCsl(item) {\n  if (Array.isArray(item)) {\n    return item.map(upgradeCsl)\n  }\n  item = _objectSpread({}, 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}\nexport function downgradeCsl(item) {\n  if (Array.isArray(item)) {\n    return item.map(downgradeCsl)\n  }\n  item = _objectSpread({}, 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","export 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  if (seen.has(value)) {\n    throw new TypeError('Recursively copying circular structure')\n  }\n  seen.add(value)\n  let copy\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  seen.delete(value)\n  return copy\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'\nconst isBrowser = typeof location !== 'undefined' && typeof navigator !== 'undefined'\nconst { fetch: asyncFetch, Headers: asyncHeaders } =\n  typeof fetch === 'function' && isBrowser\n    ? {\n        fetch,\n        Headers,\n      }\n    : fetchPolyfill()\n\nlet userAgent = `Citation.js/0.7`\nif (\n  typeof process !== 'undefined' &&\n  process &&\n  process.release &&\n  process.release.name === 'node' &&\n  process.version\n) {\n  userAgent += ` Node.js/${process.version}`\n}\n\nfunction normaliseHeaders(headers) {\n  const result = {}\n  const entries =\n    headers instanceof asyncHeaders || headers instanceof syncFetch.Headers\n      ? Array.from(headers)\n      : Object.entries(headers)\n  for (const [name, header] of entries) {\n    result[name.toLowerCase()] = header.toString()\n  }\n  return result\n}\nfunction parseOpts(opts = {}) {\n  const reqOpts = {\n    headers: {\n      accept: '*/*',\n    },\n    method: 'GET',\n    checkContentType: opts.checkContentType,\n  }\n  if (userAgent && !isBrowser) {\n    reqOpts.headers['user-agent'] = userAgent\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  if (opts.headers) {\n    Object.assign(reqOpts.headers, normaliseHeaders(opts.headers))\n  }\n  return reqOpts\n}\nfunction sameType(request, response) {\n  if (!request.accept || request.accept === '*/*' || !response['content-type']) {\n    return true\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}\nfunction checkResponse(response, opts) {\n  const { status, headers } = response\n  let error\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  if (error) {\n    error.status = status\n    error.headers = headers\n    error.body = response.body\n    throw error\n  }\n  return response\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 asyncFetch(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","function fetchId(list, prefix) {\n  let id\n  while (id === undefined || list.includes(id)) {\n    id = `${prefix}${Math.random().toString().slice(2)}`\n  }\n  return id\n}\nexport default fetchId\n","class Register {\n  constructor(data = {}) {\n    this.data = data\n  }\n  set(key, value) {\n    this.data[key] = value\n    return this\n  }\n  add(...args) {\n    return this.set(...args)\n  }\n  delete(key) {\n    delete this.data[key]\n    return this\n  }\n  remove(...args) {\n    return this.delete(...args)\n  }\n  get(key) {\n    return this.data[key]\n  }\n  has(key) {\n    return Object.prototype.hasOwnProperty.call(this.data, key)\n  }\n  list() {\n    return Object.keys(this.data)\n  }\n}\nexport default Register\n","import { deepCopy } from './deepCopy.js'\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  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  matchEndOfFile() {\n    return !this.token\n  }\n  matchToken(type) {\n    return this.token && type === this.token.type\n  }\n  consumeToken(type, optional) {\n    const token = this.token\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  consumeRule(rule) {\n    this.log.push(rule)\n    const result = this.rules[rule].call(this)\n    this.log.pop()\n    return result\n  }\n}\nexport { Grammar }\n","// @ts-nocheck\nfunction createConditionEval(condition) {\n  return function conditionEval(input) {\n    if (typeof condition === 'boolean') {\n      return condition\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}\nfunction parsePropStatement(prop, toSource) {\n  let inputProp\n  let outputProp\n  let convert\n  let condition\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    if (prop.convert) {\n      convert = toSource ? prop.convert.toSource : prop.convert.toTarget\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  inputProp = [].concat(inputProp).filter(Boolean)\n  outputProp = [].concat(outputProp).filter(Boolean)\n  return {\n    inputProp,\n    outputProp,\n    convert,\n    condition,\n  }\n}\nfunction createConverter(props, toSource) {\n  toSource = toSource === Translator.CONVERT_TO_SOURCE\n  props = props.map((prop) => parsePropStatement(prop, toSource)).filter(Boolean)\n  return function converter(input) {\n    const output = {}\n    for (const { inputProp, outputProp, convert, condition } of props) {\n      if (outputProp.length === 0) {\n        continue\n      } else if (condition && !condition(input)) {\n        continue\n      } else if (inputProp.length !== 0 && inputProp.every((prop) => !(prop in input))) {\n        continue\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}`, {\n            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    return output\n  }\n}\nclass Translator {\n  constructor(props) {\n    this.convertToSource = createConverter(props, Translator.CONVERT_TO_SOURCE)\n    this.convertToTarget = createConverter(props, Translator.CONVERT_TO_TARGET)\n  }\n}\nTranslator.CONVERT_TO_SOURCE = Symbol('convert to source')\nTranslator.CONVERT_TO_TARGET = Symbol('convert to target')\nexport { Translator }\n","// @ts-nocheck\nimport { deepCopy, upgradeCsl } from '../../util/index.js'\nimport logger from '../../logger.js'\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'\nfunction prepareParseGraph(graph) {\n  return graph\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    .map((element) => (element.count > 1 ? element.count + 'x ' : '') + element.type)\n    .join(' -> ')\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    this.type = this.options.forceType\n    this.data = typeof input === 'object' ? deepCopy(input) : input\n    this.graph = [\n      {\n        type: this.type,\n        data: input,\n      },\n    ]\n    this.iteration = 0\n  }\n  iterate() {\n    if (this.iteration !== 0) {\n      const typeInfo = getTypeInfo(this.type)\n      if (typeInfo && typeInfo.outputs) {\n        this.type = typeInfo.outputs\n      } else {\n        this.type = parseType(this.data)\n      }\n      this.graph.push({\n        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  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}\nexport const chain = (...args) => {\n  const chain = new ChainParser(...args)\n  while (chain.iterate()) {\n    try {\n      chain.data = parseData(chain.data, chain.type)\n    } catch (e) {\n      chain.error = e\n    }\n  }\n  return chain.end()\n}\nexport const chainLink = (input) => {\n  const type = parseType(input)\n  const output = type.match(/array|object/) ? deepCopy(input) : input\n  return parseData(output, type)\n}\nexport const chainAsync = async (...args) => {\n  const chain = new ChainParser(...args)\n  while (chain.iterate()) {\n    chain.data = await parseDataAsync(chain.data, chain.type).catch((e) => {\n      chain.error = e\n    })\n  }\n  return chain.end()\n}\nexport const chainLinkAsync = async (input) => {\n  const type = parseType(input)\n  const output = type.match(/array|object/) ? deepCopy(input) : input\n  return parseDataAsync(output, type)\n}\n","import { chain, chainAsync } from './chain.js'\nconst parsers = {}\nconst asyncParsers = {}\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}\nconst nativeAsyncParsers = {\n  '@else/list+object': async (input) => (await Promise.all(input.map(chainAsync))).flat(),\n}\nexport function data(input, type) {\n  if (typeof parsers[type] === 'function') {\n    return parsers[type](input)\n  } else if (typeof nativeParsers[type] === 'function') {\n    return nativeParsers[type](input)\n  } else {\n    throw new TypeError(`No synchronous parser found for ${type}`)\n  }\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}\nexport function addDataParser(format, { parser, async }) {\n  if (async) {\n    asyncParsers[format] = parser\n  } else {\n    parsers[format] = parser\n  }\n}\nexport function hasDataParser(type, async) {\n  return async\n    ? asyncParsers[type] || nativeAsyncParsers[type]\n    : parsers[type] || nativeParsers[type]\n}\nexport function removeDataParser(type, async) {\n  delete (async ? asyncParsers : parsers)[type]\n}\nexport function listDataParser(async) {\n  return Object.keys(async ? asyncParsers : parsers)\n}\n","import { FormatParser } from './parser.js'\nimport { addTypeParser, removeTypeParser } from './type.js'\nimport { addDataParser, removeDataParser } from './data.js'\nconst formats = {}\nexport function add(format, parsers) {\n  const formatParser = new FormatParser(format, parsers)\n  formatParser.validate()\n  const index = formats[format] || (formats[format] = {})\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  if (parsers.outputs) {\n    index.outputs = parsers.outputs\n  }\n}\nexport function get(format) {\n  return formats[format]\n}\nexport function remove(format) {\n  const index = formats[format]\n  if (!index) {\n    return\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  delete formats[format]\n}\nexport function has(format) {\n  return format in formats\n}\nexport function list() {\n  return Object.keys(formats)\n}\n","import * as dataType from './dataType.js'\nimport * as graph from './graph.js'\nimport * as parser from './parser.js'\nimport * as csl from './csl.js'\nexport const util = Object.assign({}, dataType, graph, parser, csl)\nexport * from './register'\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'\nfunction add(data, options = {}, log = false) {\n  if (options === true || log === true) {\n    this.save()\n  }\n  this.data.push(...parseInput(data, options))\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  return this\n}\nasync function addAsync(data, options = {}, log = false) {\n  if (options === true || log === true) {\n    this.save()\n  }\n  this.data.push(...(await parseInputAsync(data, options)))\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  return this\n}\nfunction set(data, options = {}, log = false) {\n  if (options === true || log === true) {\n    this.save()\n  }\n  this.data = []\n  return typeof options !== 'boolean' ? this.add(data, options) : this.add(data)\n}\nasync function setAsync(data, options = {}, log = false) {\n  if (options === true || log === true) {\n    this.save()\n  }\n  this.data = []\n  return typeof options !== 'boolean' ? this.addAsync(data, options) : this.addAsync(data)\n}\nfunction reset(log) {\n  if (log) {\n    this.save()\n  }\n  this.data = []\n  this._options = {}\n  return this\n}\nexport { add, addAsync, set, setAsync, reset }\n","function getLabel(entry) {\n  if ('citation-label' in entry) {\n    return entry['citation-label']\n  }\n  let res = ''\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  return res\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'\nfunction getComparisonValue(obj, prop, label = prop === 'label') {\n  let value = label ? getLabel(obj) : obj[prop]\n  switch (prop) {\n    case 'author':\n    case 'editor':\n      return value.map((name) => name.literal || name.family || getName(name))\n    case 'accessed':\n    case 'issued':\n      return value['date-parts'][0]\n    case 'page':\n      return value.split('-').map((num) => parseInt(num))\n    case 'edition':\n    case 'issue':\n    case 'volume':\n      value = parseInt(value)\n      return !isNaN(value) ? value : -Infinity\n    default:\n      return value || -Infinity\n  }\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  return (flip ? -1 : 1) * (a > b ? 1 : a < b ? -1 : 0)\n}\nfunction getSortCallback(...props) {\n  return (a, b) => {\n    const keys = props.slice()\n    let output = 0\n    while (!output && keys.length) {\n      output = compareProp(a, b, keys.shift())\n    }\n    return output\n  }\n}\nfunction sort(method = [], log) {\n  if (log) {\n    this.save()\n  }\n  this.data.sort(typeof method === 'function' ? method : getSortCallback(...method, 'label'))\n  return this\n}\nexport { sort }\n","import Register from '../util/register.js'\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}\nexport const register = new Register()\nexport function add(name, formatter) {\n  validate(name, formatter)\n  register.set(name, formatter)\n}\nexport function remove(name) {\n  register.remove(name)\n}\nexport function has(name) {\n  return register.has(name)\n}\nexport function list() {\n  return register.list()\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","import { validateOutputOptions as validate } from './validate.js'\nimport { format as formatData } from '../plugins/output.js'\nimport { clean as parseCsl } from '../plugins/input/csl.js'\nexport function getIds() {\n  return this.data.map((entry) => entry.id)\n}\nexport function format(format, ...options) {\n  return formatData(format, parseCsl(this.data), ...options)\n}\nexport function get(options = {}) {\n  validate(options)\n  const parsedOptions = Object.assign({}, this.defaultOptions, this._options.output, options)\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  let formatOptions\n  switch (newStyle) {\n    case 'bibliography': {\n      const { lang, append, prepend } = parsedOptions\n      formatOptions = {\n        template: styleFormat,\n        lang,\n        format: newType,\n        append,\n        prepend,\n      }\n      break\n    }\n    case 'data':\n    case 'bibtex':\n    case 'bibtxt':\n    case 'ndjson':\n    case 'ris':\n      formatOptions = {\n        type: newType,\n      }\n      break\n    default:\n      throw new Error(`Invalid style \"${newStyle}\"`)\n  }\n  const result = this.format(newStyle, Object.assign(formatOptions, options._newOptions))\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","function async(data, options, callback) {\n  if (typeof options === 'function' && !callback) {\n    callback = options\n    options = undefined\n  }\n  const promise = new this().setAsync(data, options)\n  if (typeof callback === 'function') {\n    promise.then(callback)\n    return undefined\n  } else {\n    return promise\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'\nfunction Cite(data, options = {}) {\n  if (!(this instanceof Cite)) {\n    return new Cite(data, options)\n  }\n  this._options = options\n  this.log = []\n  this.data = []\n  this.set(data, options)\n  this.options(options)\n  return this\n}\nObject.assign(Cite.prototype, log, options, set, sort, get)\nCite.prototype[Symbol.iterator] = function* () {\n  yield* this.data\n}\nObject.assign(Cite, staticMethods)\nexport default Cite\n","import Register from '../util/register.js'\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  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}\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})\nexport function add(name, dict) {\n  validate(name, dict)\n  register.set(name, dict)\n}\nexport function remove(name) {\n  register.remove(name)\n}\nexport function has(name) {\n  return register.has(name)\n}\nexport function list() {\n  return register.list()\n}\nexport function get(name) {\n  if (!register.has(name)) {\n    throw new Error(`Dict \"${name}\" unavailable`)\n  }\n  return register.get(name)\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}\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","const configs = {}\nexport function add(ref, config) {\n  configs[ref] = config\n}\nexport function get(ref) {\n  return configs[ref]\n}\nexport function has(ref) {\n  return Object.prototype.hasOwnProperty.call(configs, ref)\n}\nexport function remove(ref) {\n  delete configs[ref]\n}\nexport function list() {\n  return Object.keys(configs)\n}\n","// @ts-nocheck\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'\nconst registers = {\n  input,\n  output,\n  dict,\n  config,\n}\nconst indices = {}\nexport function add(ref, plugins = {}) {\n  const mainIndex = (indices[ref] = {})\n  for (const type in plugins) {\n    if (type === 'config') {\n      mainIndex.config = {\n        [ref]: plugins.config,\n      }\n      registers.config.add(ref, plugins.config)\n      continue\n    }\n    const typeIndex = (mainIndex[type] = {})\n    const typePlugins = plugins[type]\n    for (const name in typePlugins) {\n      const typePlugin = typePlugins[name]\n      typeIndex[name] = true\n      registers[type].add(name, typePlugin)\n    }\n  }\n}\nexport function remove(ref) {\n  const mainIndex = indices[ref]\n  for (const type in mainIndex) {\n    const typeIndex = mainIndex[type]\n    for (const name in typeIndex) {\n      registers[type].remove(name)\n    }\n  }\n  delete indices[ref]\n}\nexport function has(ref) {\n  return ref in indices\n}\nexport function list() {\n  return Object.keys(indices)\n}\nexport { input, output, dict, config }\n","export function parse() {\n  return []\n}\n","import logger from '../../logger.js'\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]\nfunction parseJSON(str) {\n  if (typeof str !== 'string') {\n    return JSON.parse(str)\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}\nexport { parseJSON as parse, parseJSON as default }\n","export 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\nimport * as empty from './empty.js'\nimport * as json from './json.js'\nimport * as jquery from './jquery.js'\nimport * as html from './html.js'\nexport const ref = '@else'\nexport const parsers = {\n  empty,\n  json,\n  jquery,\n  html,\n}\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      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      predicate(input) {\n        return typeof HTMLElement !== 'undefined' && input instanceof HTMLElement\n      },\n    },\n  },\n}\n","// @ts-nocheck\nimport * as plugins from '../../plugins/index.js'\nimport * as util from '../../util/index.js'\nimport logger from '../../logger.js'\nfunction appendCommas(string, index, array) {\n  return string + (index < array.length - 1 ? ',' : '')\n}\nfunction getJsonObject(src, dict) {\n  const isArray = Array.isArray(src)\n  let entries\n  if (isArray) {\n    entries = src.map((entry) => getJsonValue(entry, dict))\n  } else {\n    entries = Object.keys(src)\n      .filter((prop) => JSON.stringify(src[prop]))\n      .map((prop) => `\"${prop}\": ${getJsonValue(src[prop], dict)}`)\n  }\n  entries = entries.map(appendCommas).map((entry) => dict.listItem.join(entry))\n  entries = dict.list.join(entries.join(''))\n  return isArray ? `[${entries}]` : `{${entries}}`\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}\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  return dict.bibliographyContainer.join(`[${entries}]`)\n}\nexport function getJsonWrapper(src) {\n  return getJson(src, plugins.dict.get('html'))\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    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    return data.map((entry) => JSON.stringify(entry)).join('\\n')\n  },\n}\n","import json from './json.js'\nimport label from './label.js'\nexport default Object.assign({}, json, label)\n","import * as plugins from '../plugins'\nimport { ref, formats as input } from './input/'\nimport output from './output/'\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'\nfunction nameProps(person) {\n  const { firstname, lastname, firstName: given = firstname, lastName: family = lastname } = person\n  if (given && family) {\n    return {\n      given,\n      family,\n    }\n  } else if (person.name) {\n    return parseName(person.name)\n  }\n}\nconst identifiers = ['PMID', 'PMCID', 'DOI', 'ISBN']\nconst journalIdentifiers = ['ISSN']\nfunction idProps(input, identifiers) {\n  const output = {}\n  for (const prop in input) {\n    const upperCaseProp = prop.toUpperCase()\n    if (identifiers.includes(upperCaseProp)) {\n      output[upperCaseProp] = input[prop]\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  return output\n}\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}\nfunction quickscrapeSpecificProps() {\n  return {\n    type: 'article-journal',\n  }\n}\nfunction generalProps(input) {\n  const output = {\n    type: typeMap[input.type] || 'document',\n    title: input.title,\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  if (Array.isArray(input.keywords)) {\n    output.keyword = input.keywords.join()\n  } else if (input.keywords) {\n    output.keyword = input.keywords\n  }\n  if (input.publisher) {\n    output.publisher = input.publisher.name || input.publisher\n  }\n  if (input.date && input.date.published) {\n    output.issued = parseDate(input.date.published)\n  } else if (input.year) {\n    output.issued = {\n      'date-parts': [[+input.year]],\n    }\n  }\n  if (input.date && input.date.submitted) {\n    output.submitted = parseDate(input.date.submitted)\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    Object.assign(output, idProps(journal, journalIdentifiers))\n    if (journal.firstpage) {\n      output['page-first'] = journal.firstpage\n    }\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  if (input.link && typeof input.link[0] === 'object') {\n    output.URL = input.link[0].url\n  }\n  Object.assign(output, idProps(input, identifiers))\n  if (input.cid) {\n    output.id = input.cid\n  } else if (output.DOI) {\n    output.id = output.DOI\n  }\n  return output\n}\nconst parseContentMine = function (data) {\n  return Object.assign(generalProps(data), quickscrapeSpecificProps(data))\n}\nconst parseBibJson = function (data) {\n  return generalProps(data)\n}\nexport { parseContentMine as quickscrapeRecord, parseBibJson as record }\n","import * as json from './json.js'\nimport { plugins } from '../core/index.js'\nconst scraperLinks = ['fulltext_html', 'fulltext_xml', 'fulltext_pdf']\nconst authorNameFields = ['name', 'lastname', 'lastName', 'firstname', 'firstName']\nconst ref = '@bibjson'\nconst parsers = {\n  json,\n}\nconst formats = {\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  '@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  '@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}\nplugins.add(ref, {\n  input: formats,\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 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    manual: 'report',\n    misc: 'document',\n    online: 'webpage',\n    patent: 'patent',\n    periodical: 'periodical',\n    proceedings: 'book',\n    mvproceedings: 'book',\n    inproceedings: 'paper-conference',\n    reference: 'book',\n    mvreference: 'book',\n    inreference: 'entry',\n    report: 'report',\n    software: 'software',\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    performance: 'performance',\n    review: 'review',\n    standard: 'standard',\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    classic: 'unpublished',\n    collection: 'misc',\n    dataset: 'dataset',\n    document: 'misc',\n    entry: 'inreference',\n    'entry-dictionary': 'inreference',\n    'entry-encyclopedia': 'inreference',\n    event: 'misc',\n    figure: 'artwork',\n    graphic: 'artwork',\n    hearing: 'legal',\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    performance: 'performance',\n    periodical: 'periodical',\n    personal_communication: 'letter',\n    post: 'online',\n    'post-weblog': 'online',\n    regulation: 'legal',\n    report: 'report',\n    review: 'review',\n    'review-book': 'review',\n    software: 'software',\n    song: 'music',\n    speech: 'audio',\n    standard: 'standard',\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    manual: 'report',\n    mastersthesis: 'thesis',\n    misc: 'document',\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","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: 'Ĳ',\n    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  },\n  mathCommands: {\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.json' assert { type: \"json\" };\n// import _fieldTypes from './fieldTypes.json' assert { type: \"json\" };\n// import unicode from './unicode.json' assert { type: \"json\" };\nimport _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\nexport const mathCommands = unicode.mathCommands\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  bf: 'bold',\n  bfseries: 'bold',\n  sc: 'smallcaps',\n  scshape: 'smallcaps',\n  rm: undefined,\n  sf: undefined,\n  tt: undefined,\n}\nexport const formattingCommands = {\n  textit: 'italics',\n  textsl: 'italics',\n  emph: 'italics',\n  mkbibitalic: 'italics',\n  mkbibemph: 'italics',\n  textbf: 'bold',\n  strong: 'bold',\n  mkbibbold: 'bold',\n  textsc: 'smallcaps',\n  textsuperscript: 'superscript',\n  textsubscript: 'subscript',\n  enquote: 'quotes',\n  mkbibquote: 'quotes',\n  textmd: undefined,\n  textrm: undefined,\n  textsf: undefined,\n  texttt: undefined,\n  textup: undefined,\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}\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}\nexport const ligaturePattern = /---?|''|``|~/g\nexport const ligatures = {\n  '--': '\\u2013',\n  '---': '\\u2014',\n  '``': '\\u201C',\n  \"''\": '\\u201D',\n  '~': '\\u00A0',\n}\nexport const mathScriptFormatting = {\n  '^': 'superscript',\n  sp: 'superscript',\n  _: 'subscript',\n  sb: 'subscript',\n  mathrm: undefined,\n}\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}\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 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    checkLabel: true,\n    asciiOnly: true,\n  },\n  biber: {\n    annotationMarker: '+an',\n    namedAnnotationMarker: ':',\n  },\n}\n","function ownKeys(e, r) {\n  var t = Object.keys(e)\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e)\n    r &&\n      (o = o.filter(function (r) {\n        return Object.getOwnPropertyDescriptor(e, r).enumerable\n      })),\n      t.push.apply(t, o)\n  }\n  return t\n}\nfunction _objectSpread(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {}\n    r % 2\n      ? ownKeys(Object(t), !0).forEach(function (r) {\n          _defineProperty(e, r, t[r])\n        })\n      : Object.getOwnPropertyDescriptors\n      ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n      : ownKeys(Object(t)).forEach(function (r) {\n          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n        })\n  }\n  return e\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nimport { util, logger } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport { defaultStrings } from './constants.js'\nconst identifier = /[a-zA-Z_][a-zA-Z0-9_:+-]*/\nconst whitespace = {\n  comment: /%.*/,\n  whitespace: {\n    match: /\\s+/,\n    lineBreaks: true,\n  },\n}\nconst lexer = moo.states({\n  main: {\n    junk: {\n      match: /@[cC][oO][mM][mM][eE][nN][tT].+|[^@]+/,\n      lineBreaks: true,\n    },\n    at: {\n      match: '@',\n      push: 'entry',\n    },\n  },\n  entry: _objectSpread(\n    _objectSpread({}, whitespace),\n    {},\n    {\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  ),\n  otherEntryContents: _objectSpread(\n    _objectSpread({}, whitespace),\n    {},\n    {\n      lbrace: {\n        match: /[{(]/,\n        next: 'fields',\n      },\n    }\n  ),\n  dataEntryContents: _objectSpread(\n    _objectSpread({}, whitespace),\n    {},\n    {\n      lbrace: {\n        match: /[{(]/,\n        next: 'dataEntryContents',\n      },\n      label: /[^,\\s]+/,\n      comma: {\n        match: ',',\n        next: 'fields',\n      },\n    }\n  ),\n  fields: _objectSpread(\n    _objectSpread({}, whitespace),\n    {},\n    {\n      identifier,\n      number: /-?\\d+/,\n      hash: '#',\n      equals: '=',\n      comma: ',',\n      quote: {\n        match: '\"',\n        push: 'quotedLiteral',\n      },\n      lbrace: {\n        match: '{',\n        push: 'bracedLiteral',\n      },\n      rbrace: {\n        match: /[})]/,\n        pop: true,\n      },\n    }\n  ),\n  quotedLiteral: {\n    lbrace: {\n      match: '{',\n      push: 'bracedLiteral',\n    },\n    quote: {\n      match: '\"',\n      pop: true,\n    },\n    text: {\n      match: /(?:\\\\[\\\\{]|[^{\"])+/,\n      lineBreaks: true,\n    },\n  },\n  bracedLiteral: {\n    lbrace: {\n      match: '{',\n      push: 'bracedLiteral',\n    },\n    rbrace: {\n      match: '}',\n      pop: true,\n    },\n    text: {\n      match: /(?:\\\\[\\\\{}]|[^{}])+/,\n      lineBreaks: true,\n    },\n  },\n})\nconst delimiters = {\n  '(': ')',\n  '{': '}',\n}\nexport const bibtexGrammar = new util.Grammar(\n  {\n    Main() {\n      const entries = []\n      while (true) {\n        while (this.matchToken('junk')) {\n          this.consumeToken('junk')\n        }\n        if (this.matchEndOfFile()) {\n          break\n        }\n        entries.push(this.consumeRule('Entry'))\n      }\n      return entries.filter(Boolean)\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    Entry() {\n      this.consumeToken('at')\n      this.consumeRule('_')\n      const type = (\n        this.matchToken('otherEntryType')\n          ? this.consumeToken('otherEntryType')\n          : this.consumeToken('dataEntryType')\n      ).value.toLowerCase()\n      this.consumeRule('_')\n      const openBrace = this.consumeToken('lbrace').value\n      this.consumeRule('_')\n      let result\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        this.consumeRule('_')\n        this.consumeToken('comma')\n        this.consumeRule('_')\n        const entryBody = this.consumeRule('EntryBody')\n        result = _objectSpread(\n          {\n            type,\n            label,\n          },\n          entryBody\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      return result\n    },\n    EntryBody() {\n      const output = {\n        properties: {},\n      }\n      while (this.matchToken('identifier')) {\n        const [field, value] = this.consumeRule('Field')\n        let annotationField\n        let annotationName = 'default'\n        if (field.endsWith(config.biber.annotationMarker)) {\n          annotationField = field.slice(0, -config.biber.annotationMarker.length)\n        } else if (\n          field.includes(config.biber.annotationMarker + config.biber.namedAnnotationMarker)\n        ) {\n          ;[annotationField, annotationName] = field.split(\n            config.biber.annotationMarker + config.biber.namedAnnotationMarker\n          )\n        }\n        if (annotationField) {\n          if (!output.annotations) {\n            output.annotations = {}\n          }\n          if (!output.annotations[annotationField]) {\n            output.annotations[annotationField] = {}\n          }\n          output.annotations[annotationField][annotationName] = value\n        } else {\n          output.properties[field] = value\n        }\n        this.consumeRule('_')\n        if (this.consumeToken('comma', true)) {\n          this.consumeRule('_')\n        } else {\n          break\n        }\n      }\n      return output\n    },\n    Field() {\n      const field = this.consumeToken('identifier').value.toLowerCase()\n      this.consumeRule('_')\n      this.consumeToken('equals')\n      this.consumeRule('_')\n      const value = this.consumeRule('Expression')\n      return [field, value]\n    },\n    Expression() {\n      let output = this.consumeRule('ExpressionPart')\n      this.consumeRule('_')\n      while (this.matchToken('hash')) {\n        this.consumeToken('hash')\n        this.consumeRule('_')\n        output += this.consumeRule('ExpressionPart').toString()\n        this.consumeRule('_')\n      }\n      return output\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    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    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    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)\nexport function parse(text) {\n  return bibtexGrammar.parse(lexer.reset(text))\n}\n","const bibTxtRegex = {\n  splitEntries: /\\n\\s*(?=\\[)/g,\n  parseEntry: /^\\[(.+?)\\]\\s*(?:\\n([\\s\\S]+))?$/,\n  splitPairs: /((?=.)\\s)*\\n\\s*/g,\n  splitPair: /:(.*)/,\n}\nconst parseBibTxtEntry = (entry) => {\n  const [, label, pairs] = entry.match(bibTxtRegex.parseEntry) || []\n  if (!label || !pairs) {\n    return {}\n  } else {\n    const out = {\n      type: 'book',\n      label,\n      properties: {},\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        if (value) {\n          key = key.trim()\n          value = value.trim()\n          if (key === 'type') {\n            out.type = value\n          } else {\n            out.properties[key] = value\n          }\n        }\n      })\n    return out\n  }\n}\nconst parseBibTxt = (src) => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry)\nexport { parseBibTxt as parse, parseBibTxt as text, parseBibTxtEntry as textEntry }\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\nfunction isLabelSafe(text) {\n  return !config.format.checkLabel || !text.match(unsafeChars)\n}\nfunction formatLabelFromId(id) {\n  if (id === null) {\n    return 'null'\n  } else if (id === undefined) {\n    return 'undefined'\n  } else if (config.format.checkLabel) {\n    return id.toString().replace(unsafeChars, '')\n  } else {\n    return id.toString()\n  }\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}\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  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  if (+value) {\n    return [parseInt(value, 10)]\n  }\n  value = value.trim().toLowerCase()\n  if (value in MONTHS) {\n    return [MONTHS[value]]\n  }\n  const parts = value.split(/\\s+/)\n  let month\n  let day\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  return day ? [month, day] : month ? [month] : []\n}\nexport function formatLabel(author, issued, suffix, title) {\n  let label = ''\n  if (author && author[0]) {\n    label += firstWord(author[0].family || author[0].literal)\n  }\n  if (issued && issued['date-parts'] && issued['date-parts'][0]) {\n    label += issued['date-parts'][0][0]\n  }\n  if (suffix) {\n    label += suffix\n  } else if (title) {\n    label += firstWord(title)\n  }\n  return label\n}\nexport const Converters = {\n  PICK: {\n    toTarget(...args) {\n      return args.find(Boolean)\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    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    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      } else {\n        return []\n      }\n    },\n  },\n  EPRINT: {\n    toTarget(id, type) {\n      if (type === 'pubmed') {\n        return id\n      }\n    },\n    toSource(id) {\n      return [id, 'pubmed']\n    },\n  },\n  EVENT_TITLE: {\n    toTarget(title, addon) {\n      if (addon) {\n        title += ' (' + addon + ')'\n      }\n      return title\n    },\n    toSource(title) {\n      return title.match(/^(.+)(?: \\((.+)\\))?$/).slice(1, 3)\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    toSource(list) {\n      return list.split(',')\n    },\n  },\n  LABEL: {\n    toTarget(label) {\n      return [label, label]\n    },\n    toSource(id, label, author, issued, suffix, title) {\n      if (label && isLabelSafe(label)) {\n        return label\n      } else if (config.format.useIdAsLabel) {\n        return formatLabelFromId(id)\n      } else {\n        return formatLabel(author, issued, suffix, title) || formatLabelFromId(id)\n      }\n    },\n  },\n  NAMES: {\n    toTarget(list) {\n      return list.map(name.convertToTarget)\n    },\n    toSource(list) {\n      return list.map(name.convertToSource)\n    },\n  },\n  NAMES_ORCID: {\n    toTarget(list, orcid) {\n      return list.map((inputName, i) => {\n        var _orcid$item\n        const outputName = name.convertToTarget(inputName)\n        if (\n          typeof (orcid === null ||\n          orcid === void 0 ||\n          (_orcid$item = orcid.item) === null ||\n          _orcid$item === void 0\n            ? void 0\n            : _orcid$item[i]) === 'string'\n        ) {\n          outputName._orcid = orcid.item[i]\n        }\n        return outputName\n      })\n    },\n    toSource(list) {\n      const names = []\n      const orcid = []\n      for (let i = 0; i < list.length; i++) {\n        names.push(name.convertToSource(list[i]))\n        if (list[i]._orcid) {\n          orcid[i] = list[i]._orcid\n        }\n      }\n      return [\n        names,\n        orcid.length\n          ? {\n              item: orcid,\n            }\n          : undefined,\n      ]\n    },\n  },\n  PAGES: {\n    toTarget(pages) {\n      return pages.replace(/[–—]/, '-')\n    },\n    toSource(pages) {\n      return pages.replace('-', '--')\n    },\n  },\n  STANDARD_NUMBERS: {\n    toTarget(...args) {\n      return args.find(Boolean)\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      return title\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: {\n        note: false,\n        addendum: false,\n      },\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: {\n        pagetotal: false,\n      },\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 {\n          S2ID,\n        }\n      },\n      toSource({ S2ID }) {\n        return S2ID\n      },\n    },\n  },\n]\nconst aliases = [\n  {\n    source: 'annote',\n    target: 'annote',\n    when: {\n      source: {\n        annotation: false,\n      },\n      target: false,\n    },\n  },\n  {\n    source: 'address',\n    target: 'publisher-place',\n    convert: Converters.PICK,\n    when: {\n      source: {\n        location: false,\n      },\n      target: false,\n    },\n  },\n  {\n    source: ['eprint', 'archiveprefix'],\n    target: 'PMID',\n    convert: Converters.EPRINT,\n    when: {\n      source: {\n        eprinttype: false,\n      },\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]\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', 'author+an:orcid'],\n    target: 'author',\n    convert: Converters.NAMES_ORCID,\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    source: ['maintitle', 'mainsubtitle', 'maintitleaddon'],\n    target: 'container-title',\n    when: {\n      source: true,\n      target: {\n        'number-of-volumes': true,\n      },\n    },\n    convert: Converters.TITLE,\n  },\n  {\n    source: ['booktitle', 'booksubtitle', 'booktitleaddon'],\n    target: 'container-title',\n    when: {\n      source: {\n        maintitle: false,\n      },\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: {\n        [TYPE]: 'article',\n      },\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: {\n        [TYPE]: 'article',\n      },\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        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: {\n      target: {\n        type: false,\n      },\n    },\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: {\n      source: false,\n      target: {\n        'event-title': false,\n      },\n    },\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: {\n        date: false,\n      },\n      target: false,\n    },\n  },\n  {\n    source: 'location',\n    target: 'jurisdiction',\n    when: {\n      source: {\n        type: 'patent',\n      },\n      target: {\n        type: 'patent',\n      },\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: {\n      source: {\n        language: false,\n      },\n      target: false,\n    },\n  },\n  {\n    source: 'note',\n    target: 'note',\n  },\n  {\n    source: 'addendum',\n    target: 'note',\n    when: {\n      source: {\n        note: false,\n      },\n      target: false,\n    },\n  },\n  {\n    source: 'eid',\n    target: 'number',\n    when: {\n      target: {\n        type: ['article-journal'],\n      },\n    },\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: {\n        [TYPE]: ['patent', 'report', 'techreport', 'legislation'],\n      },\n      target: {\n        type: ['patent', 'report', 'legislation'],\n      },\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: {\n      source: {\n        bookpagination: [undefined, 'page'],\n      },\n    },\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        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',\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: {\n        bookpagination: 'section',\n      },\n      target: {\n        page: false,\n      },\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: {\n      source: false,\n      target: {\n        'title-short': false,\n      },\n    },\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: {\n        note: false,\n      },\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: '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: 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: '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: {\n        [TYPE]: ['patent', 'report', 'techreport'],\n      },\n      target: {\n        type: ['patent', 'report'],\n      },\n    },\n  },\n  {\n    source: 'eid',\n    target: 'number',\n    when: {\n      source: {\n        number: false,\n      },\n      target: {\n        type: ['article-journal'],\n      },\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        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: {\n        publisher: false,\n      },\n      target: {\n        type: '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',\n      },\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: {\n        type: '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        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        const type = types.source[sourceType] || 'document'\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        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: {\n        type: false,\n      },\n    },\n    convert: {\n      toSource() {\n        return 'misc'\n      },\n    },\n  },\n  {\n    source: 'url',\n    target: 'URL',\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 ownKeys(e, r) {\n  var t = Object.keys(e)\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e)\n    r &&\n      (o = o.filter(function (r) {\n        return Object.getOwnPropertyDescriptor(e, r).enumerable\n      })),\n      t.push.apply(t, o)\n  }\n  return t\n}\nfunction _objectSpread(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {}\n    r % 2\n      ? ownKeys(Object(t), !0).forEach(function (r) {\n          _defineProperty(e, r, t[r])\n        })\n      : Object.getOwnPropertyDescriptors\n      ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n      : ownKeys(Object(t)).forEach(function (r) {\n          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n        })\n  }\n  return e\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nconst BOOK = new Set(['book', 'inbook', 'bookinbook', 'suppbook'])\nconst BOOK_PART = new Set(['inbook', 'bookinbook', 'suppbook'])\nconst COLLECTION = new Set([\n  'collection',\n  'reference',\n  'incollection',\n  'inreference',\n  'suppcollection',\n])\nconst COLLECTION_PART = new Set(['incollection', 'inreference', 'suppcollection'])\nconst PROCEEDINGS = new Set(['proceedings', 'inproceedings'])\nconst PROCEEDINGS_PART = new Set(['inproceedings'])\nconst PERIODICAL_PART = new Set(['article', 'suppperiodical'])\nconst TITLE_MAP = {\n  mvbook: ['main', BOOK],\n  mvcollection: ['main', COLLECTION],\n  mvreference: ['main', COLLECTION],\n  mvproceedings: ['main', PROCEEDINGS],\n  book: ['book', BOOK_PART],\n  collection: ['book', COLLECTION_PART],\n  reference: ['book', COLLECTION_PART],\n  proceedings: ['book', PROCEEDINGS_PART],\n  periodical: ['journal', PERIODICAL_PART],\n}\nexport function crossref(target, entry, registry) {\n  if (entry.crossref in registry) {\n    const parent = registry[entry.crossref]\n    if (parent.properties === entry) {\n      return entry\n    }\n    const data = _objectSpread({}, crossref(parent.type, parent.properties, registry))\n    delete data.ids\n    delete data.crossref\n    delete data.xref\n    delete data.entryset\n    delete data.entrysubtype\n    delete data.execute\n    delete data.label\n    delete data.options\n    delete data.presort\n    delete data.related\n    delete data.relatedoptions\n    delete data.relatedstring\n    delete data.relatedtype\n    delete data.shortand\n    delete data.shortandintro\n    delete data.sortkey\n    if ((parent.type === 'mvbook' || parent.type === 'book') && BOOK_PART.has(target)) {\n      data.bookauthor = data.author\n    }\n    if (parent.type in TITLE_MAP) {\n      const [prefix, targets] = TITLE_MAP[parent.type]\n      if (targets.has(target)) {\n        data[prefix + 'title'] = data.title\n        data[prefix + 'subtitle'] = data.subtitle\n        if (prefix !== 'journal') {\n          data[prefix + 'titleaddon'] = data.titleaddon\n        }\n        delete data.title\n        delete data.subtitle\n        delete data.titleaddon\n        delete data.shorttitle\n        delete data.sorttitle\n        delete data.indextitle\n        delete data.indexsorttitle\n      }\n    }\n    return Object.assign(data, entry)\n  }\n  return entry\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}\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}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e)\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e)\n    r &&\n      (o = o.filter(function (r) {\n        return Object.getOwnPropertyDescriptor(e, r).enumerable\n      })),\n      t.push.apply(t, o)\n  }\n  return t\n}\nfunction _objectSpread(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {}\n    r % 2\n      ? ownKeys(Object(t), !0).forEach(function (r) {\n          _defineProperty(e, r, t[r])\n        })\n      : Object.getOwnPropertyDescriptors\n      ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n      : ownKeys(Object(t)).forEach(function (r) {\n          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n        })\n  }\n  return e\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nimport { TYPE, LABEL } from './shared.js'\nimport biblatex from './biblatex.js'\nimport bibtex from './bibtex.js'\nimport { crossref } from './crossref.js'\nfunction _parse(input, spec) {\n  const registry = {}\n  for (const entry of input) {\n    registry[entry.label] = entry\n  }\n  return input.map(({ type, label, properties }) =>\n    spec.convertToTarget(\n      _objectSpread(\n        {\n          [TYPE]: type,\n          [LABEL]: label,\n        },\n        crossref(type, properties, registry)\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    return {\n      type,\n      label,\n      properties,\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","export function getStringCase(string) {\n  const a = string.toUpperCase()\n  const b = string.toLowerCase()\n  for (let i = 0; i < string.length; i++) {\n    if (a[i] !== b[i]) {\n      return a[i] === string[i]\n    }\n  }\n  return null\n}\nexport function formatNameParts(parts) {\n  if (parts.length === 0) {\n    return undefined\n  }\n  let piece = ''\n  while (parts.length > 1) {\n    const { value, hyphenated } = parts.shift()\n    piece += value + (hyphenated ? '-' : ' ')\n  }\n  const output = piece + parts[0].value\n  return output[0] && output\n}\nexport function orderNameParts(parts, orderGiven = true) {\n  const given = []\n  const undecided = []\n  if (orderGiven) {\n    while (parts.length > 1 && parts[0].upperCase !== false) {\n      given.push(...undecided)\n      undecided.length = 0\n      while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) {\n        given.push(parts.shift())\n      }\n      while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) {\n        undecided.push(parts.shift())\n      }\n    }\n  }\n  const prefix = []\n  const family = []\n  while (parts.length > 1) {\n    prefix.push(...family)\n    family.length = 0\n    while (parts.length > 1 && parts[0].upperCase === false) {\n      prefix.push(parts.shift())\n    }\n    while (parts.length > 0 && parts[0].upperCase !== false) {\n      family.push(parts.shift())\n    }\n  }\n  if (undecided.length) {\n    family.unshift(...undecided)\n  }\n  if (parts.length) {\n    family.push(parts[0])\n  }\n  return [formatNameParts(given), formatNameParts(prefix), formatNameParts(family)]\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  const name = {}\n  const [given, prefix, family] = orderNameParts(pieces[0], pieces.length === 1)\n  if (family) {\n    name.family = family\n  }\n  if (prefix) {\n    name.prefix = prefix\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  return name\n}\n","function ownKeys(e, r) {\n  var t = Object.keys(e)\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e)\n    r &&\n      (o = o.filter(function (r) {\n        return Object.getOwnPropertyDescriptor(e, r).enumerable\n      })),\n      t.push.apply(t, o)\n  }\n  return t\n}\nfunction _objectSpread(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {}\n    r % 2\n      ? ownKeys(Object(t), !0).forEach(function (r) {\n          _defineProperty(e, r, t[r])\n        })\n      : Object.getOwnPropertyDescriptors\n      ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n      : ownKeys(Object(t)).forEach(function (r) {\n          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n        })\n  }\n  return e\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nimport { 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'\nconst text = {\n  commandBegin: {\n    match: '\\\\begin',\n    push: 'environment',\n  },\n  command: {\n    match: /\\\\(?:[a-zA-Z]+|.) */,\n    value: (s) => s.slice(1).trim(),\n  },\n  lbrace: {\n    match: '{',\n    push: 'bracedLiteral',\n  },\n  mathShift: {\n    match: '$',\n    push: 'mathLiteral',\n  },\n  whitespace: {\n    match: /[\\s]+|~/,\n    lineBreaks: true,\n    value(token) {\n      return token === '~' ? '\\xa0' : ' '\n    },\n  },\n}\nconst lexer = moo.states({\n  stringLiteral: _objectSpread(\n    _objectSpread({}, text),\n    {},\n    {\n      text: /[^{$}\\s~\\\\]+/,\n    }\n  ),\n  namesLiteral: _objectSpread(\n    _objectSpread(\n      {\n        and: /\\s+[aA][nN][dD]\\s+/,\n        comma: ',',\n        hyphen: '-',\n        equals: '=',\n      },\n      text\n    ),\n    {},\n    {\n      text: /[^{$}\\s~\\\\,=-]+/,\n    }\n  ),\n  listLiteral: _objectSpread(\n    _objectSpread(\n      {\n        and: /\\s+and\\s+/,\n      },\n      text\n    ),\n    {},\n    {\n      text: /[^{$}\\s~\\\\]+/,\n    }\n  ),\n  separatedLiteral: _objectSpread(\n    _objectSpread(\n      {\n        comma: ',',\n      },\n      text\n    ),\n    {},\n    {\n      text: /[^{$}\\s~\\\\,]+/,\n    }\n  ),\n  annotation: _objectSpread(\n    _objectSpread({}, text),\n    {},\n    {\n      colon: ':',\n      equals: '=',\n      comma: ',',\n      semicolon: ';',\n      quote: '\"',\n      itemCount: /\\d+/,\n      text: /[^{$}\\s~\\\\\":;,=]+/,\n    }\n  ),\n  bracedLiteral: _objectSpread(\n    _objectSpread({}, text),\n    {},\n    {\n      rbrace: {\n        match: '}',\n        pop: true,\n      },\n      text: /[^{$}\\s~\\\\]+/,\n    }\n  ),\n  mathLiteral: _objectSpread(\n    _objectSpread({}, text),\n    {},\n    {\n      mathShift: {\n        match: '$',\n        pop: true,\n      },\n      script: /[\\^_]/,\n      text: /[^{$}\\s~\\\\^_]+/,\n    }\n  ),\n  environment: _objectSpread(\n    _objectSpread(\n      {\n        commandEnd: {\n          match: '\\\\end',\n          pop: true,\n        },\n      },\n      text\n    ),\n    {},\n    {\n      text: /[^{$}\\s~\\\\]+/,\n    }\n  ),\n})\nfunction flattenConsString(string) {\n  string[0]\n  return string\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}\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    StringNames() {\n      const list = []\n      while (true) {\n        this.consumeToken('whitespace', true)\n        list.push(this.consumeRule('Name'))\n        this.consumeToken('whitespace', true)\n        if (this.matchEndOfFile()) {\n          return list\n        } else {\n          this.consumeToken('and')\n        }\n      }\n    },\n    Name() {\n      const pieces = []\n      while (true) {\n        pieces.push(this.consumeRule('NamePiece'))\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    NamePiece() {\n      const parts = []\n      while (true) {\n        const part = this.consumeRule('NameToken')\n        if (part.label) {\n          part.label = formatNameParts([\n            ...parts,\n            {\n              value: part.label,\n            },\n          ])\n          return [part]\n        }\n        parts.push(part)\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    NameToken() {\n      let upperCase = null\n      let value = ''\n      while (true) {\n        if (upperCase === null && this.matchToken('text')) {\n          const text = this.consumeToken().value\n          value += text\n          upperCase = getStringCase(text)\n        } else if (\n          this.matchEndOfFile() ||\n          this.matchToken('and') ||\n          this.matchToken('comma') ||\n          this.matchToken('whitespace')\n        ) {\n          return {\n            value,\n            upperCase,\n          }\n        } else if (this.matchToken('hyphen')) {\n          return {\n            value,\n            upperCase,\n            hyphenated: true,\n          }\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 {\n            value: formatNameParts(text),\n            label: value,\n          }\n        } else {\n          value += this.consumeRule('Text')\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        this.consumeToken('and', true)\n      }\n      return list.length === 1 ? list[0] : list\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        this.consumeToken('comma', true)\n        this.consumeToken('whitespace', true)\n      }\n      return list\n    },\n    StringVerbatim() {\n      let output = ''\n      while (!this.matchEndOfFile()) {\n        output += this.consumeToken().text\n      }\n      return flattenConsString(output)\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        return encodeURI(uri)\n      }\n    },\n    StringTitleCase() {\n      this.state.sentenceCase = true\n      let output = ''\n      while (!this.matchEndOfFile()) {\n        output += this.consumeRule('Text')\n      }\n      return flattenConsString(output)\n    },\n    Annotations() {\n      const annotations = {}\n      while (true) {\n        const { scope, item, part, value } = this.consumeRule('Annotation')\n        if (scope === 'part') {\n          if (!annotations.part) {\n            annotations.part = []\n          }\n          if (!annotations.part[item]) {\n            annotations.part[item] = {}\n          }\n          annotations.part[item][part] = value\n        } else if (scope === 'item') {\n          if (!annotations.item) {\n            annotations.item = []\n          }\n          annotations.item[item] = value\n        } else {\n          annotations.field = value\n        }\n        if (this.matchEndOfFile()) {\n          break\n        } else {\n          this.consumeToken('semicolon')\n          this.consumeRule('_')\n        }\n      }\n      return annotations\n    },\n    Annotation() {\n      const annotation = {}\n      if (this.matchToken('itemCount')) {\n        annotation.item = parseInt(this.consumeToken('itemCount')) - 1\n        if (this.matchToken('colon')) {\n          this.consumeToken('colon')\n          annotation.part = this.consumeToken('text')\n          annotation.scope = 'part'\n        } else {\n          annotation.scope = 'item'\n        }\n      } else {\n        annotation.scope = 'field'\n      }\n      this.consumeToken('equals')\n      this.consumeRule('_')\n      if (this.matchToken('quote')) {\n        this.consumeToken('quote')\n        let literal = ''\n        while (!this.matchToken('quote')) {\n          if (\n            this.matchToken('itemCount') ||\n            this.matchToken('colon') ||\n            this.matchToken('comma') ||\n            this.matchToken('semicolon') ||\n            this.matchToken('equals')\n          ) {\n            literal += this.token.value\n            this.token = this.lexer.next()\n          } else {\n            literal += this.consumeRule('Text')\n          }\n        }\n        this.consumeToken('quote')\n        annotation.value = flattenConsString(literal)\n        this.consumeRule('_')\n      } else {\n        annotation.value = []\n        let output = ''\n        while (true) {\n          output += this.consumeRule('Text')\n          if (this.matchToken('comma')) {\n            this.consumeToken('comma')\n            this.consumeRule('_')\n            annotation.value.push(flattenConsString(output))\n            output = ''\n          } else if (this.matchEndOfFile() || this.matchToken('semicolon')) {\n            annotation.value.push(flattenConsString(output))\n            break\n          }\n        }\n      }\n      return annotation\n    },\n    BracketString() {\n      var _this$state\n      let output = ''\n      this.consumeToken('lbrace')\n      const sentenceCase = this.state.sentenceCase\n      this.state.sentenceCase = sentenceCase && this.matchToken('command')\n      ;(_this$state = this.state).partlyLowercase &&\n        (_this$state.partlyLowercase = this.state.sentenceCase)\n      while (!this.matchToken('rbrace')) {\n        output += this.consumeRule('Text')\n      }\n      const topLevel = sentenceCase && !this.state.sentenceCase\n      const protectCase = topLevel && this.state.partlyLowercase\n      this.state.sentenceCase = sentenceCase\n      this.consumeToken('rbrace')\n      return protectCase ? applyFormatting(output, 'nocase') : output\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          continue\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        output += this.consumeRule('Text')\n      }\n      this.consumeToken('mathShift')\n      return output\n    },\n    Text() {\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      const text = this.consumeToken('text').value.replace(\n        constants.ligaturePattern,\n        (ligature) => constants.ligatures[ligature]\n      )\n      const afterPunctuation = this.state.afterPunctuation\n      this.state.afterPunctuation = /[?!.:]$/.test(text)\n      if (!this.state.sentenceCase) {\n        var _this$state2\n        ;(_this$state2 = this.state).partlyLowercase ||\n          (_this$state2.partlyLowercase =\n            text === text.toLowerCase() && text !== text.toUpperCase())\n        return text\n      }\n      const [first, ...otherCharacters] = text\n      const rest = otherCharacters.join('')\n      const restLowerCase = rest.toLowerCase()\n      if (rest !== restLowerCase) {\n        return text\n      }\n      if (!afterPunctuation) {\n        return text.toLowerCase()\n      }\n      return first + restLowerCase\n    },\n    Command() {\n      const commandToken = this.consumeToken('command')\n      const command = commandToken.value\n      if (command in constants.formattingEnvs) {\n        const text = this.consumeRule('Env')\n        const format = constants.formattingEnvs[command]\n        return applyFormatting(text, format)\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      } else if (command in constants.commands) {\n        return constants.commands[command]\n      } else if (command in constants.mathCommands) {\n        return constants.mathCommands[command]\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      } else if (command in constants.argumentCommands) {\n        const func = constants.argumentCommands[command]\n        const args = []\n        let arity = func.length\n        while (arity-- > 0) {\n          this.consumeToken('whitespace', true)\n          args.push(this.consumeRule('BracketString'))\n        }\n        return func(...args)\n      } else if (/^[&%$#_{}]$/.test(command)) {\n        return commandToken.text.slice(1)\n      } else {\n        return commandToken.text\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    EnclosedEnv() {\n      this.consumeToken('commandBegin')\n      const beginEnv = this.consumeRule('BracketString')\n      let output = ''\n      while (!this.matchToken('commandEnd')) {\n        output += this.consumeRule('Text')\n      }\n      const end = this.consumeToken('commandEnd')\n      const endEnv = this.consumeRule('BracketString')\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      return applyFormatting(output, constants.formattingEnvs[beginEnv])\n    },\n    _() {\n      while (this.matchToken('whitespace')) {\n        this.consumeToken('whitespace')\n      }\n    },\n  },\n  {\n    sentenceCase: false,\n    partlyLowercase: false,\n    afterPunctuation: true,\n  }\n)\nfunction singleLanguageIsEnglish(language) {\n  return constants.sentenceCaseLanguages.includes(language.toLowerCase())\n}\nfunction isEnglish(languages) {\n  if (Array.isArray(languages)) {\n    return languages.every(singleLanguageIsEnglish)\n  }\n  return singleLanguageIsEnglish(languages)\n}\nfunction getMainRule(fieldType, languages) {\n  if (fieldType[1] === 'name') {\n    return fieldType[0] === 'list' ? 'StringNames' : 'Name'\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  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}\nfunction getLexerState(fieldType) {\n  if (fieldType[1] === 'name') {\n    return 'namesLiteral'\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}\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}\nexport function parseAnnotation(text) {\n  return valueGrammar.parse(\n    lexer.reset(text, {\n      state: 'annotation',\n      line: 0,\n      col: 0,\n    }),\n    'Annotations'\n  )\n}\n","function ownKeys(e, r) {\n  var t = Object.keys(e)\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e)\n    r &&\n      (o = o.filter(function (r) {\n        return Object.getOwnPropertyDescriptor(e, r).enumerable\n      })),\n      t.push.apply(t, o)\n  }\n  return t\n}\nfunction _objectSpread(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {}\n    r % 2\n      ? ownKeys(Object(t), !0).forEach(function (r) {\n          _defineProperty(e, r, t[r])\n        })\n      : Object.getOwnPropertyDescriptors\n      ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n      : ownKeys(Object(t)).forEach(function (r) {\n          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n        })\n  }\n  return e\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key)\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}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, 'string')\n  return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n  if ('object' != typeof t || !t) return t\n  var e = t[Symbol.toPrimitive]\n  if (void 0 !== e) {\n    var i = e.call(t, r || 'default')\n    if ('object' != typeof i) return i\n    throw new TypeError('@@toPrimitive must return a primitive value.')\n  }\n  return ('string' === r ? String : Number)(t)\n}\nimport config from '../config.js'\nimport { parse as mapBiblatex, parseBibtex as mapBibtex } from '../mapping/index.js'\nimport { parse as parseValue, parseAnnotation } from './value.js'\nimport { required } from './constants.js'\nfunction validate(entries, requirements) {\n  const problems = []\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  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}\nfunction parseEntryValues(entry) {\n  const output = {}\n  if ('language' in entry.properties) {\n    output.language = parseValue(entry.properties.language, 'language')\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  for (const property in entry.annotations) {\n    for (const annotation in entry.annotations[property]) {\n      output[property + '+an:' + annotation] = parseAnnotation(\n        entry.annotations[property][annotation]\n      )\n    }\n  }\n  return _objectSpread(\n    _objectSpread({}, entry),\n    {},\n    {\n      properties: output,\n    }\n  )\n}\nexport function parse(entries) {\n  if (config.parse.strict) {\n    validate(entries, required.biblatex)\n  }\n  return mapBiblatex(entries.map(parseEntryValues))\n}\nexport function parseBibtex(entries) {\n  if (config.parse.strict) {\n    validate(entries, required.bibtex)\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'\nexport const ref = '@bibtex'\nexport const formats = {\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  '@biblatex/entry+object': {\n    parse(input) {\n      return parseEntries([input])\n    },\n    parseType: {\n      dataType: 'SimpleObject',\n      propertyConstraint: {\n        props: ['type', 'label', 'properties'],\n      },\n    },\n  },\n  '@biblatex/entries+list': {\n    parse: parseEntries,\n    parseType: {\n      elementConstraint: '@biblatex/entry+object',\n    },\n  },\n  '@bibtex/text': {\n    parse: parseFile,\n    outputs: '@bibtex/entries+list',\n  },\n  '@bibtex/entry+object': {\n    parse(input) {\n      return parseBibtex([input])\n    },\n  },\n  '@bibtex/entries+list': {\n    parse: parseBibtex,\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 config from '../config.js'\nimport { diacritics, commands, mathCommands, ligatures, fieldTypes } from '../input/constants.js'\nconst unicode = {}\nfor (const command in commands) {\n  unicode[commands[command]] = command\n}\nfor (const diacritic in diacritics) {\n  unicode[diacritics[diacritic]] = diacritic\n}\nfor (const ligature in ligatures) {\n  unicode[ligatures[ligature]] = ligature\n}\nconst mathUnicode = {}\nfor (const command in mathCommands) {\n  mathUnicode[mathCommands[command]] = command\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 LONE_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}\nfunction escapeCharacter(char) {\n  if (char in unicode) {\n    return unicode[char] in ligatures ? unicode[char] : `\\\\${unicode[char]}{}`\n  } else if (char in mathUnicode) {\n    return `$\\\\${mathUnicode[char]}$`\n  } else {\n    return ''\n  }\n}\nfunction escapeValue(value) {\n  if (!config.format.asciiOnly) {\n    return value\n  }\n  return value\n    .normalize('NFKD')\n    .replace(UNSAFE_UNICODE, (char) => escapeCharacter(char))\n    .replace(DIACRITIC_PATTERN, (match) =>\n      Array.from(match).reduce((subject, diacritic) => `{\\\\${unicode[diacritic]} ${subject}}`)\n    )\n    .replace(LONE_DIACRITIC_PATTERN, '')\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}\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  const parts = ['']\n  if (name.prefix && name.family) {\n    parts[0] += name.prefix + ' '\n  }\n  if (name.family) {\n    parts[0] += name.family\n  }\n  if (name.suffix) {\n    parts.push(name.suffix)\n    parts.push(name.given || '')\n  } else {\n    parts.push(name.given)\n  }\n  return escapeValue(parts.join(', ').trim())\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, '$1{$2}')))\n    .join('')\n}\nfunction formatSingleValue(value, valueType) {\n  switch (valueType) {\n    case 'title':\n      return formatTitle(value)\n    case 'literal':\n      return formatRichText(value.toString())\n    case 'name':\n      return formatName(value)\n    case 'verbatim':\n    case 'uri':\n      return value.toString()\n    default:\n      return escapeValue(value.toString())\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}\nfunction formatAnnotationValue(values) {\n  if (Array.isArray(values)) {\n    return values.map((value) => escapeValue(value).replace(/([;,\"])/g, '{$1}')).join(', ')\n  } else {\n    return '\"' + escapeValue(values).replace(/([\"])/g, '{$1}') + '\"'\n  }\n}\nexport function format(field, value) {\n  if (!(field in fieldTypes)) {\n    return formatSingleValue(value, 'verbatim')\n  }\n  const [listType, valueType] = fieldTypes[field]\n  if (listType in listDelimiters) {\n    return formatList(value, valueType, listType)\n  } else {\n    return formatSingleValue(value, valueType)\n  }\n}\nexport function formatAnnotation(value) {\n  const annotations = []\n  if (value.field) {\n    annotations.push('=' + formatAnnotationValue(value.field))\n  }\n  if (value.item) {\n    for (const [itemCount, itemValue] of Object.entries(value.item)) {\n      if (!itemValue) {\n        continue\n      }\n      const i = parseInt(itemCount) + 1\n      annotations.push(i + '=' + formatAnnotationValue(itemValue))\n    }\n  }\n  if (value.part) {\n    for (const [itemCount, itemValue] of Object.entries(value.part)) {\n      if (!itemValue) {\n        continue\n      }\n      const i = parseInt(itemCount) + 1\n      for (const part in itemValue) {\n        if (!itemValue[part]) {\n          continue\n        }\n        annotations.push(i + ':' + part + '=' + formatAnnotationValue(itemValue[part]))\n      }\n    }\n  }\n  return annotations.join('; ')\n}\n","import { format as mapBiblatex, formatBibtex as mapBibtex } from '../mapping/index.js'\nimport { format as formatValue, formatAnnotation } from './value.js'\nfunction formatEntryValues({ type, label, properties }) {\n  const output = {\n    type,\n    label,\n    properties: {},\n  }\n  for (const property in properties) {\n    const value = properties[property]\n    const [field, annotation] = property.split('+an:')\n    if (annotation) {\n      if (!output.annotations) {\n        output.annotations = {}\n      }\n      if (!output.annotations[field]) {\n        output.annotations[field] = {}\n      }\n      output.annotations[field][annotation] = formatAnnotation(value)\n    } else {\n      output.properties[property] = formatValue(property, value)\n    }\n  }\n  return output\n}\nexport function format(entries) {\n  return mapBiblatex(entries).map(formatEntryValues)\n}\nexport function formatBibtex(entries) {\n  return mapBibtex(entries).map(formatEntryValues)\n}\n","import config from '../config.js'\nfunction formatField(field, value, dict) {\n  return dict.listItem.join(`${field} = {${value}},`)\n}\nfunction formatEntry(entry, dict) {\n  const fields = []\n  for (const field in entry.properties) {\n    fields.push(formatField(field, entry.properties[field], dict))\n    if (entry.annotations && entry.annotations[field]) {\n      for (const annotation in entry.annotations[field]) {\n        let annotationField = field + config.biber.annotationMarker\n        if (annotation !== 'default') {\n          annotationField += config.biber.namedAnnotationMarker + annotation\n        }\n        fields.push(formatField(annotationField, entry.annotations[field][annotation], dict))\n      }\n    }\n  }\n  return dict.entry.join(`@${entry.type}{${entry.label},${dict.list.join(fields.join(''))}}`)\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}\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'\nconst factory = function (mapper, formatter) {\n  return function (data, opts = {}) {\n    const { type, format = type || 'text' } = opts\n    data = mapper(data)\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}\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 &amp; translator</single><multiple>editors &amp; 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. &amp; tran.</single><multiple>eds. &amp; 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 &amp; 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. &amp; 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. &amp; trans.</single><multiple>eds. &amp; 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=\", &amp; \"><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","import CSL from 'citeproc'\nimport { templates } from './styles.js'\nimport { locales } from './locales.js'\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}\nfor (const format in CSL.Output.Formats) {\n  const original = CSL.Output.Formats[format]['@bibliography/entry']\n  if (!original || original[proxied]) {\n    continue\n  }\n  CSL.Output.Formats[format]['@bibliography/entry'] = getWrapperProxy(original)\n}\nfunction retrieveLocale(locale) {\n  if (locales.has(locale)) {\n    return locales.get(locale)\n  }\n  const unnormalised = locale.replace('-', '_')\n  if (locales.has(unnormalised)) {\n    return locales.get(unnormalised)\n  }\n  return {}\n}\nconst engines = {}\nconst fetchEngine = function (style, locale, styleXml, retrieveItem, retrieveLocale) {\n  const engineHash = `${style}|${locale}`\n  let engine\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      {\n        retrieveLocale,\n        retrieveItem,\n      },\n      styleXml,\n      locale,\n      true\n    )\n  }\n  return 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  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  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  const engine = fetchEngine(style, locale, template, callback, retrieveLocale)\n  engine.setOutputFormat(format)\n  engine.opt.development_extensions.wrap_url_and_doi = false\n  return engine\n}\nexport default prepareEngine\nexport { fetchEngine }\n","const getAttributedEntry = (string, name, value) =>\n  string.replace(/^\\s*<[a-z]+/i, `$& data-${name}=\"${value}\"`)\nconst getPrefixedEntry = (value, id) => getAttributedEntry(value, 'csl-entry-id', id)\nexport { getAttributedEntry, getPrefixedEntry }\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nimport { getPrefixedEntry } from './attr.js'\nconst getAffix = (source, affix) => (typeof affix === 'function' ? affix(source) : affix || '')\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  const citeproc = prepareEngine(data, template, lang, format)\n  const sortedIds = citeproc.updateItems(ids, nosort)\n  if (options.append || options.prepend) {\n    const items = data.reduce((items, entry) => {\n      items[entry.id] = entry\n      return items\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  if (options.hyperlinks) {\n    citeproc.opt.development_extensions.wrap_url_and_doi = true\n  }\n  const bibliography = citeproc.makeBibliography()\n  const [{ bibstart, bibend }, bibBody] = bibliography\n  const entries = bibBody.map((element, index) => getPrefixedEntry(element, sortedIds[index]))\n  if (options.asEntryArray) {\n    return entries.map((element, index) => [sortedIds[index], element])\n  }\n  return bibstart + entries.join('') + bibend\n}\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nfunction prepareCiteItem(citeItem) {\n  return typeof citeItem === 'object'\n    ? citeItem\n    : {\n        id: citeItem,\n      }\n}\nfunction prepareCitation(citation) {\n  if (citation.citationItems) {\n    return citation\n  }\n  return {\n    citationItems: [].concat(citation).map(prepareCiteItem),\n    properties: {\n      noteIndex: 0,\n    },\n  }\n}\nfunction prepareCitations(context) {\n  if (!context) {\n    return []\n  }\n  return context.map(prepareCitation)\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  const citeproc = prepareEngine(data, template, lang, format)\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  return output[before.length][2]\n}\n","import { plugins } from '../core/index.js'\nimport { locales } from './locales.js'\nimport { templates } from './styles.js'\nimport engine from './engines.js'\nimport bibliography from './bibliography.js'\nimport citation from './citation.js'\nplugins.add('@csl', {\n  output: {\n    bibliography,\n    citation,\n  },\n  config: {\n    engine,\n    locales,\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    // @ts-ignore\n    cff.references = input.map(refTranslator.convertToSource)\n  }\n\n  return cff\n}\n\nplugins.add('@cff', {\n  input: {\n    '@cff/object': {\n      parseType: {\n        dataType: 'SimpleObject',\n        propertyConstraint: {\n          props: 'cff-version',\n        },\n      },\n      parse,\n    },\n  },\n  output: {\n    cff(data, options = {}) {\n      const output = format(data, options)\n      if (options.type === 'object') {\n        return output\n      } else {\n        return plugins.output.format('yaml', output)\n      }\n    },\n  },\n})\n","import { Cite as CiteCore, plugins } from './citation-js/core/index.js'\nimport './citation-js/plugin-bibjson/index.js'\nimport './citation-js/plugin-bibtex/index.js'\nimport './citation-js/plugin-csl/index.js'\nimport './citation-js/plugin-cff/index.js'\n\nfunction clone(obj) {\n  const copy = {}\n  for (const key in obj) {\n    copy[key] = typeof obj[key] === 'object' ? clone(obj[key]) : obj[key]\n  }\n  return copy\n}\n\nfunction Cite(data, opts) {\n  if (!(this instanceof Cite)) {\n    return new Cite(data, opts)\n  }\n\n  const self = new CiteCore(data, opts)\n  this._options = self._options\n  this.log = self.log\n  this.data = self.data\n}\n\nCite.plugins = clone(plugins)\n\nexport default Cite\n","export default `<?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=\"minimal-two\"><info><title>Modern Language Association 9th edition</title><title-short>MLA</title-short><id>http://www.zotero.org/styles/modern-language-association</id><link href=\"http://www.zotero.org/styles/modern-language-association\" rel=\"self\"/><link href=\"http://style.mla.org\" rel=\"documentation\"/><author><name>Sebastian Karcher</name></author><category citation-format=\"author\"/><category field=\"generic-base\"/><summary>This style adheres to the MLA 9th edition handbook. Follows the structure of references as outlined in the MLA Manual closely</summary><updated>2021-07-13T20:05:10+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\"><date form=\"text\"><date-part name=\"day\" suffix=\" \"/><date-part name=\"month\" suffix=\" \" form=\"short\"/><date-part name=\"year\"/></date><terms><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\">June</term><term name=\"month-07\" form=\"short\">July</term><term name=\"month-08\" form=\"short\">Aug.</term><term name=\"month-09\" form=\"short\">Sept.</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=\"translator\" form=\"short\">trans.</term></terms></locale><macro name=\"author\"><names variable=\"author\"><name name-as-sort-order=\"first\" and=\"text\" delimiter-precedes-last=\"always\" delimiter-precedes-et-al=\"always\" initialize=\"false\" initialize-with=\". \"/><label form=\"long\" prefix=\", \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><text macro=\"title\"/></substitute></names></macro><macro name=\"author-short\"><group delimiter=\", \"><names variable=\"author\"><name form=\"short\" initialize-with=\". \" and=\"text\"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><text macro=\"title-short\"/></substitute></names><choose><if disambiguate=\"true\"><text macro=\"title-short\"/></if></choose></group></macro><macro name=\"title\"><choose><if variable=\"container-title\" match=\"any\"><text variable=\"title\" quotes=\"true\" text-case=\"title\"/></if><else><text variable=\"title\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"title-short\"><choose><if variable=\"container-title\" match=\"any\"><text variable=\"title\" form=\"short\" quotes=\"true\" text-case=\"title\"/></if><else><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"container-title\"><text variable=\"container-title\" font-style=\"italic\" text-case=\"title\"/></macro><macro name=\"other-contributors\"><choose><if variable=\"container-title\" match=\"any\"><group delimiter=\", \"><names variable=\"container-author\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\"/></names><names variable=\"editor translator\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\"/></names><names variable=\"director illustrator interviewer\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\"/></names></group></if><else><group delimiter=\", \"><names variable=\"container-author\" delimiter=\", \"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"text\"/></names><names variable=\"editor translator\" delimiter=\", \"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"text\"/></names><names variable=\"director illustrator interviewer\" delimiter=\", \"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"text\"/></names></group></else></choose></macro><macro name=\"version\"><group delimiter=\", \"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" text-case=\"capitalize-first\"/></else></choose><text variable=\"version\"/></group></macro><macro name=\"volume-lowercase\"><group delimiter=\" \"><text term=\"volume\" form=\"short\"/><text variable=\"volume\"/></group></macro><macro name=\"number\"><group delimiter=\", \"><group><choose><if variable=\"edition container-title\" match=\"any\"><text macro=\"volume-lowercase\"/></if><else-if variable=\"author\" match=\"all\"><choose><if variable=\"editor translator container-author illustrator interviewer director\" match=\"any\"><text macro=\"volume-lowercase\"/></if></choose></else-if><else-if variable=\"editor\" match=\"all\"><choose><if variable=\"translator container-author illustrator interviewer director\" match=\"any\"><text macro=\"volume-lowercase\"/></if></choose></else-if><else-if variable=\"container-author illustrator interviewer director\" match=\"any\"><text macro=\"volume-lowercase\"/></else-if><else><group delimiter=\" \"><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></else></choose></group><group delimiter=\" \"><text term=\"issue\" form=\"short\"/><text variable=\"issue\"/></group><choose><if type=\"report\"><text variable=\"genre\"/></if></choose><text variable=\"number\"/></group></macro><macro name=\"publisher\"><text variable=\"publisher\"/></macro><macro name=\"publication-date\"><choose><if type=\"book chapter paper-conference motion_picture\" match=\"any\"><date variable=\"issued\" form=\"numeric\" date-parts=\"year\"/></if><else-if type=\"article-journal article-magazine\" match=\"any\"><date variable=\"issued\" form=\"text\" date-parts=\"year-month\"/></else-if><else-if type=\"speech\" match=\"none\"><date variable=\"issued\" form=\"text\"/></else-if></choose></macro><macro name=\"location\"><group delimiter=\", \"><group delimiter=\" \"><label variable=\"page\" form=\"short\"/><text variable=\"page\"/></group><choose><if variable=\"source\" match=\"none\"><text macro=\"URI\"/></if></choose></group></macro><macro name=\"container2-title\"><group delimiter=\", \"><choose><if type=\"speech\"><text variable=\"event\"/><date variable=\"event-date\" form=\"text\"/><text variable=\"event-place\"/></if></choose><text variable=\"archive\"/><text variable=\"archive-place\"/><text variable=\"archive_location\"/></group></macro><macro name=\"container2-location\"><choose><if variable=\"source\"><choose><if variable=\"DOI URL\" match=\"any\"><group delimiter=\", \"><text variable=\"source\" font-style=\"italic\"/><text macro=\"URI\"/></group></if></choose></if></choose></macro><macro name=\"URI\"><choose><if variable=\"DOI\"><text variable=\"DOI\" prefix=\"https://doi.org/\"/></if><else><text variable=\"URL\"/></else></choose></macro><macro name=\"accessed\"><choose><if variable=\"issued\" match=\"none\"><group delimiter=\" \"><text term=\"accessed\" text-case=\"capitalize-first\"/><date variable=\"accessed\" form=\"text\"/></group></if></choose></macro><citation et-al-min=\"3\" et-al-use-first=\"1\" disambiguate-add-names=\"true\" disambiguate-add-givenname=\"true\"><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><choose><if locator=\"page line\" match=\"any\"><group delimiter=\" \"><text macro=\"author-short\"/><text variable=\"locator\"/></group></if><else><group delimiter=\", \"><text macro=\"author-short\"/><group><label variable=\"locator\" form=\"short\"/><text variable=\"locator\"/></group></group></else></choose></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"3\" et-al-use-first=\"1\" line-spacing=\"2\" entry-spacing=\"0\" subsequent-author-substitute=\"---\"><sort><key macro=\"author\"/><key variable=\"title\"/></sort><layout suffix=\".\"><group delimiter=\". \"><text macro=\"author\"/><text macro=\"title\"/><date variable=\"original-date\" form=\"numeric\" date-parts=\"year\"/><group delimiter=\", \"><text macro=\"container-title\"/><text macro=\"other-contributors\"/><text macro=\"version\"/><text macro=\"number\"/><text macro=\"publisher\"/><text macro=\"publication-date\"/><text macro=\"location\"/></group><group delimiter=\", \"><text macro=\"container2-title\"/><text macro=\"container2-location\"/></group><text macro=\"accessed\"/></group></layout></bibliography></style>`\n","export default `<?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=\"display-and-sort\" page-range-format=\"chicago\"><info><title>Chicago Manual of Style 17th edition (author-date)</title><id>http://www.zotero.org/styles/chicago-author-date</id><link href=\"http://www.zotero.org/styles/chicago-author-date\" rel=\"self\"/><link href=\"http://www.chicagomanualofstyle.org/tools_citationguide.html\" rel=\"documentation\"/><author><name>Julian Onions</name><email>julian.onions@gmail.com</email></author><contributor><name>Sebastian Karcher</name></contributor><contributor><name>Richard Karnesky</name><email>karnesky+zotero@gmail.com</email><uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri></contributor><contributor><name>Andrew Dunning</name><email>andrew.dunning@utoronto.ca</email><uri>https://orcid.org/0000-0003-0464-5036</uri></contributor><contributor><name>Matthew Roth</name><email>matthew.g.roth@yale.edu</email><uri> https://orcid.org/0000-0001-7902-6331</uri></contributor><contributor><name>Brenton M. Wiernik</name></contributor><category citation-format=\"author-date\"/><category field=\"generic-base\"/><summary>The author-date variant of the Chicago style</summary><updated>2018-01-24T12:00: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=\"editor\" form=\"verb-short\">ed.</term><term name=\"container-author\" form=\"verb\">by</term><term name=\"translator\" form=\"verb-short\">trans.</term><term name=\"editortranslator\" form=\"verb\">edited and translated by</term><term name=\"translator\" form=\"short\">trans.</term></terms></locale><macro name=\"secondary-contributors\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"none\"><group delimiter=\". \"><names variable=\"editor translator\" delimiter=\". \"><label form=\"verb\" text-case=\"capitalize-first\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names><names variable=\"director\" delimiter=\". \"><label form=\"verb\" text-case=\"capitalize-first\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></if></choose></macro><macro name=\"container-contributors\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><group prefix=\", \" delimiter=\", \"><names variable=\"container-author\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names><names variable=\"editor translator\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></if></choose></macro><macro name=\"editor\"><names variable=\"editor\"><name name-as-sort-order=\"first\" and=\"text\" sort-separator=\", \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\", \"/></names></macro><macro name=\"translator\"><names variable=\"translator\"><name name-as-sort-order=\"first\" and=\"text\" sort-separator=\", \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\", \"/></names></macro><macro name=\"recipient\"><choose><if type=\"personal_communication\"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else><text term=\"letter\" text-case=\"capitalize-first\"/></else></choose></if></choose><names variable=\"recipient\" delimiter=\", \"><label form=\"verb\" prefix=\" \" text-case=\"lowercase\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></macro><macro name=\"substitute-title\"><choose><if type=\"article-magazine article-newspaper review review-book\" match=\"any\"><text macro=\"container-title\"/></if></choose></macro><macro name=\"contributors\"><group delimiter=\". \"><names variable=\"author\"><name and=\"text\" name-as-sort-order=\"first\" sort-separator=\", \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\", \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><names variable=\"director\"/><text macro=\"substitute-title\"/><text macro=\"title\"/></substitute></names><text macro=\"recipient\"/></group></macro><macro name=\"contributors-short\"><names variable=\"author\"><name form=\"short\" and=\"text\" delimiter=\", \" initialize-with=\". \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><names variable=\"director\"/><text macro=\"substitute-title\"/><text macro=\"title\"/></substitute></names></macro><macro name=\"interviewer\"><names variable=\"interviewer\" delimiter=\", \"><label form=\"verb\" prefix=\" \" text-case=\"capitalize-first\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></macro><macro name=\"archive\"><group delimiter=\". \"><text variable=\"archive_location\" text-case=\"capitalize-first\"/><text variable=\"archive\"/><text variable=\"archive-place\"/></group></macro><macro name=\"access\"><group delimiter=\". \"><choose><if type=\"graphic report\" match=\"any\"><text macro=\"archive\"/></if><else-if type=\"article-journal bill book chapter legal_case legislation motion_picture paper-conference\" match=\"none\"><text macro=\"archive\"/></else-if></choose><choose><if type=\"webpage post-weblog\" match=\"any\"><date variable=\"issued\" form=\"text\"/></if></choose><choose><if variable=\"issued\" match=\"none\"><group delimiter=\" \"><text term=\"accessed\" text-case=\"capitalize-first\"/><date variable=\"accessed\" form=\"text\"/></group></if></choose><choose><if type=\"legal_case\" match=\"none\"><choose><if variable=\"DOI\"><text variable=\"DOI\" prefix=\"https://doi.org/\"/></if><else><text variable=\"URL\"/></else></choose></if></choose></group></macro><macro name=\"title\"><choose><if variable=\"title\" match=\"none\"><choose><if type=\"personal_communication\" match=\"none\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if></choose></if><else-if type=\"bill book graphic legislation motion_picture song\" match=\"any\"><text variable=\"title\" text-case=\"title\" font-style=\"italic\"/><group prefix=\" (\" suffix=\")\" delimiter=\" \"><text term=\"version\"/><text variable=\"version\"/></group></else-if><else-if variable=\"reviewed-author\"><choose><if variable=\"reviewed-title\"><group delimiter=\". \"><text variable=\"title\" text-case=\"title\" quotes=\"true\"/><group delimiter=\", \"><text variable=\"reviewed-title\" text-case=\"title\" font-style=\"italic\" prefix=\"Review of \"/><names variable=\"reviewed-author\"><label form=\"verb-short\" text-case=\"lowercase\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></group></if><else><group delimiter=\", \"><text variable=\"title\" text-case=\"title\" font-style=\"italic\" prefix=\"Review of \"/><names variable=\"reviewed-author\"><label form=\"verb-short\" text-case=\"lowercase\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></else></choose></else-if><else-if type=\"legal_case interview patent\" match=\"any\"><text variable=\"title\"/></else-if><else><text variable=\"title\" text-case=\"title\" quotes=\"true\"/></else></choose></macro><macro name=\"edition\"><choose><if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><choose><if is-numeric=\"edition\"><group delimiter=\" \" prefix=\". \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\" strip-periods=\"true\"/></group></if><else><text variable=\"edition\" text-case=\"capitalize-first\" prefix=\". \"/></else></choose></if><else-if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><choose><if is-numeric=\"edition\"><group delimiter=\" \" prefix=\", \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" prefix=\", \"/></else></choose></else-if></choose></macro><macro name=\"locators\"><choose><if type=\"article-journal\"><choose><if variable=\"volume\"><text variable=\"volume\" prefix=\" \"/><group prefix=\" (\" suffix=\")\"><choose><if variable=\"issue\"><text variable=\"issue\"/></if><else><date variable=\"issued\"><date-part name=\"month\"/></date></else></choose></group></if><else-if variable=\"issue\"><group delimiter=\" \" prefix=\", \"><text term=\"issue\" form=\"short\"/><text variable=\"issue\"/><date variable=\"issued\" prefix=\"(\" suffix=\")\"><date-part name=\"month\"/></date></group></else-if><else><date variable=\"issued\" prefix=\", \"><date-part name=\"month\"/></date></else></choose></if><else-if type=\"legal_case\"><text variable=\"volume\" prefix=\", \"/><text variable=\"container-title\" prefix=\" \"/><text variable=\"page\" prefix=\" \"/></else-if><else-if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><group prefix=\". \" delimiter=\". \"><group><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\" suffix=\" \"/><number variable=\"volume\" form=\"numeric\"/></group><group><number variable=\"number-of-volumes\" form=\"numeric\"/><text term=\"volume\" form=\"short\" prefix=\" \" plural=\"true\"/></group></group></else-if><else-if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><choose><if variable=\"page\" match=\"none\"><group prefix=\". \"><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\" suffix=\" \"/><number variable=\"volume\" form=\"numeric\"/></group></if></choose></else-if></choose></macro><macro name=\"locators-chapter\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><choose><if variable=\"page\"><group prefix=\", \"><text variable=\"volume\" suffix=\":\"/><text variable=\"page\"/></group></if></choose></if></choose></macro><macro name=\"locators-article\"><choose><if type=\"article-newspaper\"><group prefix=\", \" delimiter=\", \"><group delimiter=\" \"><text variable=\"edition\"/><text term=\"edition\"/></group><group><text term=\"section\" form=\"short\" suffix=\" \"/><text variable=\"section\"/></group></group></if><else-if type=\"article-journal\"><choose><if variable=\"volume issue\" match=\"any\"><text variable=\"page\" prefix=\": \"/></if><else><text variable=\"page\" prefix=\", \"/></else></choose></else-if></choose></macro><macro name=\"point-locators\"><choose><if variable=\"locator\"><choose><if locator=\"page\" match=\"none\"><choose><if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><choose><if variable=\"volume\"><group><text term=\"volume\" form=\"short\" suffix=\" \"/><number variable=\"volume\" form=\"numeric\"/><label variable=\"locator\" form=\"short\" prefix=\", \" suffix=\" \"/></group></if><else><label variable=\"locator\" form=\"short\" suffix=\" \"/></else></choose></if><else><label variable=\"locator\" form=\"short\" suffix=\" \"/></else></choose></if><else-if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><number variable=\"volume\" form=\"numeric\" suffix=\":\"/></else-if></choose><text variable=\"locator\"/></if></choose></macro><macro name=\"container-prefix\"><text term=\"in\" text-case=\"capitalize-first\"/></macro><macro name=\"container-title\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><text macro=\"container-prefix\" suffix=\" \"/></if></choose><choose><if type=\"webpage\"><text variable=\"container-title\" text-case=\"title\"/></if><else-if type=\"legal_case\" match=\"none\"><group delimiter=\" \"><text variable=\"container-title\" text-case=\"title\" font-style=\"italic\"/><choose><if type=\"post-weblog\"><text value=\"(blog)\"/></if></choose></group></else-if></choose></macro><macro name=\"publisher\"><group delimiter=\": \"><text variable=\"publisher-place\"/><text variable=\"publisher\"/></group></macro><macro name=\"date\"><choose><if variable=\"issued\"><group delimiter=\" \"><date variable=\"original-date\" form=\"text\" date-parts=\"year\" prefix=\"(\" suffix=\")\"/><date variable=\"issued\"><date-part name=\"year\"/></date></group></if><else-if variable=\"status\"><text variable=\"status\" text-case=\"capitalize-first\"/></else-if><else><text term=\"no date\" form=\"short\"/></else></choose></macro><macro name=\"date-in-text\"><choose><if variable=\"issued\"><group delimiter=\" \"><date variable=\"original-date\" form=\"text\" date-parts=\"year\" prefix=\"[\" suffix=\"]\"/><date variable=\"issued\"><date-part name=\"year\"/></date></group></if><else-if variable=\"status\"><text variable=\"status\"/></else-if><else><text term=\"no date\" form=\"short\"/></else></choose></macro><macro name=\"day-month\"><date variable=\"issued\"><date-part name=\"month\"/><date-part name=\"day\" prefix=\" \"/></date></macro><macro name=\"collection-title\"><choose><if match=\"none\" type=\"article-journal\"><choose><if match=\"none\" is-numeric=\"collection-number\"><group delimiter=\", \"><text variable=\"collection-title\" text-case=\"title\"/><text variable=\"collection-number\"/></group></if><else><group delimiter=\" \"><text variable=\"collection-title\" text-case=\"title\"/><text variable=\"collection-number\"/></group></else></choose></if></choose></macro><macro name=\"collection-title-journal\"><choose><if type=\"article-journal\"><group delimiter=\" \"><text variable=\"collection-title\"/><text variable=\"collection-number\"/></group></if></choose></macro><macro name=\"event\"><group delimiter=\" \"><choose><if variable=\"genre\"><text term=\"presented at\"/></if><else><text term=\"presented at\" text-case=\"capitalize-first\"/></else></choose><text variable=\"event\"/></group></macro><macro name=\"description\"><choose><if variable=\"interviewer\" type=\"interview\" match=\"any\"><group delimiter=\". \"><text macro=\"interviewer\"/><text variable=\"medium\" text-case=\"capitalize-first\"/></group></if><else-if type=\"patent\"><group delimiter=\" \" prefix=\". \"><text variable=\"authority\"/><text variable=\"number\"/></group></else-if><else><text variable=\"medium\" text-case=\"capitalize-first\" prefix=\". \"/></else></choose><choose><if variable=\"title\" match=\"none\"/><else-if type=\"thesis personal_communication speech\" match=\"any\"/><else><group delimiter=\" \" prefix=\". \"><text variable=\"genre\" text-case=\"capitalize-first\"/><choose><if type=\"report\"><text variable=\"number\"/></if></choose></group></else></choose></macro><macro name=\"issue\"><choose><if type=\"legal_case\"><text variable=\"authority\" prefix=\". \"/></if><else-if type=\"speech\"><group prefix=\". \" delimiter=\", \"><group delimiter=\" \"><text variable=\"genre\" text-case=\"capitalize-first\"/><text macro=\"event\"/></group><text variable=\"event-place\"/><text macro=\"day-month\"/></group></else-if><else-if type=\"article-newspaper article-magazine personal_communication\" match=\"any\"><date variable=\"issued\" form=\"text\" prefix=\", \"/></else-if><else-if type=\"patent\"><group delimiter=\", \" prefix=\", \"><group delimiter=\" \"><text value=\"filed\"/><date variable=\"submitted\" form=\"text\"/></group><group delimiter=\" \"><choose><if variable=\"issued submitted\" match=\"all\"><text term=\"and\"/></if></choose><text value=\"issued\"/><date variable=\"issued\" form=\"text\"/></group></group></else-if><else-if type=\"article-journal\" match=\"any\"/><else><group prefix=\". \" delimiter=\", \"><choose><if type=\"thesis\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if></choose><text macro=\"publisher\"/></group></else></choose></macro><citation et-al-min=\"4\" et-al-use-first=\"1\" disambiguate-add-year-suffix=\"true\" disambiguate-add-names=\"true\" disambiguate-add-givenname=\"true\" givenname-disambiguation-rule=\"primary-name\" collapse=\"year\" after-collapse-delimiter=\"; \"><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><group delimiter=\", \"><choose><if variable=\"issued accessed\" match=\"any\"><group delimiter=\" \"><text macro=\"contributors-short\"/><text macro=\"date-in-text\"/></group></if><else><group delimiter=\", \"><text macro=\"contributors-short\"/><text macro=\"date-in-text\"/></group></else></choose><text macro=\"point-locators\"/></group></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"11\" et-al-use-first=\"7\" subsequent-author-substitute=\"&#8212;&#8212;&#8212;\" entry-spacing=\"0\"><sort><key macro=\"contributors\"/><key variable=\"issued\"/><key variable=\"title\"/></sort><layout suffix=\".\"><group delimiter=\". \"><text macro=\"contributors\"/><text macro=\"date\"/><text macro=\"title\"/></group><text macro=\"description\"/><text macro=\"secondary-contributors\" prefix=\". \"/><text macro=\"container-title\" prefix=\". \"/><text macro=\"container-contributors\"/><text macro=\"edition\"/><text macro=\"locators-chapter\"/><text macro=\"collection-title-journal\" prefix=\", \" suffix=\", \"/><text macro=\"locators\"/><text macro=\"collection-title\" prefix=\". \"/><text macro=\"issue\"/><text macro=\"locators-article\"/><text macro=\"access\" prefix=\". \"/></layout></bibliography></style>`\n","export default `<?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=\"sort-only\"><info><title>Harvard Reference format 1 (author-date)</title><id>http://www.zotero.org/styles/harvard1</id><link href=\"http://www.zotero.org/styles/harvard1\" rel=\"self\"/><link href=\"http://libweb.anglia.ac.uk/referencing/harvard.htm\" rel=\"documentation\"/><author><name>Julian Onions</name><email>julian.onions@gmail.com</email></author><category citation-format=\"author-date\"/><category field=\"generic-base\"/><summary>The Harvard author-date style</summary><updated>2012-09-27T22:06:38+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><macro name=\"editor\"><names variable=\"editor\" delimiter=\", \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"lowercase\"/></names></macro><macro name=\"anon\"><text term=\"anonymous\" form=\"short\" text-case=\"capitalize-first\" strip-periods=\"true\"/></macro><macro name=\"author\"><names variable=\"author\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\".\" delimiter-precedes-last=\"never\" delimiter=\", \"/><label form=\"short\" prefix=\" \" text-case=\"lowercase\"/><substitute><names variable=\"editor\"/><text macro=\"anon\"/></substitute></names></macro><macro name=\"author-short\"><names variable=\"author\"><name form=\"short\" and=\"symbol\" delimiter=\", \" delimiter-precedes-last=\"never\" initialize-with=\". \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><text macro=\"anon\"/></substitute></names></macro><macro name=\"access\"><choose><if variable=\"URL\"><text value=\"Available at:\" suffix=\" \"/><text variable=\"URL\"/><group prefix=\" [\" suffix=\"]\"><text term=\"accessed\" text-case=\"capitalize-first\" suffix=\" \"/><date variable=\"accessed\"><date-part name=\"month\" suffix=\" \"/><date-part name=\"day\" suffix=\", \"/><date-part name=\"year\"/></date></group></if></choose></macro><macro name=\"title\"><choose><if type=\"bill book graphic legal_case legislation motion_picture report song thesis\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></if><else><text variable=\"title\"/></else></choose></macro><macro name=\"publisher\"><group delimiter=\": \"><text variable=\"publisher-place\"/><text variable=\"publisher\"/></group></macro><macro name=\"year-date\"><choose><if variable=\"issued\"><date variable=\"issued\"><date-part name=\"year\"/></date></if><else><text term=\"no date\" form=\"short\"/></else></choose></macro><macro name=\"edition\"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" suffix=\".\"/></else></choose></macro><macro name=\"pages\"><group><label variable=\"page\" form=\"short\" suffix=\" \"/><text variable=\"page\"/></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\"><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><group delimiter=\", \"><group delimiter=\" \"><text macro=\"author-short\"/><text macro=\"year-date\"/></group><group><label variable=\"locator\" form=\"short\"/><text variable=\"locator\"/></group></group></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"4\" et-al-use-first=\"1\"><sort><key macro=\"author\"/><key variable=\"title\"/></sort><layout><text macro=\"author\" suffix=\",\"/><date variable=\"issued\" prefix=\" \" suffix=\".\"><date-part name=\"year\"/></date><choose><if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><group prefix=\" \" delimiter=\" \" suffix=\",\"><text macro=\"title\"/><text macro=\"edition\"/><text macro=\"editor\"/></group><text prefix=\" \" suffix=\".\" macro=\"publisher\"/></if><else-if type=\"chapter paper-conference\" match=\"any\"><text macro=\"title\" prefix=\" \" suffix=\".\"/><group prefix=\" \" delimiter=\" \"><text term=\"in\" text-case=\"capitalize-first\"/><text macro=\"editor\"/><text variable=\"container-title\" font-style=\"italic\" suffix=\".\"/><text variable=\"collection-title\" suffix=\".\"/><text variable=\"event\" suffix=\".\"/><group suffix=\".\" delimiter=\", \"><text macro=\"publisher\" prefix=\" \"/><text macro=\"pages\"/></group></group></else-if><else-if type=\"thesis\"><group prefix=\" \" suffix=\".\" delimiter=\". \"><text macro=\"title\"/><text variable=\"genre\"/><text macro=\"publisher\"/></group></else-if><else><group suffix=\".\"><text macro=\"title\" prefix=\" \"/><text macro=\"editor\" prefix=\" \"/></group><group prefix=\" \" suffix=\".\"><text variable=\"container-title\" font-style=\"italic\"/><group prefix=\", \"><text variable=\"volume\"/><text variable=\"issue\" prefix=\"(\" suffix=\")\"/></group><group prefix=\", \"><label variable=\"page\" form=\"short\"/><text variable=\"page\"/></group></group></else></choose><text prefix=\" \" macro=\"access\" suffix=\".\"/></layout></bibliography></style>`\n","export default `<?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=\"sort-only\" page-range-format=\"minimal\"><info><title>Vancouver</title><id>http://www.zotero.org/styles/vancouver</id><link href=\"http://www.zotero.org/styles/vancouver\" rel=\"self\"/><link href=\"http://www.nlm.nih.gov/bsd/uniform_requirements.html\" rel=\"documentation\"/><author><name>Michael Berkowitz</name><email>mberkowi@gmu.edu</email></author><contributor><name>Sean Takats</name><email>stakats@gmu.edu</email></contributor><contributor><name>Sebastian Karcher</name></contributor><category citation-format=\"numeric\"/><category field=\"medicine\"/><summary>Vancouver style as outlined by International Committee of Medical Journal Editors Uniform Requirements for Manuscripts Submitted to Biomedical Journals: Sample References</summary><updated>2014-09-06T16:03:01+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\"><date form=\"text\" delimiter=\" \"><date-part name=\"year\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"day\"/></date><terms><term name=\"collection-editor\" form=\"long\"><single>editor</single><multiple>editors</multiple></term><term name=\"presented at\">presented at</term><term name=\"available at\">available from</term><term name=\"section\" form=\"short\">sect.</term></terms></locale><locale xml:lang=\"fr\"><date form=\"text\" delimiter=\" \"><date-part name=\"day\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"year\"/></date></locale><macro name=\"author\"><names variable=\"author\"><name sort-separator=\" \" initialize-with=\"\" name-as-sort-order=\"all\" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\", \"/><substitute><names variable=\"editor\"/></substitute></names></macro><macro name=\"editor\"><names variable=\"editor\" suffix=\".\"><name sort-separator=\" \" initialize-with=\"\" name-as-sort-order=\"all\" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\", \"/></names></macro><macro name=\"chapter-marker\"><choose><if type=\"chapter paper-conference entry-dictionary entry-encyclopedia\" match=\"any\"><text term=\"in\" text-case=\"capitalize-first\"/></if></choose></macro><macro name=\"publisher\"><choose><if type=\"article-journal article-magazine article-newspaper\" match=\"none\"><group delimiter=\": \" suffix=\";\"><choose><if type=\"thesis\"><text variable=\"publisher-place\" prefix=\"[\" suffix=\"]\"/></if><else-if type=\"speech\"/><else><text variable=\"publisher-place\"/></else></choose><text variable=\"publisher\"/></group></if></choose></macro><macro name=\"access\"><choose><if variable=\"URL\"><group delimiter=\": \"><text term=\"available at\" text-case=\"capitalize-first\"/><text variable=\"URL\"/></group></if></choose></macro><macro name=\"accessed-date\"><choose><if variable=\"URL\"><group prefix=\"[\" suffix=\"]\" delimiter=\" \"><text term=\"cited\" text-case=\"lowercase\"/><date variable=\"accessed\" form=\"text\"/></group></if></choose></macro><macro name=\"container-title\"><choose><if type=\"article-journal article-magazine chapter paper-conference article-newspaper review review-book entry-dictionary entry-encyclopedia\" match=\"any\"><group suffix=\".\" delimiter=\" \"><choose><if type=\"article-journal review review-book\" match=\"any\"><text variable=\"container-title\" form=\"short\" strip-periods=\"true\"/></if><else><text variable=\"container-title\" strip-periods=\"true\"/></else></choose><choose><if variable=\"URL\"><text term=\"internet\" prefix=\"[\" suffix=\"]\" text-case=\"capitalize-first\"/></if></choose></group><text macro=\"edition\" prefix=\" \"/></if><else-if type=\"bill legislation\" match=\"any\"><group delimiter=\", \"><group delimiter=\". \"><text variable=\"container-title\"/><group delimiter=\" \"><text term=\"section\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"section\"/></group></group><text variable=\"number\"/></group></else-if><else-if type=\"speech\"><group delimiter=\": \" suffix=\";\"><group delimiter=\" \"><text variable=\"genre\" text-case=\"capitalize-first\"/><text term=\"presented at\"/></group><text variable=\"event\"/></group></else-if><else><group delimiter=\", \" suffix=\".\"><choose><if variable=\"collection-title\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose><text variable=\"container-title\"/></group></else></choose></macro><macro name=\"title\"><text variable=\"title\"/><choose><if type=\"article-journal article-magazine chapter paper-conference article-newspaper review review-book entry-dictionary entry-encyclopedia\" match=\"none\"><choose><if variable=\"URL\"><text term=\"internet\" prefix=\" [\" suffix=\"]\" text-case=\"capitalize-first\"/></if></choose><text macro=\"edition\" prefix=\". \"/></if></choose><choose><if type=\"thesis\"><text variable=\"genre\" prefix=\" [\" suffix=\"]\"/></if></choose></macro><macro name=\"edition\"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" suffix=\".\"/></else></choose></macro><macro name=\"date\"><choose><if type=\"article-journal article-magazine article-newspaper review review-book\" match=\"any\"><group suffix=\";\" delimiter=\" \"><date variable=\"issued\" form=\"text\"/><text macro=\"accessed-date\"/></group></if><else-if type=\"bill legislation\" match=\"any\"><group delimiter=\", \"><date variable=\"issued\" delimiter=\" \"><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"day\"/></date><date variable=\"issued\"><date-part name=\"year\"/></date></group></else-if><else-if type=\"report\"><date variable=\"issued\" delimiter=\" \"><date-part name=\"year\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/></date><text macro=\"accessed-date\" prefix=\" \"/></else-if><else-if type=\"patent\"><group suffix=\".\"><group delimiter=\", \"><text variable=\"number\"/><date variable=\"issued\"><date-part name=\"year\"/></date></group><text macro=\"accessed-date\" prefix=\" \"/></group></else-if><else-if type=\"speech\"><group delimiter=\"; \"><group delimiter=\" \"><date variable=\"issued\" delimiter=\" \"><date-part name=\"year\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"day\"/></date><text macro=\"accessed-date\"/></group><text variable=\"event-place\"/></group></else-if><else><group suffix=\".\"><date variable=\"issued\"><date-part name=\"year\"/></date><text macro=\"accessed-date\" prefix=\" \"/></group></else></choose></macro><macro name=\"pages\"><choose><if type=\"article-journal article-magazine article-newspaper review review-book\" match=\"any\"><text variable=\"page\" prefix=\":\"/></if><else-if type=\"book\" match=\"any\"><text variable=\"number-of-pages\" prefix=\" \"/><choose><if is-numeric=\"number-of-pages\"><label variable=\"number-of-pages\" form=\"short\" prefix=\" \" plural=\"never\"/></if></choose></else-if><else><group prefix=\" \" delimiter=\" \"><label variable=\"page\" form=\"short\" plural=\"never\"/><text variable=\"page\"/></group></else></choose></macro><macro name=\"journal-location\"><choose><if type=\"article-journal article-magazine review review-book\" match=\"any\"><text variable=\"volume\"/><text variable=\"issue\" prefix=\"(\" suffix=\")\"/></if></choose></macro><macro name=\"collection-details\"><choose><if type=\"article-journal article-magazine article-newspaper review review-book\" match=\"none\"><choose><if variable=\"collection-title\"><group delimiter=\" \" prefix=\"(\" suffix=\")\"><names variable=\"collection-editor\" suffix=\".\"><name sort-separator=\" \" initialize-with=\"\" name-as-sort-order=\"all\" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\", \"/></names><group delimiter=\"; \"><text variable=\"collection-title\"/><group delimiter=\" \"><label variable=\"volume\" form=\"short\"/><text variable=\"volume\"/></group></group></group></if></choose></if></choose></macro><macro name=\"report-details\"><choose><if type=\"report\"><text variable=\"number\" prefix=\"Report No.: \"/></if></choose></macro><citation collapse=\"citation-number\"><sort><key variable=\"citation-number\"/></sort><layout prefix=\"(\" suffix=\")\" delimiter=\",\"><text variable=\"citation-number\"/></layout></citation><bibliography et-al-min=\"7\" et-al-use-first=\"6\" second-field-align=\"flush\"><layout><text variable=\"citation-number\" suffix=\". \"/><group delimiter=\". \" suffix=\". \"><text macro=\"author\"/><text macro=\"title\"/></group><group delimiter=\" \" suffix=\". \"><group delimiter=\": \"><text macro=\"chapter-marker\"/><group delimiter=\" \"><text macro=\"editor\"/><text macro=\"container-title\"/></group></group><text macro=\"publisher\"/><group><text macro=\"date\"/><text macro=\"journal-location\"/><text macro=\"pages\"/></group></group><text macro=\"collection-details\" suffix=\". \"/><text macro=\"report-details\" suffix=\". \"/><text macro=\"access\"/></layout></bibliography></style>`\n","import rehypeCitationGenerator from './generator.js'\n// @ts-ignore\nimport Cite from './cite.js'\nimport mla from '../styles/mla.js'\nimport chicago from '../styles/chicago.js'\nimport harvard1 from '../styles/harvard1.js'\nimport vancouver from '../styles/vancouver.js'\n\nconst config = Cite.plugins.config.get('@csl')\n\n// Citation.js comes with apa\nconfig.templates.add('vancouver', vancouver)\nconfig.templates.add('harvard1', harvard1)\nconfig.templates.add('mla', mla)\nconfig.templates.add('chicago', chicago)\n\nconst rehypeCitation = rehypeCitationGenerator(Cite)\n\nexport default rehypeCitation\n"],"names":["citationRE","fullCitationRE","_wrapRegExp","prefix","citekey","explicitLocator","explicitLocatorInSuffix","suffix","locatorRE","locatorLabels","book","chapter","column","figure","folio","issue","line","note","opus","page","paragraph","part","section","verse","volume","parseCitation","regexMatch","entries","isComposite","fullCitation","inTextSuppressAuthor","inTextCitation","optionalSuffix","undefined","citationPart","split","match","exec","trim","thisCitation","id","groups","replace","locator","label","rawPrefix","endsWith","substring","length","rawSuffix","suffixToParse","containsLocator","parseSuffix","push","_extends","retValue","natural","toLowerCase","startsWith","substr","readFile","path","isValidHttpUrl","response","fetch","text","error","Error","then","fs","readFileSync","str","url","URL","_","protocol","getBibliography","options","file","bibliography","frontmatterBibliography","getFrontmatterField","i","join","cwd","loadCSL","Cite","format","root","config","plugins","get","Object","keys","templates","data","includes","cslName","Math","random","toString","slice","cslPath","add","err","loadLocale","locales","localePath","xmlLangRe","localeName","getCitationFormat","citeproc","info","cslXml","dataObj","children","node","find","x","citationFormat","getSortedRelevantRegistryItems","relevantIds","sorted","res","item","registry","reflist","index","isSameAuthor","item2","authorList","ref","author","authorList2","family","fieldName","_file$data$astro","sources","matter","frontmatter","astro","source","getBibliographyEntryText","originalItemIds","mylist","updateItems","bibOutput","makeBibliography","entryText","console","htmlToHast","html","p5ast","parseFragment","fromParse5","genCitation","mode","citationIdRoot","citationId","citationPre","inlineClass","linkCitations","showTooltips","tooltipAttribute","key","c","processCitationCluster","citationID","citationItems","properties","noteIndex","citationText","ids","map","tooltipMap","forEach","entry","wrapperTooltipAttr","e","refIds","output","d","refId","tooltipAttr","results","opt","sort_citations","citeMatch","ambig","indexOf","issued","year","startPos","start","rest","genBiblioNode","params","bibBody","biblioNode","filter","_node$properties","className","entry_ids","genFootnoteSection","citationDict","footnoteArray","footnoteSection","list","type","tagName","value","oldFootnoteList","n","idx","oldId","href","dataFootnoteBackref","ariaLabel","liNode","aNode","newfootnoteSection","dataFootnotes","defaultCiteFormat","permittedTags","idRoot","rehypeCitationGenerator","tree","_options$inlineBibCla","bibtexFile","inputCiteformat","csl","noCite","inputLang","lang","citeFormat","citations","generateGraph","citationIds","engine","xclass","parsedEntries","visit","parent","citeStartIdx","citeEndIdx","newChildren","citeItem","citedText","citedTextNode","mergedIds","concat","suppressBibliography","inlineBibClass","bilioInserted","biblioMap","_options$inlineBibCla2","_node$properties2","citekeys","pop","inlineBibNode","aBibNode","class","splice","fnArray","nextNode","newFootnoteSection","currentVersion","log","retrieveVersion","versnum","image","constructor","JSON","parse","undo","number","retrieveLastVersion","save","stringify","_options","formats","types","styles","wrapperTypes","validateOutputOptions","TypeError","style","append","prepend","test","validateOptions","maxChainLength","forceType","strict","target","defaultOptions","validate","assign","typeOf","thing","name","dataTypeOf","Array","isArray","applyGraph","graph","_graph","findIndex","removeGraph","logger","_output","level","scope","msg","_log","_levels","_console","Console","process","stderr","dataTypes","unregExts","parseNativeTypes","input","dataType","every","matchType","typeList","predicate","extensions","addTypeParser","extends","extend","debug","object","parentTypeParser","hasTypeParser","prototype","hasOwnProperty","call","removeTypeParser","typeLists","listTypeParser","treeTypeParser","attachNode","typeMatcher","_defineProperty","obj","_toPropertyKey","defineProperty","enumerable","configurable","writable","t","_toPrimitive","r","Symbol","toPrimitive","String","Number","TypeParser","validateDataType","validDataTypes","RangeError","validateParseType","RegExp","validateTokenList","tokenList","validatePropertyConstraint","propertyConstraint","validateElementConstraint","elementConstraint","validateExtends","parseTokenList","token","trimInput","testTokens","parsePropertyConstraint","constraints","props","some","prop","parseElementConstraint","constraint","parsePredicate","bind","getCombinedPredicate","predicates","getDataType","DataParser","parser","async","FormatParser","parsers","parseType","typeParser","dataParser","parseAsync","asyncDataParser","validateFormat","ownKeys","getOwnPropertySymbols","o","getOwnPropertyDescriptor","apply","_objectSpread","arguments","getOwnPropertyDescriptors","defineProperties","NAME","NAME_LIST","DATE","TYPE","entryTypes","article","bill","broadcast","classic","collection","dataset","document","event","graphic","hearing","interview","legal_case","legislation","manuscript","motion_picture","musical_score","pamphlet","patent","performance","periodical","personal_communication","post","regulation","report","review","software","song","speech","standard","thesis","treaty","webpage","dissertation","fieldTypes","chair","compiler","composer","contributor","curator","director","editor","guest","host","interviewer","illustrator","narrator","organizer","performer","producer","recipient","translator","accessed","container","submitted","categories","custom","language","journalAbbreviation","shortTitle","abstract","annote","archive","archive_collection","archive_location","authority","dimensions","division","DOI","edition","genre","ISBN","ISSN","jurisdiction","keyword","medium","PMCID","PMID","printing","publisher","references","scale","status","supplement","title","version","correctName","bestGuessConversions","literal","given","ORCID","orcid","_ORCID","_orcid","parseName","correctNameList","nameList","names","Boolean","correctDateParts","dateParts","isNaN","parseInt","correctDate","date","dp","range","correctType","correctField","fieldType","parseFloat","parseCsl","clean","field","correction","upgradeCsl","downgradeCsl","deepCopy","seen","Set","has","copy","delete","conversions","lib","sign","evenRound","floor","round","createNumberConversion","bitLength","typeOpts","unsigned","lowerBound","pow","upperBound","moduloVal","moduloBitLength","moduloBound","V","opts","enforceRange","isFinite","abs","clamp","val","treatNullAsEmptyString","codePointAt","S","U","charCodeAt","fromCodePoint","a","b","Date","module","exports","mixin","getOwnPropertyNames","wrapperSymbol","implSymbol","wrapperForImpl","impl","implForWrapper","wrapper","PROCESSING_OPTIONS","TRANSITIONAL","NONTRANSITIONAL","normalize","s","findStatus","end","mappingTable","mid","regexAstralSymbols","countSymbols","string","mapChars","domain_name","useSTD3","processing_option","hasError","processed","len","codePoint","combiningMarksRegex","validateLabel","punycode","toUnicode","search","processing","result","labels","validation","toASCII","verifyDnsLength","l","total","domain","PROCESSING_OPTIONS_1","specialSchemes","ftp","gopher","http","https","ws","wss","failure","ucs2","decode","at","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","scheme","isSpecial","defaultPort","percentEncode","hex","toUpperCase","utf8PercentEncode","buf","Buffer","utf8PercentDecode","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","parseIPv4Number","R","charAt","regex","parseIPv4","parts","numbers","ipv4","counter","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","temp","serializeIPv6","seqResult","findLongestZeroSequence","ignore0","separator","parseHost","isSpecialArg","parseOpaqueHost","asciiDomain","tr46","ipv4Host","decoded","arr","maxIdx","maxLen","currStart","currLen","serializeHost","trimControlChars","trimTabAndNewline","shortenPath","isNormalizedWindowsDriveLetter","includesCredentials","username","password","cannotHaveAUsernamePasswordPort","cannotBeABaseURL","URLStateMachine","base","encodingOverride","stateOverride","parseError","port","query","fragment","state","atFlag","arrFlag","passwordTokenSeenFlag","ret","parseSchemeStart","parseScheme","parseNoScheme","parseSpecialRelativeOrAuthority","parsePathOrAuthority","parseRelative","parseRelativeSlash","parseSpecialAuthoritySlashes","parseSpecialAuthorityIgnoreSlashes","parseAuthority","encodedCodePoints","parseHostName","parsePort","fileOtherwiseCodePoints","parseFile","parseFileSlash","parseFileHost","parsePathStart","parsePath","shift","parseCannotBeABaseURLPath","parseQuery","serializeURL","excludeFragment","serializeOrigin","tuple","serializeURLOrigin","parseURL","basicURLParse","usm","baseURL","setTheUsername","setThePassword","serializeInteger","integer","implementation","URLImpl","constructorArgs","parsedBase","parsedURL","_url","v","origin","hostname","pathname","hash","toJSON","utils","args","setup","is","set","Impl","create","privateData","interface","expose","Window","Worker","require$$0","require$$1","Readable","Stream","BUFFER","Blob","blobParts","buffers","element","ArrayBuffer","isView","from","byteOffset","byteLength","size","Promise","resolve","arrayBuffer","ab","stream","readable","_read","relativeStart","relativeEnd","max","min","span","slicedBuffer","blob","toStringTag","FetchError","message","systemError","code","errno","captureStackTrace","convert","require","INTERNALS","PassThrough","Body","body","_this","_ref","_ref$size","_ref$timeout","timeout","isURLSearchParams","isBlob","isBuffer","disturbed","on","bodyUsed","consumeBody","ct","headers","json","_this2","reject","textConverted","_this3","convertBody","mixIn","proto","desc","_this4","alloc","accum","accumBytes","abort","resTimeout","setTimeout","chunk","clearTimeout","charset","getAll","sort","clone","instance","p1","p2","getBoundary","pipe","extractContentType","getTotalBytes","getLengthSync","_lengthRetrievers","hasKnownLength","writeToStream","dest","write","global","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","MAP","Headers","init","rawHeaders","raw","headerNames","headerName","method","iterator","pairs","pair","callback","thisArg","getHeaders","_pairs$i","createHeadersIterator","values","kind","k","INTERNAL","HeadersIteratorPrototype","setPrototypeOf","next","getPrototypeOf","_INTERNAL","done","exportNodeCompatibleHeaders","__proto__","hostHeaderKey","createHeadersLenient","INTERNALS$1","STATUS_CODES","Response","contentType","statusText","ok","redirected","INTERNALS$2","Url","whatwgUrl","parse_url","format_url","urlStr","streamDestructionSupported","isRequest","isAbortSignal","signal","Request","inputBody","redirect","follow","agent","getNodeRequestOptions","request","contentLengthValue","totalBytes","AbortError","URL$1","PassThrough$1","isDomainOrSubdomain","destination","original","orig","isSameProtocol","send","destroyStream","emit","aborted","abortAndFinalize","finalize","req","reqTimeout","addEventListener","removeEventListener","once","socket","fixResponseChunkedTransferBadEnding","addListener","hadError","hasDataListener","listenerCount","isRedirect","statusCode","location","locationURL","requestOpts","response_options","statusMessage","codings","zlibOptions","flush","zlib","Z_SYNC_FLUSH","finishFlush","createGunzip","createInflate","createInflateRaw","createBrotliDecompress","errorCallback","destroy","serializeHeaders","deserializeHeaders","old","serializeRequest","credentials","cache","referrer","referrerPolicy","integrity","keepalive","deserializeRequest","resource","serializeResponse","deserializeResponse","bodyError","createStream","errors","serializeError","deserializeError","parseBodyType","parseBody","Transform","read","shared","execFileSync","_fetch","sendMessage","execPath","__dirname","windowsHide","maxBuffer","Infinity","shell","_body","_bodyError","SyncRequest","defineBuffer","checkBody","SyncResponse","defineBodyError","_super","self","catch","wrapFetchForNode","u","fetchNode","context","fetchFn","default","isBrowser","navigator","fetchPolyfill","userAgent","release","fetchId","Register","remove","Grammar","rules","defaultState","mainRule","lexer","consumeRule","matchEndOfFile","matchToken","consumeToken","optional","got","SyntaxError","formatError","rule","createConditionEval","condition","conditionEval","parsePropStatement","toSource","inputProp","outputProp","toTarget","when","createConverter","Translator","CONVERT_TO_SOURCE","converter","outputData","converted","cause","convertToSource","convertToTarget","CONVERT_TO_TARGET","prepareParseGraph","reduce","array","last","count","ChainParser","iteration","iterate","typeInfo","getTypeInfo","outputs","chain","parseData","chainLink","chainAsync","parseDataAsync","chainLinkAsync","asyncParsers","nativeParsers","flat","@invalid","nativeAsyncParsers","all","dataAsync","hasDataParser","addDataParser","removeDataParser","listDataParser","formatParser","asyncData","util","parseInput","getIds","addAsync","parseInputAsync","setAsync","reset","getLabel","getComparisonValue","getName","num","compareProp","entryA","entryB","flip","getSortCallback","formatter","register","formatData","parsedOptions","styleType","styleFormat","newStyle","newType","formatOptions","template","_newOptions","createElement","tmp","innerHTML","firstChild","promise","staticMethods","dict","entryName","bibliographyContainer","listItem","htmlDict","wr_start","wr_end","en_start","en_end","ul_start","ul_end","li_start","li_end","textDict","configs","registers","indices","mainIndex","typeIndex","typePlugins","typePlugin","substituters","parseJSON","subst","textContent","empty","jquery","jQuery","HTMLElement","appendCommas","getJsonObject","src","getJsonValue","getJson","warn","ndjson","nameProps","person","firstname","lastname","firstName","lastName","identifiers","journalIdentifiers","idProps","upperCaseProp","identifier","typeMap","booklet","proceedings","mastersthesis","inbook","incollection","conference","inproceedings","manual","misc","online","phdthesis","techreport","unpublished","quickscrapeSpecificProps","generalProps","reviewer","keywords","published","parseDate","journal","firstpage","pages","lastpage","link","cid","parseContentMine","parseBibJson","scraperLinks","authorNameFields","links","authors","records","metadata","factory","moo","this","hasSticky","sticky","isRegExp","isObject","reEscape","reGroups","re","reCapture","reUnion","regexps","regexpOrLiteral","ignoreCase","multiline","pad","lastNLines","numLines","position","lineBreaks","lastIndexOf","startPosition","objectToRules","j","include","ruleOptions","arrayToRules","defaultType","fallback","shouldThrow","toRules","spec","defaultErrorRule","compileRules","hasStates","errorRule","fast","fastAllowed","unicodeFlag","word","unicode","pat","regexp","groupCount","fallbackRule","flags","combined","compile","Lexer","checkStateGroup","g","compileStates","states","$all","ruleMap","included","newRules","newRule","fastKeys","keywordTransform","isMap","Map","reverseMap","tokenType","keywordList","startState","stack","col","queuedToken","queuedText","queuedThrow","setState","popState","pushState","eat","_getGroup","tokenToString","queuedGroup","_token","group","lastIndex","offset","matchNL","nl","LexerIterator","numLinesAround","firstDisplayedLine","lastDisplayedLine","lastLineDigits","displayedLines","errorLines","lineNo","freeze","biblatexTypes","mvbook","bookinbook","mvcollection","mvproceedings","reference","mvreference","inreference","artwork","audio","legal","letter","movie","music","video","electronic","www","bibtexTypes","required","biblatex","bibtex","addendum","afterword","annotation","annotator","authortype","bookauthor","bookpagination","booksubtitle","booktitle","booktitleaddon","commentator","doi","editora","editorb","editorc","editortype","editoratype","editorbtype","editorctype","eid","entrysubtype","eprint","eprintclass","eprinttype","eventdate","eventtitle","eventtitleaddon","foreword","holder","howpublished","indextitle","institution","introduction","isan","isbn","ismn","isrn","issn","issuesubtitle","issuetitle","iswc","journalsubtitle","journaltitle","library","mainsubtitle","maintitle","maintitleaddon","month","nameaddon","organization","origdate","origlanguage","origlocation","origpublisher","origtitle","pagetotal","pagination","pubstate","reprinttitle","series","shortauthor","shorteditor","shorthand","shorthandintro","shortjournal","shortseries","shorttitle","subtitle","titleaddon","urldate","venue","volumes","crossref","entryset","execute","gender","langid","langidopts","indexsorttitle","presort","related","relatedoptions","relatedtype","relatedstring","sortkey","sortname","sortshorthand","sorttitle","sortyear","xdata","xref","namea","nameb","namec","nameatype","namebtype","namectype","lista","listb","listc","listd","liste","listf","usera","userb","userc","userd","usere","userf","verba","verbb","verbc","archiveprefix","pdf","primaryclass","school","numpages","pmid","pmcid","diacritics","H","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","mathCommands","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","constants","sentenceCase","useIdAsLabel","checkLabel","asciiOnly","biber","annotationMarker","namedAnnotationMarker","whitespace","comment","main","junk","otherEntryType","dataEntryType","otherEntryContents","lbrace","dataEntryContents","comma","fields","equals","quote","rbrace","quotedLiteral","bracedLiteral","delimiters","bibtexGrammar","Main","oldToken","Entry","openBrace","strings","entryBody","closeBrace","EntryBody","annotationField","annotationName","annotations","Field","Expression","ExpressionPart","QuoteString","BracketString","Text","bibTxtRegex","splitEntries","parseEntry","splitPairs","splitPair","parseBibTxtEntry","out","parseBibTxt","stopWords","unsafeChars","isLabelSafe","formatLabelFromId","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","EVENT_TITLE","addon","HOW_PUBLISHED","howPublished","KEYWORDS","NAMES","NAMES_ORCID","inputName","_orcid$item","outputName","PAGES","STANDARD_NUMBERS","STATUS","TITLE","nonSpec","formatDate","S2ID","aliases","subtype","typeKey","sourceType","subType","targetType","BOOK","BOOK_PART","COLLECTION","COLLECTION_PART","PROCEEDINGS","PROCEEDINGS_PART","PERIODICAL_PART","TITLE_MAP","shortand","shortandintro","targets","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","_parse","_format","_spec$convertToSource","parseBibtex","formatBibtex","getStringCase","formatNameParts","piece","hyphenated","orderNameParts","orderGiven","undecided","upperCase","unshift","orderNamePieces","pieces","commandBegin","command","mathShift","stringLiteral","namesLiteral","and","hyphen","listLiteral","separatedLiteral","colon","semicolon","itemCount","mathLiteral","script","environment","commandEnd","flattenConsString","applyFormatting","valueGrammar","StringNames","Name","NamePiece","NameToken","StringList","StringSeparated","StringVerbatim","StringUri","uri","decodeURI","encodeURI","StringTitleCase","Annotations","Annotation","_this$state","partlyLowercase","topLevel","protectCase","MathString","char","formatName","ligature","afterPunctuation","_this$state2","first","otherCharacters","restLowerCase","Command","commandToken","diacritic","func","arity","Env","EnclosedEnv","beginEnv","endEnv","singleLanguageIsEnglish","isEnglish","languages","getMainRule","option","getLexerState","parseAnnotation","requirements","problems","missing","problem","parseEntryValues","parseValue","property","mapBiblatex","mapBibtex","parseEntries","parseBibtxt","mathUnicode","UNSAFE_UNICODE","DIACRITIC_PATTERN","LONE_DIACRITIC_PATTERN","listDelimiters","separated","richTextMappings","sup","sub","escapeCharacter","escapeValue","subject","formatRichText","closingTags","tokens","formatTitle","formatSingleValue","valueType","formatList","listType","delimiter","formatted","formatAnnotationValue","formatAnnotation","itemValue","formatEntryValues","formatValue","formatField","formatEntry","mapper","bibtxt","formatBibtxt","defaultLocales","defaultTemplates","apa","proxied","for","getWrapperProxy","proxy","sys","wrapBibliographyEntry","postfix","system_id","CSL","Output","Formats","retrieveLocale","locale","unnormalised","engines","fetchEngine","styleXml","retrieveItem","engineHash","Engine","prepareEngine","items","store","setOutputFormat","development_extensions","wrap_url_and_doi","getAttributedEntry","getPrefixedEntry","getAffix","affix","nosort","sortedIds","hyperlinks","bibstart","bibend","asEntryArray","prepareCiteItem","prepareCitation","citation","prepareCitations","before","citationsPre","after","citationsPost","rebuildProcessorState","timestampTag","timestamp","yaml","DEFAULT_SCHEMA","compiledTypeMap","scalar","Type","construct","instanceOf","represent","toISOString","CFF_SCHEMA","implicit","explicit","load","dump","schema","TYPES_TO_TARGET","art","audiovisual","blog","catalogue","database","dictionary","encyclopedia","generic","grant","multimedia","serial","slides","statute","website","TYPES_TO_SOURCE","ENTITY_PROPS","entity","PROP_CONVERTERS","city","region","country","place","UTC","SHARED_PROPS","newIdentifiers","fill","term","MAIN_PROPS","REF_PROPS","nameFallback","department","mainTranslator","refTranslator","CFF_VERSION","addId","_cff_mainReference","preferredCitation","preferred","cffVersion","preferredIndex","mainRef","cff","CiteCore","vancouver","harvard1","mla","chicago","rehypeCitation"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbD,IAAIK,kBAAkB,GAAG;AACvBC,EAAAA,YAAY,EAAE,CAAC;AACfC,EAAAA,eAAe,EAAE,CAAA;AACnB,CAAC,CAAA;AAED,SAASC,SAASA,CAAC9f,GAAG,EAAE;AAAA;EACtB,OAAOA,GAAG,CAACpC,KAAK,CAAC,QAAQ,CAAC,CAAC0I,GAAG,CAAC,UAAUyZ,CAAC,EAAE;AAAE,IAAA,OAAOA,CAAC,CAACD,SAAS,CAAC,KAAK,CAAC,CAAA;AAAG,GAAA,CAAC,CAAClf,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC5F,CAAA;AAEA,SAASof,UAAUA,CAACzB,GAAG,EAAE;EACvB,IAAI7W,KAAK,GAAG,CAAC,CAAA;AACb,EAAA,IAAIuY,GAAG,GAAGC,YAAY,CAACzhB,MAAM,GAAG,CAAC,CAAA;EAEjC,OAAOiJ,KAAK,IAAIuY,GAAG,EAAE;AACnB,IAAA,IAAIE,GAAG,GAAGxe,IAAI,CAAC0b,KAAK,CAAC,CAAC3V,KAAK,GAAGuY,GAAG,IAAI,CAAC,CAAC,CAAA;AAEvC,IAAA,IAAIlS,MAAM,GAAGmS,YAAY,CAACC,GAAG,CAAC,CAAA;AAC9B,IAAA,IAAIpS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIwQ,GAAG,IAAIxQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIwQ,GAAG,EAAE;AAC9C,MAAA,OAAOxQ,MAAM,CAAA;KACd,MAAM,IAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGwQ,GAAG,EAAE;MAC7B0B,GAAG,GAAGE,GAAG,GAAG,CAAC,CAAA;AACnB,KAAK,MAAM;MACLzY,KAAK,GAAGyY,GAAG,GAAG,CAAC,CAAA;AAChB,KAAA;AACF,GAAA;AAED,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AAEA,IAAIC,kBAAkB,GAAG,iCAAiC,CAAA;AAE1D,SAASC,YAAYA,CAACC,MAAM,EAAE;EAC5B,OAAOA,MAAAA;AACT;AAAA,GACKniB,OAAO,CAACiiB,kBAAkB,EAAE,GAAG,CAAA;AACpC;AAAA,GACK3hB,MAAM,CAAA;AACX,CAAA;AAEA,SAAS8hB,QAAQA,CAACC,WAAW,EAAEC,OAAO,EAAEC,iBAAiB,EAAE;EACzD,IAAIC,QAAQ,GAAG,KAAK,CAAA;EACpB,IAAIC,SAAS,GAAG,EAAE,CAAA;AAElB,EAAA,IAAIC,GAAG,GAAGR,YAAY,CAACG,WAAW,CAAC,CAAA;EACnC,KAAK,IAAI7f,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkgB,GAAG,EAAE,EAAElgB,CAAC,EAAE;AAC5B,IAAA,IAAImgB,SAAS,GAAGN,WAAW,CAAC/B,WAAW,CAAC9d,CAAC,CAAC,CAAA;AAC1C,IAAA,IAAI6Z,MAAM,GAAGwF,UAAU,CAACc,SAAS,CAAC,CAAA;IAElC,QAAQtG,MAAM,CAAC,CAAC,CAAC;AACf,MAAA,KAAK,YAAY;AACfmG,QAAAA,QAAQ,GAAG,IAAI,CAAA;AACfC,QAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAACiC,SAAS,CAAC,CAAA;AAC5C,QAAA,MAAA;AACF,MAAA,KAAK,SAAS;AACZ,QAAA,MAAA;AACF,MAAA,KAAK,QAAQ;AACXF,QAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAAChK,KAAK,CAAC9C,MAAM,EAAEyI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1D,QAAA,MAAA;AACF,MAAA,KAAK,WAAW;AACd,QAAA,IAAIkG,iBAAiB,KAAKf,kBAAkB,CAACC,YAAY,EAAE;AACzDgB,UAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAAChK,KAAK,CAAC9C,MAAM,EAAEyI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACpE,SAAS,MAAM;AACLoG,UAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAACiC,SAAS,CAAC,CAAA;AAC7C,SAAA;AACD,QAAA,MAAA;AACF,MAAA,KAAK,OAAO;AACVF,QAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAACiC,SAAS,CAAC,CAAA;AAC5C,QAAA,MAAA;AACF,MAAA,KAAK,wBAAwB;AAC3B,QAAA,IAAIL,OAAO,EAAE;AACXE,UAAAA,QAAQ,GAAG,IAAI,CAAA;AACfC,UAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAACiC,SAAS,CAAC,CAAA;AACtD,SAAS,MAAM;AACLF,UAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAAChK,KAAK,CAAC9C,MAAM,EAAEyI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,SAAA;AACD,QAAA,MAAA;AACF,MAAA,KAAK,uBAAuB;AAC1B,QAAA,IAAIiG,OAAO,EAAE;AACXE,UAAAA,QAAQ,GAAG,IAAI,CAAA;AAChB,SAAA;AAEDC,QAAAA,SAAS,IAAI7O,MAAM,CAAC8M,aAAa,CAACiC,SAAS,CAAC,CAAA;AAC5C,QAAA,MAAA;AACH,KAAA;AACF,GAAA;EAED,OAAO;AACLR,IAAAA,MAAM,EAAEM,SAAS;AACjBjhB,IAAAA,KAAK,EAAEghB,QAAAA;GACR,CAAA;AACH,CAAA;AAEA,IAAII,mBAAmB,GAAG,mqFAAmqF,CAAA;AAE7rF,SAASC,aAAaA,CAAC3iB,KAAK,EAAEqiB,iBAAiB,EAAE;EAC/C,IAAIriB,KAAK,CAACe,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;AACjCf,IAAAA,KAAK,GAAG4iB,QAAQ,CAACC,SAAS,CAAC7iB,KAAK,CAAC,CAAA;AAElC,GAAA;EAED,IAAIsB,KAAK,GAAG,KAAK,CAAA;EAEjB,IAAImgB,SAAS,CAACzhB,KAAK,CAAC,KAAKA,KAAK,IACzBA,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAK,GAAI,IACtCA,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,KAAK,CAACA,KAAK,CAACI,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IACnDJ,KAAK,CAACiJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IACzBjJ,KAAK,CAAC8iB,MAAM,CAACJ,mBAAmB,CAAC,KAAK,CAAC,EAAE;AAC3CphB,IAAAA,KAAK,GAAG,IAAI,CAAA;AACb,GAAA;AAED,EAAA,IAAIkhB,GAAG,GAAGR,YAAY,CAAChiB,KAAK,CAAC,CAAA;EAC7B,KAAK,IAAIsC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkgB,GAAG,EAAE,EAAElgB,CAAC,EAAE;IAC5B,IAAI6Z,MAAM,GAAGwF,UAAU,CAAC3hB,KAAK,CAACogB,WAAW,CAAC9d,CAAC,CAAC,CAAC,CAAA;AAC7C,IAAA,IAAKygB,UAAU,KAAKzB,kBAAkB,CAACC,YAAY,IAAIpF,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,IACvE4G,UAAU,KAAKzB,kBAAkB,CAACE,eAAe,IACjDrF,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,WAAY,EAAE;AACxD7a,MAAAA,KAAK,GAAG,IAAI,CAAA;AACZ,MAAA,MAAA;AACD,KAAA;AACF,GAAA;EAED,OAAO;AACLtB,IAAAA,KAAK,EAAEA,KAAK;AACZsB,IAAAA,KAAK,EAAEA,KAAAA;GACR,CAAA;AACH,CAAA;AAEA,SAASyhB,UAAUA,CAACZ,WAAW,EAAEC,OAAO,EAAEC,iBAAiB,EAAE;EAC3D,IAAIW,MAAM,GAAGd,QAAQ,CAACC,WAAW,EAAEC,OAAO,EAAEC,iBAAiB,CAAC,CAAA;EAC9DW,MAAM,CAACf,MAAM,GAAGR,SAAS,CAACuB,MAAM,CAACf,MAAM,CAAC,CAAA;EAExC,IAAIgB,MAAM,GAAGD,MAAM,CAACf,MAAM,CAAC1iB,KAAK,CAAC,GAAG,CAAC,CAAA;AACrC,EAAA,KAAK,IAAI+C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2gB,MAAM,CAAC7iB,MAAM,EAAE,EAAEkC,CAAC,EAAE;IACtC,IAAI;MACF,IAAI4gB,UAAU,GAAGP,aAAa,CAACM,MAAM,CAAC3gB,CAAC,CAAC,CAAC,CAAA;AACzC2gB,MAAAA,MAAM,CAAC3gB,CAAC,CAAC,GAAG4gB,UAAU,CAACljB,KAAK,CAAA;MAC5BgjB,MAAM,CAAC1hB,KAAK,GAAG0hB,MAAM,CAAC1hB,KAAK,IAAI4hB,UAAU,CAAC5hB,KAAK,CAAA;KAChD,CAAC,OAAMgH,CAAC,EAAE;MACT0a,MAAM,CAAC1hB,KAAK,GAAG,IAAI,CAAA;AACpB,KAAA;AACF,GAAA;EAED,OAAO;AACL2gB,IAAAA,MAAM,EAAEgB,MAAM,CAAC1gB,IAAI,CAAC,GAAG,CAAC;IACxBjB,KAAK,EAAE0hB,MAAM,CAAC1hB,KAAAA;GACf,CAAA;AACH,CAAA;AAEA,IAAsB6hB,OAAA,GAAG,UAAShB,WAAW,EAAEC,OAAO,EAAEC,iBAAiB,EAAEe,eAAe,EAAE;EAC1F,IAAIJ,MAAM,GAAGD,UAAU,CAACZ,WAAW,EAAEC,OAAO,EAAEC,iBAAiB,CAAC,CAAA;EAChE,IAAIY,MAAM,GAAGD,MAAM,CAACf,MAAM,CAAC1iB,KAAK,CAAC,GAAG,CAAC,CAAA;AACrC0jB,EAAAA,MAAM,GAAGA,MAAM,CAAChb,GAAG,CAAC,UAASob,CAAC,EAAE;IAC9B,IAAI;AACF,MAAA,OAAOT,QAAQ,CAACO,OAAO,CAACE,CAAC,CAAC,CAAA;KAC3B,CAAC,OAAM/a,CAAC,EAAE;MACT0a,MAAM,CAAC1hB,KAAK,GAAG,IAAI,CAAA;AACnB,MAAA,OAAO+hB,CAAC,CAAA;AACT,KAAA;AACL,GAAG,CAAC,CAAA;AAEF,EAAA,IAAID,eAAe,EAAE;IACnB,IAAIE,KAAK,GAAGL,MAAM,CAACxf,KAAK,CAAC,CAAC,EAAEwf,MAAM,CAAC7iB,MAAM,GAAG,CAAC,CAAC,CAACmC,IAAI,CAAC,GAAG,CAAC,CAACnC,MAAM,CAAA;IAC/D,IAAIkjB,KAAK,CAACljB,MAAM,GAAG,GAAG,IAAIkjB,KAAK,CAACljB,MAAM,KAAK,CAAC,EAAE;MAC5C4iB,MAAM,CAAC1hB,KAAK,GAAG,IAAI,CAAA;AACpB,KAAA;AAED,IAAA,KAAK,IAAIgB,CAAC,GAAC,CAAC,EAAEA,CAAC,GAAG2gB,MAAM,CAAC7iB,MAAM,EAAE,EAAEkC,CAAC,EAAE;MACpC,IAAI2gB,MAAM,CAAC7iB,MAAM,GAAG,EAAE,IAAI6iB,MAAM,CAAC7iB,MAAM,KAAK,CAAC,EAAE;QAC7C4iB,MAAM,CAAC1hB,KAAK,GAAG,IAAI,CAAA;AACnB,QAAA,MAAA;AACD,OAAA;AACF,KAAA;AACF,GAAA;AAED,EAAA,IAAI0hB,MAAM,CAAC1hB,KAAK,EAAE,OAAO,IAAI,CAAA;AAC7B,EAAA,OAAO2hB,MAAM,CAAC1gB,IAAI,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,IAAAsgB,SAAwB,GAAG,UAASV,WAAW,EAAEC,OAAO,EAAE;EACxD,IAAIY,MAAM,GAAGD,UAAU,CAACZ,WAAW,EAAEC,OAAO,EAAEd,kBAAkB,CAACE,eAAe,CAAC,CAAA;EAEjF,OAAO;IACL+B,MAAM,EAAEP,MAAM,CAACf,MAAM;IACrB3gB,KAAK,EAAE0hB,MAAM,CAAC1hB,KAAAA;GACf,CAAA;AACH,CAAC,CAAA;AAED,IAAAkiB,oBAAiC,GAAGlC,kBAAkB,CAAA;;;;;;;;;AC5LtD,EAAA,MAAMmC,cAAc,GAAG;AACrBC,IAAAA,GAAG,EAAE,EAAE;AACPxhB,IAAAA,IAAI,EAAE,IAAI;AACVyhB,IAAAA,MAAM,EAAE,EAAE;AACVC,IAAAA,IAAI,EAAE,EAAE;AACRC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,EAAE,EAAE,EAAE;AACNC,IAAAA,GAAG,EAAE,GAAA;GACN,CAAA;AAED,EAAA,MAAMC,OAAO,GAAGxQ,MAAM,CAAC,SAAS,CAAC,CAAA;EAEjC,SAASwO,YAAYA,CAACrgB,GAAG,EAAE;IACzB,OAAOihB,QAAQ,CAACqB,IAAI,CAACC,MAAM,CAACviB,GAAG,CAAC,CAACvB,MAAM,CAAA;AACzC,GAAA;AAEA,EAAA,SAAS+jB,EAAEA,CAAC5S,KAAK,EAAE9G,GAAG,EAAE;AACtB,IAAA,MAAMhD,CAAC,GAAG8J,KAAK,CAAC9G,GAAG,CAAC,CAAA;AACpB,IAAA,OAAO6S,KAAK,CAAC7V,CAAC,CAAC,GAAGpI,SAAS,GAAGqU,MAAM,CAAC8M,aAAa,CAAC/Y,CAAC,CAAC,CAAA;AACvD,GAAA;EAEA,SAAS2c,YAAYA,CAAC3c,CAAC,EAAE;AACvB,IAAA,OAAOA,CAAC,IAAI,IAAI,IAAIA,CAAC,IAAI,IAAI,CAAA;AAC/B,GAAA;EAEA,SAAS4c,YAAYA,CAAC5c,CAAC,EAAE;AACvB,IAAA,OAAQA,CAAC,IAAI,IAAI,IAAIA,CAAC,IAAI,IAAI,IAAMA,CAAC,IAAI,IAAI,IAAIA,CAAC,IAAI,IAAK,CAAA;AAC7D,GAAA;EAEA,SAAS6c,mBAAmBA,CAAC7c,CAAC,EAAE;IAC9B,OAAO4c,YAAY,CAAC5c,CAAC,CAAC,IAAI2c,YAAY,CAAC3c,CAAC,CAAC,CAAA;AAC3C,GAAA;EAEA,SAAS8c,UAAUA,CAAC9c,CAAC,EAAE;AACrB,IAAA,OAAO2c,YAAY,CAAC3c,CAAC,CAAC,IAAKA,CAAC,IAAI,IAAI,IAAIA,CAAC,IAAI,IAAK,IAAKA,CAAC,IAAI,IAAI,IAAIA,CAAC,IAAI,IAAK,CAAA;AAChF,GAAA;EAEA,SAAS+c,WAAWA,CAACC,MAAM,EAAE;IAC3B,OAAOA,MAAM,KAAK,GAAG,IAAIA,MAAM,CAAC5jB,WAAW,EAAE,KAAK,KAAK,CAAA;AACzD,GAAA;EAEA,SAAS6jB,WAAWA,CAACD,MAAM,EAAE;AAC3BA,IAAAA,MAAM,GAAGA,MAAM,CAAC5jB,WAAW,EAAE,CAAA;AAC7B,IAAA,OAAO4jB,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,MAAM,IAAIA,MAAM,KAAK,MAAM,IAAIA,MAAM,KAAK,QAAQ,CAAA;AACzF,GAAA;AAEA,EAAA,SAASE,8BAA8BA,CAACC,GAAG,EAAEC,GAAG,EAAE;AAChD,IAAA,OAAOR,YAAY,CAACO,GAAG,CAAC,KAAKC,GAAG,KAAK,EAAE,IAAIA,GAAG,KAAK,GAAG,CAAC,CAAA;AACzD,GAAA;EAEA,SAASC,0BAA0BA,CAAC7C,MAAM,EAAE;AAC1C,IAAA,OAAOA,MAAM,CAAC7hB,MAAM,KAAK,CAAC,IAAIikB,YAAY,CAACpC,MAAM,CAAC7B,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK6B,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;AAC/G,GAAA;EAEA,SAAS8C,oCAAoCA,CAAC9C,MAAM,EAAE;IACpD,OAAOA,MAAM,CAAC7hB,MAAM,KAAK,CAAC,IAAIikB,YAAY,CAACpC,MAAM,CAAC7B,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI6B,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;AACxF,GAAA;EAEA,SAAS+C,8BAA8BA,CAAC/C,MAAM,EAAE;IAC9C,OAAOA,MAAM,CAACa,MAAM,CAAC,2DAA2D,CAAC,KAAK,CAAC,CAAC,CAAA;AAC1F,GAAA;EAEA,SAASmC,8CAA8CA,CAAChD,MAAM,EAAE;IAC9D,OAAOA,MAAM,CAACa,MAAM,CAAC,yDAAyD,CAAC,KAAK,CAAC,CAAC,CAAA;AACxF,GAAA;EAEA,SAASoC,eAAeA,CAACC,MAAM,EAAE;AAC/B,IAAA,OAAO1B,cAAc,CAAC0B,MAAM,CAAC,KAAK9lB,SAAS,CAAA;AAC7C,GAAA;EAEA,SAAS+lB,SAASA,CAACxjB,GAAG,EAAE;AACtB,IAAA,OAAOsjB,eAAe,CAACtjB,GAAG,CAACujB,MAAM,CAAC,CAAA;AACpC,GAAA;EAEA,SAASE,WAAWA,CAACF,MAAM,EAAE;IAC3B,OAAO1B,cAAc,CAAC0B,MAAM,CAAC,CAAA;AAC/B,GAAA;EAEA,SAASG,aAAaA,CAAC7d,CAAC,EAAE;IACxB,IAAI8d,GAAG,GAAG9d,CAAC,CAACjE,QAAQ,CAAC,EAAE,CAAC,CAACgiB,WAAW,EAAE,CAAA;AACtC,IAAA,IAAID,GAAG,CAACnlB,MAAM,KAAK,CAAC,EAAE;MACpBmlB,GAAG,GAAG,GAAG,GAAGA,GAAG,CAAA;AAChB,KAAA;IAED,OAAO,GAAG,GAAGA,GAAG,CAAA;AAClB,GAAA;EAEA,SAASE,iBAAiBA,CAAChe,CAAC,EAAE;AAC5B,IAAA,MAAMie,GAAG,GAAG,IAAIC,MAAM,CAACle,CAAC,CAAC,CAAA;IAEzB,IAAI9F,GAAG,GAAG,EAAE,CAAA;AAEZ,IAAA,KAAK,IAAIW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGojB,GAAG,CAACtlB,MAAM,EAAE,EAAEkC,CAAC,EAAE;AACnCX,MAAAA,GAAG,IAAI2jB,aAAa,CAACI,GAAG,CAACpjB,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAA;AAED,IAAA,OAAOX,GAAG,CAAA;AACZ,GAAA;EAEA,SAASikB,iBAAiBA,CAACjkB,GAAG,EAAE;AAC9B,IAAA,MAAM4P,KAAK,GAAG,IAAIoU,MAAM,CAAChkB,GAAG,CAAC,CAAA;IAC7B,MAAM6G,MAAM,GAAG,EAAE,CAAA;AACjB,IAAA,KAAK,IAAIlG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiP,KAAK,CAACnR,MAAM,EAAE,EAAEkC,CAAC,EAAE;AACrC,MAAA,IAAIiP,KAAK,CAACjP,CAAC,CAAC,KAAK,EAAE,EAAE;AACnBkG,QAAAA,MAAM,CAAC/H,IAAI,CAAC8Q,KAAK,CAACjP,CAAC,CAAC,CAAC,CAAA;AAC3B,OAAK,MAAM,IAAIiP,KAAK,CAACjP,CAAC,CAAC,KAAK,EAAE,IAAIiiB,UAAU,CAAChT,KAAK,CAACjP,CAAC,GAAG,CAAC,CAAC,CAAC,IAAIiiB,UAAU,CAAChT,KAAK,CAACjP,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAClFkG,MAAM,CAAC/H,IAAI,CAAC8c,QAAQ,CAAChM,KAAK,CAAC9N,KAAK,CAACnB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC,CAACkB,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAC/DlB,QAAAA,CAAC,IAAI,CAAC,CAAA;AACZ,OAAK,MAAM;AACLkG,QAAAA,MAAM,CAAC/H,IAAI,CAAC8Q,KAAK,CAACjP,CAAC,CAAC,CAAC,CAAA;AACtB,OAAA;AACF,KAAA;IACD,OAAO,IAAIqjB,MAAM,CAACnd,MAAM,CAAC,CAAChF,QAAQ,EAAE,CAAA;AACtC,GAAA;EAEA,SAASqiB,wBAAwBA,CAACpe,CAAC,EAAE;AACnC,IAAA,OAAOA,CAAC,IAAI,IAAI,IAAIA,CAAC,GAAG,IAAI,CAAA;AAC9B,GAAA;EAEA,MAAMqe,yBAAyB,GAAG,IAAItH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;EACjF,SAASuH,mBAAmBA,CAACte,CAAC,EAAE;IAC9B,OAAOoe,wBAAwB,CAACpe,CAAC,CAAC,IAAIqe,yBAAyB,CAACrH,GAAG,CAAChX,CAAC,CAAC,CAAA;AACxE,GAAA;EAEA,MAAMue,6BAA6B,GACjC,IAAIxH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;EACpD,SAASyH,uBAAuBA,CAACxe,CAAC,EAAE;IAClC,OAAOse,mBAAmB,CAACte,CAAC,CAAC,IAAIue,6BAA6B,CAACvH,GAAG,CAAChX,CAAC,CAAC,CAAA;AACvE,GAAA;AAEA,EAAA,SAASye,iBAAiBA,CAACze,CAAC,EAAE0e,kBAAkB,EAAE;AAChD,IAAA,MAAMC,IAAI,GAAG1S,MAAM,CAAC8M,aAAa,CAAC/Y,CAAC,CAAC,CAAA;AAEpC,IAAA,IAAI0e,kBAAkB,CAAC1e,CAAC,CAAC,EAAE;MACzB,OAAOge,iBAAiB,CAACW,IAAI,CAAC,CAAA;AAC/B,KAAA;AAED,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;EAEA,SAASC,eAAeA,CAAC9U,KAAK,EAAE;IAC9B,IAAI+U,CAAC,GAAG,EAAE,CAAA;IAEV,IAAI/U,KAAK,CAACnR,MAAM,IAAI,CAAC,IAAImR,KAAK,CAACgV,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIhV,KAAK,CAACgV,MAAM,CAAC,CAAC,CAAC,CAAC1lB,WAAW,EAAE,KAAK,GAAG,EAAE;AACzF0Q,MAAAA,KAAK,GAAGA,KAAK,CAACpR,SAAS,CAAC,CAAC,CAAC,CAAA;AAC1BmmB,MAAAA,CAAC,GAAG,EAAE,CAAA;AACV,KAAG,MAAM,IAAI/U,KAAK,CAACnR,MAAM,IAAI,CAAC,IAAImR,KAAK,CAACgV,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvDhV,MAAAA,KAAK,GAAGA,KAAK,CAACpR,SAAS,CAAC,CAAC,CAAC,CAAA;AAC1BmmB,MAAAA,CAAC,GAAG,CAAC,CAAA;AACN,KAAA;IAED,IAAI/U,KAAK,KAAK,EAAE,EAAE;AAChB,MAAA,OAAO,CAAC,CAAA;AACT,KAAA;AAED,IAAA,MAAMiV,KAAK,GAAGF,CAAC,KAAK,EAAE,GAAG,QAAQ,GAAIA,CAAC,KAAK,EAAE,GAAG,cAAc,GAAG,QAAS,CAAA;AAC1E,IAAA,IAAIE,KAAK,CAACnX,IAAI,CAACkC,KAAK,CAAC,EAAE;AACrB,MAAA,OAAOyS,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAOzG,QAAQ,CAAChM,KAAK,EAAE+U,CAAC,CAAC,CAAA;AAC3B,GAAA;EAEA,SAASG,SAASA,CAAClV,KAAK,EAAE;AACxB,IAAA,MAAMmV,KAAK,GAAGnV,KAAK,CAAChS,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAImnB,KAAK,CAACA,KAAK,CAACtmB,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AAClC,MAAA,IAAIsmB,KAAK,CAACtmB,MAAM,GAAG,CAAC,EAAE;QACpBsmB,KAAK,CAACpZ,GAAG,EAAE,CAAA;AACZ,OAAA;AACF,KAAA;AAED,IAAA,IAAIoZ,KAAK,CAACtmB,MAAM,GAAG,CAAC,EAAE;AACpB,MAAA,OAAOmR,KAAK,CAAA;AACb,KAAA;IAED,MAAMoV,OAAO,GAAG,EAAE,CAAA;AAClB,IAAA,KAAK,MAAMloB,IAAI,IAAIioB,KAAK,EAAE;MACxB,IAAIjoB,IAAI,KAAK,EAAE,EAAE;AACf,QAAA,OAAO8S,KAAK,CAAA;AACb,OAAA;AACD,MAAA,MAAM/G,CAAC,GAAG6b,eAAe,CAAC5nB,IAAI,CAAC,CAAA;MAC/B,IAAI+L,CAAC,KAAKwZ,OAAO,EAAE;AACjB,QAAA,OAAOzS,KAAK,CAAA;AACb,OAAA;AAEDoV,MAAAA,OAAO,CAAClmB,IAAI,CAAC+J,CAAC,CAAC,CAAA;AAChB,KAAA;AAED,IAAA,KAAK,IAAIlI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqkB,OAAO,CAACvmB,MAAM,GAAG,CAAC,EAAE,EAAEkC,CAAC,EAAE;AAC3C,MAAA,IAAIqkB,OAAO,CAACrkB,CAAC,CAAC,GAAG,GAAG,EAAE;AACpB,QAAA,OAAO0hB,OAAO,CAAA;AACf,OAAA;AACF,KAAA;IACD,IAAI2C,OAAO,CAACA,OAAO,CAACvmB,MAAM,GAAG,CAAC,CAAC,IAAIkD,IAAI,CAACic,GAAG,CAAC,GAAG,EAAE,CAAC,GAAGoH,OAAO,CAACvmB,MAAM,CAAC,EAAE;AACpE,MAAA,OAAO4jB,OAAO,CAAA;AACf,KAAA;AAED,IAAA,IAAI4C,IAAI,GAAGD,OAAO,CAACrZ,GAAG,EAAE,CAAA;IACxB,IAAIuZ,OAAO,GAAG,CAAC,CAAA;AAEf,IAAA,KAAK,MAAMrc,CAAC,IAAImc,OAAO,EAAE;AACvBC,MAAAA,IAAI,IAAIpc,CAAC,GAAGlH,IAAI,CAACic,GAAG,CAAC,GAAG,EAAE,CAAC,GAAGsH,OAAO,CAAC,CAAA;AACtC,MAAA,EAAEA,OAAO,CAAA;AACV,KAAA;AAED,IAAA,OAAOD,IAAI,CAAA;AACb,GAAA;EAEA,SAASE,aAAaA,CAACC,OAAO,EAAE;IAC9B,IAAIve,MAAM,GAAG,EAAE,CAAA;IACf,IAAIgC,CAAC,GAAGuc,OAAO,CAAA;IAEf,KAAK,IAAIzkB,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE,EAAEA,CAAC,EAAE;MAC3BkG,MAAM,GAAGkL,MAAM,CAAClJ,CAAC,GAAG,GAAG,CAAC,GAAGhC,MAAM,CAAA;MACjC,IAAIlG,CAAC,KAAK,CAAC,EAAE;QACXkG,MAAM,GAAG,GAAG,GAAGA,MAAM,CAAA;AACtB,OAAA;MACDgC,CAAC,GAAGlH,IAAI,CAAC0b,KAAK,CAACxU,CAAC,GAAG,GAAG,CAAC,CAAA;AACxB,KAAA;AAED,IAAA,OAAOhC,MAAM,CAAA;AACf,GAAA;EAEA,SAASwe,SAASA,CAACzV,KAAK,EAAE;AACxB,IAAA,MAAMwV,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxC,IAAIE,UAAU,GAAG,CAAC,CAAA;IAClB,IAAIC,QAAQ,GAAG,IAAI,CAAA;IACnB,IAAIC,OAAO,GAAG,CAAC,CAAA;IAEf5V,KAAK,GAAGqR,QAAQ,CAACqB,IAAI,CAACC,MAAM,CAAC3S,KAAK,CAAC,CAAA;AAEnC,IAAA,IAAIA,KAAK,CAAC4V,OAAO,CAAC,KAAK,EAAE,EAAE;MACzB,IAAI5V,KAAK,CAAC4V,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AAC7B,QAAA,OAAOnD,OAAO,CAAA;AACf,OAAA;AAEDmD,MAAAA,OAAO,IAAI,CAAC,CAAA;AACZ,MAAA,EAAEF,UAAU,CAAA;AACZC,MAAAA,QAAQ,GAAGD,UAAU,CAAA;AACtB,KAAA;AAED,IAAA,OAAOE,OAAO,GAAG5V,KAAK,CAACnR,MAAM,EAAE;MAC7B,IAAI6mB,UAAU,KAAK,CAAC,EAAE;AACpB,QAAA,OAAOjD,OAAO,CAAA;AACf,OAAA;AAED,MAAA,IAAIzS,KAAK,CAAC4V,OAAO,CAAC,KAAK,EAAE,EAAE;QACzB,IAAID,QAAQ,KAAK,IAAI,EAAE;AACrB,UAAA,OAAOlD,OAAO,CAAA;AACf,SAAA;AACD,QAAA,EAAEmD,OAAO,CAAA;AACT,QAAA,EAAEF,UAAU,CAAA;AACZC,QAAAA,QAAQ,GAAGD,UAAU,CAAA;AACrB,QAAA,SAAA;AACD,OAAA;MAED,IAAI3c,KAAK,GAAG,CAAC,CAAA;MACb,IAAIlK,MAAM,GAAG,CAAC,CAAA;MAEd,OAAOA,MAAM,GAAG,CAAC,IAAImkB,UAAU,CAAChT,KAAK,CAAC4V,OAAO,CAAC,CAAC,EAAE;AAC/C7c,QAAAA,KAAK,GAAGA,KAAK,GAAG,IAAI,GAAGiT,QAAQ,CAAC4G,EAAE,CAAC5S,KAAK,EAAE4V,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;AACvD,QAAA,EAAEA,OAAO,CAAA;AACT,QAAA,EAAE/mB,MAAM,CAAA;AACT,OAAA;AAED,MAAA,IAAImR,KAAK,CAAC4V,OAAO,CAAC,KAAK,EAAE,EAAE;QACzB,IAAI/mB,MAAM,KAAK,CAAC,EAAE;AAChB,UAAA,OAAO4jB,OAAO,CAAA;AACf,SAAA;AAEDmD,QAAAA,OAAO,IAAI/mB,MAAM,CAAA;QAEjB,IAAI6mB,UAAU,GAAG,CAAC,EAAE;AAClB,UAAA,OAAOjD,OAAO,CAAA;AACf,SAAA;QAED,IAAIoD,WAAW,GAAG,CAAC,CAAA;AAEnB,QAAA,OAAO7V,KAAK,CAAC4V,OAAO,CAAC,KAAK9nB,SAAS,EAAE;UACnC,IAAIgoB,SAAS,GAAG,IAAI,CAAA;UAEpB,IAAID,WAAW,GAAG,CAAC,EAAE;YACnB,IAAI7V,KAAK,CAAC4V,OAAO,CAAC,KAAK,EAAE,IAAIC,WAAW,GAAG,CAAC,EAAE;AAC5C,cAAA,EAAED,OAAO,CAAA;AACrB,aAAW,MAAM;AACL,cAAA,OAAOnD,OAAO,CAAA;AACf,aAAA;AACF,WAAA;UAED,IAAI,CAACI,YAAY,CAAC7S,KAAK,CAAC4V,OAAO,CAAC,CAAC,EAAE;AACjC,YAAA,OAAOnD,OAAO,CAAA;AACf,WAAA;AAED,UAAA,OAAOI,YAAY,CAAC7S,KAAK,CAAC4V,OAAO,CAAC,CAAC,EAAE;YACnC,MAAM5Y,MAAM,GAAGgP,QAAQ,CAAC4G,EAAE,CAAC5S,KAAK,EAAE4V,OAAO,CAAC,CAAC,CAAA;YAC3C,IAAIE,SAAS,KAAK,IAAI,EAAE;AACtBA,cAAAA,SAAS,GAAG9Y,MAAM,CAAA;AAC9B,aAAW,MAAM,IAAI8Y,SAAS,KAAK,CAAC,EAAE;AAC1B,cAAA,OAAOrD,OAAO,CAAA;AAC1B,aAAW,MAAM;AACLqD,cAAAA,SAAS,GAAGA,SAAS,GAAG,EAAE,GAAG9Y,MAAM,CAAA;AACpC,aAAA;YACD,IAAI8Y,SAAS,GAAG,GAAG,EAAE;AACnB,cAAA,OAAOrD,OAAO,CAAA;AACf,aAAA;AACD,YAAA,EAAEmD,OAAO,CAAA;AACV,WAAA;UAEDJ,OAAO,CAACE,UAAU,CAAC,GAAGF,OAAO,CAACE,UAAU,CAAC,GAAG,KAAK,GAAGI,SAAS,CAAA;AAE7D,UAAA,EAAED,WAAW,CAAA;AAEb,UAAA,IAAIA,WAAW,KAAK,CAAC,IAAIA,WAAW,KAAK,CAAC,EAAE;AAC1C,YAAA,EAAEH,UAAU,CAAA;AACb,WAAA;AACF,SAAA;QAED,IAAIG,WAAW,KAAK,CAAC,EAAE;AACrB,UAAA,OAAOpD,OAAO,CAAA;AACf,SAAA;AAED,QAAA,MAAA;OACD,MAAM,IAAIzS,KAAK,CAAC4V,OAAO,CAAC,KAAK,EAAE,EAAE;AAChC,QAAA,EAAEA,OAAO,CAAA;AACT,QAAA,IAAI5V,KAAK,CAAC4V,OAAO,CAAC,KAAK9nB,SAAS,EAAE;AAChC,UAAA,OAAO2kB,OAAO,CAAA;AACf,SAAA;OACF,MAAM,IAAIzS,KAAK,CAAC4V,OAAO,CAAC,KAAK9nB,SAAS,EAAE;AACvC,QAAA,OAAO2kB,OAAO,CAAA;AACf,OAAA;AAED+C,MAAAA,OAAO,CAACE,UAAU,CAAC,GAAG3c,KAAK,CAAA;AAC3B,MAAA,EAAE2c,UAAU,CAAA;AACb,KAAA;IAED,IAAIC,QAAQ,KAAK,IAAI,EAAE;AACrB,MAAA,IAAII,KAAK,GAAGL,UAAU,GAAGC,QAAQ,CAAA;AACjCD,MAAAA,UAAU,GAAG,CAAC,CAAA;AACd,MAAA,OAAOA,UAAU,KAAK,CAAC,IAAIK,KAAK,GAAG,CAAC,EAAE;QACpC,MAAMC,IAAI,GAAGR,OAAO,CAACG,QAAQ,GAAGI,KAAK,GAAG,CAAC,CAAC,CAAA;QAC1CP,OAAO,CAACG,QAAQ,GAAGI,KAAK,GAAG,CAAC,CAAC,GAAGP,OAAO,CAACE,UAAU,CAAC,CAAA;AACnDF,QAAAA,OAAO,CAACE,UAAU,CAAC,GAAGM,IAAI,CAAA;AAC1B,QAAA,EAAEN,UAAU,CAAA;AACZ,QAAA,EAAEK,KAAK,CAAA;AACR,OAAA;KACF,MAAM,IAAIJ,QAAQ,KAAK,IAAI,IAAID,UAAU,KAAK,CAAC,EAAE;AAChD,MAAA,OAAOjD,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO+C,OAAO,CAAA;AAChB,GAAA;EAEA,SAASS,aAAaA,CAACT,OAAO,EAAE;IAC9B,IAAIve,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,MAAMif,SAAS,GAAGC,uBAAuB,CAACX,OAAO,CAAC,CAAA;AAClD,IAAA,MAAMG,QAAQ,GAAGO,SAAS,CAAChd,GAAG,CAAA;IAC9B,IAAIkd,OAAO,GAAG,KAAK,CAAA;IAEnB,KAAK,IAAIV,UAAU,GAAG,CAAC,EAAEA,UAAU,IAAI,CAAC,EAAE,EAAEA,UAAU,EAAE;MACtD,IAAIU,OAAO,IAAIZ,OAAO,CAACE,UAAU,CAAC,KAAK,CAAC,EAAE;AACxC,QAAA,SAAA;OACD,MAAM,IAAIU,OAAO,EAAE;AAClBA,QAAAA,OAAO,GAAG,KAAK,CAAA;AAChB,OAAA;MAED,IAAIT,QAAQ,KAAKD,UAAU,EAAE;QAC3B,MAAMW,SAAS,GAAGX,UAAU,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAA;AAC/Cze,QAAAA,MAAM,IAAIof,SAAS,CAAA;AACnBD,QAAAA,OAAO,GAAG,IAAI,CAAA;AACd,QAAA,SAAA;AACD,OAAA;MAEDnf,MAAM,IAAIue,OAAO,CAACE,UAAU,CAAC,CAACzjB,QAAQ,CAAC,EAAE,CAAC,CAAA;MAE1C,IAAIyjB,UAAU,KAAK,CAAC,EAAE;AACpBze,QAAAA,MAAM,IAAI,GAAG,CAAA;AACd,OAAA;AACF,KAAA;AAED,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;AAEA,EAAA,SAASqf,SAASA,CAACtW,KAAK,EAAEuW,YAAY,EAAE;AACtC,IAAA,IAAIvW,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACpB,IAAIA,KAAK,CAACA,KAAK,CAACnR,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AACnC,QAAA,OAAO4jB,OAAO,CAAA;AACf,OAAA;AAED,MAAA,OAAOgD,SAAS,CAACzV,KAAK,CAACpR,SAAS,CAAC,CAAC,EAAEoR,KAAK,CAACnR,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;AACvD,KAAA;IAED,IAAI,CAAC0nB,YAAY,EAAE;MACjB,OAAOC,eAAe,CAACxW,KAAK,CAAC,CAAA;AAC9B,KAAA;AAED,IAAA,MAAMgS,MAAM,GAAGqC,iBAAiB,CAACrU,KAAK,CAAC,CAAA;AACvC,IAAA,MAAMyW,WAAW,GAAGC,IAAI,CAAC9E,OAAO,CAACI,MAAM,EAAE,KAAK,EAAE0E,IAAI,CAAC3G,kBAAkB,CAACE,eAAe,EAAE,KAAK,CAAC,CAAA;IAC/F,IAAIwG,WAAW,KAAK,IAAI,EAAE;AACxB,MAAA,OAAOhE,OAAO,CAAA;AACf,KAAA;AAED,IAAA,IAAIgB,8BAA8B,CAACgD,WAAW,CAAC,EAAE;AAC/C,MAAA,OAAOhE,OAAO,CAAA;AACf,KAAA;AAED,IAAA,MAAMkE,QAAQ,GAAGzB,SAAS,CAACuB,WAAW,CAAC,CAAA;IACvC,IAAI,OAAOE,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAKlE,OAAO,EAAE;AACxD,MAAA,OAAOkE,QAAQ,CAAA;AAChB,KAAA;AAED,IAAA,OAAOF,WAAW,CAAA;AACpB,GAAA;EAEA,SAASD,eAAeA,CAACxW,KAAK,EAAE;AAC9B,IAAA,IAAI0T,8CAA8C,CAAC1T,KAAK,CAAC,EAAE;AACzD,MAAA,OAAOyS,OAAO,CAAA;AACf,KAAA;IAED,IAAIxb,MAAM,GAAG,EAAE,CAAA;IACf,MAAM2f,OAAO,GAAGvF,QAAQ,CAACqB,IAAI,CAACC,MAAM,CAAC3S,KAAK,CAAC,CAAA;AAC3C,IAAA,KAAK,IAAIjP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6lB,OAAO,CAAC/nB,MAAM,EAAE,EAAEkC,CAAC,EAAE;MACvCkG,MAAM,IAAI0d,iBAAiB,CAACiC,OAAO,CAAC7lB,CAAC,CAAC,EAAEujB,wBAAwB,CAAC,CAAA;AAClE,KAAA;AACD,IAAA,OAAOrd,MAAM,CAAA;AACf,GAAA;EAEA,SAASkf,uBAAuBA,CAACU,GAAG,EAAE;IACpC,IAAIC,MAAM,GAAG,IAAI,CAAA;AACjB,IAAA,IAAIC,MAAM,GAAG,CAAC,CAAC;IACf,IAAIC,SAAS,GAAG,IAAI,CAAA;IACpB,IAAIC,OAAO,GAAG,CAAC,CAAA;AAEf,IAAA,KAAK,IAAIlmB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8lB,GAAG,CAAChoB,MAAM,EAAE,EAAEkC,CAAC,EAAE;AACnC,MAAA,IAAI8lB,GAAG,CAAC9lB,CAAC,CAAC,KAAK,CAAC,EAAE;QAChB,IAAIkmB,OAAO,GAAGF,MAAM,EAAE;AACpBD,UAAAA,MAAM,GAAGE,SAAS,CAAA;AAClBD,UAAAA,MAAM,GAAGE,OAAO,CAAA;AACjB,SAAA;AAEDD,QAAAA,SAAS,GAAG,IAAI,CAAA;AAChBC,QAAAA,OAAO,GAAG,CAAC,CAAA;AACjB,OAAK,MAAM;QACL,IAAID,SAAS,KAAK,IAAI,EAAE;AACtBA,UAAAA,SAAS,GAAGjmB,CAAC,CAAA;AACd,SAAA;AACD,QAAA,EAAEkmB,OAAO,CAAA;AACV,OAAA;AACF,KAAA;;AAEH;IACE,IAAIA,OAAO,GAAGF,MAAM,EAAE;AACpBD,MAAAA,MAAM,GAAGE,SAAS,CAAA;AAClBD,MAAAA,MAAM,GAAGE,OAAO,CAAA;AACjB,KAAA;IAED,OAAO;AACL/d,MAAAA,GAAG,EAAE4d,MAAM;AACX7F,MAAAA,GAAG,EAAE8F,MAAAA;KACN,CAAA;AACH,GAAA;EAEA,SAASG,aAAaA,CAAC7O,IAAI,EAAE;AAC3B,IAAA,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;MAC5B,OAAOkN,aAAa,CAAClN,IAAI,CAAC,CAAA;AAC3B,KAAA;;AAEH;IACE,IAAIA,IAAI,YAAY1J,KAAK,EAAE;AACzB,MAAA,OAAO,GAAG,GAAGsX,aAAa,CAAC5N,IAAI,CAAC,GAAG,GAAG,CAAA;AACvC,KAAA;AAED,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;EAEA,SAAS8O,gBAAgBA,CAAC9mB,GAAG,EAAE;AAC7B,IAAA,OAAOA,GAAG,CAAC9B,OAAO,CAAC,kDAAkD,EAAE,EAAE,CAAC,CAAA;AAC5E,GAAA;EAEA,SAAS6oB,iBAAiBA,CAAC/mB,GAAG,EAAE;AAC9B,IAAA,OAAOA,GAAG,CAAC9B,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAA;AACjD,GAAA;EAEA,SAAS8oB,WAAWA,CAAChnB,GAAG,EAAE;AACxB,IAAA,MAAMX,IAAI,GAAGW,GAAG,CAACX,IAAI,CAAA;AACrB,IAAA,IAAIA,IAAI,CAACb,MAAM,KAAK,CAAC,EAAE;AACrB,MAAA,OAAA;AACD,KAAA;AACD,IAAA,IAAIwB,GAAG,CAACujB,MAAM,KAAK,MAAM,IAAIlkB,IAAI,CAACb,MAAM,KAAK,CAAC,IAAIyoB,8BAA8B,CAAC5nB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACzF,MAAA,OAAA;AACD,KAAA;IAEDA,IAAI,CAACqM,GAAG,EAAE,CAAA;AACZ,GAAA;EAEA,SAASwb,mBAAmBA,CAAClnB,GAAG,EAAE;IAChC,OAAOA,GAAG,CAACmnB,QAAQ,KAAK,EAAE,IAAInnB,GAAG,CAAConB,QAAQ,KAAK,EAAE,CAAA;AACnD,GAAA;EAEA,SAASC,+BAA+BA,CAACrnB,GAAG,EAAE;IAC5C,OAAOA,GAAG,CAACgY,IAAI,KAAK,IAAI,IAAIhY,GAAG,CAACgY,IAAI,KAAK,EAAE,IAAIhY,GAAG,CAACsnB,gBAAgB,IAAItnB,GAAG,CAACujB,MAAM,KAAK,MAAM,CAAA;AAC9F,GAAA;EAEA,SAAS0D,8BAA8BA,CAAC5G,MAAM,EAAE;AAC9C,IAAA,OAAO,aAAa,CAAC5S,IAAI,CAAC4S,MAAM,CAAC,CAAA;AACnC,GAAA;EAEA,SAASkH,eAAeA,CAAC5X,KAAK,EAAE6X,IAAI,EAAEC,gBAAgB,EAAEznB,GAAG,EAAE0nB,aAAa,EAAE;IAC1E,IAAI,CAACnC,OAAO,GAAG,CAAC,CAAA;IAChB,IAAI,CAAC5V,KAAK,GAAGA,KAAK,CAAA;AAClB,IAAA,IAAI,CAAC6X,IAAI,GAAGA,IAAI,IAAI,IAAI,CAAA;AACxB,IAAA,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB,IAAI,OAAO,CAAA;IACnD,IAAI,CAACC,aAAa,GAAGA,aAAa,CAAA;IAClC,IAAI,CAAC1nB,GAAG,GAAGA,GAAG,CAAA;IACd,IAAI,CAACoiB,OAAO,GAAG,KAAK,CAAA;IACpB,IAAI,CAACuF,UAAU,GAAG,KAAK,CAAA;AAEvB,IAAA,IAAI,CAAC,IAAI,CAAC3nB,GAAG,EAAE;MACb,IAAI,CAACA,GAAG,GAAG;AACTujB,QAAAA,MAAM,EAAE,EAAE;AACV4D,QAAAA,QAAQ,EAAE,EAAE;AACZC,QAAAA,QAAQ,EAAE,EAAE;AACZpP,QAAAA,IAAI,EAAE,IAAI;AACV4P,QAAAA,IAAI,EAAE,IAAI;AACVvoB,QAAAA,IAAI,EAAE,EAAE;AACRwoB,QAAAA,KAAK,EAAE,IAAI;AACXC,QAAAA,QAAQ,EAAE,IAAI;AAEdR,QAAAA,gBAAgB,EAAE,KAAA;OACnB,CAAA;AAED,MAAA,MAAMnkB,GAAG,GAAG2jB,gBAAgB,CAAC,IAAI,CAACnX,KAAK,CAAC,CAAA;AACxC,MAAA,IAAIxM,GAAG,KAAK,IAAI,CAACwM,KAAK,EAAE;QACtB,IAAI,CAACgY,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MACD,IAAI,CAAChY,KAAK,GAAGxM,GAAG,CAAA;AACjB,KAAA;AAED,IAAA,MAAMA,GAAG,GAAG4jB,iBAAiB,CAAC,IAAI,CAACpX,KAAK,CAAC,CAAA;AACzC,IAAA,IAAIxM,GAAG,KAAK,IAAI,CAACwM,KAAK,EAAE;MACtB,IAAI,CAACgY,UAAU,GAAG,IAAI,CAAA;AACvB,KAAA;IACD,IAAI,CAAChY,KAAK,GAAGxM,GAAG,CAAA;AAEhB,IAAA,IAAI,CAAC4kB,KAAK,GAAGL,aAAa,IAAI,cAAc,CAAA;IAE5C,IAAI,CAAC7E,MAAM,GAAG,EAAE,CAAA;IAChB,IAAI,CAACmF,MAAM,GAAG,KAAK,CAAA;IACnB,IAAI,CAACC,OAAO,GAAG,KAAK,CAAA;IACpB,IAAI,CAACC,qBAAqB,GAAG,KAAK,CAAA;AAElC,IAAA,IAAI,CAACvY,KAAK,GAAGqR,QAAQ,CAACqB,IAAI,CAACC,MAAM,CAAC,IAAI,CAAC3S,KAAK,CAAC,CAAA;AAE7C,IAAA,OAAO,IAAI,CAAC4V,OAAO,IAAI,IAAI,CAAC5V,KAAK,CAACnR,MAAM,EAAE,EAAE,IAAI,CAAC+mB,OAAO,EAAE;MACxD,MAAM1f,CAAC,GAAG,IAAI,CAAC8J,KAAK,CAAC,IAAI,CAAC4V,OAAO,CAAC,CAAA;AAClC,MAAA,MAAMf,IAAI,GAAG9I,KAAK,CAAC7V,CAAC,CAAC,GAAGpI,SAAS,GAAGqU,MAAM,CAAC8M,aAAa,CAAC/Y,CAAC,CAAC,CAAA;;AAE/D;AACI,MAAA,MAAMsiB,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAACJ,KAAK,CAAC,CAACliB,CAAC,EAAE2e,IAAI,CAAC,CAAA;MAChD,IAAI,CAAC2D,GAAG,EAAE;AACR,QAAA,MAAM;AACZ,OAAK,MAAM,IAAIA,GAAG,KAAK/F,OAAO,EAAE;QAC1B,IAAI,CAACA,OAAO,GAAG,IAAI,CAAA;AACnB,QAAA,MAAA;AACD,OAAA;AACF,KAAA;AACH,GAAA;AAEAmF,EAAAA,eAAe,CAAC9W,SAAS,CAAC,oBAAoB,CAAC,GAAG,SAAS2X,gBAAgBA,CAACviB,CAAC,EAAE2e,IAAI,EAAE;AACnF,IAAA,IAAI/B,YAAY,CAAC5c,CAAC,CAAC,EAAE;AACnB,MAAA,IAAI,CAACgd,MAAM,IAAI2B,IAAI,CAACvlB,WAAW,EAAE,CAAA;MACjC,IAAI,CAAC8oB,KAAK,GAAG,QAAQ,CAAA;AACzB,KAAG,MAAM,IAAI,CAAC,IAAI,CAACL,aAAa,EAAE;MAC9B,IAAI,CAACK,KAAK,GAAG,WAAW,CAAA;MACxB,EAAE,IAAI,CAACxC,OAAO,CAAA;AAClB,KAAG,MAAM;MACL,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACtB,MAAA,OAAOvF,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAEDmF,EAAAA,eAAe,CAAC9W,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS4X,WAAWA,CAACxiB,CAAC,EAAE2e,IAAI,EAAE;AACxE,IAAA,IAAI9B,mBAAmB,CAAC7c,CAAC,CAAC,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,EAAE;AAC9D,MAAA,IAAI,CAACgd,MAAM,IAAI2B,IAAI,CAACvlB,WAAW,EAAE,CAAA;AACrC,KAAG,MAAM,IAAI4G,CAAC,KAAK,EAAE,EAAE;MACnB,IAAI,IAAI,CAAC6hB,aAAa,EAAE;AACtB,QAAA,IAAIlE,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI,CAACsjB,eAAe,CAAC,IAAI,CAACT,MAAM,CAAC,EAAE;AACxD,UAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAED,QAAA,IAAI,CAACW,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAIsjB,eAAe,CAAC,IAAI,CAACT,MAAM,CAAC,EAAE;AACxD,UAAA,OAAO,KAAK,CAAA;AACb,SAAA;QAED,IAAI,CAACqE,mBAAmB,CAAC,IAAI,CAAClnB,GAAG,CAAC,IAAI,IAAI,CAACA,GAAG,CAAC4nB,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC/E,MAAM,KAAK,MAAM,EAAE;AACvF,UAAA,OAAO,KAAK,CAAA;AACb,SAAA;QAED,IAAI,IAAI,CAAC7iB,GAAG,CAACujB,MAAM,KAAK,MAAM,KAAK,IAAI,CAACvjB,GAAG,CAACgY,IAAI,KAAK,EAAE,IAAI,IAAI,CAAChY,GAAG,CAACgY,IAAI,KAAK,IAAI,CAAC,EAAE;AAClF,UAAA,OAAO,KAAK,CAAA;AACb,SAAA;AACF,OAAA;AACD,MAAA,IAAI,CAAChY,GAAG,CAACujB,MAAM,GAAG,IAAI,CAACV,MAAM,CAAA;MAC7B,IAAI,CAACA,MAAM,GAAG,EAAE,CAAA;MAChB,IAAI,IAAI,CAAC6E,aAAa,EAAE;AACtB,QAAA,OAAO,KAAK,CAAA;AACb,OAAA;AACD,MAAA,IAAI,IAAI,CAAC1nB,GAAG,CAACujB,MAAM,KAAK,MAAM,EAAE;QAC9B,IAAI,IAAI,CAAC5T,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC5V,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;UAC9E,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACvB,SAAA;QACD,IAAI,CAACI,KAAK,GAAG,MAAM,CAAA;OACpB,MAAM,IAAIvE,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI,IAAI,CAACwnB,IAAI,KAAK,IAAI,IAAI,IAAI,CAACA,IAAI,CAACjE,MAAM,KAAK,IAAI,CAACvjB,GAAG,CAACujB,MAAM,EAAE;QAC5F,IAAI,CAACwE,KAAK,GAAG,+BAA+B,CAAA;OAC7C,MAAM,IAAIvE,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,EAAE;QAC9B,IAAI,CAAC+nB,KAAK,GAAG,2BAA2B,CAAA;AAC9C,OAAK,MAAM,IAAI,IAAI,CAACpY,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,IAAI,CAACwC,KAAK,GAAG,mBAAmB,CAAA;QAChC,EAAE,IAAI,CAACxC,OAAO,CAAA;AACpB,OAAK,MAAM;AACL,QAAA,IAAI,CAACvlB,GAAG,CAACsnB,gBAAgB,GAAG,IAAI,CAAA;QAChC,IAAI,CAACtnB,GAAG,CAACX,IAAI,CAACR,IAAI,CAAC,EAAE,CAAC,CAAA;QACtB,IAAI,CAACkpB,KAAK,GAAG,2BAA2B,CAAA;AACzC,OAAA;AACL,KAAG,MAAM,IAAI,CAAC,IAAI,CAACL,aAAa,EAAE;MAC9B,IAAI,CAAC7E,MAAM,GAAG,EAAE,CAAA;MAChB,IAAI,CAACkF,KAAK,GAAG,WAAW,CAAA;AACxB,MAAA,IAAI,CAACxC,OAAO,GAAG,CAAC,CAAC,CAAA;AACrB,KAAG,MAAM;MACL,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACtB,MAAA,OAAOvF,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDmF,eAAe,CAAC9W,SAAS,CAAC,iBAAiB,CAAC,GAAG,SAAS6X,aAAaA,CAACziB,CAAC,EAAE;AACvE,IAAA,IAAI,IAAI,CAAC2hB,IAAI,KAAK,IAAI,IAAK,IAAI,CAACA,IAAI,CAACF,gBAAgB,IAAIzhB,CAAC,KAAK,EAAG,EAAE;AAClE,MAAA,OAAOuc,OAAO,CAAA;KACf,MAAM,IAAI,IAAI,CAACoF,IAAI,CAACF,gBAAgB,IAAIzhB,CAAC,KAAK,EAAE,EAAE;MACjD,IAAI,CAAC7F,GAAG,CAACujB,MAAM,GAAG,IAAI,CAACiE,IAAI,CAACjE,MAAM,CAAA;AAClC,MAAA,IAAI,CAACvjB,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;MACtC,IAAI,CAAC7B,GAAG,CAAC6nB,KAAK,GAAG,IAAI,CAACL,IAAI,CAACK,KAAK,CAAA;AAChC,MAAA,IAAI,CAAC7nB,GAAG,CAAC8nB,QAAQ,GAAG,EAAE,CAAA;AACtB,MAAA,IAAI,CAAC9nB,GAAG,CAACsnB,gBAAgB,GAAG,IAAI,CAAA;MAChC,IAAI,CAACS,KAAK,GAAG,UAAU,CAAA;KACxB,MAAM,IAAI,IAAI,CAACP,IAAI,CAACjE,MAAM,KAAK,MAAM,EAAE;MACtC,IAAI,CAACwE,KAAK,GAAG,MAAM,CAAA;MACnB,EAAE,IAAI,CAACxC,OAAO,CAAA;AAClB,KAAG,MAAM;MACL,IAAI,CAACwC,KAAK,GAAG,UAAU,CAAA;MACvB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,qCAAqC,CAAC,GAAG,SAAS8X,+BAA+BA,CAAC1iB,CAAC,EAAE;AAC7G,IAAA,IAAIA,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC8J,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;MACnD,IAAI,CAACwC,KAAK,GAAG,kCAAkC,CAAA;MAC/C,EAAE,IAAI,CAACxC,OAAO,CAAA;AAClB,KAAG,MAAM;MACL,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;MACtB,IAAI,CAACI,KAAK,GAAG,UAAU,CAAA;MACvB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,yBAAyB,CAAC,GAAG,SAAS+X,oBAAoBA,CAAC3iB,CAAC,EAAE;IACtF,IAAIA,CAAC,KAAK,EAAE,EAAE;MACZ,IAAI,CAACkiB,KAAK,GAAG,WAAW,CAAA;AAC5B,KAAG,MAAM;MACL,IAAI,CAACA,KAAK,GAAG,MAAM,CAAA;MACnB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,gBAAgB,CAAC,GAAG,SAASgY,aAAaA,CAAC5iB,CAAC,EAAE;IACtE,IAAI,CAAC7F,GAAG,CAACujB,MAAM,GAAG,IAAI,CAACiE,IAAI,CAACjE,MAAM,CAAA;AAClC,IAAA,IAAI7H,KAAK,CAAC7V,CAAC,CAAC,EAAE;MACZ,IAAI,CAAC7F,GAAG,CAACmnB,QAAQ,GAAG,IAAI,CAACK,IAAI,CAACL,QAAQ,CAAA;MACtC,IAAI,CAACnnB,GAAG,CAAConB,QAAQ,GAAG,IAAI,CAACI,IAAI,CAACJ,QAAQ,CAAA;MACtC,IAAI,CAACpnB,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;MAC9B,IAAI,CAAChY,GAAG,CAAC4nB,IAAI,GAAG,IAAI,CAACJ,IAAI,CAACI,IAAI,CAAA;AAC9B,MAAA,IAAI,CAAC5nB,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;MACtC,IAAI,CAAC7B,GAAG,CAAC6nB,KAAK,GAAG,IAAI,CAACL,IAAI,CAACK,KAAK,CAAA;AACpC,KAAG,MAAM,IAAIhiB,CAAC,KAAK,EAAE,EAAE;MACnB,IAAI,CAACkiB,KAAK,GAAG,gBAAgB,CAAA;AACjC,KAAG,MAAM,IAAIliB,CAAC,KAAK,EAAE,EAAE;MACnB,IAAI,CAAC7F,GAAG,CAACmnB,QAAQ,GAAG,IAAI,CAACK,IAAI,CAACL,QAAQ,CAAA;MACtC,IAAI,CAACnnB,GAAG,CAAConB,QAAQ,GAAG,IAAI,CAACI,IAAI,CAACJ,QAAQ,CAAA;MACtC,IAAI,CAACpnB,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;MAC9B,IAAI,CAAChY,GAAG,CAAC4nB,IAAI,GAAG,IAAI,CAACJ,IAAI,CAACI,IAAI,CAAA;AAC9B,MAAA,IAAI,CAAC5nB,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;AACtC,MAAA,IAAI,CAAC7B,GAAG,CAAC6nB,KAAK,GAAG,EAAE,CAAA;MACnB,IAAI,CAACE,KAAK,GAAG,OAAO,CAAA;AACxB,KAAG,MAAM,IAAIliB,CAAC,KAAK,EAAE,EAAE;MACnB,IAAI,CAAC7F,GAAG,CAACmnB,QAAQ,GAAG,IAAI,CAACK,IAAI,CAACL,QAAQ,CAAA;MACtC,IAAI,CAACnnB,GAAG,CAAConB,QAAQ,GAAG,IAAI,CAACI,IAAI,CAACJ,QAAQ,CAAA;MACtC,IAAI,CAACpnB,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;MAC9B,IAAI,CAAChY,GAAG,CAAC4nB,IAAI,GAAG,IAAI,CAACJ,IAAI,CAACI,IAAI,CAAA;AAC9B,MAAA,IAAI,CAAC5nB,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;MACtC,IAAI,CAAC7B,GAAG,CAAC6nB,KAAK,GAAG,IAAI,CAACL,IAAI,CAACK,KAAK,CAAA;AAChC,MAAA,IAAI,CAAC7nB,GAAG,CAAC8nB,QAAQ,GAAG,EAAE,CAAA;MACtB,IAAI,CAACC,KAAK,GAAG,UAAU,CAAA;AAC3B,KAAG,MAAM,IAAIvE,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAE,EAAE;MAC1C,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;MACtB,IAAI,CAACI,KAAK,GAAG,gBAAgB,CAAA;AACjC,KAAG,MAAM;MACL,IAAI,CAAC/nB,GAAG,CAACmnB,QAAQ,GAAG,IAAI,CAACK,IAAI,CAACL,QAAQ,CAAA;MACtC,IAAI,CAACnnB,GAAG,CAAConB,QAAQ,GAAG,IAAI,CAACI,IAAI,CAACJ,QAAQ,CAAA;MACtC,IAAI,CAACpnB,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;MAC9B,IAAI,CAAChY,GAAG,CAAC4nB,IAAI,GAAG,IAAI,CAACJ,IAAI,CAACI,IAAI,CAAA;MAC9B,IAAI,CAAC5nB,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC2lB,IAAI,CAACnoB,IAAI,CAACb,MAAM,GAAG,CAAC,CAAC,CAAA;MAElE,IAAI,CAACupB,KAAK,GAAG,MAAM,CAAA;MACnB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,sBAAsB,CAAC,GAAG,SAASiY,kBAAkBA,CAAC7iB,CAAC,EAAE;AACjF,IAAA,IAAI2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,KAAK6F,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,CAAC,EAAE;MACjD,IAAIA,CAAC,KAAK,EAAE,EAAE;QACZ,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MACD,IAAI,CAACI,KAAK,GAAG,kCAAkC,CAAA;AACnD,KAAG,MAAM,IAAIliB,CAAC,KAAK,EAAE,EAAE;MACnB,IAAI,CAACkiB,KAAK,GAAG,WAAW,CAAA;AAC5B,KAAG,MAAM;MACL,IAAI,CAAC/nB,GAAG,CAACmnB,QAAQ,GAAG,IAAI,CAACK,IAAI,CAACL,QAAQ,CAAA;MACtC,IAAI,CAACnnB,GAAG,CAAConB,QAAQ,GAAG,IAAI,CAACI,IAAI,CAACJ,QAAQ,CAAA;MACtC,IAAI,CAACpnB,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;MAC9B,IAAI,CAAChY,GAAG,CAAC4nB,IAAI,GAAG,IAAI,CAACJ,IAAI,CAACI,IAAI,CAAA;MAC9B,IAAI,CAACG,KAAK,GAAG,MAAM,CAAA;MACnB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,iCAAiC,CAAC,GAAG,SAASkY,4BAA4BA,CAAC9iB,CAAC,EAAE;AACtG,IAAA,IAAIA,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC8J,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;MACnD,IAAI,CAACwC,KAAK,GAAG,kCAAkC,CAAA;MAC/C,EAAE,IAAI,CAACxC,OAAO,CAAA;AAClB,KAAG,MAAM;MACL,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;MACtB,IAAI,CAACI,KAAK,GAAG,kCAAkC,CAAA;MAC/C,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,wCAAwC,CAAC,GAAG,SAASmY,kCAAkCA,CAAC/iB,CAAC,EAAE;AACnH,IAAA,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,EAAE;MACxB,IAAI,CAACkiB,KAAK,GAAG,WAAW,CAAA;MACxB,EAAE,IAAI,CAACxC,OAAO,CAAA;AAClB,KAAG,MAAM;MACL,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACvB,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAEDJ,EAAAA,eAAe,CAAC9W,SAAS,CAAC,iBAAiB,CAAC,GAAG,SAASoY,cAAcA,CAAChjB,CAAC,EAAE2e,IAAI,EAAE;IAC9E,IAAI3e,CAAC,KAAK,EAAE,EAAE;MACZ,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;MACtB,IAAI,IAAI,CAACK,MAAM,EAAE;AACf,QAAA,IAAI,CAACnF,MAAM,GAAG,KAAK,GAAG,IAAI,CAACA,MAAM,CAAA;AAClC,OAAA;MACD,IAAI,CAACmF,MAAM,GAAG,IAAI,CAAA;;AAEtB;AACI,MAAA,MAAMpH,GAAG,GAAGR,YAAY,CAAC,IAAI,CAACyC,MAAM,CAAC,CAAA;MACrC,KAAK,IAAI0C,OAAO,GAAG,CAAC,EAAEA,OAAO,GAAG3E,GAAG,EAAE,EAAE2E,OAAO,EAAE;QAC9C,MAAM1E,SAAS,GAAG,IAAI,CAACgC,MAAM,CAACrE,WAAW,CAAC+G,OAAO,CAAC,CAAA;QAElD,IAAI1E,SAAS,KAAK,EAAE,IAAI,CAAC,IAAI,CAACqH,qBAAqB,EAAE;UACnD,IAAI,CAACA,qBAAqB,GAAG,IAAI,CAAA;AACjC,UAAA,SAAA;AACD,SAAA;AACD,QAAA,MAAMY,iBAAiB,GAAGxE,iBAAiB,CAACzD,SAAS,EAAEwD,uBAAuB,CAAC,CAAA;QAC/E,IAAI,IAAI,CAAC6D,qBAAqB,EAAE;AAC9B,UAAA,IAAI,CAACloB,GAAG,CAAConB,QAAQ,IAAI0B,iBAAiB,CAAA;AAC9C,SAAO,MAAM;AACL,UAAA,IAAI,CAAC9oB,GAAG,CAACmnB,QAAQ,IAAI2B,iBAAiB,CAAA;AACvC,SAAA;AACF,OAAA;MACD,IAAI,CAACjG,MAAM,GAAG,EAAE,CAAA;AACpB,KAAG,MAAM,IAAInH,KAAK,CAAC7V,CAAC,CAAC,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAC3C2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAG,EAAE;MAC5C,IAAI,IAAI,CAACmiB,MAAM,IAAI,IAAI,CAACnF,MAAM,KAAK,EAAE,EAAE;QACrC,IAAI,CAAC8E,UAAU,GAAG,IAAI,CAAA;AACtB,QAAA,OAAOvF,OAAO,CAAA;AACf,OAAA;MACD,IAAI,CAACmD,OAAO,IAAInF,YAAY,CAAC,IAAI,CAACyC,MAAM,CAAC,GAAG,CAAC,CAAA;MAC7C,IAAI,CAACA,MAAM,GAAG,EAAE,CAAA;MAChB,IAAI,CAACkF,KAAK,GAAG,MAAM,CAAA;AACvB,KAAG,MAAM;MACL,IAAI,CAAClF,MAAM,IAAI2B,IAAI,CAAA;AACpB,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAED+C,EAAAA,eAAe,CAAC9W,SAAS,CAAC,gBAAgB,CAAC,GAC3C8W,eAAe,CAAC9W,SAAS,CAAC,YAAY,CAAC,GAAG,SAASsY,aAAaA,CAACljB,CAAC,EAAE2e,IAAI,EAAE;IACxE,IAAI,IAAI,CAACkD,aAAa,IAAI,IAAI,CAAC1nB,GAAG,CAACujB,MAAM,KAAK,MAAM,EAAE;MACpD,EAAE,IAAI,CAACgC,OAAO,CAAA;MACd,IAAI,CAACwC,KAAK,GAAG,WAAW,CAAA;KACzB,MAAM,IAAIliB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAACoiB,OAAO,EAAE;AACpC,MAAA,IAAI,IAAI,CAACpF,MAAM,KAAK,EAAE,EAAE;QACtB,IAAI,CAAC8E,UAAU,GAAG,IAAI,CAAA;AACtB,QAAA,OAAOvF,OAAO,CAAA;AACf,OAAA;AAED,MAAA,MAAMpK,IAAI,GAAGiO,SAAS,CAAC,IAAI,CAACpD,MAAM,EAAEW,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,CAAC,CAAA;MACxD,IAAIgY,IAAI,KAAKoK,OAAO,EAAE;AACpB,QAAA,OAAOA,OAAO,CAAA;AACf,OAAA;AAED,MAAA,IAAI,CAACpiB,GAAG,CAACgY,IAAI,GAAGA,IAAI,CAAA;MACpB,IAAI,CAAC6K,MAAM,GAAG,EAAE,CAAA;MAChB,IAAI,CAACkF,KAAK,GAAG,MAAM,CAAA;AACnB,MAAA,IAAI,IAAI,CAACL,aAAa,KAAK,UAAU,EAAE;AACrC,QAAA,OAAO,KAAK,CAAA;AACb,OAAA;AACL,KAAG,MAAM,IAAIhM,KAAK,CAAC7V,CAAC,CAAC,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAC3C2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAG,EAAE;MAC5C,EAAE,IAAI,CAAC0f,OAAO,CAAA;AACd,MAAA,IAAI/B,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI,IAAI,CAAC6iB,MAAM,KAAK,EAAE,EAAE;QAC7C,IAAI,CAAC8E,UAAU,GAAG,IAAI,CAAA;AACtB,QAAA,OAAOvF,OAAO,CAAA;OACf,MAAM,IAAI,IAAI,CAACsF,aAAa,IAAI,IAAI,CAAC7E,MAAM,KAAK,EAAE,KACvCqE,mBAAmB,CAAC,IAAI,CAAClnB,GAAG,CAAC,IAAI,IAAI,CAACA,GAAG,CAAC4nB,IAAI,KAAK,IAAI,CAAC,EAAE;QACpE,IAAI,CAACD,UAAU,GAAG,IAAI,CAAA;AACtB,QAAA,OAAO,KAAK,CAAA;AACb,OAAA;AAED,MAAA,MAAM3P,IAAI,GAAGiO,SAAS,CAAC,IAAI,CAACpD,MAAM,EAAEW,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,CAAC,CAAA;MACxD,IAAIgY,IAAI,KAAKoK,OAAO,EAAE;AACpB,QAAA,OAAOA,OAAO,CAAA;AACf,OAAA;AAED,MAAA,IAAI,CAACpiB,GAAG,CAACgY,IAAI,GAAGA,IAAI,CAAA;MACpB,IAAI,CAAC6K,MAAM,GAAG,EAAE,CAAA;MAChB,IAAI,CAACkF,KAAK,GAAG,YAAY,CAAA;MACzB,IAAI,IAAI,CAACL,aAAa,EAAE;AACtB,QAAA,OAAO,KAAK,CAAA;AACb,OAAA;AACL,KAAG,MAAM;MACL,IAAI7hB,CAAC,KAAK,EAAE,EAAE;QACZ,IAAI,CAACoiB,OAAO,GAAG,IAAI,CAAA;AACzB,OAAK,MAAM,IAAIpiB,CAAC,KAAK,EAAE,EAAE;QACnB,IAAI,CAACoiB,OAAO,GAAG,KAAK,CAAA;AACrB,OAAA;MACD,IAAI,CAACpF,MAAM,IAAI2B,IAAI,CAAA;AACpB,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAED+C,EAAAA,eAAe,CAAC9W,SAAS,CAAC,YAAY,CAAC,GAAG,SAASuY,SAASA,CAACnjB,CAAC,EAAE2e,IAAI,EAAE;AACpE,IAAA,IAAIhC,YAAY,CAAC3c,CAAC,CAAC,EAAE;MACnB,IAAI,CAACgd,MAAM,IAAI2B,IAAI,CAAA;AACvB,KAAG,MAAM,IAAI9I,KAAK,CAAC7V,CAAC,CAAC,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAC3C2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAG,IACjC,IAAI,CAAC6hB,aAAa,EAAE;AAC7B,MAAA,IAAI,IAAI,CAAC7E,MAAM,KAAK,EAAE,EAAE;AACtB,QAAA,MAAM+E,IAAI,GAAGjM,QAAQ,CAAC,IAAI,CAACkH,MAAM,CAAC,CAAA;AAClC,QAAA,IAAI+E,IAAI,GAAGlmB,IAAI,CAACic,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;UAC9B,IAAI,CAACgK,UAAU,GAAG,IAAI,CAAA;AACtB,UAAA,OAAOvF,OAAO,CAAA;AACf,SAAA;AACD,QAAA,IAAI,CAACpiB,GAAG,CAAC4nB,IAAI,GAAGA,IAAI,KAAKnE,WAAW,CAAC,IAAI,CAACzjB,GAAG,CAACujB,MAAM,CAAC,GAAG,IAAI,GAAGqE,IAAI,CAAA;QACnE,IAAI,CAAC/E,MAAM,GAAG,EAAE,CAAA;AACjB,OAAA;MACD,IAAI,IAAI,CAAC6E,aAAa,EAAE;AACtB,QAAA,OAAO,KAAK,CAAA;AACb,OAAA;MACD,IAAI,CAACK,KAAK,GAAG,YAAY,CAAA;MACzB,EAAE,IAAI,CAACxC,OAAO,CAAA;AAClB,KAAG,MAAM;MACL,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACtB,MAAA,OAAOvF,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAED,EAAA,MAAM6G,uBAAuB,GAAG,IAAIrM,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;EAEzD2K,eAAe,CAAC9W,SAAS,CAAC,YAAY,CAAC,GAAG,SAASyY,SAASA,CAACrjB,CAAC,EAAE;AAC9D,IAAA,IAAI,CAAC7F,GAAG,CAACujB,MAAM,GAAG,MAAM,CAAA;AAExB,IAAA,IAAI1d,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,EAAE;MACxB,IAAIA,CAAC,KAAK,EAAE,EAAE;QACZ,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MACD,IAAI,CAACI,KAAK,GAAG,YAAY,CAAA;AAC7B,KAAG,MAAM,IAAI,IAAI,CAACP,IAAI,KAAK,IAAI,IAAI,IAAI,CAACA,IAAI,CAACjE,MAAM,KAAK,MAAM,EAAE;AAC5D,MAAA,IAAI7H,KAAK,CAAC7V,CAAC,CAAC,EAAE;QACZ,IAAI,CAAC7F,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;AAC9B,QAAA,IAAI,CAAChY,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;QACtC,IAAI,CAAC7B,GAAG,CAAC6nB,KAAK,GAAG,IAAI,CAACL,IAAI,CAACK,KAAK,CAAA;AACtC,OAAK,MAAM,IAAIhiB,CAAC,KAAK,EAAE,EAAE;QACnB,IAAI,CAAC7F,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;AAC9B,QAAA,IAAI,CAAChY,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;AACtC,QAAA,IAAI,CAAC7B,GAAG,CAAC6nB,KAAK,GAAG,EAAE,CAAA;QACnB,IAAI,CAACE,KAAK,GAAG,OAAO,CAAA;AAC1B,OAAK,MAAM,IAAIliB,CAAC,KAAK,EAAE,EAAE;QACnB,IAAI,CAAC7F,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;AAC9B,QAAA,IAAI,CAAChY,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;QACtC,IAAI,CAAC7B,GAAG,CAAC6nB,KAAK,GAAG,IAAI,CAACL,IAAI,CAACK,KAAK,CAAA;AAChC,QAAA,IAAI,CAAC7nB,GAAG,CAAC8nB,QAAQ,GAAG,EAAE,CAAA;QACtB,IAAI,CAACC,KAAK,GAAG,UAAU,CAAA;AAC7B,OAAK,MAAM;AACL,QAAA,IAAI,IAAI,CAACpY,KAAK,CAACnR,MAAM,GAAG,IAAI,CAAC+mB,OAAO,GAAG,CAAC,KAAK,CAAC;AAAA;AAC1C,QAAA,CAACxC,8BAA8B,CAACld,CAAC,EAAE,IAAI,CAAC8J,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,IAC/D,IAAI,CAAC5V,KAAK,CAACnR,MAAM,GAAG,IAAI,CAAC+mB,OAAO,GAAG,CAAC,IAAI,CAAC;AAAA;AACzC,QAAA,CAAC0D,uBAAuB,CAACpM,GAAG,CAAC,IAAI,CAAClN,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAE,EAAE;UAChE,IAAI,CAACvlB,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;AAC9B,UAAA,IAAI,CAAChY,GAAG,CAACX,IAAI,GAAG,IAAI,CAACmoB,IAAI,CAACnoB,IAAI,CAACwC,KAAK,EAAE,CAAA;AACtCmlB,UAAAA,WAAW,CAAC,IAAI,CAAChnB,GAAG,CAAC,CAAA;AAC7B,SAAO,MAAM;UACL,IAAI,CAAC2nB,UAAU,GAAG,IAAI,CAAA;AACvB,SAAA;QAED,IAAI,CAACI,KAAK,GAAG,MAAM,CAAA;QACnB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,OAAA;AACL,KAAG,MAAM;MACL,IAAI,CAACwC,KAAK,GAAG,MAAM,CAAA;MACnB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,kBAAkB,CAAC,GAAG,SAAS0Y,cAAcA,CAACtjB,CAAC,EAAE;AACzE,IAAA,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,EAAE;MACxB,IAAIA,CAAC,KAAK,EAAE,EAAE;QACZ,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MACD,IAAI,CAACI,KAAK,GAAG,WAAW,CAAA;AAC5B,KAAG,MAAM;AACL,MAAA,IAAI,IAAI,CAACP,IAAI,KAAK,IAAI,IAAI,IAAI,CAACA,IAAI,CAACjE,MAAM,KAAK,MAAM,EAAE;QACrD,IAAIJ,oCAAoC,CAAC,IAAI,CAACqE,IAAI,CAACnoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3D,UAAA,IAAI,CAACW,GAAG,CAACX,IAAI,CAACR,IAAI,CAAC,IAAI,CAAC2oB,IAAI,CAACnoB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,SAAO,MAAM;UACL,IAAI,CAACW,GAAG,CAACgY,IAAI,GAAG,IAAI,CAACwP,IAAI,CAACxP,IAAI,CAAA;AAC/B,SAAA;AACF,OAAA;MACD,IAAI,CAAC+P,KAAK,GAAG,MAAM,CAAA;MACnB,EAAE,IAAI,CAACxC,OAAO,CAAA;AACf,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAEDgC,EAAAA,eAAe,CAAC9W,SAAS,CAAC,iBAAiB,CAAC,GAAG,SAAS2Y,aAAaA,CAACvjB,CAAC,EAAE2e,IAAI,EAAE;IAC7E,IAAI9I,KAAK,CAAC7V,CAAC,CAAC,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,EAAE;MAC5D,EAAE,IAAI,CAAC0f,OAAO,CAAA;MACd,IAAI,CAAC,IAAI,CAACmC,aAAa,IAAIxE,0BAA0B,CAAC,IAAI,CAACL,MAAM,CAAC,EAAE;QAClE,IAAI,CAAC8E,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAACI,KAAK,GAAG,MAAM,CAAA;AACzB,OAAK,MAAM,IAAI,IAAI,CAAClF,MAAM,KAAK,EAAE,EAAE;AAC7B,QAAA,IAAI,CAAC7iB,GAAG,CAACgY,IAAI,GAAG,EAAE,CAAA;QAClB,IAAI,IAAI,CAAC0P,aAAa,EAAE;AACtB,UAAA,OAAO,KAAK,CAAA;AACb,SAAA;QACD,IAAI,CAACK,KAAK,GAAG,YAAY,CAAA;AAC/B,OAAK,MAAM;AACL,QAAA,IAAI/P,IAAI,GAAGiO,SAAS,CAAC,IAAI,CAACpD,MAAM,EAAEW,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,CAAC,CAAA;QACtD,IAAIgY,IAAI,KAAKoK,OAAO,EAAE;AACpB,UAAA,OAAOA,OAAO,CAAA;AACf,SAAA;QACD,IAAIpK,IAAI,KAAK,WAAW,EAAE;AACxBA,UAAAA,IAAI,GAAG,EAAE,CAAA;AACV,SAAA;AACD,QAAA,IAAI,CAAChY,GAAG,CAACgY,IAAI,GAAGA,IAAI,CAAA;QAEpB,IAAI,IAAI,CAAC0P,aAAa,EAAE;AACtB,UAAA,OAAO,KAAK,CAAA;AACb,SAAA;QAED,IAAI,CAAC7E,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAACkF,KAAK,GAAG,YAAY,CAAA;AAC1B,OAAA;AACL,KAAG,MAAM;MACL,IAAI,CAAClF,MAAM,IAAI2B,IAAI,CAAA;AACpB,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAED+C,eAAe,CAAC9W,SAAS,CAAC,kBAAkB,CAAC,GAAG,SAAS4Y,cAAcA,CAACxjB,CAAC,EAAE;AACzE,IAAA,IAAI2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,EAAE;MACvB,IAAI6F,CAAC,KAAK,EAAE,EAAE;QACZ,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MACD,IAAI,CAACI,KAAK,GAAG,MAAM,CAAA;AAEnB,MAAA,IAAIliB,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,EAAE;QACxB,EAAE,IAAI,CAAC0f,OAAO,CAAA;AACf,OAAA;KACF,MAAM,IAAI,CAAC,IAAI,CAACmC,aAAa,IAAI7hB,CAAC,KAAK,EAAE,EAAE;AAC1C,MAAA,IAAI,CAAC7F,GAAG,CAAC6nB,KAAK,GAAG,EAAE,CAAA;MACnB,IAAI,CAACE,KAAK,GAAG,OAAO,CAAA;KACrB,MAAM,IAAI,CAAC,IAAI,CAACL,aAAa,IAAI7hB,CAAC,KAAK,EAAE,EAAE;AAC1C,MAAA,IAAI,CAAC7F,GAAG,CAAC8nB,QAAQ,GAAG,EAAE,CAAA;MACtB,IAAI,CAACC,KAAK,GAAG,UAAU,CAAA;AAC3B,KAAG,MAAM,IAAIliB,CAAC,KAAKpI,SAAS,EAAE;MAC1B,IAAI,CAACsqB,KAAK,GAAG,MAAM,CAAA;MACnB,IAAIliB,CAAC,KAAK,EAAE,EAAE;QACZ,EAAE,IAAI,CAAC0f,OAAO,CAAA;AACf,OAAA;AACF,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDgC,eAAe,CAAC9W,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS6Y,SAASA,CAACzjB,CAAC,EAAE;AAC9D,IAAA,IAAI6V,KAAK,CAAC7V,CAAC,CAAC,IAAIA,CAAC,KAAK,EAAE,IAAK2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAG,IACxD,CAAC,IAAI,CAAC6hB,aAAa,KAAK7hB,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,CAAE,EAAE;MACnD,IAAI2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAE,EAAE;QACnC,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;AAED,MAAA,IAAI7E,WAAW,CAAC,IAAI,CAACD,MAAM,CAAC,EAAE;AAC5BmE,QAAAA,WAAW,CAAC,IAAI,CAAChnB,GAAG,CAAC,CAAA;AACrB,QAAA,IAAI6F,CAAC,KAAK,EAAE,IAAI,EAAE2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAE,CAAC,EAAE;UAClD,IAAI,CAAC7F,GAAG,CAACX,IAAI,CAACR,IAAI,CAAC,EAAE,CAAC,CAAA;AACvB,SAAA;OACF,MAAM,IAAI+jB,WAAW,CAAC,IAAI,CAACC,MAAM,CAAC,IAAIhd,CAAC,KAAK,EAAE,IACpC,EAAE2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI6F,CAAC,KAAK,EAAE,CAAC,EAAE;QAC7C,IAAI,CAAC7F,GAAG,CAACX,IAAI,CAACR,IAAI,CAAC,EAAE,CAAC,CAAA;OACvB,MAAM,IAAI,CAAC+jB,WAAW,CAAC,IAAI,CAACC,MAAM,CAAC,EAAE;QACpC,IAAI,IAAI,CAAC7iB,GAAG,CAACujB,MAAM,KAAK,MAAM,IAAI,IAAI,CAACvjB,GAAG,CAACX,IAAI,CAACb,MAAM,KAAK,CAAC,IAAI0kB,0BAA0B,CAAC,IAAI,CAACL,MAAM,CAAC,EAAE;AACvG,UAAA,IAAI,IAAI,CAAC7iB,GAAG,CAACgY,IAAI,KAAK,EAAE,IAAI,IAAI,CAAChY,GAAG,CAACgY,IAAI,KAAK,IAAI,EAAE;YAClD,IAAI,CAAC2P,UAAU,GAAG,IAAI,CAAA;AACtB,YAAA,IAAI,CAAC3nB,GAAG,CAACgY,IAAI,GAAG,EAAE,CAAA;AACnB,WAAA;UACD,IAAI,CAAC6K,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AACnC,SAAA;QACD,IAAI,CAAC7iB,GAAG,CAACX,IAAI,CAACR,IAAI,CAAC,IAAI,CAACgkB,MAAM,CAAC,CAAA;AAChC,OAAA;MACD,IAAI,CAACA,MAAM,GAAG,EAAE,CAAA;MAChB,IAAI,IAAI,CAAC7iB,GAAG,CAACujB,MAAM,KAAK,MAAM,KAAK1d,CAAC,KAAKpI,SAAS,IAAIoI,CAAC,KAAK,EAAE,IAAIA,CAAC,KAAK,EAAE,CAAC,EAAE;QAC3E,OAAO,IAAI,CAAC7F,GAAG,CAACX,IAAI,CAACb,MAAM,GAAG,CAAC,IAAI,IAAI,CAACwB,GAAG,CAACX,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;UAC1D,IAAI,CAACsoB,UAAU,GAAG,IAAI,CAAA;AACtB,UAAA,IAAI,CAAC3nB,GAAG,CAACX,IAAI,CAACkqB,KAAK,EAAE,CAAA;AACtB,SAAA;AACF,OAAA;MACD,IAAI1jB,CAAC,KAAK,EAAE,EAAE;AACZ,QAAA,IAAI,CAAC7F,GAAG,CAAC6nB,KAAK,GAAG,EAAE,CAAA;QACnB,IAAI,CAACE,KAAK,GAAG,OAAO,CAAA;AACrB,OAAA;MACD,IAAIliB,CAAC,KAAK,EAAE,EAAE;AACZ,QAAA,IAAI,CAAC7F,GAAG,CAAC8nB,QAAQ,GAAG,EAAE,CAAA;QACtB,IAAI,CAACC,KAAK,GAAG,UAAU,CAAA;AACxB,OAAA;AACL,KAAG,MAAM;AACT;;AAEI,MAAA,IAAIliB,CAAC,KAAK,EAAE,KACT,CAAC8c,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,IACxC,CAAC5C,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9C,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MAED,IAAI,CAAC9E,MAAM,IAAIyB,iBAAiB,CAACze,CAAC,EAAEse,mBAAmB,CAAC,CAAA;AACzD,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAEDoD,eAAe,CAAC9W,SAAS,CAAC,iCAAiC,CAAC,GAAG,SAAS+Y,yBAAyBA,CAAC3jB,CAAC,EAAE;IACnG,IAAIA,CAAC,KAAK,EAAE,EAAE;AACZ,MAAA,IAAI,CAAC7F,GAAG,CAAC6nB,KAAK,GAAG,EAAE,CAAA;MACnB,IAAI,CAACE,KAAK,GAAG,OAAO,CAAA;AACxB,KAAG,MAAM,IAAIliB,CAAC,KAAK,EAAE,EAAE;AACnB,MAAA,IAAI,CAAC7F,GAAG,CAAC8nB,QAAQ,GAAG,EAAE,CAAA;MACtB,IAAI,CAACC,KAAK,GAAG,UAAU,CAAA;AAC3B,KAAG,MAAM;AACT;MACI,IAAI,CAACrM,KAAK,CAAC7V,CAAC,CAAC,IAAIA,CAAC,KAAK,EAAE,EAAE;QACzB,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;AAED,MAAA,IAAI9hB,CAAC,KAAK,EAAE,KACP,CAAC8c,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,IACzC,CAAC5C,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/C,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;AAED,MAAA,IAAI,CAACjM,KAAK,CAAC7V,CAAC,CAAC,EAAE;QACb,IAAI,CAAC7F,GAAG,CAACX,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAACW,GAAG,CAACX,IAAI,CAAC,CAAC,CAAC,GAAGilB,iBAAiB,CAACze,CAAC,EAAEoe,wBAAwB,CAAC,CAAA;AACrF,OAAA;AACF,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAEDsD,EAAAA,eAAe,CAAC9W,SAAS,CAAC,aAAa,CAAC,GAAG,SAASgZ,UAAUA,CAAC5jB,CAAC,EAAE2e,IAAI,EAAE;AACtE,IAAA,IAAI9I,KAAK,CAAC7V,CAAC,CAAC,IAAK,CAAC,IAAI,CAAC6hB,aAAa,IAAI7hB,CAAC,KAAK,EAAG,EAAE;MACjD,IAAI,CAAC2d,SAAS,CAAC,IAAI,CAACxjB,GAAG,CAAC,IAAI,IAAI,CAACA,GAAG,CAACujB,MAAM,KAAK,IAAI,IAAI,IAAI,CAACvjB,GAAG,CAACujB,MAAM,KAAK,KAAK,EAAE;QACjF,IAAI,CAACkE,gBAAgB,GAAG,OAAO,CAAA;AAChC,OAAA;MAED,MAAM5E,MAAM,GAAG,IAAIkB,MAAM,CAAC,IAAI,CAAClB,MAAM,CAAC,CAAC;AACvC,MAAA,KAAK,IAAIniB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmiB,MAAM,CAACrkB,MAAM,EAAE,EAAEkC,CAAC,EAAE;AACtC,QAAA,IAAImiB,MAAM,CAACniB,CAAC,CAAC,GAAG,IAAI,IAAImiB,MAAM,CAACniB,CAAC,CAAC,GAAG,IAAI,IAAImiB,MAAM,CAACniB,CAAC,CAAC,KAAK,IAAI,IAAImiB,MAAM,CAACniB,CAAC,CAAC,KAAK,IAAI,IAChFmiB,MAAM,CAACniB,CAAC,CAAC,KAAK,IAAI,IAAImiB,MAAM,CAACniB,CAAC,CAAC,KAAK,IAAI,EAAE;UAC5C,IAAI,CAACV,GAAG,CAAC6nB,KAAK,IAAInE,aAAa,CAACb,MAAM,CAACniB,CAAC,CAAC,CAAC,CAAA;AAClD,SAAO,MAAM;AACL,UAAA,IAAI,CAACV,GAAG,CAAC6nB,KAAK,IAAI/V,MAAM,CAAC8M,aAAa,CAACiE,MAAM,CAACniB,CAAC,CAAC,CAAC,CAAA;AAClD,SAAA;AACF,OAAA;MAED,IAAI,CAACmiB,MAAM,GAAG,EAAE,CAAA;MAChB,IAAIhd,CAAC,KAAK,EAAE,EAAE;AACZ,QAAA,IAAI,CAAC7F,GAAG,CAAC8nB,QAAQ,GAAG,EAAE,CAAA;QACtB,IAAI,CAACC,KAAK,GAAG,UAAU,CAAA;AACxB,OAAA;AACL,KAAG,MAAM;AACT;AACI,MAAA,IAAIliB,CAAC,KAAK,EAAE,KACT,CAAC8c,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,IACxC,CAAC5C,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9C,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MAED,IAAI,CAAC9E,MAAM,IAAI2B,IAAI,CAAA;AACpB,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAED+C,eAAe,CAAC9W,SAAS,CAAC,gBAAgB,CAAC,GAAG,SAASxL,aAAaA,CAACY,CAAC,EAAE;AACtE,IAAA,IAAI6V,KAAK,CAAC7V,CAAC,CAAC,EAAE,CACb,MAAM,IAAIA,CAAC,KAAK,GAAG,EAAE;MACpB,IAAI,CAAC8hB,UAAU,GAAG,IAAI,CAAA;AAC1B,KAAG,MAAM;AACT;AACI,MAAA,IAAI9hB,CAAC,KAAK,EAAE,KACT,CAAC8c,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,IACxC,CAAC5C,UAAU,CAAC,IAAI,CAAChT,KAAK,CAAC,IAAI,CAAC4V,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9C,IAAI,CAACoC,UAAU,GAAG,IAAI,CAAA;AACvB,OAAA;MAED,IAAI,CAAC3nB,GAAG,CAAC8nB,QAAQ,IAAIxD,iBAAiB,CAACze,CAAC,EAAEoe,wBAAwB,CAAC,CAAA;AACpE,KAAA;AAED,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAED,EAAA,SAASyF,YAAYA,CAAC1pB,GAAG,EAAE2pB,eAAe,EAAE;AAC1C,IAAA,IAAI/iB,MAAM,GAAG5G,GAAG,CAACujB,MAAM,GAAG,GAAG,CAAA;AAC7B,IAAA,IAAIvjB,GAAG,CAACgY,IAAI,KAAK,IAAI,EAAE;AACrBpR,MAAAA,MAAM,IAAI,IAAI,CAAA;MAEd,IAAI5G,GAAG,CAACmnB,QAAQ,KAAK,EAAE,IAAInnB,GAAG,CAAConB,QAAQ,KAAK,EAAE,EAAE;QAC9CxgB,MAAM,IAAI5G,GAAG,CAACmnB,QAAQ,CAAA;AACtB,QAAA,IAAInnB,GAAG,CAAConB,QAAQ,KAAK,EAAE,EAAE;AACvBxgB,UAAAA,MAAM,IAAI,GAAG,GAAG5G,GAAG,CAAConB,QAAQ,CAAA;AAC7B,SAAA;AACDxgB,QAAAA,MAAM,IAAI,GAAG,CAAA;AACd,OAAA;AAEDA,MAAAA,MAAM,IAAIigB,aAAa,CAAC7mB,GAAG,CAACgY,IAAI,CAAC,CAAA;AAEjC,MAAA,IAAIhY,GAAG,CAAC4nB,IAAI,KAAK,IAAI,EAAE;AACrBhhB,QAAAA,MAAM,IAAI,GAAG,GAAG5G,GAAG,CAAC4nB,IAAI,CAAA;AACzB,OAAA;AACL,KAAG,MAAM,IAAI5nB,GAAG,CAACgY,IAAI,KAAK,IAAI,IAAIhY,GAAG,CAACujB,MAAM,KAAK,MAAM,EAAE;AACrD3c,MAAAA,MAAM,IAAI,IAAI,CAAA;AACf,KAAA;IAED,IAAI5G,GAAG,CAACsnB,gBAAgB,EAAE;AACxB1gB,MAAAA,MAAM,IAAI5G,GAAG,CAACX,IAAI,CAAC,CAAC,CAAC,CAAA;AACzB,KAAG,MAAM;AACL,MAAA,KAAK,MAAMghB,MAAM,IAAIrgB,GAAG,CAACX,IAAI,EAAE;QAC7BuH,MAAM,IAAI,GAAG,GAAGyZ,MAAM,CAAA;AACvB,OAAA;AACF,KAAA;AAED,IAAA,IAAIrgB,GAAG,CAAC6nB,KAAK,KAAK,IAAI,EAAE;AACtBjhB,MAAAA,MAAM,IAAI,GAAG,GAAG5G,GAAG,CAAC6nB,KAAK,CAAA;AAC1B,KAAA;IAED,IAAI,CAAC8B,eAAe,IAAI3pB,GAAG,CAAC8nB,QAAQ,KAAK,IAAI,EAAE;AAC7ClhB,MAAAA,MAAM,IAAI,GAAG,GAAG5G,GAAG,CAAC8nB,QAAQ,CAAA;AAC7B,KAAA;AAED,IAAA,OAAOlhB,MAAM,CAAA;AACf,GAAA;EAEA,SAASgjB,eAAeA,CAACC,KAAK,EAAE;AAC9B,IAAA,IAAIzI,MAAM,GAAGyI,KAAK,CAACtG,MAAM,GAAG,KAAK,CAAA;AACjCnC,IAAAA,MAAM,IAAIyF,aAAa,CAACgD,KAAK,CAAC7R,IAAI,CAAC,CAAA;AAEnC,IAAA,IAAI6R,KAAK,CAACjC,IAAI,KAAK,IAAI,EAAE;AACvBxG,MAAAA,MAAM,IAAI,GAAG,GAAGyI,KAAK,CAACjC,IAAI,CAAA;AAC3B,KAAA;AAED,IAAA,OAAOxG,MAAM,CAAA;AACf,GAAA;AAEApC,EAAAA,MAAA,CAAAC,OAAA,CAAAyK,YAAA,GAA8BA,YAAY,CAAA;AAE1C1K,EAAAA,MAAoC,CAAAC,OAAA,CAAA6K,kBAAA,GAAA,UAAU9pB,GAAG,EAAE;AACnD;IACE,QAAQA,GAAG,CAACujB,MAAM;AAChB,MAAA,KAAK,MAAM;QACT,IAAI;AACF,UAAA,OAAOvE,MAAM,CAACC,OAAO,CAAC6K,kBAAkB,CAAC9K,MAAM,CAACC,OAAO,CAAC8K,QAAQ,CAAC/pB,GAAG,CAACX,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SAC/E,CAAC,OAAOqH,CAAC,EAAE;AAClB;AACQ,UAAA,OAAO,MAAM,CAAA;AACd,SAAA;AACH,MAAA,KAAK,KAAK,CAAA;AACV,MAAA,KAAK,QAAQ,CAAA;AACb,MAAA,KAAK,MAAM,CAAA;AACX,MAAA,KAAK,OAAO,CAAA;AACZ,MAAA,KAAK,IAAI,CAAA;AACT,MAAA,KAAK,KAAK;AACR,QAAA,OAAOkjB,eAAe,CAAC;UACrBrG,MAAM,EAAEvjB,GAAG,CAACujB,MAAM;UAClBvL,IAAI,EAAEhY,GAAG,CAACgY,IAAI;UACd4P,IAAI,EAAE5nB,GAAG,CAAC4nB,IAAAA;AAClB,SAAO,CAAC,CAAA;AACJ,MAAA,KAAK,MAAM;AACf;AACM,QAAA,OAAO,SAAS,CAAA;AAClB,MAAA;AACJ;AACM,QAAA,OAAO,MAAM,CAAA;AAChB,KAAA;GACF,CAAA;EAED5I,MAAA,CAAAC,OAAA,CAAA+K,aAAA,GAA+B,UAAUra,KAAK,EAAEtP,OAAO,EAAE;IACvD,IAAIA,OAAO,KAAK5C,SAAS,EAAE;MACzB4C,OAAO,GAAG,EAAE,CAAA;AACb,KAAA;IAED,MAAM4pB,GAAG,GAAG,IAAI1C,eAAe,CAAC5X,KAAK,EAAEtP,OAAO,CAAC6pB,OAAO,EAAE7pB,OAAO,CAAConB,gBAAgB,EAAEpnB,OAAO,CAACL,GAAG,EAAEK,OAAO,CAACqnB,aAAa,CAAC,CAAA;IACrH,IAAIuC,GAAG,CAAC7H,OAAO,EAAE;AACf,MAAA,OAAO,SAAS,CAAA;AACjB,KAAA;IAED,OAAO6H,GAAG,CAACjqB,GAAG,CAAA;GACf,CAAA;EAEDgf,MAAA,CAAAC,OAAA,CAAAkL,cAAA,GAAgC,UAAUnqB,GAAG,EAAEmnB,QAAQ,EAAE;IACvDnnB,GAAG,CAACmnB,QAAQ,GAAG,EAAE,CAAA;IACjB,MAAMZ,OAAO,GAAGvF,QAAQ,CAACqB,IAAI,CAACC,MAAM,CAAC6E,QAAQ,CAAC,CAAA;AAC9C,IAAA,KAAK,IAAIzmB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6lB,OAAO,CAAC/nB,MAAM,EAAE,EAAEkC,CAAC,EAAE;MACvCV,GAAG,CAACmnB,QAAQ,IAAI7C,iBAAiB,CAACiC,OAAO,CAAC7lB,CAAC,CAAC,EAAE2jB,uBAAuB,CAAC,CAAA;AACvE,KAAA;GACF,CAAA;EAEDrF,MAAA,CAAAC,OAAA,CAAAmL,cAAA,GAAgC,UAAUpqB,GAAG,EAAEonB,QAAQ,EAAE;IACvDpnB,GAAG,CAAConB,QAAQ,GAAG,EAAE,CAAA;IACjB,MAAMb,OAAO,GAAGvF,QAAQ,CAACqB,IAAI,CAACC,MAAM,CAAC8E,QAAQ,CAAC,CAAA;AAC9C,IAAA,KAAK,IAAI1mB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6lB,OAAO,CAAC/nB,MAAM,EAAE,EAAEkC,CAAC,EAAE;MACvCV,GAAG,CAAConB,QAAQ,IAAI9C,iBAAiB,CAACiC,OAAO,CAAC7lB,CAAC,CAAC,EAAE2jB,uBAAuB,CAAC,CAAA;AACvE,KAAA;GACF,CAAA;AAEDrF,EAAAA,MAAA,CAAAC,OAAA,CAAA4H,aAAA,GAA+BA,aAAa,CAAA;AAE5C7H,EAAAA,MAAA,CAAAC,OAAA,CAAAoI,+BAAA,GAAiDA,+BAA+B,CAAA;AAEhFrI,EAAAA,MAAkC,CAAAC,OAAA,CAAAoL,gBAAA,GAAA,UAAUC,OAAO,EAAE;IACnD,OAAOxY,MAAM,CAACwY,OAAO,CAAC,CAAA;GACvB,CAAA;EAEDtL,MAAA,CAAAC,OAAA,CAAA8K,QAAA,GAA0B,UAAUpa,KAAK,EAAEtP,OAAO,EAAE;IAClD,IAAIA,OAAO,KAAK5C,SAAS,EAAE;MACzB4C,OAAO,GAAG,EAAE,CAAA;AACb,KAAA;;AAEH;AACE,IAAA,OAAO2e,MAAM,CAACC,OAAO,CAAC+K,aAAa,CAACra,KAAK,EAAE;MAAEua,OAAO,EAAE7pB,OAAO,CAAC6pB,OAAO;MAAEzC,gBAAgB,EAAEpnB,OAAO,CAAConB,gBAAAA;AAAkB,KAAA,CAAC,CAAA;GACrH,CAAA;;;AC7wCD,IAAsB8C,cAAA,GAAG,MAAMC,OAAO,CAAC;EACrCje,WAAWA,CAACke,eAAe,EAAE;AAC3B,IAAA,MAAMzqB,GAAG,GAAGyqB,eAAe,CAAC,CAAC,CAAC,CAAA;AAC9B,IAAA,MAAMjD,IAAI,GAAGiD,eAAe,CAAC,CAAC,CAAC,CAAA;IAE/B,IAAIC,UAAU,GAAG,IAAI,CAAA;IACrB,IAAIlD,IAAI,KAAK/pB,SAAS,EAAE;AACtBitB,MAAAA,UAAU,GAAGT,eAAG,CAACD,aAAa,CAACxC,IAAI,CAAC,CAAA;MACpC,IAAIkD,UAAU,KAAK,SAAS,EAAE;AAC5B,QAAA,MAAM,IAAIrd,SAAS,CAAC,kBAAkB,CAAC,CAAA;AACxC,OAAA;AACF,KAAA;AAED,IAAA,MAAMsd,SAAS,GAAGV,eAAG,CAACD,aAAa,CAAChqB,GAAG,EAAE;AAAEkqB,MAAAA,OAAO,EAAEQ,UAAAA;AAAU,KAAE,CAAC,CAAA;IACjE,IAAIC,SAAS,KAAK,SAAS,EAAE;AAC3B,MAAA,MAAM,IAAItd,SAAS,CAAC,aAAa,CAAC,CAAA;AACnC,KAAA;IAED,IAAI,CAACud,IAAI,GAAGD,SAAS,CAAA;;AAEzB;AACG,GAAA;;EAED,IAAI5hB,IAAIA,GAAG;AACT,IAAA,OAAOkhB,eAAG,CAACP,YAAY,CAAC,IAAI,CAACkB,IAAI,CAAC,CAAA;AACnC,GAAA;EAED,IAAI7hB,IAAIA,CAAC8hB,CAAC,EAAE;AACV,IAAA,MAAMF,SAAS,GAAGV,eAAG,CAACD,aAAa,CAACa,CAAC,CAAC,CAAA;IACtC,IAAIF,SAAS,KAAK,SAAS,EAAE;AAC3B,MAAA,MAAM,IAAItd,SAAS,CAAC,aAAa,CAAC,CAAA;AACnC,KAAA;IAED,IAAI,CAACud,IAAI,GAAGD,SAAS,CAAA;AACtB,GAAA;EAED,IAAIG,MAAMA,GAAG;AACX,IAAA,OAAOb,eAAG,CAACH,kBAAkB,CAAC,IAAI,CAACc,IAAI,CAAC,CAAA;AACzC,GAAA;EAED,IAAIzqB,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACyqB,IAAI,CAACrH,MAAM,GAAG,GAAG,CAAA;AAC9B,GAAA;EAED,IAAIpjB,QAAQA,CAAC0qB,CAAC,EAAE;AACdZ,IAAAA,eAAG,CAACD,aAAa,CAACa,CAAC,GAAG,GAAG,EAAE;MAAE7qB,GAAG,EAAE,IAAI,CAAC4qB,IAAI;AAAElD,MAAAA,aAAa,EAAE,cAAA;AAAc,KAAE,CAAC,CAAA;AAC9E,GAAA;EAED,IAAIP,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACyD,IAAI,CAACzD,QAAQ,CAAA;AAC1B,GAAA;EAED,IAAIA,QAAQA,CAAC0D,CAAC,EAAE;IACd,IAAIZ,eAAG,CAAC5C,+BAA+B,CAAC,IAAI,CAACuD,IAAI,CAAC,EAAE;AAClD,MAAA,OAAA;AACD,KAAA;IAEDX,eAAG,CAACE,cAAc,CAAC,IAAI,CAACS,IAAI,EAAEC,CAAC,CAAC,CAAA;AACjC,GAAA;EAED,IAAIzD,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACwD,IAAI,CAACxD,QAAQ,CAAA;AAC1B,GAAA;EAED,IAAIA,QAAQA,CAACyD,CAAC,EAAE;IACd,IAAIZ,eAAG,CAAC5C,+BAA+B,CAAC,IAAI,CAACuD,IAAI,CAAC,EAAE;AAClD,MAAA,OAAA;AACD,KAAA;IAEDX,eAAG,CAACG,cAAc,CAAC,IAAI,CAACQ,IAAI,EAAEC,CAAC,CAAC,CAAA;AACjC,GAAA;EAED,IAAI7S,IAAIA,GAAG;AACT,IAAA,MAAMhY,GAAG,GAAG,IAAI,CAAC4qB,IAAI,CAAA;AAErB,IAAA,IAAI5qB,GAAG,CAACgY,IAAI,KAAK,IAAI,EAAE;AACrB,MAAA,OAAO,EAAE,CAAA;AACV,KAAA;AAED,IAAA,IAAIhY,GAAG,CAAC4nB,IAAI,KAAK,IAAI,EAAE;AACrB,MAAA,OAAOqC,eAAG,CAACpD,aAAa,CAAC7mB,GAAG,CAACgY,IAAI,CAAC,CAAA;AACnC,KAAA;AAED,IAAA,OAAOiS,eAAG,CAACpD,aAAa,CAAC7mB,GAAG,CAACgY,IAAI,CAAC,GAAG,GAAG,GAAGiS,eAAG,CAACI,gBAAgB,CAACrqB,GAAG,CAAC4nB,IAAI,CAAC,CAAA;AAC1E,GAAA;EAED,IAAI5P,IAAIA,CAAC6S,CAAC,EAAE;AACV,IAAA,IAAI,IAAI,CAACD,IAAI,CAACtD,gBAAgB,EAAE;AAC9B,MAAA,OAAA;AACD,KAAA;AAED2C,IAAAA,eAAG,CAACD,aAAa,CAACa,CAAC,EAAE;MAAE7qB,GAAG,EAAE,IAAI,CAAC4qB,IAAI;AAAElD,MAAAA,aAAa,EAAE,MAAA;AAAM,KAAE,CAAC,CAAA;AAChE,GAAA;EAED,IAAIqD,QAAQA,GAAG;AACb,IAAA,IAAI,IAAI,CAACH,IAAI,CAAC5S,IAAI,KAAK,IAAI,EAAE;AAC3B,MAAA,OAAO,EAAE,CAAA;AACV,KAAA;IAED,OAAOiS,eAAG,CAACpD,aAAa,CAAC,IAAI,CAAC+D,IAAI,CAAC5S,IAAI,CAAC,CAAA;AACzC,GAAA;EAED,IAAI+S,QAAQA,CAACF,CAAC,EAAE;AACd,IAAA,IAAI,IAAI,CAACD,IAAI,CAACtD,gBAAgB,EAAE;AAC9B,MAAA,OAAA;AACD,KAAA;AAED2C,IAAAA,eAAG,CAACD,aAAa,CAACa,CAAC,EAAE;MAAE7qB,GAAG,EAAE,IAAI,CAAC4qB,IAAI;AAAElD,MAAAA,aAAa,EAAE,UAAA;AAAU,KAAE,CAAC,CAAA;AACpE,GAAA;EAED,IAAIE,IAAIA,GAAG;AACT,IAAA,IAAI,IAAI,CAACgD,IAAI,CAAChD,IAAI,KAAK,IAAI,EAAE;AAC3B,MAAA,OAAO,EAAE,CAAA;AACV,KAAA;IAED,OAAOqC,eAAG,CAACI,gBAAgB,CAAC,IAAI,CAACO,IAAI,CAAChD,IAAI,CAAC,CAAA;AAC5C,GAAA;EAED,IAAIA,IAAIA,CAACiD,CAAC,EAAE;IACV,IAAIZ,eAAG,CAAC5C,+BAA+B,CAAC,IAAI,CAACuD,IAAI,CAAC,EAAE;AAClD,MAAA,OAAA;AACD,KAAA;IAED,IAAIC,CAAC,KAAK,EAAE,EAAE;AACZ,MAAA,IAAI,CAACD,IAAI,CAAChD,IAAI,GAAG,IAAI,CAAA;AAC3B,KAAK,MAAM;AACLqC,MAAAA,eAAG,CAACD,aAAa,CAACa,CAAC,EAAE;QAAE7qB,GAAG,EAAE,IAAI,CAAC4qB,IAAI;AAAElD,QAAAA,aAAa,EAAE,MAAA;AAAM,OAAE,CAAC,CAAA;AAChE,KAAA;AACF,GAAA;EAED,IAAIsD,QAAQA,GAAG;AACb,IAAA,IAAI,IAAI,CAACJ,IAAI,CAACtD,gBAAgB,EAAE;AAC9B,MAAA,OAAO,IAAI,CAACsD,IAAI,CAACvrB,IAAI,CAAC,CAAC,CAAC,CAAA;AACzB,KAAA;IAED,IAAI,IAAI,CAACurB,IAAI,CAACvrB,IAAI,CAACb,MAAM,KAAK,CAAC,EAAE;AAC/B,MAAA,OAAO,EAAE,CAAA;AACV,KAAA;IAED,OAAO,GAAG,GAAG,IAAI,CAACosB,IAAI,CAACvrB,IAAI,CAACsB,IAAI,CAAC,GAAG,CAAC,CAAA;AACtC,GAAA;EAED,IAAIqqB,QAAQA,CAACH,CAAC,EAAE;AACd,IAAA,IAAI,IAAI,CAACD,IAAI,CAACtD,gBAAgB,EAAE;AAC9B,MAAA,OAAA;AACD,KAAA;AAED,IAAA,IAAI,CAACsD,IAAI,CAACvrB,IAAI,GAAG,EAAE,CAAA;AACnB4qB,IAAAA,eAAG,CAACD,aAAa,CAACa,CAAC,EAAE;MAAE7qB,GAAG,EAAE,IAAI,CAAC4qB,IAAI;AAAElD,MAAAA,aAAa,EAAE,YAAA;AAAY,KAAE,CAAC,CAAA;AACtE,GAAA;EAED,IAAIxG,MAAMA,GAAG;AACX,IAAA,IAAI,IAAI,CAAC0J,IAAI,CAAC/C,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC+C,IAAI,CAAC/C,KAAK,KAAK,EAAE,EAAE;AACtD,MAAA,OAAO,EAAE,CAAA;AACV,KAAA;AAED,IAAA,OAAO,GAAG,GAAG,IAAI,CAAC+C,IAAI,CAAC/C,KAAK,CAAA;AAC7B,GAAA;EAED,IAAI3G,MAAMA,CAAC2J,CAAC,EAAE;AAChB;;AAEI,IAAA,MAAM7qB,GAAG,GAAG,IAAI,CAAC4qB,IAAI,CAAA;IAErB,IAAIC,CAAC,KAAK,EAAE,EAAE;MACZ7qB,GAAG,CAAC6nB,KAAK,GAAG,IAAI,CAAA;AAChB,MAAA,OAAA;AACD,KAAA;AAED,IAAA,MAAMlY,KAAK,GAAGkb,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAGA,CAAC,CAACtsB,SAAS,CAAC,CAAC,CAAC,GAAGssB,CAAC,CAAA;IAC/C7qB,GAAG,CAAC6nB,KAAK,GAAG,EAAE,CAAA;AACdoC,IAAAA,eAAG,CAACD,aAAa,CAACra,KAAK,EAAE;MAAE3P,GAAG;AAAE0nB,MAAAA,aAAa,EAAE,OAAA;AAAO,KAAE,CAAC,CAAA;AAC1D,GAAA;EAED,IAAIuD,IAAIA,GAAG;AACT,IAAA,IAAI,IAAI,CAACL,IAAI,CAAC9C,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC8C,IAAI,CAAC9C,QAAQ,KAAK,EAAE,EAAE;AAC5D,MAAA,OAAO,EAAE,CAAA;AACV,KAAA;AAED,IAAA,OAAO,GAAG,GAAG,IAAI,CAAC8C,IAAI,CAAC9C,QAAQ,CAAA;AAChC,GAAA;EAED,IAAImD,IAAIA,CAACJ,CAAC,EAAE;IACV,IAAIA,CAAC,KAAK,EAAE,EAAE;AACZ,MAAA,IAAI,CAACD,IAAI,CAAC9C,QAAQ,GAAG,IAAI,CAAA;AACzB,MAAA,OAAA;AACD,KAAA;AAED,IAAA,MAAMnY,KAAK,GAAGkb,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAGA,CAAC,CAACtsB,SAAS,CAAC,CAAC,CAAC,GAAGssB,CAAC,CAAA;AAC/C,IAAA,IAAI,CAACD,IAAI,CAAC9C,QAAQ,GAAG,EAAE,CAAA;AACvBmC,IAAAA,eAAG,CAACD,aAAa,CAACra,KAAK,EAAE;MAAE3P,GAAG,EAAE,IAAI,CAAC4qB,IAAI;AAAElD,MAAAA,aAAa,EAAE,UAAA;AAAU,KAAE,CAAC,CAAA;AACxE,GAAA;AAEDwD,EAAAA,MAAMA,GAAG;IACP,OAAO,IAAI,CAACniB,IAAI,CAAA;AACjB,GAAA;AACH,CAAC,CAAA;;;;;;;ACjMD,EAAA,MAAMwW,IAAI,GAAG4L,KAAK,CAAC9L,UAAU,CAAA;EAE7B,SAASpf,GAAGA,CAACD,GAAG,EAAE;AAChB,IAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAACuf,IAAI,CAAC,IAAI,EAAE,IAAI,YAAYtf,GAAG,CAAC,EAAE;AACjD,MAAA,MAAM,IAAIoN,SAAS,CAAC,uHAAuH,CAAC,CAAA;AAC7I,KAAA;AACD,IAAA,IAAIyH,SAAS,CAACtW,MAAM,GAAG,CAAC,EAAE;MACxB,MAAM,IAAI6O,SAAS,CAAC,2DAA2D,GAAGyH,SAAS,CAACtW,MAAM,GAAG,WAAW,CAAC,CAAA;AAClH,KAAA;IACD,MAAM4sB,IAAI,GAAG,EAAE,CAAA;AACf,IAAA,KAAK,IAAI1qB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoU,SAAS,CAACtW,MAAM,IAAIkC,CAAC,GAAG,CAAC,EAAE,EAAEA,CAAC,EAAE;AAClD0qB,MAAAA,IAAI,CAAC1qB,CAAC,CAAC,GAAGoU,SAAS,CAACpU,CAAC,CAAC,CAAA;AACvB,KAAA;AACD0qB,IAAAA,IAAI,CAAC,CAAC,CAAC,GAAGpO,KAAW,CAAC,WAAW,CAAC,CAACoO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3C,IAAA,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK3tB,SAAS,EAAE;AAC3B2tB,MAAAA,IAAI,CAAC,CAAC,CAAC,GAAGpO,KAAW,CAAC,WAAW,CAAC,CAACoO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,KAAA;IAEDpM,MAAM,CAACC,OAAO,CAACoM,KAAK,CAAC,IAAI,EAAED,IAAI,CAAC,CAAA;AAClC,GAAA;EAEAnrB,GAAG,CAACwQ,SAAS,CAACya,MAAM,GAAG,SAASA,MAAMA,GAAG;AACvC,IAAA,IAAI,CAAC,IAAI,IAAI,CAAClM,MAAM,CAACC,OAAO,CAACqM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrC,MAAA,MAAM,IAAIje,SAAS,CAAC,oBAAoB,CAAC,CAAA;AAC1C,KAAA;IACD,MAAM+d,IAAI,GAAG,EAAE,CAAA;AACf,IAAA,KAAK,IAAI1qB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoU,SAAS,CAACtW,MAAM,IAAIkC,CAAC,GAAG,CAAC,EAAE,EAAEA,CAAC,EAAE;AAClD0qB,MAAAA,IAAI,CAAC1qB,CAAC,CAAC,GAAGoU,SAAS,CAACpU,CAAC,CAAC,CAAA;AACvB,KAAA;AACD,IAAA,OAAO,IAAI,CAAC6e,IAAI,CAAC,CAAC2L,MAAM,CAACtW,KAAK,CAAC,IAAI,CAAC2K,IAAI,CAAC,EAAE6L,IAAI,CAAC,CAAA;GACjD,CAAA;EACDhqB,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,MAAM,EAAE;AAC3CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAACxW,IAAI,CAAA;KACvB;IACDwiB,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAACxW,IAAI,GAAGiV,CAAC,CAAA;KACpB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;AAEFtR,EAAAA,GAAG,CAACwQ,SAAS,CAAC7O,QAAQ,GAAG,YAAY;AACnC,IAAA,IAAI,CAAC,IAAI,IAAI,CAACod,MAAM,CAACC,OAAO,CAACqM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrC,MAAA,MAAM,IAAIje,SAAS,CAAC,oBAAoB,CAAC,CAAA;AAC1C,KAAA;IACD,OAAO,IAAI,CAACtE,IAAI,CAAA;GACjB,CAAA;EAED3H,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,QAAQ,EAAE;AAC7CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAACuL,MAAM,CAAA;KACzB;AACDxZ,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,UAAU,EAAE;AAC/CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAACpf,QAAQ,CAAA;KAC3B;IACDorB,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAACpf,QAAQ,GAAG6d,CAAC,CAAA;KACxB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,UAAU,EAAE;AAC/CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAAC4H,QAAQ,CAAA;KAC3B;IACDoE,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAAC4H,QAAQ,GAAGnJ,CAAC,CAAA;KACxB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,UAAU,EAAE;AAC/CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAAC6H,QAAQ,CAAA;KAC3B;IACDmE,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAAC6H,QAAQ,GAAGpJ,CAAC,CAAA;KACxB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,MAAM,EAAE;AAC3CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAACvH,IAAI,CAAA;KACvB;IACDuT,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAACvH,IAAI,GAAGgG,CAAC,CAAA;KACpB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,UAAU,EAAE;AAC/CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAACwL,QAAQ,CAAA;KAC3B;IACDQ,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAACwL,QAAQ,GAAG/M,CAAC,CAAA;KACxB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,MAAM,EAAE;AAC3CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAACqI,IAAI,CAAA;KACvB;IACD2D,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAACqI,IAAI,GAAG5J,CAAC,CAAA;KACpB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,UAAU,EAAE;AAC/CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAACyL,QAAQ,CAAA;KAC3B;IACDO,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAACyL,QAAQ,GAAGhN,CAAC,CAAA;KACxB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,QAAQ,EAAE;AAC7CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAAC2B,MAAM,CAAA;KACzB;IACDqK,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAAC2B,MAAM,GAAGlD,CAAC,CAAA;KACtB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAEFnQ,MAAM,CAACiQ,cAAc,CAACpR,GAAG,CAACwQ,SAAS,EAAE,MAAM,EAAE;AAC3CtP,IAAAA,GAAGA,GAAG;AACJ,MAAA,OAAO,IAAI,CAACoe,IAAI,CAAC,CAAC0L,IAAI,CAAA;KACvB;IACDM,GAAGA,CAACvN,CAAC,EAAE;AACLA,MAAAA,CAAC,GAAGhB,KAAW,CAAC,WAAW,CAAC,CAACgB,CAAC,CAAC,CAAA;AAC/B,MAAA,IAAI,CAACuB,IAAI,CAAC,CAAC0L,IAAI,GAAGjN,CAAC,CAAA;KACpB;AACD1M,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE,IAAA;AAChB,GAAC,CAAC,CAAA;EAGFyN,MAAiB,CAAAC,OAAA,GAAA;IACfqM,EAAEA,CAACna,GAAG,EAAE;MACN,OAAO,CAAC,CAACA,GAAG,IAAIA,GAAG,CAACoO,IAAI,CAAC,YAAYiM,SAAI,CAACjB,cAAc,CAAA;KACzD;AACDkB,IAAAA,MAAMA,CAAChB,eAAe,EAAEiB,WAAW,EAAE;MACnC,IAAIva,GAAG,GAAG/P,MAAM,CAACqqB,MAAM,CAACxrB,GAAG,CAACwQ,SAAS,CAAC,CAAA;MACtC,IAAI,CAAC4a,KAAK,CAACla,GAAG,EAAEsZ,eAAe,EAAEiB,WAAW,CAAC,CAAA;AAC7C,MAAA,OAAOva,GAAG,CAAA;KACX;AACDka,IAAAA,KAAKA,CAACla,GAAG,EAAEsZ,eAAe,EAAEiB,WAAW,EAAE;AACvC,MAAA,IAAI,CAACA,WAAW,EAAEA,WAAW,GAAG,EAAE,CAAA;MAClCA,WAAW,CAACjM,OAAO,GAAGtO,GAAG,CAAA;AAEzBA,MAAAA,GAAG,CAACoO,IAAI,CAAC,GAAG,IAAIiM,SAAI,CAACjB,cAAc,CAACE,eAAe,EAAEiB,WAAW,CAAC,CAAA;MACjEva,GAAG,CAACoO,IAAI,CAAC,CAAC4L,KAAK,CAAC/L,aAAa,CAAC,GAAGjO,GAAG,CAAA;KACrC;AACDwa,IAAAA,SAAS,EAAE1rB,GAAG;AACd2rB,IAAAA,MAAM,EAAE;AACNC,MAAAA,MAAM,EAAE;AAAE5rB,QAAAA,GAAG,EAAEA,GAAAA;OAAK;AACpB6rB,MAAAA,MAAM,EAAE;AAAE7rB,QAAAA,GAAG,EAAEA,GAAAA;AAAK,OAAA;AACrB,KAAA;GACF,CAAA;;;AChMD,IAAAA,KAAW,GAAG8rB,KAAgB,CAACJ,SAAS,CAAA;AACxC,IAAAjC,YAAoB,GAAGsC,eAA8B,CAACtC,YAAY,CAAA;AAClE,IAAAI,kBAA0B,GAAGkC,eAA8B,CAAClC,kBAAkB,CAAA;AAC9E,IAAAE,aAAqB,GAAGgC,eAA8B,CAAChC,aAAa,CAAA;AACpE,IAAAG,cAAsB,GAAG6B,eAA8B,CAAC7B,cAAc,CAAA;AACtE,IAAAC,cAAsB,GAAG4B,eAA8B,CAAC5B,cAAc,CAAA;AACtE,IAAAvD,aAAqB,GAAGmF,eAA8B,CAACnF,aAAa,CAAA;AACpE,IAAAwD,gBAAwB,GAAG2B,eAA8B,CAAC3B,gBAAgB,CAAA;AAC1E,IAAgBN,UAAA,GAAGiC,eAA8B,CAACjC,QAAQ,CAAA;;;;;;;;;;;;;ACH1D;;AAEA;AACA,MAAMkC,UAAQ,GAAGC,MAAM,CAACD,QAAQ,CAAA;AAEhC,MAAME,QAAM,GAAGva,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC/B,MAAMwD,MAAI,GAAGxD,MAAM,CAAC,MAAM,CAAC,CAAA;AAE3B,MAAMwa,MAAI,CAAC;AACV7f,EAAAA,WAAWA,GAAG;AACb,IAAA,IAAI,CAAC6I,MAAI,CAAC,GAAG,EAAE,CAAA;AAEf,IAAA,MAAMiX,SAAS,GAAGvX,SAAS,CAAC,CAAC,CAAC,CAAA;AAC9B,IAAA,MAAMzU,OAAO,GAAGyU,SAAS,CAAC,CAAC,CAAC,CAAA;IAE5B,MAAMwX,OAAO,GAAG,EAAE,CAAA;AAGlB,IAAA,IAAID,SAAS,EAAE;MACd,MAAMxN,CAAC,GAAGwN,SAAS,CAAA;AACnB,MAAA,MAAM7tB,MAAM,GAAGuT,MAAM,CAAC8M,CAAC,CAACrgB,MAAM,CAAC,CAAA;MAC/B,KAAK,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlC,MAAM,EAAEkC,CAAC,EAAE,EAAE;AAChC,QAAA,MAAM6rB,OAAO,GAAG1N,CAAC,CAACne,CAAC,CAAC,CAAA;AACpB,QAAA,IAAImiB,MAAM,CAAA;QACV,IAAI0J,OAAO,YAAYxI,MAAM,EAAE;AAC9BlB,UAAAA,MAAM,GAAG0J,OAAO,CAAA;SAChB,MAAM,IAAIC,WAAW,CAACC,MAAM,CAACF,OAAO,CAAC,EAAE;AACvC1J,UAAAA,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAACH,OAAO,CAAC1J,MAAM,EAAE0J,OAAO,CAACI,UAAU,EAAEJ,OAAO,CAACK,UAAU,CAAC,CAAA;AAC7E,SAAC,MAAM,IAAIL,OAAO,YAAYC,WAAW,EAAE;AAC1C3J,UAAAA,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAACH,OAAO,CAAC,CAAA;AAC9B,SAAC,MAAM,IAAIA,OAAO,YAAYH,MAAI,EAAE;AACnCvJ,UAAAA,MAAM,GAAG0J,OAAO,CAACJ,QAAM,CAAC,CAAA;AACzB,SAAC,MAAM;AACNtJ,UAAAA,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAAC,OAAOH,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGza,MAAM,CAACya,OAAO,CAAC,CAAC,CAAA;AAC9E,SAAA;AAEAD,QAAAA,OAAO,CAACztB,IAAI,CAACgkB,MAAM,CAAC,CAAA;AACrB,OAAA;AACD,KAAA;IAEA,IAAI,CAACsJ,QAAM,CAAC,GAAGpI,MAAM,CAAC7Y,MAAM,CAACohB,OAAO,CAAC,CAAA;AAErC,IAAA,IAAI9jB,IAAI,GAAGnI,OAAO,IAAIA,OAAO,CAACmI,IAAI,KAAK/K,SAAS,IAAIqU,MAAM,CAACzR,OAAO,CAACmI,IAAI,CAAC,CAACvJ,WAAW,EAAE,CAAA;IACtF,IAAIuJ,IAAI,IAAI,CAAC,kBAAkB,CAACiF,IAAI,CAACjF,IAAI,CAAC,EAAE;AAC3C,MAAA,IAAI,CAAC4M,MAAI,CAAC,GAAG5M,IAAI,CAAA;AAClB,KAAA;AACD,GAAA;EACA,IAAIqkB,IAAIA,GAAG;AACV,IAAA,OAAO,IAAI,CAACV,QAAM,CAAC,CAAC3tB,MAAM,CAAA;AAC3B,GAAA;EACA,IAAIgK,IAAIA,GAAG;IACV,OAAO,IAAI,CAAC4M,MAAI,CAAC,CAAA;AAClB,GAAA;AACA3V,EAAAA,IAAIA,GAAG;AACN,IAAA,OAAOqtB,OAAO,CAACC,OAAO,CAAC,IAAI,CAACZ,QAAM,CAAC,CAACvqB,QAAQ,EAAE,CAAC,CAAA;AAChD,GAAA;AACAorB,EAAAA,WAAWA,GAAG;AACb,IAAA,MAAMlJ,GAAG,GAAG,IAAI,CAACqI,QAAM,CAAC,CAAA;AACxB,IAAA,MAAMc,EAAE,GAAGnJ,GAAG,CAACjB,MAAM,CAAChhB,KAAK,CAACiiB,GAAG,CAAC6I,UAAU,EAAE7I,GAAG,CAAC6I,UAAU,GAAG7I,GAAG,CAAC8I,UAAU,CAAC,CAAA;AAC5E,IAAA,OAAOE,OAAO,CAACC,OAAO,CAACE,EAAE,CAAC,CAAA;AAC3B,GAAA;AACAC,EAAAA,MAAMA,GAAG;AACR,IAAA,MAAMC,QAAQ,GAAG,IAAIlB,UAAQ,EAAE,CAAA;AAC/BkB,IAAAA,QAAQ,CAACC,KAAK,GAAG,YAAY,EAAE,CAAA;AAC/BD,IAAAA,QAAQ,CAACtuB,IAAI,CAAC,IAAI,CAACstB,QAAM,CAAC,CAAC,CAAA;AAC3BgB,IAAAA,QAAQ,CAACtuB,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,IAAA,OAAOsuB,QAAQ,CAAA;AAChB,GAAA;AACAvrB,EAAAA,QAAQA,GAAG;AACV,IAAA,OAAO,eAAe,CAAA;AACvB,GAAA;AACAC,EAAAA,KAAKA,GAAG;AACP,IAAA,MAAMgrB,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;AAEtB,IAAA,MAAMplB,KAAK,GAAGqN,SAAS,CAAC,CAAC,CAAC,CAAA;AAC1B,IAAA,MAAMkL,GAAG,GAAGlL,SAAS,CAAC,CAAC,CAAC,CAAA;IACxB,IAAIuY,aAAa,EAAEC,WAAW,CAAA;IAC9B,IAAI7lB,KAAK,KAAKhK,SAAS,EAAE;AACxB4vB,MAAAA,aAAa,GAAG,CAAC,CAAA;AAClB,KAAC,MAAM,IAAI5lB,KAAK,GAAG,CAAC,EAAE;MACrB4lB,aAAa,GAAG3rB,IAAI,CAAC6rB,GAAG,CAACV,IAAI,GAAGplB,KAAK,EAAE,CAAC,CAAC,CAAA;AAC1C,KAAC,MAAM;MACN4lB,aAAa,GAAG3rB,IAAI,CAAC8rB,GAAG,CAAC/lB,KAAK,EAAEolB,IAAI,CAAC,CAAA;AACtC,KAAA;IACA,IAAI7M,GAAG,KAAKviB,SAAS,EAAE;AACtB6vB,MAAAA,WAAW,GAAGT,IAAI,CAAA;AACnB,KAAC,MAAM,IAAI7M,GAAG,GAAG,CAAC,EAAE;MACnBsN,WAAW,GAAG5rB,IAAI,CAAC6rB,GAAG,CAACV,IAAI,GAAG7M,GAAG,EAAE,CAAC,CAAC,CAAA;AACtC,KAAC,MAAM;MACNsN,WAAW,GAAG5rB,IAAI,CAAC8rB,GAAG,CAACxN,GAAG,EAAE6M,IAAI,CAAC,CAAA;AAClC,KAAA;IACA,MAAMY,IAAI,GAAG/rB,IAAI,CAAC6rB,GAAG,CAACD,WAAW,GAAGD,aAAa,EAAE,CAAC,CAAC,CAAA;AAErD,IAAA,MAAMxK,MAAM,GAAG,IAAI,CAACsJ,QAAM,CAAC,CAAA;IAC3B,MAAMuB,YAAY,GAAG7K,MAAM,CAAChhB,KAAK,CAACwrB,aAAa,EAAEA,aAAa,GAAGI,IAAI,CAAC,CAAA;AACtE,IAAA,MAAME,IAAI,GAAG,IAAIvB,MAAI,CAAC,EAAE,EAAE;MAAE5jB,IAAI,EAAEsM,SAAS,CAAC,CAAC,CAAA;AAAE,KAAC,CAAC,CAAA;AACjD6Y,IAAAA,IAAI,CAACxB,QAAM,CAAC,GAAGuB,YAAY,CAAA;AAC3B,IAAA,OAAOC,IAAI,CAAA;AACZ,GAAA;AACD,CAAA;AAEAvsB,MAAM,CAAC4T,gBAAgB,CAACoX,MAAI,CAAC3b,SAAS,EAAE;AACvCoc,EAAAA,IAAI,EAAE;AAAEvb,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1B9I,EAAAA,IAAI,EAAE;AAAE8I,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1BzP,EAAAA,KAAK,EAAE;AAAEyP,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC3B,CAAC,CAAC,CAAA;AAEFlQ,MAAM,CAACiQ,cAAc,CAAC+a,MAAI,CAAC3b,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AACzDllB,EAAAA,KAAK,EAAE,MAAM;AACb8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsc,YAAUA,CAACC,OAAO,EAAEtlB,IAAI,EAAEulB,WAAW,EAAE;AAC9CpuB,EAAAA,KAAK,CAACgR,IAAI,CAAC,IAAI,EAAEmd,OAAO,CAAC,CAAA;EAEzB,IAAI,CAACA,OAAO,GAAGA,OAAO,CAAA;EACtB,IAAI,CAACtlB,IAAI,GAAGA,IAAI,CAAA;;AAEhB;AACA,EAAA,IAAIulB,WAAW,EAAE;IACf,IAAI,CAACC,IAAI,GAAG,IAAI,CAACC,KAAK,GAAGF,WAAW,CAACC,IAAI,CAAA;AAC3C,GAAA;;AAEA;EACAruB,KAAK,CAACuuB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC3hB,WAAW,CAAC,CAAA;AACjD,CAAA;AAEAshB,YAAU,CAACpd,SAAS,GAAGrP,MAAM,CAACqqB,MAAM,CAAC9rB,KAAK,CAAC8Q,SAAS,CAAC,CAAA;AACrDod,YAAU,CAACpd,SAAS,CAAClE,WAAW,GAAGshB,YAAU,CAAA;AAC7CA,YAAU,CAACpd,SAAS,CAACrC,IAAI,GAAG,YAAY,CAAA;AAExC,IAAI+f,SAAO,CAAA;AACX,IAAI;AACHA,EAAAA,SAAO,GAAGC,OAAO,CAAC,UAAU,CAAC,CAACD,OAAO,CAAA;AACtC,CAAC,CAAC,OAAOznB,CAAC,EAAE,EAAC;AAEb,MAAM2nB,WAAS,GAAGzc,MAAM,CAAC,gBAAgB,CAAC,CAAA;;AAE1C;AACA,MAAM0c,aAAW,GAAGpC,MAAM,CAACoC,WAAW,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,MAAIA,CAACC,IAAI,EAAE;EACnB,IAAIC,KAAK,GAAG,IAAI,CAAA;EAEhB,IAAIC,IAAI,GAAG5Z,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE;IAC7E6Z,SAAS,GAAGD,IAAI,CAAC7B,IAAI,CAAA;EAEzB,IAAIA,IAAI,GAAG8B,SAAS,KAAKlxB,SAAS,GAAG,CAAC,GAAGkxB,SAAS,CAAA;AAClD,EAAA,IAAIC,YAAY,GAAGF,IAAI,CAACG,OAAO,CAAA;EAC/B,IAAIA,OAAO,GAAGD,YAAY,KAAKnxB,SAAS,GAAG,CAAC,GAAGmxB,YAAY,CAAA;EAE3D,IAAIJ,IAAI,IAAI,IAAI,EAAE;AACjB;AACAA,IAAAA,IAAI,GAAG,IAAI,CAAA;AACZ,GAAC,MAAM,IAAIM,mBAAiB,CAACN,IAAI,CAAC,EAAE;AACnC;IACAA,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC5sB,QAAQ,EAAE,CAAC,CAAA;AACpC,GAAC,MAAM,IAAImtB,QAAM,CAACP,IAAI,CAAC,EAAE,CAAC,KAAM,IAAIzK,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE,CAAC,KAAM,IAAIptB,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAC+O,IAAI,CAAC6d,IAAI,CAAC,KAAK,sBAAsB,EAAE;AACtI;AACAA,IAAAA,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC,CAAA;GACxB,MAAM,IAAIhC,WAAW,CAACC,MAAM,CAAC+B,IAAI,CAAC,EAAE;AACpC;AACAA,IAAAA,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC3L,MAAM,EAAE2L,IAAI,CAAC7B,UAAU,EAAE6B,IAAI,CAAC5B,UAAU,CAAC,CAAA;AAClE,GAAC,MAAM,IAAI4B,IAAI,YAAYtC,MAAM,EAAE,CAAC,KAAM;AACzC;AACA;IACAsC,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC5a,MAAM,CAAC0c,IAAI,CAAC,CAAC,CAAA;AACjC,GAAA;EACA,IAAI,CAACH,WAAS,CAAC,GAAG;IACjBG,IAAI;AACJS,IAAAA,SAAS,EAAE,KAAK;AAChBvvB,IAAAA,KAAK,EAAE,IAAA;GACP,CAAA;EACD,IAAI,CAACmtB,IAAI,GAAGA,IAAI,CAAA;EAChB,IAAI,CAACgC,OAAO,GAAGA,OAAO,CAAA;EAEtB,IAAIL,IAAI,YAAYtC,MAAM,EAAE;AAC3BsC,IAAAA,IAAI,CAACU,EAAE,CAAC,OAAO,EAAE,UAAUltB,GAAG,EAAE;MAC/B,MAAMtC,KAAK,GAAGsC,GAAG,CAACoM,IAAI,KAAK,YAAY,GAAGpM,GAAG,GAAG,IAAI6rB,YAAU,CAAE,+CAA8CY,KAAK,CAACzuB,GAAI,CAAA,EAAA,EAAIgC,GAAG,CAAC8rB,OAAQ,CAAA,CAAC,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAA;AACzJysB,MAAAA,KAAK,CAACJ,WAAS,CAAC,CAAC3uB,KAAK,GAAGA,KAAK,CAAA;AAC/B,KAAC,CAAC,CAAA;AACH,GAAA;AACD,CAAA;AAEA6uB,MAAI,CAAC9d,SAAS,GAAG;EAChB,IAAI+d,IAAIA,GAAG;AACV,IAAA,OAAO,IAAI,CAACH,WAAS,CAAC,CAACG,IAAI,CAAA;GAC3B;EAED,IAAIW,QAAQA,GAAG;AACd,IAAA,OAAO,IAAI,CAACd,WAAS,CAAC,CAACY,SAAS,CAAA;GAChC;AAED;AACD;AACA;AACA;AACA;AACCjC,EAAAA,WAAWA,GAAG;IACb,OAAOoC,aAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUkkB,GAAG,EAAE;AACjD,MAAA,OAAOA,GAAG,CAACjB,MAAM,CAAChhB,KAAK,CAACiiB,GAAG,CAAC6I,UAAU,EAAE7I,GAAG,CAAC6I,UAAU,GAAG7I,GAAG,CAAC8I,UAAU,CAAC,CAAA;AACzE,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCe,EAAAA,IAAIA,GAAG;AACN,IAAA,IAAI0B,EAAE,GAAG,IAAI,CAACC,OAAO,IAAI,IAAI,CAACA,OAAO,CAACnuB,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IAC/D,OAAOiuB,aAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUkkB,GAAG,EAAE;MACjD,OAAO1iB,MAAM,CAAC6M,MAAM;AACpB;MACA,IAAIme,MAAI,CAAC,EAAE,EAAE;AACZ5jB,QAAAA,IAAI,EAAE6mB,EAAE,CAACpwB,WAAW,EAAC;AACtB,OAAC,CAAC,EAAE;AACH,QAAA,CAACktB,QAAM,GAAGrI,GAAAA;AACX,OAAC,CAAC,CAAA;AACH,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCyL,EAAAA,IAAIA,GAAG;IACN,IAAIC,MAAM,GAAG,IAAI,CAAA;IAEjB,OAAOJ,aAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUijB,MAAM,EAAE;MACpD,IAAI;QACH,OAAOrW,IAAI,CAACC,KAAK,CAACoW,MAAM,CAACjhB,QAAQ,EAAE,CAAC,CAAA;OACpC,CAAC,OAAOI,GAAG,EAAE;QACb,OAAOusB,MAAI,CAACzB,OAAO,CAAC2C,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAA,8BAAA,EAAgC2B,MAAM,CAACxvB,GAAI,YAAWgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,cAAc,CAAC,CAAC,CAAA;AACjI,OAAA;AACD,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCruB,EAAAA,IAAIA,GAAG;IACN,OAAO2vB,aAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUijB,MAAM,EAAE;AACpD,MAAA,OAAOA,MAAM,CAACjhB,QAAQ,EAAE,CAAA;AACzB,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCihB,EAAAA,MAAMA,GAAG;AACR,IAAA,OAAOuM,aAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAA;GAC7B;AAED;AACD;AACA;AACA;AACA;AACA;AACC+e,EAAAA,aAAaA,GAAG;IACf,IAAIC,MAAM,GAAG,IAAI,CAAA;IAEjB,OAAOP,aAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUijB,MAAM,EAAE;AACpD,MAAA,OAAO+M,aAAW,CAAC/M,MAAM,EAAE8M,MAAM,CAACL,OAAO,CAAC,CAAA;AAC3C,KAAC,CAAC,CAAA;AACH,GAAA;AACD,CAAC,CAAA;;AAED;AACAluB,MAAM,CAAC4T,gBAAgB,CAACuZ,MAAI,CAAC9d,SAAS,EAAE;AACvC+d,EAAAA,IAAI,EAAE;AAAEld,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1B6d,EAAAA,QAAQ,EAAE;AAAE7d,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC9B0b,EAAAA,WAAW,EAAE;AAAE1b,IAAAA,UAAU,EAAE,IAAA;GAAM;AACjCqc,EAAAA,IAAI,EAAE;AAAErc,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1Bie,EAAAA,IAAI,EAAE;AAAEje,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1B7R,EAAAA,IAAI,EAAE;AAAE6R,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC1B,CAAC,CAAC,CAAA;AAEFid,MAAI,CAACsB,KAAK,GAAG,UAAUC,KAAK,EAAE;EAC7B,KAAK,MAAM1hB,IAAI,IAAIhN,MAAM,CAAC+d,mBAAmB,CAACoP,MAAI,CAAC9d,SAAS,CAAC,EAAE;AAC9D;AACA,IAAA,IAAI,EAAErC,IAAI,IAAI0hB,KAAK,CAAC,EAAE;MACrB,MAAMC,IAAI,GAAG3uB,MAAM,CAACuT,wBAAwB,CAAC4Z,MAAI,CAAC9d,SAAS,EAAErC,IAAI,CAAC,CAAA;MAClEhN,MAAM,CAACiQ,cAAc,CAACye,KAAK,EAAE1hB,IAAI,EAAE2hB,IAAI,CAAC,CAAA;AACzC,KAAA;AACD,GAAA;AACD,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASX,aAAWA,GAAG;EACtB,IAAIY,MAAM,GAAG,IAAI,CAAA;AAEjB,EAAA,IAAI,IAAI,CAAC3B,WAAS,CAAC,CAACY,SAAS,EAAE;AAC9B,IAAA,OAAOV,MAAI,CAACzB,OAAO,CAAC2C,MAAM,CAAC,IAAIpiB,SAAS,CAAE,0BAAyB,IAAI,CAACrN,GAAI,CAAA,CAAC,CAAC,CAAC,CAAA;AAChF,GAAA;AAEA,EAAA,IAAI,CAACquB,WAAS,CAAC,CAACY,SAAS,GAAG,IAAI,CAAA;AAEhC,EAAA,IAAI,IAAI,CAACZ,WAAS,CAAC,CAAC3uB,KAAK,EAAE;AAC1B,IAAA,OAAO6uB,MAAI,CAACzB,OAAO,CAAC2C,MAAM,CAAC,IAAI,CAACpB,WAAS,CAAC,CAAC3uB,KAAK,CAAC,CAAA;AAClD,GAAA;AAEA,EAAA,IAAI8uB,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;;AAEpB;EACA,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB,IAAA,OAAOD,MAAI,CAACzB,OAAO,CAACC,OAAO,CAAChJ,MAAM,CAACkM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,GAAA;;AAEA;AACA,EAAA,IAAIlB,QAAM,CAACP,IAAI,CAAC,EAAE;AACjBA,IAAAA,IAAI,GAAGA,IAAI,CAACtB,MAAM,EAAE,CAAA;AACrB,GAAA;;AAEA;AACA,EAAA,IAAInJ,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AAC1B,IAAA,OAAOD,MAAI,CAACzB,OAAO,CAACC,OAAO,CAACyB,IAAI,CAAC,CAAA;AAClC,GAAA;;AAEA;AACA,EAAA,IAAI,EAAEA,IAAI,YAAYtC,MAAM,CAAC,EAAE;AAC9B,IAAA,OAAOqC,MAAI,CAACzB,OAAO,CAACC,OAAO,CAAChJ,MAAM,CAACkM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,GAAA;;AAEA;AACA;EACA,IAAIC,KAAK,GAAG,EAAE,CAAA;EACd,IAAIC,UAAU,GAAG,CAAC,CAAA;EAClB,IAAIC,KAAK,GAAG,KAAK,CAAA;EAEjB,OAAO,IAAI7B,MAAI,CAACzB,OAAO,CAAC,UAAUC,OAAO,EAAE0C,MAAM,EAAE;AAClD,IAAA,IAAIY,UAAU,CAAA;;AAEd;IACA,IAAIL,MAAM,CAACnB,OAAO,EAAE;MACnBwB,UAAU,GAAGC,UAAU,CAAC,YAAY;AACnCF,QAAAA,KAAK,GAAG,IAAI,CAAA;AACZX,QAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAA,uCAAA,EAAyCmC,MAAM,CAAChwB,GAAI,CAASgwB,OAAAA,EAAAA,MAAM,CAACnB,OAAQ,CAAA,GAAA,CAAI,EAAE,cAAc,CAAC,CAAC,CAAA;AAC1H,OAAC,EAAEmB,MAAM,CAACnB,OAAO,CAAC,CAAA;AACnB,KAAA;;AAEA;AACAL,IAAAA,IAAI,CAACU,EAAE,CAAC,OAAO,EAAE,UAAUltB,GAAG,EAAE;AAC/B,MAAA,IAAIA,GAAG,CAACoM,IAAI,KAAK,YAAY,EAAE;AAC9B;AACAgiB,QAAAA,KAAK,GAAG,IAAI,CAAA;QACZX,MAAM,CAACztB,GAAG,CAAC,CAAA;AACZ,OAAC,MAAM;AACN;AACAytB,QAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAA8CmC,4CAAAA,EAAAA,MAAM,CAAChwB,GAAI,CAAA,EAAA,EAAIgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAC,CAAA;AACnH,OAAA;AACD,KAAC,CAAC,CAAA;AAEFwsB,IAAAA,IAAI,CAACU,EAAE,CAAC,MAAM,EAAE,UAAUqB,KAAK,EAAE;AAChC,MAAA,IAAIH,KAAK,IAAIG,KAAK,KAAK,IAAI,EAAE;AAC5B,QAAA,OAAA;AACD,OAAA;AAEA,MAAA,IAAIP,MAAM,CAACnD,IAAI,IAAIsD,UAAU,GAAGI,KAAK,CAAC/xB,MAAM,GAAGwxB,MAAM,CAACnD,IAAI,EAAE;AAC3DuD,QAAAA,KAAK,GAAG,IAAI,CAAA;AACZX,QAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAA,gBAAA,EAAkBmC,MAAM,CAAChwB,GAAI,CAAegwB,aAAAA,EAAAA,MAAM,CAACnD,IAAK,CAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;AAC9F,QAAA,OAAA;AACD,OAAA;MAEAsD,UAAU,IAAII,KAAK,CAAC/xB,MAAM,CAAA;AAC1B0xB,MAAAA,KAAK,CAACrxB,IAAI,CAAC0xB,KAAK,CAAC,CAAA;AAClB,KAAC,CAAC,CAAA;AAEF/B,IAAAA,IAAI,CAACU,EAAE,CAAC,KAAK,EAAE,YAAY;AAC1B,MAAA,IAAIkB,KAAK,EAAE;AACV,QAAA,OAAA;AACD,OAAA;MAEAI,YAAY,CAACH,UAAU,CAAC,CAAA;MAExB,IAAI;QACHtD,OAAO,CAAChJ,MAAM,CAAC7Y,MAAM,CAACglB,KAAK,EAAEC,UAAU,CAAC,CAAC,CAAA;OACzC,CAAC,OAAOnuB,GAAG,EAAE;AACb;AACAytB,QAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAiDmC,+CAAAA,EAAAA,MAAM,CAAChwB,GAAI,CAAA,EAAA,EAAIgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAC,CAAA;AACtH,OAAA;AACD,KAAC,CAAC,CAAA;AACH,GAAC,CAAC,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4tB,aAAWA,CAAC/M,MAAM,EAAEyM,OAAO,EAAE;AACrC,EAAA,IAAI,OAAOnB,SAAO,KAAK,UAAU,EAAE;AAClC,IAAA,MAAM,IAAIxuB,KAAK,CAAC,8EAA8E,CAAC,CAAA;AAChG,GAAA;AAEA,EAAA,MAAM0vB,EAAE,GAAGC,OAAO,CAACnuB,GAAG,CAAC,cAAc,CAAC,CAAA;EACtC,IAAIsvB,OAAO,GAAG,OAAO,CAAA;EACrB,IAAIttB,GAAG,EAAEpD,GAAG,CAAA;;AAEZ;AACA,EAAA,IAAIsvB,EAAE,EAAE;AACPlsB,IAAAA,GAAG,GAAG,kBAAkB,CAACtF,IAAI,CAACwxB,EAAE,CAAC,CAAA;AAClC,GAAA;;AAEA;AACAtvB,EAAAA,GAAG,GAAG8iB,MAAM,CAAChhB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAACD,QAAQ,EAAE,CAAA;;AAEtC;AACA,EAAA,IAAI,CAACuB,GAAG,IAAIpD,GAAG,EAAE;AAChBoD,IAAAA,GAAG,GAAG,gCAAgC,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;AACjD,GAAA;;AAEA;AACA,EAAA,IAAI,CAACoD,GAAG,IAAIpD,GAAG,EAAE;AAChBoD,IAAAA,GAAG,GAAG,wEAAwE,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;IACxF,IAAI,CAACoD,GAAG,EAAE;AACTA,MAAAA,GAAG,GAAG,wEAAwE,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;AACxF,MAAA,IAAIoD,GAAG,EAAE;AACRA,QAAAA,GAAG,CAACuI,GAAG,EAAE,CAAC;AACX,OAAA;AACD,KAAA;;AAEA,IAAA,IAAIvI,GAAG,EAAE;MACRA,GAAG,GAAG,eAAe,CAACtF,IAAI,CAACsF,GAAG,CAACuI,GAAG,EAAE,CAAC,CAAA;AACtC,KAAA;AACD,GAAA;;AAEA;AACA,EAAA,IAAI,CAACvI,GAAG,IAAIpD,GAAG,EAAE;AAChBoD,IAAAA,GAAG,GAAG,kCAAkC,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;AACnD,GAAA;;AAEA;AACA,EAAA,IAAIoD,GAAG,EAAE;AACRstB,IAAAA,OAAO,GAAGttB,GAAG,CAACuI,GAAG,EAAE,CAAA;;AAEnB;AACA;AACA,IAAA,IAAI+kB,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,KAAK,EAAE;AAC9CA,MAAAA,OAAO,GAAG,SAAS,CAAA;AACpB,KAAA;AACD,GAAA;;AAEA;EACA,OAAOtC,SAAO,CAACtL,MAAM,EAAE,OAAO,EAAE4N,OAAO,CAAC,CAAC7uB,QAAQ,EAAE,CAAA;AACpD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASktB,mBAAiBA,CAAC3d,GAAG,EAAE;AAC/B;EACA,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,OAAOA,GAAG,CAAC5D,MAAM,KAAK,UAAU,IAAI,OAAO4D,GAAG,CAAC4L,MAAM,KAAK,UAAU,IAAI,OAAO5L,GAAG,CAAChQ,GAAG,KAAK,UAAU,IAAI,OAAOgQ,GAAG,CAACuf,MAAM,KAAK,UAAU,IAAI,OAAOvf,GAAG,CAAC0L,GAAG,KAAK,UAAU,IAAI,OAAO1L,GAAG,CAACoa,GAAG,KAAK,UAAU,EAAE;AAC3O,IAAA,OAAO,KAAK,CAAA;AACb,GAAA;;AAEA;EACA,OAAOpa,GAAG,CAAC5E,WAAW,CAAC6B,IAAI,KAAK,iBAAiB,IAAIhN,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAC+O,IAAI,CAACQ,GAAG,CAAC,KAAK,0BAA0B,IAAI,OAAOA,GAAG,CAACwf,IAAI,KAAK,UAAU,CAAA;AAC1J,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS5B,QAAMA,CAAC5d,GAAG,EAAE;AACpB,EAAA,OAAO,OAAOA,GAAG,KAAK,QAAQ,IAAI,OAAOA,GAAG,CAAC6b,WAAW,KAAK,UAAU,IAAI,OAAO7b,GAAG,CAAC3I,IAAI,KAAK,QAAQ,IAAI,OAAO2I,GAAG,CAAC+b,MAAM,KAAK,UAAU,IAAI,OAAO/b,GAAG,CAAC5E,WAAW,KAAK,UAAU,IAAI,OAAO4E,GAAG,CAAC5E,WAAW,CAAC6B,IAAI,KAAK,QAAQ,IAAI,eAAe,CAACX,IAAI,CAAC0D,GAAG,CAAC5E,WAAW,CAAC6B,IAAI,CAAC,IAAI,eAAe,CAACX,IAAI,CAAC0D,GAAG,CAACS,MAAM,CAACgc,WAAW,CAAC,CAAC,CAAA;AAChU,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgD,OAAKA,CAACC,QAAQ,EAAE;EACxB,IAAIC,EAAE,EAAEC,EAAE,CAAA;AACV,EAAA,IAAIvC,IAAI,GAAGqC,QAAQ,CAACrC,IAAI,CAAA;;AAExB;EACA,IAAIqC,QAAQ,CAAC1B,QAAQ,EAAE;AACtB,IAAA,MAAM,IAAIxvB,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACtD,GAAA;;AAEA;AACA;EACA,IAAI6uB,IAAI,YAAYtC,MAAM,IAAI,OAAOsC,IAAI,CAACwC,WAAW,KAAK,UAAU,EAAE;AACrE;AACAF,IAAAA,EAAE,GAAG,IAAIxC,aAAW,EAAE,CAAA;AACtByC,IAAAA,EAAE,GAAG,IAAIzC,aAAW,EAAE,CAAA;AACtBE,IAAAA,IAAI,CAACyC,IAAI,CAACH,EAAE,CAAC,CAAA;AACbtC,IAAAA,IAAI,CAACyC,IAAI,CAACF,EAAE,CAAC,CAAA;AACb;AACAF,IAAAA,QAAQ,CAACxC,WAAS,CAAC,CAACG,IAAI,GAAGsC,EAAE,CAAA;AAC7BtC,IAAAA,IAAI,GAAGuC,EAAE,CAAA;AACV,GAAA;AAEA,EAAA,OAAOvC,IAAI,CAAA;AACZ,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0C,oBAAkBA,CAAC1C,IAAI,EAAE;EACjC,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AACpC;AACA,IAAA,OAAO,0BAA0B,CAAA;AAClC,GAAC,MAAM,IAAIM,mBAAiB,CAACN,IAAI,CAAC,EAAE;AACnC;AACA,IAAA,OAAO,iDAAiD,CAAA;AACzD,GAAC,MAAM,IAAIO,QAAM,CAACP,IAAI,CAAC,EAAE;AACxB;AACA,IAAA,OAAOA,IAAI,CAAChmB,IAAI,IAAI,IAAI,CAAA;GACxB,MAAM,IAAIub,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AACjC;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM,IAAIptB,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAC+O,IAAI,CAAC6d,IAAI,CAAC,KAAK,sBAAsB,EAAE;AAC3E;AACA,IAAA,OAAO,IAAI,CAAA;GACX,MAAM,IAAIhC,WAAW,CAACC,MAAM,CAAC+B,IAAI,CAAC,EAAE;AACpC;AACA,IAAA,OAAO,IAAI,CAAA;GACX,MAAM,IAAI,OAAOA,IAAI,CAACwC,WAAW,KAAK,UAAU,EAAE;AAClD;AACA,IAAA,OAAQ,gCAA+BxC,IAAI,CAACwC,WAAW,EAAG,CAAC,CAAA,CAAA;AAC5D,GAAC,MAAM,IAAIxC,IAAI,YAAYtC,MAAM,EAAE;AAClC;AACA;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM;AACN;AACA,IAAA,OAAO,0BAA0B,CAAA;AAClC,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiF,eAAaA,CAACN,QAAQ,EAAE;AAChC,EAAA,MAAMrC,IAAI,GAAGqC,QAAQ,CAACrC,IAAI,CAAA;EAG1B,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB;AACA,IAAA,OAAO,CAAC,CAAA;AACT,GAAC,MAAM,IAAIO,QAAM,CAACP,IAAI,CAAC,EAAE;IACxB,OAAOA,IAAI,CAAC3B,IAAI,CAAA;GAChB,MAAM,IAAI9I,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AACjC;IACA,OAAOA,IAAI,CAAChwB,MAAM,CAAA;GAClB,MAAM,IAAIgwB,IAAI,IAAI,OAAOA,IAAI,CAAC4C,aAAa,KAAK,UAAU,EAAE;AAC5D;IACA,IAAI5C,IAAI,CAAC6C,iBAAiB,IAAI7C,IAAI,CAAC6C,iBAAiB,CAAC7yB,MAAM,IAAI,CAAC;AAAI;IACpEgwB,IAAI,CAAC8C,cAAc,IAAI9C,IAAI,CAAC8C,cAAc,EAAE,EAAE;AAC7C;AACA,MAAA,OAAO9C,IAAI,CAAC4C,aAAa,EAAE,CAAA;AAC5B,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM;AACN;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,eAAaA,CAACC,IAAI,EAAEX,QAAQ,EAAE;AACtC,EAAA,MAAMrC,IAAI,GAAGqC,QAAQ,CAACrC,IAAI,CAAA;EAG1B,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB;IACAgD,IAAI,CAACxR,GAAG,EAAE,CAAA;AACX,GAAC,MAAM,IAAI+O,QAAM,CAACP,IAAI,CAAC,EAAE;IACxBA,IAAI,CAACtB,MAAM,EAAE,CAAC+D,IAAI,CAACO,IAAI,CAAC,CAAA;GACxB,MAAM,IAAIzN,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AACjC;AACAgD,IAAAA,IAAI,CAACC,KAAK,CAACjD,IAAI,CAAC,CAAA;IAChBgD,IAAI,CAACxR,GAAG,EAAE,CAAA;AACX,GAAC,MAAM;AACN;AACAwO,IAAAA,IAAI,CAACyC,IAAI,CAACO,IAAI,CAAC,CAAA;AAChB,GAAA;AACD,CAAA;;AAEA;AACAjD,MAAI,CAACzB,OAAO,GAAG4E,MAAM,CAAC5E,OAAO,CAAA;;AAE7B;AACA;AACA;AACA;AACA;;AAEA,MAAM6E,mBAAiB,GAAG,+BAA+B,CAAA;AACzD,MAAMC,wBAAsB,GAAG,yBAAyB,CAAA;AAExD,SAASC,cAAYA,CAACzjB,IAAI,EAAE;EAC3BA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;EAChB,IAAIujB,mBAAiB,CAAClkB,IAAI,CAACW,IAAI,CAAC,IAAIA,IAAI,KAAK,EAAE,EAAE;AAChD,IAAA,MAAM,IAAIf,SAAS,CAAE,CAAEe,EAAAA,IAAK,kCAAiC,CAAC,CAAA;AAC/D,GAAA;AACD,CAAA;AAEA,SAAS0jB,eAAaA,CAACppB,KAAK,EAAE;EAC7BA,KAAK,GAAI,CAAEA,EAAAA,KAAM,CAAC,CAAA,CAAA;AAClB,EAAA,IAAIkpB,wBAAsB,CAACnkB,IAAI,CAAC/E,KAAK,CAAC,EAAE;AACvC,IAAA,MAAM,IAAI2E,SAAS,CAAE,CAAE3E,EAAAA,KAAM,mCAAkC,CAAC,CAAA;AACjE,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS7F,MAAIA,CAACwD,GAAG,EAAE+H,IAAI,EAAE;AACxBA,EAAAA,IAAI,GAAGA,IAAI,CAACnP,WAAW,EAAE,CAAA;AACzB,EAAA,KAAK,MAAM2G,GAAG,IAAIS,GAAG,EAAE;AACtB,IAAA,IAAIT,GAAG,CAAC3G,WAAW,EAAE,KAAKmP,IAAI,EAAE;AAC/B,MAAA,OAAOxI,GAAG,CAAA;AACX,KAAA;AACD,GAAA;AACA,EAAA,OAAOnI,SAAS,CAAA;AACjB,CAAA;AAEA,MAAMs0B,KAAG,GAAGngB,MAAM,CAAC,KAAK,CAAC,CAAA;AACzB,MAAMogB,SAAO,CAAC;AACb;AACD;AACA;AACA;AACA;AACA;AACCzlB,EAAAA,WAAWA,GAAG;IACb,IAAI0lB,IAAI,GAAGnd,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAGrX,SAAS,CAAA;IAExF,IAAI,CAACs0B,KAAG,CAAC,GAAG3wB,MAAM,CAACqqB,MAAM,CAAC,IAAI,CAAC,CAAA;IAE/B,IAAIwG,IAAI,YAAYD,SAAO,EAAE;AAC5B,MAAA,MAAME,UAAU,GAAGD,IAAI,CAACE,GAAG,EAAE,CAAA;AAC7B,MAAA,MAAMC,WAAW,GAAGhxB,MAAM,CAACC,IAAI,CAAC6wB,UAAU,CAAC,CAAA;AAE3C,MAAA,KAAK,MAAMG,UAAU,IAAID,WAAW,EAAE;AACrC,QAAA,KAAK,MAAM1pB,KAAK,IAAIwpB,UAAU,CAACG,UAAU,CAAC,EAAE;AAC3C,UAAA,IAAI,CAAC9kB,MAAM,CAAC8kB,UAAU,EAAE3pB,KAAK,CAAC,CAAA;AAC/B,SAAA;AACD,OAAA;AAEA,MAAA,OAAA;AACD,KAAA;;AAEA;AACA;IACA,IAAIupB,IAAI,IAAI,IAAI,EAAE,CAAC,KAAM,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AACtD,MAAA,MAAMK,MAAM,GAAGL,IAAI,CAACrgB,MAAM,CAAC2gB,QAAQ,CAAC,CAAA;MACpC,IAAID,MAAM,IAAI,IAAI,EAAE;AACnB,QAAA,IAAI,OAAOA,MAAM,KAAK,UAAU,EAAE;AACjC,UAAA,MAAM,IAAIjlB,SAAS,CAAC,+BAA+B,CAAC,CAAA;AACrD,SAAA;;AAEA;AACA;QACA,MAAMmlB,KAAK,GAAG,EAAE,CAAA;AAChB,QAAA,KAAK,MAAMC,IAAI,IAAIR,IAAI,EAAE;AACxB,UAAA,IAAI,OAAOQ,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,CAAC7gB,MAAM,CAAC2gB,QAAQ,CAAC,KAAK,UAAU,EAAE;AAC5E,YAAA,MAAM,IAAIllB,SAAS,CAAC,mCAAmC,CAAC,CAAA;AACzD,WAAA;UACAmlB,KAAK,CAAC3zB,IAAI,CAACyP,KAAK,CAACoe,IAAI,CAAC+F,IAAI,CAAC,CAAC,CAAA;AAC7B,SAAA;AAEA,QAAA,KAAK,MAAMA,IAAI,IAAID,KAAK,EAAE;AACzB,UAAA,IAAIC,IAAI,CAACj0B,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI6O,SAAS,CAAC,6CAA6C,CAAC,CAAA;AACnE,WAAA;AACA,UAAA,IAAI,CAACE,MAAM,CAACklB,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,SAAA;AACD,OAAC,MAAM;AACN;QACA,KAAK,MAAM7sB,GAAG,IAAIxE,MAAM,CAACC,IAAI,CAAC4wB,IAAI,CAAC,EAAE;AACpC,UAAA,MAAMvpB,KAAK,GAAGupB,IAAI,CAACrsB,GAAG,CAAC,CAAA;AACvB,UAAA,IAAI,CAAC2H,MAAM,CAAC3H,GAAG,EAAE8C,KAAK,CAAC,CAAA;AACxB,SAAA;AACD,OAAA;AACD,KAAC,MAAM;AACN,MAAA,MAAM,IAAI2E,SAAS,CAAC,wCAAwC,CAAC,CAAA;AAC9D,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;EACClM,GAAGA,CAACiN,IAAI,EAAE;IACTA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChByjB,cAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB,MAAMxI,GAAG,GAAG/C,MAAI,CAAC,IAAI,CAACkvB,KAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;IACjC,IAAIxI,GAAG,KAAKnI,SAAS,EAAE;AACtB,MAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAEA,OAAO,IAAI,CAACs0B,KAAG,CAAC,CAACnsB,GAAG,CAAC,CAACjF,IAAI,CAAC,IAAI,CAAC,CAAA;AACjC,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;EACC4F,OAAOA,CAACmsB,QAAQ,EAAE;IACjB,IAAIC,OAAO,GAAG7d,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAGrX,SAAS,CAAA;AAE3F,IAAA,IAAI+0B,KAAK,GAAGI,YAAU,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAIlyB,CAAC,GAAG,CAAC,CAAA;AACT,IAAA,OAAOA,CAAC,GAAG8xB,KAAK,CAACh0B,MAAM,EAAE;AACxB,MAAA,IAAIq0B,QAAQ,GAAGL,KAAK,CAAC9xB,CAAC,CAAC,CAAA;AACvB,MAAA,MAAM0N,IAAI,GAAGykB,QAAQ,CAAC,CAAC,CAAC;AAClBnqB,QAAAA,KAAK,GAAGmqB,QAAQ,CAAC,CAAC,CAAC,CAAA;MAEzBH,QAAQ,CAAC/hB,IAAI,CAACgiB,OAAO,EAAEjqB,KAAK,EAAE0F,IAAI,EAAE,IAAI,CAAC,CAAA;AACzCokB,MAAAA,KAAK,GAAGI,YAAU,CAAC,IAAI,CAAC,CAAA;AACxBlyB,MAAAA,CAAC,EAAE,CAAA;AACJ,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;AACC6qB,EAAAA,GAAGA,CAACnd,IAAI,EAAE1F,KAAK,EAAE;IAChB0F,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChB1F,KAAK,GAAI,CAAEA,EAAAA,KAAM,CAAC,CAAA,CAAA;IAClBmpB,cAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB0jB,eAAa,CAACppB,KAAK,CAAC,CAAA;IACpB,MAAM9C,GAAG,GAAG/C,MAAI,CAAC,IAAI,CAACkvB,KAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;AACjC,IAAA,IAAI,CAAC2jB,KAAG,CAAC,CAACnsB,GAAG,KAAKnI,SAAS,GAAGmI,GAAG,GAAGwI,IAAI,CAAC,GAAG,CAAC1F,KAAK,CAAC,CAAA;AACpD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;AACC6E,EAAAA,MAAMA,CAACa,IAAI,EAAE1F,KAAK,EAAE;IACnB0F,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChB1F,KAAK,GAAI,CAAEA,EAAAA,KAAM,CAAC,CAAA,CAAA;IAClBmpB,cAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB0jB,eAAa,CAACppB,KAAK,CAAC,CAAA;IACpB,MAAM9C,GAAG,GAAG/C,MAAI,CAAC,IAAI,CAACkvB,KAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;IACjC,IAAIxI,GAAG,KAAKnI,SAAS,EAAE;MACtB,IAAI,CAACs0B,KAAG,CAAC,CAACnsB,GAAG,CAAC,CAAC/G,IAAI,CAAC6J,KAAK,CAAC,CAAA;AAC3B,KAAC,MAAM;MACN,IAAI,CAACqpB,KAAG,CAAC,CAAC3jB,IAAI,CAAC,GAAG,CAAC1F,KAAK,CAAC,CAAA;AAC1B,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;EACCmU,GAAGA,CAACzO,IAAI,EAAE;IACTA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChByjB,cAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB,OAAOvL,MAAI,CAAC,IAAI,CAACkvB,KAAG,CAAC,EAAE3jB,IAAI,CAAC,KAAK3Q,SAAS,CAAA;AAC3C,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;EACCsf,MAAMA,CAAC3O,IAAI,EAAE;IACZA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChByjB,cAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB,MAAMxI,GAAG,GAAG/C,MAAI,CAAC,IAAI,CAACkvB,KAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;IACjC,IAAIxI,GAAG,KAAKnI,SAAS,EAAE;AACtB,MAAA,OAAO,IAAI,CAACs0B,KAAG,CAAC,CAACnsB,GAAG,CAAC,CAAA;AACtB,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCusB,EAAAA,GAAGA,GAAG;IACL,OAAO,IAAI,CAACJ,KAAG,CAAC,CAAA;AACjB,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACC1wB,EAAAA,IAAIA,GAAG;AACN,IAAA,OAAOyxB,uBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC1C,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCC,EAAAA,MAAMA,GAAG;AACR,IAAA,OAAOD,uBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC5C,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;EACC,CAAClhB,MAAM,CAAC2gB,QAAQ,CAAI,GAAA;AACnB,IAAA,OAAOO,uBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AAChD,GAAA;AACD,CAAA;AACAd,SAAO,CAACvhB,SAAS,CAACtT,OAAO,GAAG60B,SAAO,CAACvhB,SAAS,CAACmB,MAAM,CAAC2gB,QAAQ,CAAC,CAAA;AAE9DnxB,MAAM,CAACiQ,cAAc,CAAC2gB,SAAO,CAACvhB,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AAC5DllB,EAAAA,KAAK,EAAE,SAAS;AAChB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;AAEFnQ,MAAM,CAAC4T,gBAAgB,CAACgd,SAAO,CAACvhB,SAAS,EAAE;AAC1CtP,EAAAA,GAAG,EAAE;AAAEmQ,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzB/K,EAAAA,OAAO,EAAE;AAAE+K,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC7Bia,EAAAA,GAAG,EAAE;AAAEja,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzB/D,EAAAA,MAAM,EAAE;AAAE+D,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BuL,EAAAA,GAAG,EAAE;AAAEvL,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzByL,EAAAA,MAAM,EAAE;AAAEzL,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BjQ,EAAAA,IAAI,EAAE;AAAEiQ,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1ByhB,EAAAA,MAAM,EAAE;AAAEzhB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BnU,EAAAA,OAAO,EAAE;AAAEmU,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC7B,CAAC,CAAC,CAAA;AAEF,SAASshB,YAAUA,CAACtD,OAAO,EAAE;EAC5B,IAAI0D,IAAI,GAAGle,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;AAE1F,EAAA,MAAMzT,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACiuB,OAAO,CAACyC,KAAG,CAAC,CAAC,CAACpB,IAAI,EAAE,CAAA;EAC7C,OAAOtvB,IAAI,CAACgF,GAAG,CAAC2sB,IAAI,KAAK,KAAK,GAAG,UAAUC,CAAC,EAAE;AAC7C,IAAA,OAAOA,CAAC,CAACh0B,WAAW,EAAE,CAAA;AACvB,GAAC,GAAG+zB,IAAI,KAAK,OAAO,GAAG,UAAUC,CAAC,EAAE;IACnC,OAAO3D,OAAO,CAACyC,KAAG,CAAC,CAACkB,CAAC,CAAC,CAACtyB,IAAI,CAAC,IAAI,CAAC,CAAA;GACjC,GAAG,UAAUsyB,CAAC,EAAE;AAChB,IAAA,OAAO,CAACA,CAAC,CAACh0B,WAAW,EAAE,EAAEqwB,OAAO,CAACyC,KAAG,CAAC,CAACkB,CAAC,CAAC,CAACtyB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACrD,GAAC,CAAC,CAAA;AACH,CAAA;AAEA,MAAMuyB,UAAQ,GAAGthB,MAAM,CAAC,UAAU,CAAC,CAAA;AAEnC,SAASkhB,uBAAqBA,CAAChlB,MAAM,EAAEklB,IAAI,EAAE;AAC5C,EAAA,MAAMT,QAAQ,GAAGnxB,MAAM,CAACqqB,MAAM,CAAC0H,0BAAwB,CAAC,CAAA;EACxDZ,QAAQ,CAACW,UAAQ,CAAC,GAAG;IACpBplB,MAAM;IACNklB,IAAI;AACJzvB,IAAAA,KAAK,EAAE,CAAA;GACP,CAAA;AACD,EAAA,OAAOgvB,QAAQ,CAAA;AAChB,CAAA;AAEA,MAAMY,0BAAwB,GAAG/xB,MAAM,CAACgyB,cAAc,CAAC;AACtDC,EAAAA,IAAIA,GAAG;AACN;IACA,IAAI,CAAC,IAAI,IAAIjyB,MAAM,CAACkyB,cAAc,CAAC,IAAI,CAAC,KAAKH,0BAAwB,EAAE;AACtE,MAAA,MAAM,IAAI9lB,SAAS,CAAC,0CAA0C,CAAC,CAAA;AAChE,KAAA;AAEA,IAAA,IAAIkmB,SAAS,GAAG,IAAI,CAACL,UAAQ,CAAC,CAAA;AAC9B,IAAA,MAAMplB,MAAM,GAAGylB,SAAS,CAACzlB,MAAM;MACzBklB,IAAI,GAAGO,SAAS,CAACP,IAAI;MACrBzvB,KAAK,GAAGgwB,SAAS,CAAChwB,KAAK,CAAA;AAE7B,IAAA,MAAMwvB,MAAM,GAAGH,YAAU,CAAC9kB,MAAM,EAAEklB,IAAI,CAAC,CAAA;AACvC,IAAA,MAAMpS,GAAG,GAAGmS,MAAM,CAACv0B,MAAM,CAAA;IACzB,IAAI+E,KAAK,IAAIqd,GAAG,EAAE;MACjB,OAAO;AACNlY,QAAAA,KAAK,EAAEjL,SAAS;AAChB+1B,QAAAA,IAAI,EAAE,IAAA;OACN,CAAA;AACF,KAAA;IAEA,IAAI,CAACN,UAAQ,CAAC,CAAC3vB,KAAK,GAAGA,KAAK,GAAG,CAAC,CAAA;IAEhC,OAAO;AACNmF,MAAAA,KAAK,EAAEqqB,MAAM,CAACxvB,KAAK,CAAC;AACpBiwB,MAAAA,IAAI,EAAE,KAAA;KACN,CAAA;AACF,GAAA;AACD,CAAC,EAAEpyB,MAAM,CAACkyB,cAAc,CAAClyB,MAAM,CAACkyB,cAAc,CAAC,EAAE,CAAC1hB,MAAM,CAAC2gB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAEvEnxB,MAAM,CAACiQ,cAAc,CAAC8hB,0BAAwB,EAAEvhB,MAAM,CAACgc,WAAW,EAAE;AACnEllB,EAAAA,KAAK,EAAE,iBAAiB;AACxB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,SAASkiB,6BAA2BA,CAACnE,OAAO,EAAE;AAC7C,EAAA,MAAMne,GAAG,GAAG/P,MAAM,CAAC6M,MAAM,CAAC;AAAEylB,IAAAA,SAAS,EAAE,IAAA;AAAK,GAAC,EAAEpE,OAAO,CAACyC,KAAG,CAAC,CAAC,CAAA;;AAE5D;AACA;EACA,MAAM4B,aAAa,GAAG9wB,MAAI,CAACysB,OAAO,CAACyC,KAAG,CAAC,EAAE,MAAM,CAAC,CAAA;EAChD,IAAI4B,aAAa,KAAKl2B,SAAS,EAAE;IAChC0T,GAAG,CAACwiB,aAAa,CAAC,GAAGxiB,GAAG,CAACwiB,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3C,GAAA;AAEA,EAAA,OAAOxiB,GAAG,CAAA;AACX,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASyiB,sBAAoBA,CAACziB,GAAG,EAAE;AAClC,EAAA,MAAMme,OAAO,GAAG,IAAI0C,SAAO,EAAE,CAAA;EAC7B,KAAK,MAAM5jB,IAAI,IAAIhN,MAAM,CAACC,IAAI,CAAC8P,GAAG,CAAC,EAAE;AACpC,IAAA,IAAIwgB,mBAAiB,CAAClkB,IAAI,CAACW,IAAI,CAAC,EAAE;AACjC,MAAA,SAAA;AACD,KAAA;IACA,IAAIE,KAAK,CAACC,OAAO,CAAC4C,GAAG,CAAC/C,IAAI,CAAC,CAAC,EAAE;AAC7B,MAAA,KAAK,MAAMkQ,GAAG,IAAInN,GAAG,CAAC/C,IAAI,CAAC,EAAE;AAC5B,QAAA,IAAIwjB,wBAAsB,CAACnkB,IAAI,CAAC6Q,GAAG,CAAC,EAAE;AACrC,UAAA,SAAA;AACD,SAAA;QACA,IAAIgR,OAAO,CAACyC,KAAG,CAAC,CAAC3jB,IAAI,CAAC,KAAK3Q,SAAS,EAAE;UACrC6xB,OAAO,CAACyC,KAAG,CAAC,CAAC3jB,IAAI,CAAC,GAAG,CAACkQ,GAAG,CAAC,CAAA;AAC3B,SAAC,MAAM;UACNgR,OAAO,CAACyC,KAAG,CAAC,CAAC3jB,IAAI,CAAC,CAACvP,IAAI,CAACyf,GAAG,CAAC,CAAA;AAC7B,SAAA;AACD,OAAA;AACD,KAAC,MAAM,IAAI,CAACsT,wBAAsB,CAACnkB,IAAI,CAAC0D,GAAG,CAAC/C,IAAI,CAAC,CAAC,EAAE;AACnDkhB,MAAAA,OAAO,CAACyC,KAAG,CAAC,CAAC3jB,IAAI,CAAC,GAAG,CAAC+C,GAAG,CAAC/C,IAAI,CAAC,CAAC,CAAA;AACjC,KAAA;AACD,GAAA;AACA,EAAA,OAAOkhB,OAAO,CAAA;AACf,CAAA;AAEA,MAAMuE,aAAW,GAAGjiB,MAAM,CAAC,oBAAoB,CAAC,CAAA;;AAEhD;AACA,MAAMkiB,cAAY,GAAG9R,IAAI,CAAC8R,YAAY,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,UAAQ,CAAC;AACdxnB,EAAAA,WAAWA,GAAG;IACb,IAAIiiB,IAAI,GAAG1Z,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACnF,IAAImJ,IAAI,GAAGnJ,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IAEjFyZ,MAAI,CAAC5d,IAAI,CAAC,IAAI,EAAE6d,IAAI,EAAEvQ,IAAI,CAAC,CAAA;AAE3B,IAAA,MAAM1D,MAAM,GAAG0D,IAAI,CAAC1D,MAAM,IAAI,GAAG,CAAA;IACjC,MAAM+U,OAAO,GAAG,IAAI0C,SAAO,CAAC/T,IAAI,CAACqR,OAAO,CAAC,CAAA;IAEzC,IAAId,IAAI,IAAI,IAAI,IAAI,CAACc,OAAO,CAACzS,GAAG,CAAC,cAAc,CAAC,EAAE;AACjD,MAAA,MAAMmX,WAAW,GAAG9C,oBAAkB,CAAC1C,IAAI,CAAC,CAAA;AAC5C,MAAA,IAAIwF,WAAW,EAAE;AAChB1E,QAAAA,OAAO,CAAC/hB,MAAM,CAAC,cAAc,EAAEymB,WAAW,CAAC,CAAA;AAC5C,OAAA;AACD,KAAA;IAEA,IAAI,CAACH,aAAW,CAAC,GAAG;MACnB7zB,GAAG,EAAEie,IAAI,CAACje,GAAG;MACbua,MAAM;MACN0Z,UAAU,EAAEhW,IAAI,CAACgW,UAAU,IAAIH,cAAY,CAACvZ,MAAM,CAAC;MACnD+U,OAAO;MACPrK,OAAO,EAAEhH,IAAI,CAACgH,OAAAA;KACd,CAAA;AACF,GAAA;EAEA,IAAIjlB,GAAGA,GAAG;AACT,IAAA,OAAO,IAAI,CAAC6zB,aAAW,CAAC,CAAC7zB,GAAG,IAAI,EAAE,CAAA;AACnC,GAAA;EAEA,IAAIua,MAAMA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACsZ,aAAW,CAAC,CAACtZ,MAAM,CAAA;AAChC,GAAA;;AAEA;AACD;AACA;EACC,IAAI2Z,EAAEA,GAAG;AACR,IAAA,OAAO,IAAI,CAACL,aAAW,CAAC,CAACtZ,MAAM,IAAI,GAAG,IAAI,IAAI,CAACsZ,aAAW,CAAC,CAACtZ,MAAM,GAAG,GAAG,CAAA;AACzE,GAAA;EAEA,IAAI4Z,UAAUA,GAAG;AAChB,IAAA,OAAO,IAAI,CAACN,aAAW,CAAC,CAAC5O,OAAO,GAAG,CAAC,CAAA;AACrC,GAAA;EAEA,IAAIgP,UAAUA,GAAG;AAChB,IAAA,OAAO,IAAI,CAACJ,aAAW,CAAC,CAACI,UAAU,CAAA;AACpC,GAAA;EAEA,IAAI3E,OAAOA,GAAG;AACb,IAAA,OAAO,IAAI,CAACuE,aAAW,CAAC,CAACvE,OAAO,CAAA;AACjC,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCsB,EAAAA,KAAKA,GAAG;AACP,IAAA,OAAO,IAAImD,UAAQ,CAACnD,OAAK,CAAC,IAAI,CAAC,EAAE;MAChC5wB,GAAG,EAAE,IAAI,CAACA,GAAG;MACbua,MAAM,EAAE,IAAI,CAACA,MAAM;MACnB0Z,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3B3E,OAAO,EAAE,IAAI,CAACA,OAAO;MACrB4E,EAAE,EAAE,IAAI,CAACA,EAAE;MACXC,UAAU,EAAE,IAAI,CAACA,UAAAA;AAClB,KAAC,CAAC,CAAA;AACH,GAAA;AACD,CAAA;AAEA5F,MAAI,CAACsB,KAAK,CAACkE,UAAQ,CAACtjB,SAAS,CAAC,CAAA;AAE9BrP,MAAM,CAAC4T,gBAAgB,CAAC+e,UAAQ,CAACtjB,SAAS,EAAE;AAC3CzQ,EAAAA,GAAG,EAAE;AAAEsR,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzBiJ,EAAAA,MAAM,EAAE;AAAEjJ,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5B4iB,EAAAA,EAAE,EAAE;AAAE5iB,IAAAA,UAAU,EAAE,IAAA;GAAM;AACxB6iB,EAAAA,UAAU,EAAE;AAAE7iB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAChC2iB,EAAAA,UAAU,EAAE;AAAE3iB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAChCge,EAAAA,OAAO,EAAE;AAAEhe,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC7Bsf,EAAAA,KAAK,EAAE;AAAEtf,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC3B,CAAC,CAAC,CAAA;AAEFlQ,MAAM,CAACiQ,cAAc,CAAC0iB,UAAQ,CAACtjB,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AAC7DllB,EAAAA,KAAK,EAAE,UAAU;AACjB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;AAEF,MAAM6iB,aAAW,GAAGxiB,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC/C,MAAM3R,KAAG,GAAGo0B,GAAG,CAACp0B,GAAG,IAAIq0B,SAAS,CAACr0B,GAAG,CAAA;;AAEpC;AACA,MAAMs0B,WAAS,GAAGF,GAAG,CAAC5nB,KAAK,CAAA;AAC3B,MAAM+nB,YAAU,GAAGH,GAAG,CAACtzB,MAAM,CAAA;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA,SAASgpB,UAAQA,CAAC0K,MAAM,EAAE;AACzB;AACD;AACA;AACA;AACA;AACC,EAAA,IAAI,2BAA2B,CAAC52B,IAAI,CAAC42B,MAAM,CAAC,EAAE;IAC7CA,MAAM,GAAG,IAAIx0B,KAAG,CAACw0B,MAAM,CAAC,CAAC7yB,QAAQ,EAAE,CAAA;AACpC,GAAA;;AAEA;EACA,OAAO2yB,WAAS,CAACE,MAAM,CAAC,CAAA;AACzB,CAAA;AAEA,MAAMC,4BAA0B,IAAG,SAAS,IAAIxI,MAAM,CAACD,QAAQ,CAACxb,SAAS,CAAA,CAAA;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA,SAASkkB,WAASA,CAAChlB,KAAK,EAAE;EACzB,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,CAACykB,aAAW,CAAC,KAAK,QAAQ,CAAA;AAC3E,CAAA;AAEA,SAASQ,eAAaA,CAACC,MAAM,EAAE;AAC9B,EAAA,MAAM/E,KAAK,GAAG+E,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIzzB,MAAM,CAACkyB,cAAc,CAACuB,MAAM,CAAC,CAAA;EACnF,OAAO,CAAC,EAAE/E,KAAK,IAAIA,KAAK,CAACvjB,WAAW,CAAC6B,IAAI,KAAK,aAAa,CAAC,CAAA;AAC7D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0mB,SAAO,CAAC;EACbvoB,WAAWA,CAACoD,KAAK,EAAE;IAClB,IAAIsiB,IAAI,GAAGnd,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AAEjF,IAAA,IAAI6V,SAAS,CAAA;;AAEb;AACA,IAAA,IAAI,CAACgK,WAAS,CAAChlB,KAAK,CAAC,EAAE;AACtB,MAAA,IAAIA,KAAK,IAAIA,KAAK,CAAC5G,IAAI,EAAE;AACxB;AACA;AACA;AACA4hB,QAAAA,SAAS,GAAGZ,UAAQ,CAACpa,KAAK,CAAC5G,IAAI,CAAC,CAAA;AACjC,OAAC,MAAM;AACN;AACA4hB,QAAAA,SAAS,GAAGZ,UAAQ,CAAE,CAAEpa,EAAAA,KAAM,EAAC,CAAC,CAAA;AACjC,OAAA;MACAA,KAAK,GAAG,EAAE,CAAA;AACX,KAAC,MAAM;AACNgb,MAAAA,SAAS,GAAGZ,UAAQ,CAACpa,KAAK,CAAC3P,GAAG,CAAC,CAAA;AAChC,KAAA;IAEA,IAAIsyB,MAAM,GAAGL,IAAI,CAACK,MAAM,IAAI3iB,KAAK,CAAC2iB,MAAM,IAAI,KAAK,CAAA;AACjDA,IAAAA,MAAM,GAAGA,MAAM,CAAC1O,WAAW,EAAE,CAAA;IAE7B,IAAI,CAACqO,IAAI,CAACzD,IAAI,IAAI,IAAI,IAAImG,WAAS,CAAChlB,KAAK,CAAC,IAAIA,KAAK,CAAC6e,IAAI,KAAK,IAAI,MAAM8D,MAAM,KAAK,KAAK,IAAIA,MAAM,KAAK,MAAM,CAAC,EAAE;AAC9G,MAAA,MAAM,IAAIjlB,SAAS,CAAC,+CAA+C,CAAC,CAAA;AACrE,KAAA;AAEA,IAAA,IAAI0nB,SAAS,GAAG9C,IAAI,CAACzD,IAAI,IAAI,IAAI,GAAGyD,IAAI,CAACzD,IAAI,GAAGmG,WAAS,CAAChlB,KAAK,CAAC,IAAIA,KAAK,CAAC6e,IAAI,KAAK,IAAI,GAAGoC,OAAK,CAACjhB,KAAK,CAAC,GAAG,IAAI,CAAA;AAE7G4e,IAAAA,MAAI,CAAC5d,IAAI,CAAC,IAAI,EAAEokB,SAAS,EAAE;MAC1BlG,OAAO,EAAEoD,IAAI,CAACpD,OAAO,IAAIlf,KAAK,CAACkf,OAAO,IAAI,CAAC;MAC3ChC,IAAI,EAAEoF,IAAI,CAACpF,IAAI,IAAIld,KAAK,CAACkd,IAAI,IAAI,CAAA;AAClC,KAAC,CAAC,CAAA;AAEF,IAAA,MAAMyC,OAAO,GAAG,IAAI0C,SAAO,CAACC,IAAI,CAAC3C,OAAO,IAAI3f,KAAK,CAAC2f,OAAO,IAAI,EAAE,CAAC,CAAA;IAEhE,IAAIyF,SAAS,IAAI,IAAI,IAAI,CAACzF,OAAO,CAACzS,GAAG,CAAC,cAAc,CAAC,EAAE;AACtD,MAAA,MAAMmX,WAAW,GAAG9C,oBAAkB,CAAC6D,SAAS,CAAC,CAAA;AACjD,MAAA,IAAIf,WAAW,EAAE;AAChB1E,QAAAA,OAAO,CAAC/hB,MAAM,CAAC,cAAc,EAAEymB,WAAW,CAAC,CAAA;AAC5C,OAAA;AACD,KAAA;IAEA,IAAIa,MAAM,GAAGF,WAAS,CAAChlB,KAAK,CAAC,GAAGA,KAAK,CAACklB,MAAM,GAAG,IAAI,CAAA;IACnD,IAAI,QAAQ,IAAI5C,IAAI,EAAE4C,MAAM,GAAG5C,IAAI,CAAC4C,MAAM,CAAA;IAE1C,IAAIA,MAAM,IAAI,IAAI,IAAI,CAACD,eAAa,CAACC,MAAM,CAAC,EAAE;AAC7C,MAAA,MAAM,IAAIxnB,SAAS,CAAC,iDAAiD,CAAC,CAAA;AACvE,KAAA;IAEA,IAAI,CAAC+mB,aAAW,CAAC,GAAG;MACnB9B,MAAM;MACN0C,QAAQ,EAAE/C,IAAI,CAAC+C,QAAQ,IAAIrlB,KAAK,CAACqlB,QAAQ,IAAI,QAAQ;MACrD1F,OAAO;MACP3E,SAAS;AACTkK,MAAAA,MAAAA;KACA,CAAA;;AAED;IACA,IAAI,CAACI,MAAM,GAAGhD,IAAI,CAACgD,MAAM,KAAKx3B,SAAS,GAAGw0B,IAAI,CAACgD,MAAM,GAAGtlB,KAAK,CAACslB,MAAM,KAAKx3B,SAAS,GAAGkS,KAAK,CAACslB,MAAM,GAAG,EAAE,CAAA;IACtG,IAAI,CAAC3P,QAAQ,GAAG2M,IAAI,CAAC3M,QAAQ,KAAK7nB,SAAS,GAAGw0B,IAAI,CAAC3M,QAAQ,GAAG3V,KAAK,CAAC2V,QAAQ,KAAK7nB,SAAS,GAAGkS,KAAK,CAAC2V,QAAQ,GAAG,IAAI,CAAA;IAClH,IAAI,CAACL,OAAO,GAAGgN,IAAI,CAAChN,OAAO,IAAItV,KAAK,CAACsV,OAAO,IAAI,CAAC,CAAA;IACjD,IAAI,CAACiQ,KAAK,GAAGjD,IAAI,CAACiD,KAAK,IAAIvlB,KAAK,CAACulB,KAAK,CAAA;AACvC,GAAA;EAEA,IAAI5C,MAAMA,GAAG;AACZ,IAAA,OAAO,IAAI,CAAC8B,aAAW,CAAC,CAAC9B,MAAM,CAAA;AAChC,GAAA;EAEA,IAAItyB,GAAGA,GAAG;IACT,OAAOw0B,YAAU,CAAC,IAAI,CAACJ,aAAW,CAAC,CAACzJ,SAAS,CAAC,CAAA;AAC/C,GAAA;EAEA,IAAI2E,OAAOA,GAAG;AACb,IAAA,OAAO,IAAI,CAAC8E,aAAW,CAAC,CAAC9E,OAAO,CAAA;AACjC,GAAA;EAEA,IAAI0F,QAAQA,GAAG;AACd,IAAA,OAAO,IAAI,CAACZ,aAAW,CAAC,CAACY,QAAQ,CAAA;AAClC,GAAA;EAEA,IAAIH,MAAMA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACT,aAAW,CAAC,CAACS,MAAM,CAAA;AAChC,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCjE,EAAAA,KAAKA,GAAG;AACP,IAAA,OAAO,IAAIkE,SAAO,CAAC,IAAI,CAAC,CAAA;AACzB,GAAA;AACD,CAAA;AAEAvG,MAAI,CAACsB,KAAK,CAACiF,SAAO,CAACrkB,SAAS,CAAC,CAAA;AAE7BrP,MAAM,CAACiQ,cAAc,CAACyjB,SAAO,CAACrkB,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AAC5DllB,EAAAA,KAAK,EAAE,SAAS;AAChB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;AAEFnQ,MAAM,CAAC4T,gBAAgB,CAAC8f,SAAO,CAACrkB,SAAS,EAAE;AAC1C6hB,EAAAA,MAAM,EAAE;AAAEhhB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BtR,EAAAA,GAAG,EAAE;AAAEsR,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzBge,EAAAA,OAAO,EAAE;AAAEhe,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC7B0jB,EAAAA,QAAQ,EAAE;AAAE1jB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC9Bsf,EAAAA,KAAK,EAAE;AAAEtf,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC3BujB,EAAAA,MAAM,EAAE;AAAEvjB,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC5B,CAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6jB,uBAAqBA,CAACC,OAAO,EAAE;AACvC,EAAA,MAAMzK,SAAS,GAAGyK,OAAO,CAAChB,aAAW,CAAC,CAACzJ,SAAS,CAAA;EAChD,MAAM2E,OAAO,GAAG,IAAI0C,SAAO,CAACoD,OAAO,CAAChB,aAAW,CAAC,CAAC9E,OAAO,CAAC,CAAA;;AAEzD;AACA,EAAA,IAAI,CAACA,OAAO,CAACzS,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3ByS,IAAAA,OAAO,CAAC/D,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC7B,GAAA;;AAEA;EACA,IAAI,CAACZ,SAAS,CAACxqB,QAAQ,IAAI,CAACwqB,SAAS,CAACI,QAAQ,EAAE;AAC/C,IAAA,MAAM,IAAI1d,SAAS,CAAC,kCAAkC,CAAC,CAAA;AACxD,GAAA;EAEA,IAAI,CAAC,WAAW,CAACI,IAAI,CAACkd,SAAS,CAACxqB,QAAQ,CAAC,EAAE;AAC1C,IAAA,MAAM,IAAIkN,SAAS,CAAC,sCAAsC,CAAC,CAAA;AAC5D,GAAA;AAEA,EAAA,IAAI+nB,OAAO,CAACP,MAAM,IAAIO,OAAO,CAAC5G,IAAI,YAAYtC,MAAM,CAACD,QAAQ,IAAI,CAACyI,4BAA0B,EAAE;AAC7F,IAAA,MAAM,IAAI/0B,KAAK,CAAC,iFAAiF,CAAC,CAAA;AACnG,GAAA;;AAEA;EACA,IAAI01B,kBAAkB,GAAG,IAAI,CAAA;AAC7B,EAAA,IAAID,OAAO,CAAC5G,IAAI,IAAI,IAAI,IAAI,eAAe,CAAC/gB,IAAI,CAAC2nB,OAAO,CAAC9C,MAAM,CAAC,EAAE;AACjE+C,IAAAA,kBAAkB,GAAG,GAAG,CAAA;AACzB,GAAA;AACA,EAAA,IAAID,OAAO,CAAC5G,IAAI,IAAI,IAAI,EAAE;AACzB,IAAA,MAAM8G,UAAU,GAAGnE,eAAa,CAACiE,OAAO,CAAC,CAAA;AACzC,IAAA,IAAI,OAAOE,UAAU,KAAK,QAAQ,EAAE;AACnCD,MAAAA,kBAAkB,GAAGvjB,MAAM,CAACwjB,UAAU,CAAC,CAAA;AACxC,KAAA;AACD,GAAA;AACA,EAAA,IAAID,kBAAkB,EAAE;AACvB/F,IAAAA,OAAO,CAAC/D,GAAG,CAAC,gBAAgB,EAAE8J,kBAAkB,CAAC,CAAA;AAClD,GAAA;;AAEA;AACA,EAAA,IAAI,CAAC/F,OAAO,CAACzS,GAAG,CAAC,YAAY,CAAC,EAAE;AAC/ByS,IAAAA,OAAO,CAAC/D,GAAG,CAAC,YAAY,EAAE,wDAAwD,CAAC,CAAA;AACpF,GAAA;;AAEA;EACA,IAAI6J,OAAO,CAAC9P,QAAQ,IAAI,CAACgK,OAAO,CAACzS,GAAG,CAAC,iBAAiB,CAAC,EAAE;AACxDyS,IAAAA,OAAO,CAAC/D,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA;AAC/C,GAAA;AAEA,EAAA,IAAI2J,KAAK,GAAGE,OAAO,CAACF,KAAK,CAAA;AACzB,EAAA,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;AAChCA,IAAAA,KAAK,GAAGA,KAAK,CAACvK,SAAS,CAAC,CAAA;AACzB,GAAA;;AAEA;AACA;;EAEA,OAAOvpB,MAAM,CAAC6M,MAAM,CAAC,EAAE,EAAE0c,SAAS,EAAE;IACnC2H,MAAM,EAAE8C,OAAO,CAAC9C,MAAM;AACtBhD,IAAAA,OAAO,EAAEmE,6BAA2B,CAACnE,OAAO,CAAC;AAC7C4F,IAAAA,KAAAA;AACD,GAAC,CAAC,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,YAAUA,CAACzH,OAAO,EAAE;AAC3BnuB,EAAAA,KAAK,CAACgR,IAAI,CAAC,IAAI,EAAEmd,OAAO,CAAC,CAAA;EAEzB,IAAI,CAACtlB,IAAI,GAAG,SAAS,CAAA;EACrB,IAAI,CAACslB,OAAO,GAAGA,OAAO,CAAA;;AAEtB;EACAnuB,KAAK,CAACuuB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC3hB,WAAW,CAAC,CAAA;AACjD,CAAA;AAEAgpB,YAAU,CAAC9kB,SAAS,GAAGrP,MAAM,CAACqqB,MAAM,CAAC9rB,KAAK,CAAC8Q,SAAS,CAAC,CAAA;AACrD8kB,YAAU,CAAC9kB,SAAS,CAAClE,WAAW,GAAGgpB,YAAU,CAAA;AAC7CA,YAAU,CAAC9kB,SAAS,CAACrC,IAAI,GAAG,YAAY,CAAA;AAExC,MAAMonB,OAAK,GAAGnB,GAAG,CAACp0B,GAAG,IAAIq0B,SAAS,CAACr0B,GAAG,CAAA;;AAEtC;AACA,MAAMw1B,eAAa,GAAGvJ,MAAM,CAACoC,WAAW,CAAA;AAExC,MAAMoH,qBAAmB,GAAG,SAASA,mBAAmBA,CAACC,WAAW,EAAEC,QAAQ,EAAE;EAC/E,MAAMC,IAAI,GAAG,IAAIL,OAAK,CAACI,QAAQ,CAAC,CAAC7K,QAAQ,CAAA;EACzC,MAAMyG,IAAI,GAAG,IAAIgE,OAAK,CAACG,WAAW,CAAC,CAAC5K,QAAQ,CAAA;EAE5C,OAAO8K,IAAI,KAAKrE,IAAI,IAAIqE,IAAI,CAACA,IAAI,CAACr3B,MAAM,GAAGgzB,IAAI,CAAChzB,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IAAIq3B,IAAI,CAACv3B,QAAQ,CAACkzB,IAAI,CAAC,CAAA;AAC3F,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMsE,gBAAc,GAAG,SAASA,cAAcA,CAACH,WAAW,EAAEC,QAAQ,EAAE;EACrE,MAAMC,IAAI,GAAG,IAAIL,OAAK,CAACI,QAAQ,CAAC,CAACz1B,QAAQ,CAAA;EACzC,MAAMqxB,IAAI,GAAG,IAAIgE,OAAK,CAACG,WAAW,CAAC,CAACx1B,QAAQ,CAAA;EAE5C,OAAO01B,IAAI,KAAKrE,IAAI,CAAA;AACrB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAShyB,OAAKA,CAACQ,GAAG,EAAEie,IAAI,EAAE;AAEzB;AACA,EAAA,IAAI,CAACze,OAAK,CAACstB,OAAO,EAAE;AACnB,IAAA,MAAM,IAAIntB,KAAK,CAAC,wEAAwE,CAAC,CAAA;AAC1F,GAAA;AAEA4uB,EAAAA,MAAI,CAACzB,OAAO,GAAGttB,OAAK,CAACstB,OAAO,CAAA;;AAE5B;EACA,OAAO,IAAIttB,OAAK,CAACstB,OAAO,CAAC,UAAUC,OAAO,EAAE0C,MAAM,EAAE;AACnD;IACA,MAAM2F,OAAO,GAAG,IAAIN,SAAO,CAAC90B,GAAG,EAAEie,IAAI,CAAC,CAAA;AACtC,IAAA,MAAM5d,OAAO,GAAG80B,uBAAqB,CAACC,OAAO,CAAC,CAAA;AAE9C,IAAA,MAAMW,IAAI,GAAG,CAAC11B,OAAO,CAACF,QAAQ,KAAK,QAAQ,GAAG8hB,KAAK,GAAGD,IAAI,EAAEoT,OAAO,CAAA;AACnE,IAAA,MAAMP,MAAM,GAAGO,OAAO,CAACP,MAAM,CAAA;IAE7B,IAAIt1B,QAAQ,GAAG,IAAI,CAAA;AAEnB,IAAA,MAAM6wB,KAAK,GAAG,SAASA,KAAKA,GAAG;AAC9B,MAAA,IAAI1wB,KAAK,GAAG,IAAI61B,YAAU,CAAC,6BAA6B,CAAC,CAAA;MACzD9F,MAAM,CAAC/vB,KAAK,CAAC,CAAA;MACb,IAAI01B,OAAO,CAAC5G,IAAI,IAAI4G,OAAO,CAAC5G,IAAI,YAAYtC,MAAM,CAACD,QAAQ,EAAE;AAC5D+J,QAAAA,eAAa,CAACZ,OAAO,CAAC5G,IAAI,EAAE9uB,KAAK,CAAC,CAAA;AACnC,OAAA;AACA,MAAA,IAAI,CAACH,QAAQ,IAAI,CAACA,QAAQ,CAACivB,IAAI,EAAE,OAAA;MACjCjvB,QAAQ,CAACivB,IAAI,CAACyH,IAAI,CAAC,OAAO,EAAEv2B,KAAK,CAAC,CAAA;KAClC,CAAA;AAED,IAAA,IAAIm1B,MAAM,IAAIA,MAAM,CAACqB,OAAO,EAAE;AAC7B9F,MAAAA,KAAK,EAAE,CAAA;AACP,MAAA,OAAA;AACD,KAAA;AAEA,IAAA,MAAM+F,gBAAgB,GAAG,SAASA,gBAAgBA,GAAG;AACpD/F,MAAAA,KAAK,EAAE,CAAA;AACPgG,MAAAA,QAAQ,EAAE,CAAA;KACV,CAAA;;AAED;AACA,IAAA,MAAMC,GAAG,GAAGN,IAAI,CAAC11B,OAAO,CAAC,CAAA;AACzB,IAAA,IAAIi2B,UAAU,CAAA;AAEd,IAAA,IAAIzB,MAAM,EAAE;AACXA,MAAAA,MAAM,CAAC0B,gBAAgB,CAAC,OAAO,EAAEJ,gBAAgB,CAAC,CAAA;AACnD,KAAA;IAEA,SAASC,QAAQA,GAAG;MACnBC,GAAG,CAACjG,KAAK,EAAE,CAAA;MACX,IAAIyE,MAAM,EAAEA,MAAM,CAAC2B,mBAAmB,CAAC,OAAO,EAAEL,gBAAgB,CAAC,CAAA;MACjE3F,YAAY,CAAC8F,UAAU,CAAC,CAAA;AACzB,KAAA;IAEA,IAAIlB,OAAO,CAACvG,OAAO,EAAE;AACpBwH,MAAAA,GAAG,CAACI,IAAI,CAAC,QAAQ,EAAE,UAAUC,MAAM,EAAE;QACpCJ,UAAU,GAAGhG,UAAU,CAAC,YAAY;AACnCb,UAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAsBuH,oBAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAC,CAAA,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAC/Eo2B,UAAAA,QAAQ,EAAE,CAAA;AACX,SAAC,EAAEhB,OAAO,CAACvG,OAAO,CAAC,CAAA;AACpB,OAAC,CAAC,CAAA;AACH,KAAA;AAEAwH,IAAAA,GAAG,CAACnH,EAAE,CAAC,OAAO,EAAE,UAAUltB,GAAG,EAAE;AAC9BytB,MAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAauH,WAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAA,iBAAA,EAAmBgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAC,CAAA;AAEjG,MAAA,IAAIzC,QAAQ,IAAIA,QAAQ,CAACivB,IAAI,EAAE;AAC9BwH,QAAAA,eAAa,CAACz2B,QAAQ,CAACivB,IAAI,EAAExsB,GAAG,CAAC,CAAA;AAClC,OAAA;AAEAo0B,MAAAA,QAAQ,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AAEFO,IAAAA,qCAAmC,CAACN,GAAG,EAAE,UAAUr0B,GAAG,EAAE;AACvD,MAAA,IAAI6yB,MAAM,IAAIA,MAAM,CAACqB,OAAO,EAAE;AAC7B,QAAA,OAAA;AACD,OAAA;AAEA,MAAA,IAAI32B,QAAQ,IAAIA,QAAQ,CAACivB,IAAI,EAAE;AAC9BwH,QAAAA,eAAa,CAACz2B,QAAQ,CAACivB,IAAI,EAAExsB,GAAG,CAAC,CAAA;AAClC,OAAA;AACD,KAAC,CAAC,CAAA;;AAEF;AACA,IAAA,IAAI2Z,QAAQ,CAACrM,OAAO,CAACoL,OAAO,CAACnc,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;AAChD;AACA;AACA83B,MAAAA,GAAG,CAACnH,EAAE,CAAC,QAAQ,EAAE,UAAUpP,CAAC,EAAE;AAC7BA,QAAAA,CAAC,CAAC8W,WAAW,CAAC,OAAO,EAAE,UAAUC,QAAQ,EAAE;AAC1C;UACA,MAAMC,eAAe,GAAGhX,CAAC,CAACiX,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAEnD;AACA,UAAA,IAAIx3B,QAAQ,IAAIu3B,eAAe,IAAI,CAACD,QAAQ,IAAI,EAAEhC,MAAM,IAAIA,MAAM,CAACqB,OAAO,CAAC,EAAE;AAC5E,YAAA,MAAMl0B,GAAG,GAAG,IAAIrC,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACxCqC,GAAG,CAACgsB,IAAI,GAAG,4BAA4B,CAAA;YACvCzuB,QAAQ,CAACivB,IAAI,CAACyH,IAAI,CAAC,OAAO,EAAEj0B,GAAG,CAAC,CAAA;AACjC,WAAA;AACD,SAAC,CAAC,CAAA;AACH,OAAC,CAAC,CAAA;AACH,KAAA;AAEAq0B,IAAAA,GAAG,CAACnH,EAAE,CAAC,UAAU,EAAE,UAAU/rB,GAAG,EAAE;MACjCqtB,YAAY,CAAC8F,UAAU,CAAC,CAAA;AAExB,MAAA,MAAMhH,OAAO,GAAGsE,sBAAoB,CAACzwB,GAAG,CAACmsB,OAAO,CAAC,CAAA;;AAEjD;MACA,IAAI9vB,OAAK,CAACw3B,UAAU,CAAC7zB,GAAG,CAAC8zB,UAAU,CAAC,EAAE;AACrC;AACA,QAAA,MAAMC,QAAQ,GAAG5H,OAAO,CAACnuB,GAAG,CAAC,UAAU,CAAC,CAAA;;AAExC;QACA,IAAIg2B,WAAW,GAAG,IAAI,CAAA;QACtB,IAAI;AACHA,UAAAA,WAAW,GAAGD,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI1B,OAAK,CAAC0B,QAAQ,EAAE9B,OAAO,CAACp1B,GAAG,CAAC,CAAC4B,QAAQ,EAAE,CAAA;SACpF,CAAC,OAAOI,GAAG,EAAE;AACb;AACA;AACA;AACA,UAAA,IAAIozB,OAAO,CAACJ,QAAQ,KAAK,QAAQ,EAAE;YAClCvF,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAA,qDAAA,EAAuDqJ,QAAS,CAAC,CAAA,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAC9Gd,YAAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAA;AACD,WAAA;AACD,SAAA;;AAEA;QACA,QAAQhB,OAAO,CAACJ,QAAQ;AACvB,UAAA,KAAK,OAAO;AACXvF,YAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAAyEuH,uEAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAC,CAAA,EAAE,aAAa,CAAC,CAAC,CAAA;AAC9Ho2B,YAAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAA;AACD,UAAA,KAAK,QAAQ;AACZ;YACA,IAAIe,WAAW,KAAK,IAAI,EAAE;AACzB;cACA,IAAI;AACH7H,gBAAAA,OAAO,CAAC/D,GAAG,CAAC,UAAU,EAAE4L,WAAW,CAAC,CAAA;eACpC,CAAC,OAAOn1B,GAAG,EAAE;AACb;gBACAytB,MAAM,CAACztB,GAAG,CAAC,CAAA;AACZ,eAAA;AACD,aAAA;AACA,YAAA,MAAA;AACD,UAAA,KAAK,QAAQ;AACZ;YACA,IAAIm1B,WAAW,KAAK,IAAI,EAAE;AACzB,cAAA,MAAA;AACD,aAAA;;AAEA;AACA,YAAA,IAAI/B,OAAO,CAACnQ,OAAO,IAAImQ,OAAO,CAACH,MAAM,EAAE;AACtCxF,cAAAA,MAAM,CAAC,IAAI5B,YAAU,CAAE,CAA+BuH,6BAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAC,CAAA,EAAE,cAAc,CAAC,CAAC,CAAA;AACrFo2B,cAAAA,QAAQ,EAAE,CAAA;AACV,cAAA,OAAA;AACD,aAAA;;AAEA;AACA;AACA,YAAA,MAAMgB,WAAW,GAAG;AACnB9H,cAAAA,OAAO,EAAE,IAAI0C,SAAO,CAACoD,OAAO,CAAC9F,OAAO,CAAC;cACrC2F,MAAM,EAAEG,OAAO,CAACH,MAAM;AACtBhQ,cAAAA,OAAO,EAAEmQ,OAAO,CAACnQ,OAAO,GAAG,CAAC;cAC5BiQ,KAAK,EAAEE,OAAO,CAACF,KAAK;cACpB5P,QAAQ,EAAE8P,OAAO,CAAC9P,QAAQ;cAC1BgN,MAAM,EAAE8C,OAAO,CAAC9C,MAAM;cACtB9D,IAAI,EAAE4G,OAAO,CAAC5G,IAAI;cAClBqG,MAAM,EAAEO,OAAO,CAACP,MAAM;cACtBhG,OAAO,EAAEuG,OAAO,CAACvG,OAAO;cACxBhC,IAAI,EAAEuI,OAAO,CAACvI,IAAAA;aACd,CAAA;AAED,YAAA,IAAI,CAAC6I,qBAAmB,CAACN,OAAO,CAACp1B,GAAG,EAAEm3B,WAAW,CAAC,IAAI,CAACrB,gBAAc,CAACV,OAAO,CAACp1B,GAAG,EAAEm3B,WAAW,CAAC,EAAE;AAChG,cAAA,KAAK,MAAM/oB,IAAI,IAAI,CAAC,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;AAC9EgpB,gBAAAA,WAAW,CAAC9H,OAAO,CAACvS,MAAM,CAAC3O,IAAI,CAAC,CAAA;AACjC,eAAA;AACD,aAAA;;AAEA;AACA,YAAA,IAAIjL,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI7B,OAAO,CAAC5G,IAAI,IAAI2C,eAAa,CAACiE,OAAO,CAAC,KAAK,IAAI,EAAE;cAC9E3F,MAAM,CAAC,IAAI5B,YAAU,CAAC,0DAA0D,EAAE,sBAAsB,CAAC,CAAC,CAAA;AAC1GuI,cAAAA,QAAQ,EAAE,CAAA;AACV,cAAA,OAAA;AACD,aAAA;;AAEA;YACA,IAAIjzB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI,CAAC9zB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI9zB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,KAAK7B,OAAO,CAAC9C,MAAM,KAAK,MAAM,EAAE;cAC9G8E,WAAW,CAAC9E,MAAM,GAAG,KAAK,CAAA;cAC1B8E,WAAW,CAAC5I,IAAI,GAAG/wB,SAAS,CAAA;AAC5B25B,cAAAA,WAAW,CAAC9H,OAAO,CAACvS,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAC7C,aAAA;;AAEA;YACAgQ,OAAO,CAACvtB,OAAK,CAAC,IAAIs1B,SAAO,CAACqC,WAAW,EAAEC,WAAW,CAAC,CAAC,CAAC,CAAA;AACrDhB,YAAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAA;AACF,SAAA;AACD,OAAA;;AAEA;AACAjzB,MAAAA,GAAG,CAACszB,IAAI,CAAC,KAAK,EAAE,YAAY;QAC3B,IAAI5B,MAAM,EAAEA,MAAM,CAAC2B,mBAAmB,CAAC,OAAO,EAAEL,gBAAgB,CAAC,CAAA;AAClE,OAAC,CAAC,CAAA;MACF,IAAI3H,IAAI,GAAGrrB,GAAG,CAAC8tB,IAAI,CAAC,IAAIwE,eAAa,EAAE,CAAC,CAAA;AAExC,MAAA,MAAM4B,gBAAgB,GAAG;QACxBr3B,GAAG,EAAEo1B,OAAO,CAACp1B,GAAG;QAChBua,MAAM,EAAEpX,GAAG,CAAC8zB,UAAU;QACtBhD,UAAU,EAAE9wB,GAAG,CAACm0B,aAAa;AAC7BhI,QAAAA,OAAO,EAAEA,OAAO;QAChBzC,IAAI,EAAEuI,OAAO,CAACvI,IAAI;QAClBgC,OAAO,EAAEuG,OAAO,CAACvG,OAAO;QACxB5J,OAAO,EAAEmQ,OAAO,CAACnQ,OAAAA;OACjB,CAAA;;AAED;AACA,MAAA,MAAMsS,OAAO,GAAGjI,OAAO,CAACnuB,GAAG,CAAC,kBAAkB,CAAC,CAAA;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;MACA,IAAI,CAACi0B,OAAO,CAAC9P,QAAQ,IAAI8P,OAAO,CAAC9C,MAAM,KAAK,MAAM,IAAIiF,OAAO,KAAK,IAAI,IAAIp0B,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI9zB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,EAAE;AAC3H13B,QAAAA,QAAQ,GAAG,IAAIw0B,UAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;QAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AACjB,QAAA,OAAA;AACD,OAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMi4B,WAAW,GAAG;QACnBC,KAAK,EAAEC,IAAI,CAACC,YAAY;QACxBC,WAAW,EAAEF,IAAI,CAACC,YAAAA;OAClB,CAAA;;AAED;AACA,MAAA,IAAIJ,OAAO,IAAI,MAAM,IAAIA,OAAO,IAAI,QAAQ,EAAE;QAC7C/I,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACG,YAAY,CAACL,WAAW,CAAC,CAAC,CAAA;AAChDj4B,QAAAA,QAAQ,GAAG,IAAIw0B,UAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;QAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AACjB,QAAA,OAAA;AACD,OAAA;;AAEA;AACA,MAAA,IAAIg4B,OAAO,IAAI,SAAS,IAAIA,OAAO,IAAI,WAAW,EAAE;AACnD;AACA;QACA,MAAMpF,GAAG,GAAGhvB,GAAG,CAAC8tB,IAAI,CAAC,IAAIwE,eAAa,EAAE,CAAC,CAAA;AACzCtD,QAAAA,GAAG,CAACsE,IAAI,CAAC,MAAM,EAAE,UAAUlG,KAAK,EAAE;AACjC;UACA,IAAI,CAACA,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;YAC/B/B,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACI,aAAa,EAAE,CAAC,CAAA;AACvC,WAAC,MAAM;YACNtJ,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACK,gBAAgB,EAAE,CAAC,CAAA;AAC1C,WAAA;AACAx4B,UAAAA,QAAQ,GAAG,IAAIw0B,UAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;UAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AAClB,SAAC,CAAC,CAAA;AACF4yB,QAAAA,GAAG,CAACjD,EAAE,CAAC,KAAK,EAAE,YAAY;AACzB;UACA,IAAI,CAAC3vB,QAAQ,EAAE;AACdA,YAAAA,QAAQ,GAAG,IAAIw0B,UAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;YAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AAClB,WAAA;AACD,SAAC,CAAC,CAAA;AACF,QAAA,OAAA;AACD,OAAA;;AAEA;MACA,IAAIg4B,OAAO,IAAI,IAAI,IAAI,OAAOG,IAAI,CAACM,sBAAsB,KAAK,UAAU,EAAE;QACzExJ,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACM,sBAAsB,EAAE,CAAC,CAAA;AAC/Cz4B,QAAAA,QAAQ,GAAG,IAAIw0B,UAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;QAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AACjB,QAAA,OAAA;AACD,OAAA;;AAEA;AACAA,MAAAA,QAAQ,GAAG,IAAIw0B,UAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;MAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AAClB,KAAC,CAAC,CAAA;AAEFgyB,IAAAA,eAAa,CAAC8E,GAAG,EAAEjB,OAAO,CAAC,CAAA;AAC5B,GAAC,CAAC,CAAA;AACH,CAAA;AACA,SAASuB,qCAAmCA,CAACvB,OAAO,EAAE6C,aAAa,EAAE;AACpE,EAAA,IAAIvB,MAAM,CAAA;AAEVtB,EAAAA,OAAO,CAAClG,EAAE,CAAC,QAAQ,EAAE,UAAUpP,CAAC,EAAE;AACjC4W,IAAAA,MAAM,GAAG5W,CAAC,CAAA;AACX,GAAC,CAAC,CAAA;AAEFsV,EAAAA,OAAO,CAAClG,EAAE,CAAC,UAAU,EAAE,UAAU3vB,QAAQ,EAAE;AAC1C,IAAA,MAAM+vB,OAAO,GAAG/vB,QAAQ,CAAC+vB,OAAO,CAAA;AAEhC,IAAA,IAAIA,OAAO,CAAC,mBAAmB,CAAC,KAAK,SAAS,IAAI,CAACA,OAAO,CAAC,gBAAgB,CAAC,EAAE;AAC7E/vB,MAAAA,QAAQ,CAACk3B,IAAI,CAAC,OAAO,EAAE,UAAUI,QAAQ,EAAE;AAC1C;AACA;AACA;AACA;QACA,MAAMC,eAAe,GAAGJ,MAAM,IAAIA,MAAM,CAACK,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAElE,QAAA,IAAID,eAAe,IAAI,CAACD,QAAQ,EAAE;AACjC,UAAA,MAAM70B,GAAG,GAAG,IAAIrC,KAAK,CAAC,iBAAiB,CAAC,CAAA;UACxCqC,GAAG,CAACgsB,IAAI,GAAG,4BAA4B,CAAA;UACvCiK,aAAa,CAACj2B,GAAG,CAAC,CAAA;AACnB,SAAA;AACD,OAAC,CAAC,CAAA;AACH,KAAA;AACD,GAAC,CAAC,CAAA;AACH,CAAA;AAEA,SAASg0B,eAAaA,CAAC9I,MAAM,EAAElrB,GAAG,EAAE;EACnC,IAAIkrB,MAAM,CAACgL,OAAO,EAAE;AACnBhL,IAAAA,MAAM,CAACgL,OAAO,CAACl2B,GAAG,CAAC,CAAA;AACpB,GAAC,MAAM;AACN;AACAkrB,IAAAA,MAAM,CAAC+I,IAAI,CAAC,OAAO,EAAEj0B,GAAG,CAAC,CAAA;IACzBkrB,MAAM,CAAClN,GAAG,EAAE,CAAA;AACb,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACAxgB,OAAK,CAACw3B,UAAU,GAAG,UAAUhJ,IAAI,EAAE;AAClC,EAAA,OAAOA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,CAAA;AACpF,CAAC,CAAA;;AAED;AACAxuB,OAAK,CAACstB,OAAO,GAAG4E,MAAM,CAAC5E,OAAO;;;;;;;;;;;;ACzuD9B,SAASqL,gBAAgBA,CAAE7I,OAAO,EAAE;AAClC,EAAA,OAAOA,OAAO,CAAC6C,GAAG,EAAE,CAAA;AACtB,CAAA;AAEA,SAASiG,kBAAkBA,CAAE54B,KAAK,EAAE64B,GAAG,GAAG,EAAE,EAAE;AAC5C,EAAA,MAAM/I,OAAO,GAAG,IAAI9vB,KAAK,CAACwyB,OAAO,EAAE,CAAA;AACnC,EAAA,KAAK,MAAM5jB,IAAI,IAAIiqB,GAAG,EAAE;AACtB,IAAA,KAAK,MAAM3vB,KAAK,IAAI2vB,GAAG,CAACjqB,IAAI,CAAC,EAAE;AAC7BkhB,MAAAA,OAAO,CAAC/hB,MAAM,CAACa,IAAI,EAAE1F,KAAK,CAAC,CAAA;AAC5B,KAAA;AACF,GAAA;AACD,EAAA,OAAO4mB,OAAO,CAAA;AAChB,CAAA;AAEA,SAASgJ,gBAAgBA,CAAElD,OAAO,EAAE;AAClC,EAAA,OAAO,CACLA,OAAO,CAACp1B,GAAG,EACX;IACEsyB,MAAM,EAAE8C,OAAO,CAAC9C,MAAM;IACtBhD,OAAO,EAAE8F,OAAO,CAAC9F,OAAO;IACxBd,IAAI,EAAE4G,OAAO,CAAC5G,IAAI;IAClBppB,IAAI,EAAEgwB,OAAO,CAAChwB,IAAI;IAClBmzB,WAAW,EAAEnD,OAAO,CAACmD,WAAW;IAChCC,KAAK,EAAEpD,OAAO,CAACoD,KAAK;IACpBxD,QAAQ,EAAEI,OAAO,CAACJ,QAAQ;IAC1ByD,QAAQ,EAAErD,OAAO,CAACqD,QAAQ;IAC1BC,cAAc,EAAEtD,OAAO,CAACsD,cAAc;IACtCC,SAAS,EAAEvD,OAAO,CAACuD,SAAS;IAC5BC,SAAS,EAAExD,OAAO,CAACwD,SAAS;AAClC;;AAEA;IACM3D,MAAM,EAAEG,OAAO,CAACH,MAAM;IACtBpG,OAAO,EAAEuG,OAAO,CAACvG,OAAO;IACxBvJ,QAAQ,EAAE8P,OAAO,CAAC9P,QAAQ;IAC1BuH,IAAI,EAAEuI,OAAO,CAACvI,IAAAA;AACpB;AACK,GAAA,CACF,CAAA;AACH,CAAA;;AAEA,SAASgM,kBAAkBA,CAAEr5B,KAAK,EAAEs5B,QAAQ,EAAE7G,IAAI,EAAE;AAClD,EAAA,OAAO,IAAIzyB,KAAK,CAACs1B,OAAO,CAACgE,QAAQ,EAAE;AACjC,IAAA,GAAG7G,IAAI;AACPzD,IAAAA,IAAI,EAAEyD,IAAI,CAACzD,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAACuF,IAAI,CAACzD,IAAI,EAAE,QAAQ,CAAC,GAAG/wB,SAAS;AAC9D6xB,IAAAA,OAAO,EAAE8I,kBAAkB,CAAC54B,KAAK,EAAEyyB,IAAI,CAAC3C,OAAO,CAAA;AACnD,GAAG,CAAC,CAAA;AACJ,CAAA;AAEA,SAASyJ,iBAAiBA,CAAEx5B,QAAQ,EAAE;EACpC,OAAO;IACLS,GAAG,EAAET,QAAQ,CAACS,GAAG;AACjBsvB,IAAAA,OAAO,EAAE/vB,QAAQ,CAAC+vB,OAAO,CAAC6C,GAAG,EAAE;IAC/B5X,MAAM,EAAEhb,QAAQ,CAACgb,MAAM;IACvB0Z,UAAU,EAAE10B,QAAQ,CAAC00B,UAAU;IAC/BhP,OAAO,EAAE1lB,QAAQ,CAAC40B,UAAU,GAAG,CAAC,GAAG,CAAC;GACrC,CAAA;AACH,CAAA;;AAEA,SAAS6E,mBAAmBA,CAAEx5B,KAAK,EAAEgvB,IAAI,EAAEyD,IAAI,EAAEgH,SAAS,EAAE;EAC1D,MAAMpW,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,EAAE,QAAQ,CAAC,CAAA;AAE1C,EAAA,OAAO,IAAIhvB,KAAK,CAACu0B,QAAQ,CACvBvF,IAAI,GAAG0K,YAAY,CAACrW,MAAM,CAAC,GAAGqW,YAAY,CAAC,IAAI,CAAC,EAChD;AACE,IAAA,GAAGjH,IAAI;AACP3C,IAAAA,OAAO,EAAE8I,kBAAkB,CAAC54B,KAAK,EAAEyyB,IAAI,CAAC3C,OAAO,CAAA;AAChD,GAAA,EACD;IACEzM,MAAM;AACNoW,IAAAA,SAAAA;AACD,GACF,CAAA,CAAA;AACH,CAAA;AAEA,MAAME,MAAM,GAAG;AACb9rB,EAAAA,SAAAA;AACF,CAAC,CAAA;AAED,SAAS+rB,cAAcA,CAAE;EAAE7sB,WAAW;EAAEuhB,OAAO;EAAEtlB,IAAI;AAAEwlB,EAAAA,IAAAA;AAAI,CAAE,EAAE;EAC7D,OAAO,CACLzhB,WAAW,CAAC6B,IAAI,EAChB,CAAC0f,OAAO,EAAEtlB,IAAI,EAAE;AAAEwlB,IAAAA,IAAAA;GAAM,CAAC,CAC1B,CAAA;AACH,CAAA;AAEA,SAASqL,gBAAgBA,CAAE75B,KAAK,EAAE4O,IAAI,EAAE6jB,IAAI,EAAE;EAC5C,IAAI7jB,IAAI,IAAI+qB,MAAM,EAAE;IAClB,OAAO,IAAIA,MAAM,CAAC/qB,IAAI,CAAC,CAAC,GAAG6jB,IAAI,CAAC,CAAA;AACpC,GAAG,MAAM;AACL,IAAA,OAAO,IAAIzyB,KAAK,CAACquB,UAAU,CAAC,GAAGoE,IAAI,CAAC,CAAA;AACrC,GAAA;AACH,CAAA;AAEA,SAASqH,aAAaA,CAAE9K,IAAI,EAAE;EAC5B,IAAIA,IAAI,IAAI,IAAI,EAAE;AAChB,IAAA,OAAO,MAAM,CAAA;GACd,MAAM,IAAIA,IAAI,CAACjiB,WAAW,CAAC6B,IAAI,KAAK,iBAAiB,EAAE;AACtD,IAAA,OAAO,iBAAiB,CAAA;GACzB,MAAM,IAAI2V,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AAChC,IAAA,OAAO,QAAQ,CAAA;AACnB,GAAG,MAAM,IAAIptB,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAC+O,IAAI,CAAC6d,IAAI,CAAC,KAAK,sBAAsB,EAAE;AAC1E,IAAA,OAAO,aAAa,CAAA;GACrB,MAAM,IAAIhC,WAAW,CAACC,MAAM,CAAC+B,IAAI,CAAC,EAAE;AACnC,IAAA,OAAO,iBAAiB,CAAA;AAC5B,GAAG,MAAM,IAAIA,IAAI,YAAYtC,MAAM,EAAE;AACjC,IAAA,OAAO,QAAQ,CAAA;AACnB,GAAG,MAAM;AACL,IAAA,OAAO,QAAQ,CAAA;AAChB,GAAA;AACH,CAAA;AAEA,SAASqN,SAASA,CAAE/K,IAAI,EAAEhmB,IAAI,GAAG8wB,aAAa,CAAC9K,IAAI,CAAC,EAAE;AACpD,EAAA,QAAQhmB,IAAI;AACV,IAAA,KAAK,MAAM;AAAE,MAAA,OAAO,IAAI,CAAA;AACxB,IAAA,KAAK,iBAAiB;MAAE,OAAOub,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC5sB,QAAQ,EAAE,CAAC,CAAA;AAC3D,IAAA,KAAK,QAAQ;AAAE,MAAA,OAAO4sB,IAAI,CAAA;AAC1B,IAAA,KAAK,aAAa;AAAE,MAAA,OAAOzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC,CAAA;AAC5C,IAAA,KAAK,iBAAiB;AAAE,MAAA,OAAOzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC3L,MAAM,EAAE2L,IAAI,CAAC7B,UAAU,EAAE6B,IAAI,CAAC5B,UAAU,CAAC,CAAA;AACzF,IAAA,KAAK,QAAQ;MAAE,OAAO7I,MAAM,CAAC2I,IAAI,CAAC5a,MAAM,CAAC0c,IAAI,CAAC,CAAC,CAAA;AAC/C,IAAA;AAAS,MAAA,MAAM,IAAInhB,SAAS,CAAE,CAA8C7E,4CAAAA,EAAAA,IAAK,EAAC,CAAC,CAAA;AACpF,GAAA;AACH,CAAA;AAEA,SAAS0wB,YAAYA,CAAErW,MAAM,EAAE;AAC7B,EAAA,OAAO,IAAIqJ,MAAM,CAACsN,SAAS,CAAC;AAC1BC,IAAAA,IAAIA,GAAI;AACN,MAAA,IAAI,CAAC56B,IAAI,CAACgkB,MAAM,CAAC,CAAA;AACjB,MAAA,IAAI,CAAChkB,IAAI,CAAC,IAAI,CAAC,CAAA;AAChB,KAAA;AACL,GAAG,CAAC,CAAA;AACJ,CAAA;AAEA,IAAA66B,MAAc,GAAG;EACfvB,gBAAgB;EAChBC,kBAAkB;EAClBE,gBAAgB;EAChBO,kBAAkB;EAClBE,iBAAiB;EACjBC,mBAAmB;EACnBI,cAAc;EACdC,gBAAgB;EAEhBC,aAAa;EACbC,SAAS;AACTL,EAAAA,YAAAA;AACF,CAAA;;ACpJA,MAAMr7B,IAAI,GAAGkuB,UAAwB,CAAC4N,YAAY,CAAA;AAElD,MAAM;AAAE15B,OAAAA,KAAAA;AAAK,CAAA,GAAG+rB,GAAc,CAAA;AAI9B,SAASxsB,OAAKA,CAAEs5B,QAAQ,EAAE7G,IAAI,EAAE;EAC9B,MAAMmD,OAAO,GAAG,EAAE,CAAA;AAElB,EAAA,IAAI0D,QAAQ,YAAYt5B,OAAK,CAACs1B,OAAO,EAAE;IACrCM,OAAO,CAACv2B,IAAI,CAAC,GAAG66B,MAAM,CAACpB,gBAAgB,CAACQ,QAAQ,CAAC,CAAC,CAAA;AACtD,GAAG,MAAM,IAAIA,QAAQ,YAAY74B,KAAG,EAAE;IAClCm1B,OAAO,CAACv2B,IAAI,CAACi6B,QAAQ,CAAC/vB,IAAI,EAAE,EAAE,CAAC,CAAA;AACnC,GAAG,MAAM;AACLqsB,IAAAA,OAAO,CAACv2B,IAAI,CAACi6B,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC3B,GAAA;EAED13B,MAAM,CAAC6M,MAAM,CAACmnB,OAAO,CAAC,CAAC,CAAC,EAAEnD,IAAI,CAAC,CAAA;AAE/BmD,EAAAA,OAAO,CAAC,CAAC,CAAC,CAAC9F,OAAO,GAAG,IAAIsK,KAAM,CAAC5H,OAAO,CAACoD,OAAO,CAAC,CAAC,CAAC,CAAC9F,OAAO,CAAC,CAAA;AAE3D,EAAA,IAAI8F,OAAO,CAAC,CAAC,CAAC,CAAC5G,IAAI,EAAE;AACnB,IAAA,MAAMwF,WAAW,GAAG9C,oBAAkB,CAACkE,OAAO,CAAC,CAAA;AAC/C,IAAA,IAAIpB,WAAW,IAAI,CAACoB,OAAO,CAAC,CAAC,CAAC,CAAC9F,OAAO,CAACnuB,GAAG,CAAC,cAAc,CAAC,EAAE;MAAEi0B,OAAO,CAAC,CAAC,CAAC,CAAC9F,OAAO,CAAC/hB,MAAM,CAAC,cAAc,EAAEymB,WAAW,CAAC,CAAA;AAAE,KAAA;AACtHoB,IAAAA,OAAO,CAAC,CAAC,CAAC,CAAC5G,IAAI,GAAGkL,MAAM,CAACH,SAAS,CAACtH,IAAI,CAACzD,IAAI,CAAC,CAAC5sB,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACjE,GAAA;AAEDwzB,EAAAA,OAAO,CAAC,CAAC,CAAC,CAAC9F,OAAO,GAAGoK,MAAM,CAACvB,gBAAgB,CAAC/C,OAAO,CAAC,CAAC,CAAC,CAAC9F,OAAO,CAAC,CAAA;;AAElE;;EAEE,MAAM/vB,QAAQ,GAAGiN,IAAI,CAACC,KAAK,CAACotB,WAAW,CAACzE,OAAO,CAAC,CAAC,CAAA;AACjD,EAAA,IAAI,SAAS,IAAI71B,QAAQ,CAAC,CAAC,CAAC,EAAE;IAC5B,OAAOm6B,MAAM,CAACV,mBAAmB,CAACx5B,OAAK,EAAE,GAAGD,QAAQ,CAAC,CAAA;AACzD,GAAG,MAAM;IACL,MAAMm6B,MAAM,CAACL,gBAAgB,CAAC75B,OAAK,EAAE,GAAGD,QAAQ,CAAC,CAAA;AAClD,GAAA;AACH,CAAA;AAEA,SAASs6B,WAAWA,CAAE/L,OAAO,EAAE;AAC7B,EAAA,OAAOjwB,IAAI,CAACyR,OAAO,CAACwqB,QAAQ,EAAE,CAACz6B,IAAI,CAACsB,IAAI,CAACo5B,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE;AACjEC,IAAAA,WAAW,EAAE,IAAI;AACjBC,IAAAA,SAAS,EAAEC,QAAQ;AACnBvqB,IAAAA,KAAK,EAAEnD,IAAI,CAACM,SAAS,CAACghB,OAAO,CAAC;AAC9BqM,IAAAA,KAAK,EAAE,KAAA;AACR,GAAA,CAAC,CAACv4B,QAAQ,EAAE,CAAA;AACf,CAAA;AAEA,SAASsvB,oBAAkBA,CAAEvhB,KAAK,EAAE;EAClC,MAAMylB,OAAO,GAAG,IAAIwE,KAAM,CAAC9E,OAAO,CAAC,GAAGnlB,KAAK,CAAC,CAAA;EAC5C,OAAOylB,OAAO,CAAC9F,OAAO,CAACnuB,GAAG,CAAC,cAAc,CAAC,IAAI1D,SAAS,CAAA;AACzD,CAAA;AAEA,MAAM28B,KAAK,GAAGxoB,MAAM,CAAC,YAAY,CAAC,CAAA;AAClC,MAAMyoB,UAAU,GAAGzoB,MAAM,CAAC,WAAW,CAAC,CAAA;AAEtC,MAAM0oB,WAAW,SAASV,KAAM,CAAC9E,OAAO,CAAC;AACvCvoB,EAAAA,WAAWA,CAAEusB,QAAQ,EAAE7G,IAAI,GAAG,EAAE,EAAE;IAChC,MAAMpP,MAAM,GAAG6W,MAAM,CAACH,SAAS,CAACtH,IAAI,CAACzD,IAAI,CAAC,CAAA;AAE1C,IAAA,KAAK,CAACsK,QAAQ,EAAE7G,IAAI,CAAC,CAAA;AACrBsI,IAAAA,YAAY,CAAC,IAAI,EAAE1X,MAAM,CAAC,CAAA;AAC3B,GAAA;AAED+N,EAAAA,KAAKA,GAAI;IACP4J,SAAS,CAAC,IAAI,CAAC,CAAA;IACf,OAAO,IAAIF,WAAW,CAAC,GAAGZ,MAAM,CAACpB,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;AACzD,GAAA;AACH,CAAA;AAEA,MAAMmC,YAAY,SAASb,KAAM,CAAC7F,QAAQ,CAAC;EACzCxnB,WAAWA,CAAEiiB,IAAI,EAAEyD,IAAI,EAAE5xB,OAAO,GAAG,EAAE,EAAE;IACrC,MAAM;AACJwiB,MAAAA,MAAM,GAAG6W,MAAM,CAACH,SAAS,CAAC/K,IAAI,CAAC;AAC/ByK,MAAAA,SAAAA;AACN,KAAK,GAAG54B,OAAO,CAAA;AAEX,IAAA,KAAK,CAACmuB,IAAI,EAAEyD,IAAI,CAAC,CAAA;AACjBsI,IAAAA,YAAY,CAAC,IAAI,EAAE1X,MAAM,CAAC,CAAA;AAC1B,IAAA,IAAIoW,SAAS,EAAEyB,eAAe,CAAC,IAAI,EAAEzB,SAAS,CAAC,CAAA;AAChD,GAAA;AAEDrI,EAAAA,KAAKA,GAAI;IACP4J,SAAS,CAAC,IAAI,CAAC,CAAA;IACf,MAAM3X,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAAC,IAAI,CAAC0N,KAAK,CAAC,CAAC,CAAA;AACvC,IAAA,OAAO,IAAIK,YAAY,CACrBf,MAAM,CAACR,YAAY,CAACrW,MAAM,CAAC,EAC3B6W,MAAM,CAACX,iBAAiB,CAAC,IAAI,CAAC,EAC9B;MACElW,MAAM;MACNoW,SAAS,EAAE,IAAI,CAACoB,UAAU,CAAA;AAC3B,KACF,CAAA,CAAA;AACF,GAAA;AACH,CAAA;AAEA,MAAM9L,MAAI,CAAC;EACT,OAAOrP,KAAKA,CAAE4Q,KAAK,EAAE;IACnB,KAAK,MAAM1hB,IAAI,IAAIhN,MAAM,CAAC+d,mBAAmB,CAACoP,MAAI,CAAC9d,SAAS,CAAC,EAAE;MAC7D,IAAIrC,IAAI,KAAK,aAAa,EAAE;AAAE,QAAA,SAAA;AAAU,OAAA;MACxC,MAAM2hB,IAAI,GAAG3uB,MAAM,CAACuT,wBAAwB,CAAC4Z,MAAI,CAAC9d,SAAS,EAAErC,IAAI,CAAC,CAAA;AAClEhN,MAAAA,MAAM,CAACiQ,cAAc,CAACye,KAAK,EAAE1hB,IAAI,EAAE;AACjC,QAAA,GAAG2hB,IAAI;AACPze,QAAAA,UAAU,EAAE,IAAA;AACpB,OAAO,CAAC,CAAA;AACH,KAAA;AACF,GAAA;AAED0b,EAAAA,WAAWA,GAAI;IACbwN,SAAS,CAAC,IAAI,CAAC,CAAA;AACf,IAAA,MAAM1W,GAAG,GAAGsL,aAAW,CAAC,IAAI,CAAC,CAAA;AAC7B,IAAA,OAAOtL,GAAG,CAACjB,MAAM,CAAChhB,KAAK,CAACiiB,GAAG,CAAC6I,UAAU,EAAE7I,GAAG,CAAC6I,UAAU,GAAG7I,GAAG,CAAC8I,UAAU,CAAC,CAAA;AACzE,GAAA;AAEDntB,EAAAA,IAAIA,GAAI;IACN+6B,SAAS,CAAC,IAAI,CAAC,CAAA;AACf,IAAA,OAAOpL,aAAW,CAAC,IAAI,CAAC,CAACxtB,QAAQ,EAAE,CAAA;AACpC,GAAA;AAED2tB,EAAAA,IAAIA,GAAI;IACNiL,SAAS,CAAC,IAAI,CAAC,CAAA;IACf,IAAI;AACF,MAAA,OAAOhuB,IAAI,CAACC,KAAK,CAAC2iB,aAAW,CAAC,IAAI,CAAC,CAACxtB,QAAQ,EAAE,CAAC,CAAA;KAChD,CAAC,OAAOI,GAAG,EAAE;AACZ,MAAA,MAAM,IAAIxC,OAAK,CAACquB,UAAU,CAAE,iCAAgC,IAAI,CAAC7tB,GAAI,CAAA,SAAA,EAAWgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,cAAc,CAAC,CAAA;AAC/G,KAAA;AACF,GAAA;AAEDjL,EAAAA,MAAMA,GAAI;IACR2X,SAAS,CAAC,IAAI,CAAC,CAAA;IACf,OAAOzW,MAAM,CAAC2I,IAAI,CAAC0C,aAAW,CAAC,IAAI,CAAC,CAAC,CAAA;AACtC,GAAA;AAEDM,EAAAA,aAAaA,GAAI;AACf,IAAA,MAAM,IAAIlwB,OAAK,CAACquB,UAAU,CAAC,+BAA+B,CAAC,CAAA;AAC5D,GAAA;AACH,CAAA;AAEA,SAAS8M,MAAMA,CAAEC,IAAI,EAAEtI,MAAM,EAAE;AAC7B,EAAA,OAAOlxB,MAAM,CAACkyB,cAAc,CAAClyB,MAAM,CAACkyB,cAAc,CAACsH,IAAI,CAAC,CAAC,CAACtI,MAAM,CAAC,CAAC7e,IAAI,CAACmnB,IAAI,CAAC,CAAA;AAC9E,CAAA;AAEA,SAASJ,SAASA,CAAEhM,IAAI,EAAE;AACxB,EAAA,IAAIA,IAAI,CAAC6L,UAAU,CAAC,EAAE;IACpB,MAAM7L,IAAI,CAAC6L,UAAU,CAAC,CAAA;AACvB,GAAA;EACD,IAAI7L,IAAI,CAACW,QAAQ,EAAE;IACjB,MAAM,IAAI9hB,SAAS,CAAE,CAAA,uBAAA,EAAyBmhB,IAAI,CAACxuB,GAAI,EAAC,CAAC,CAAA;AAC1D,GAAA;AACH,CAAA;AAEA,SAASovB,aAAWA,CAAEZ,IAAI,EAAE;AAC1BmM,EAAAA,MAAM,CAACnM,IAAI,EAAE,QAAQ,CAAC,EAAE,CAACqM,KAAK,CAACn7B,KAAK,IAAImF,OAAO,CAACnF,KAAK,CAACA,KAAK,CAAC,CAAC,CAAA;EAC7D,OAAO8uB,IAAI,CAAC4L,KAAK,CAAC,IAAIrW,MAAM,CAACkM,KAAK,CAAC,CAAC,CAAC,CAAA;AACvC,CAAA;AAEA,SAASsK,YAAYA,CAAE/L,IAAI,EAAE3L,MAAM,EAAE;AACnCzhB,EAAAA,MAAM,CAACiQ,cAAc,CAACmd,IAAI,EAAE4L,KAAK,EAAE;AACjC1xB,IAAAA,KAAK,EAAEma,MAAM;AACbvR,IAAAA,UAAU,EAAE,KAAA;AAChB,GAAG,CAAC,CAAA;AACJ,CAAA;AAEA,SAASopB,eAAeA,CAAElM,IAAI,EAAE9uB,KAAK,EAAE;AACrC0B,EAAAA,MAAM,CAACiQ,cAAc,CAACmd,IAAI,EAAE6L,UAAU,EAAE;IACtC3xB,KAAK,EAAEgxB,MAAM,CAACL,gBAAgB,CAAC75B,OAAK,EAAE,GAAGE,KAAK,CAAC;AAC/C4R,IAAAA,UAAU,EAAE,KAAA;AAChB,GAAG,CAAC,CAAA;AACJ,CAAA;AAEAid,MAAI,CAACrP,KAAK,CAACob,WAAW,CAAC7pB,SAAS,CAAC,CAAA;AACjC8d,MAAI,CAACrP,KAAK,CAACub,YAAY,CAAChqB,SAAS,CAAC,CAAA;AAClCrP,MAAM,CAAC4T,gBAAgB,CAACslB,WAAW,CAAC7pB,SAAS,EAAE;AAAEmgB,EAAAA,KAAK,EAAE;AAAEtf,IAAAA,UAAU,EAAE,IAAA;AAAI,GAAA;CAAI,CAAC,CAAA;AAC/ElQ,MAAM,CAAC4T,gBAAgB,CAACylB,YAAY,CAAChqB,SAAS,EAAE;AAAEmgB,EAAAA,KAAK,EAAE;AAAEtf,IAAAA,UAAU,EAAE,IAAA;AAAI,GAAA;CAAI,CAAC,CAAA;AAEhF9R,OAAK,CAACwyB,OAAO,GAAG4H,KAAM,CAAC5H,OAAO,CAAA;AAC9BxyB,OAAK,CAACquB,UAAU,GAAG+L,KAAM,CAAC/L,UAAU,CAAA;AACpCruB,OAAK,CAACs1B,OAAO,GAAGwF,WAAW,CAAA;AAC3B96B,OAAK,CAACu0B,QAAQ,GAAG0G,YAAY;;AC3K7B;;AAEA;AACA,MAAMxO,QAAQ,GAAGC,MAAM,CAACD,QAAQ,CAAA;AAEhC,MAAME,MAAM,GAAGva,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC/B,MAAMwD,MAAI,GAAGxD,MAAM,CAAC,MAAM,CAAC,CAAA;AAE3B,MAAMwa,IAAI,CAAC;AACV7f,EAAAA,WAAWA,GAAG;AACb,IAAA,IAAI,CAAC6I,MAAI,CAAC,GAAG,EAAE,CAAA;AAEf,IAAA,MAAMiX,SAAS,GAAGvX,SAAS,CAAC,CAAC,CAAC,CAAA;AAC9B,IAAA,MAAMzU,OAAO,GAAGyU,SAAS,CAAC,CAAC,CAAC,CAAA;IAE5B,MAAMwX,OAAO,GAAG,EAAE,CAAA;AAGlB,IAAA,IAAID,SAAS,EAAE;MACd,MAAMxN,CAAC,GAAGwN,SAAS,CAAA;AACnB,MAAA,MAAM7tB,MAAM,GAAGuT,MAAM,CAAC8M,CAAC,CAACrgB,MAAM,CAAC,CAAA;MAC/B,KAAK,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlC,MAAM,EAAEkC,CAAC,EAAE,EAAE;AAChC,QAAA,MAAM6rB,OAAO,GAAG1N,CAAC,CAACne,CAAC,CAAC,CAAA;AACpB,QAAA,IAAImiB,MAAM,CAAA;QACV,IAAI0J,OAAO,YAAYxI,MAAM,EAAE;AAC9BlB,UAAAA,MAAM,GAAG0J,OAAO,CAAA;SAChB,MAAM,IAAIC,WAAW,CAACC,MAAM,CAACF,OAAO,CAAC,EAAE;AACvC1J,UAAAA,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAACH,OAAO,CAAC1J,MAAM,EAAE0J,OAAO,CAACI,UAAU,EAAEJ,OAAO,CAACK,UAAU,CAAC,CAAA;AAC7E,SAAC,MAAM,IAAIL,OAAO,YAAYC,WAAW,EAAE;AAC1C3J,UAAAA,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAACH,OAAO,CAAC,CAAA;AAC9B,SAAC,MAAM,IAAIA,OAAO,YAAYH,IAAI,EAAE;AACnCvJ,UAAAA,MAAM,GAAG0J,OAAO,CAACJ,MAAM,CAAC,CAAA;AACzB,SAAC,MAAM;AACNtJ,UAAAA,MAAM,GAAGkB,MAAM,CAAC2I,IAAI,CAAC,OAAOH,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGza,MAAM,CAACya,OAAO,CAAC,CAAC,CAAA;AAC9E,SAAA;AAEAD,QAAAA,OAAO,CAACztB,IAAI,CAACgkB,MAAM,CAAC,CAAA;AACrB,OAAA;AACD,KAAA;IAEA,IAAI,CAACsJ,MAAM,CAAC,GAAGpI,MAAM,CAAC7Y,MAAM,CAACohB,OAAO,CAAC,CAAA;AAErC,IAAA,IAAI9jB,IAAI,GAAGnI,OAAO,IAAIA,OAAO,CAACmI,IAAI,KAAK/K,SAAS,IAAIqU,MAAM,CAACzR,OAAO,CAACmI,IAAI,CAAC,CAACvJ,WAAW,EAAE,CAAA;IACtF,IAAIuJ,IAAI,IAAI,CAAC,kBAAkB,CAACiF,IAAI,CAACjF,IAAI,CAAC,EAAE;AAC3C,MAAA,IAAI,CAAC4M,MAAI,CAAC,GAAG5M,IAAI,CAAA;AAClB,KAAA;AACD,GAAA;EACA,IAAIqkB,IAAIA,GAAG;AACV,IAAA,OAAO,IAAI,CAACV,MAAM,CAAC,CAAC3tB,MAAM,CAAA;AAC3B,GAAA;EACA,IAAIgK,IAAIA,GAAG;IACV,OAAO,IAAI,CAAC4M,MAAI,CAAC,CAAA;AAClB,GAAA;AACA3V,EAAAA,IAAIA,GAAG;AACN,IAAA,OAAOqtB,OAAO,CAACC,OAAO,CAAC,IAAI,CAACZ,MAAM,CAAC,CAACvqB,QAAQ,EAAE,CAAC,CAAA;AAChD,GAAA;AACAorB,EAAAA,WAAWA,GAAG;AACb,IAAA,MAAMlJ,GAAG,GAAG,IAAI,CAACqI,MAAM,CAAC,CAAA;AACxB,IAAA,MAAMc,EAAE,GAAGnJ,GAAG,CAACjB,MAAM,CAAChhB,KAAK,CAACiiB,GAAG,CAAC6I,UAAU,EAAE7I,GAAG,CAAC6I,UAAU,GAAG7I,GAAG,CAAC8I,UAAU,CAAC,CAAA;AAC5E,IAAA,OAAOE,OAAO,CAACC,OAAO,CAACE,EAAE,CAAC,CAAA;AAC3B,GAAA;AACAC,EAAAA,MAAMA,GAAG;AACR,IAAA,MAAMC,QAAQ,GAAG,IAAIlB,QAAQ,EAAE,CAAA;AAC/BkB,IAAAA,QAAQ,CAACC,KAAK,GAAG,YAAY,EAAE,CAAA;AAC/BD,IAAAA,QAAQ,CAACtuB,IAAI,CAAC,IAAI,CAACstB,MAAM,CAAC,CAAC,CAAA;AAC3BgB,IAAAA,QAAQ,CAACtuB,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,IAAA,OAAOsuB,QAAQ,CAAA;AAChB,GAAA;AACAvrB,EAAAA,QAAQA,GAAG;AACV,IAAA,OAAO,eAAe,CAAA;AACvB,GAAA;AACAC,EAAAA,KAAKA,GAAG;AACP,IAAA,MAAMgrB,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;AAEtB,IAAA,MAAMplB,KAAK,GAAGqN,SAAS,CAAC,CAAC,CAAC,CAAA;AAC1B,IAAA,MAAMkL,GAAG,GAAGlL,SAAS,CAAC,CAAC,CAAC,CAAA;IACxB,IAAIuY,aAAa,EAAEC,WAAW,CAAA;IAC9B,IAAI7lB,KAAK,KAAKhK,SAAS,EAAE;AACxB4vB,MAAAA,aAAa,GAAG,CAAC,CAAA;AAClB,KAAC,MAAM,IAAI5lB,KAAK,GAAG,CAAC,EAAE;MACrB4lB,aAAa,GAAG3rB,IAAI,CAAC6rB,GAAG,CAACV,IAAI,GAAGplB,KAAK,EAAE,CAAC,CAAC,CAAA;AAC1C,KAAC,MAAM;MACN4lB,aAAa,GAAG3rB,IAAI,CAAC8rB,GAAG,CAAC/lB,KAAK,EAAEolB,IAAI,CAAC,CAAA;AACtC,KAAA;IACA,IAAI7M,GAAG,KAAKviB,SAAS,EAAE;AACtB6vB,MAAAA,WAAW,GAAGT,IAAI,CAAA;AACnB,KAAC,MAAM,IAAI7M,GAAG,GAAG,CAAC,EAAE;MACnBsN,WAAW,GAAG5rB,IAAI,CAAC6rB,GAAG,CAACV,IAAI,GAAG7M,GAAG,EAAE,CAAC,CAAC,CAAA;AACtC,KAAC,MAAM;MACNsN,WAAW,GAAG5rB,IAAI,CAAC8rB,GAAG,CAACxN,GAAG,EAAE6M,IAAI,CAAC,CAAA;AAClC,KAAA;IACA,MAAMY,IAAI,GAAG/rB,IAAI,CAAC6rB,GAAG,CAACD,WAAW,GAAGD,aAAa,EAAE,CAAC,CAAC,CAAA;AAErD,IAAA,MAAMxK,MAAM,GAAG,IAAI,CAACsJ,MAAM,CAAC,CAAA;IAC3B,MAAMuB,YAAY,GAAG7K,MAAM,CAAChhB,KAAK,CAACwrB,aAAa,EAAEA,aAAa,GAAGI,IAAI,CAAC,CAAA;AACtE,IAAA,MAAME,IAAI,GAAG,IAAIvB,IAAI,CAAC,EAAE,EAAE;MAAE5jB,IAAI,EAAEsM,SAAS,CAAC,CAAC,CAAA;AAAE,KAAC,CAAC,CAAA;AACjD6Y,IAAAA,IAAI,CAACxB,MAAM,CAAC,GAAGuB,YAAY,CAAA;AAC3B,IAAA,OAAOC,IAAI,CAAA;AACZ,GAAA;AACD,CAAA;AAEAvsB,MAAM,CAAC4T,gBAAgB,CAACoX,IAAI,CAAC3b,SAAS,EAAE;AACvCoc,EAAAA,IAAI,EAAE;AAAEvb,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1B9I,EAAAA,IAAI,EAAE;AAAE8I,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1BzP,EAAAA,KAAK,EAAE;AAAEyP,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC3B,CAAC,CAAC,CAAA;AAEFlQ,MAAM,CAACiQ,cAAc,CAAC+a,IAAI,CAAC3b,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AACzDllB,EAAAA,KAAK,EAAE,MAAM;AACb8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsc,UAAUA,CAACC,OAAO,EAAEtlB,IAAI,EAAEulB,WAAW,EAAE;AAC9CpuB,EAAAA,KAAK,CAACgR,IAAI,CAAC,IAAI,EAAEmd,OAAO,CAAC,CAAA;EAEzB,IAAI,CAACA,OAAO,GAAGA,OAAO,CAAA;EACtB,IAAI,CAACtlB,IAAI,GAAGA,IAAI,CAAA;;AAEhB;AACA,EAAA,IAAIulB,WAAW,EAAE;IACf,IAAI,CAACC,IAAI,GAAG,IAAI,CAACC,KAAK,GAAGF,WAAW,CAACC,IAAI,CAAA;AAC3C,GAAA;;AAEA;EACAruB,KAAK,CAACuuB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC3hB,WAAW,CAAC,CAAA;AACjD,CAAA;AAEAshB,UAAU,CAACpd,SAAS,GAAGrP,MAAM,CAACqqB,MAAM,CAAC9rB,KAAK,CAAC8Q,SAAS,CAAC,CAAA;AACrDod,UAAU,CAACpd,SAAS,CAAClE,WAAW,GAAGshB,UAAU,CAAA;AAC7CA,UAAU,CAACpd,SAAS,CAACrC,IAAI,GAAG,YAAY,CAAA;AAExC,IAAI+f,OAAO,CAAA;AACX,IAAI;AACHA,EAAAA,OAAO,GAAGC,OAAO,CAAC,UAAU,CAAC,CAACD,OAAO,CAAA;AACtC,CAAC,CAAC,OAAOznB,CAAC,EAAE,EAAC;AAEb,MAAM2nB,SAAS,GAAGzc,MAAM,CAAC,gBAAgB,CAAC,CAAA;;AAE1C;AACA,MAAM0c,WAAW,GAAGpC,MAAM,CAACoC,WAAW,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,IAAIA,CAACC,IAAI,EAAE;EACnB,IAAIC,KAAK,GAAG,IAAI,CAAA;EAEhB,IAAIC,IAAI,GAAG5Z,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE;IAC7E6Z,SAAS,GAAGD,IAAI,CAAC7B,IAAI,CAAA;EAEzB,IAAIA,IAAI,GAAG8B,SAAS,KAAKlxB,SAAS,GAAG,CAAC,GAAGkxB,SAAS,CAAA;AAClD,EAAA,IAAIC,YAAY,GAAGF,IAAI,CAACG,OAAO,CAAA;EAC/B,IAAIA,OAAO,GAAGD,YAAY,KAAKnxB,SAAS,GAAG,CAAC,GAAGmxB,YAAY,CAAA;EAE3D,IAAIJ,IAAI,IAAI,IAAI,EAAE;AACjB;AACAA,IAAAA,IAAI,GAAG,IAAI,CAAA;AACZ,GAAC,MAAM,IAAIM,iBAAiB,CAACN,IAAI,CAAC,EAAE;AACnC;IACAA,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC5sB,QAAQ,EAAE,CAAC,CAAA;AACpC,GAAC,MAAM,IAAImtB,MAAM,CAACP,IAAI,CAAC,EAAE,CAAC,KAAM,IAAIzK,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE,CAAC,KAAM,IAAIptB,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAC+O,IAAI,CAAC6d,IAAI,CAAC,KAAK,sBAAsB,EAAE;AACtI;AACAA,IAAAA,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC,CAAA;GACxB,MAAM,IAAIhC,WAAW,CAACC,MAAM,CAAC+B,IAAI,CAAC,EAAE;AACpC;AACAA,IAAAA,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC8B,IAAI,CAAC3L,MAAM,EAAE2L,IAAI,CAAC7B,UAAU,EAAE6B,IAAI,CAAC5B,UAAU,CAAC,CAAA;AAClE,GAAC,MAAM,IAAI4B,IAAI,YAAYtC,MAAM,EAAE,CAAC,KAAM;AACzC;AACA;IACAsC,IAAI,GAAGzK,MAAM,CAAC2I,IAAI,CAAC5a,MAAM,CAAC0c,IAAI,CAAC,CAAC,CAAA;AACjC,GAAA;EACA,IAAI,CAACH,SAAS,CAAC,GAAG;IACjBG,IAAI;AACJS,IAAAA,SAAS,EAAE,KAAK;AAChBvvB,IAAAA,KAAK,EAAE,IAAA;GACP,CAAA;EACD,IAAI,CAACmtB,IAAI,GAAGA,IAAI,CAAA;EAChB,IAAI,CAACgC,OAAO,GAAGA,OAAO,CAAA;EAEtB,IAAIL,IAAI,YAAYtC,MAAM,EAAE;AAC3BsC,IAAAA,IAAI,CAACU,EAAE,CAAC,OAAO,EAAE,UAAUltB,GAAG,EAAE;MAC/B,MAAMtC,KAAK,GAAGsC,GAAG,CAACoM,IAAI,KAAK,YAAY,GAAGpM,GAAG,GAAG,IAAI6rB,UAAU,CAAE,+CAA8CY,KAAK,CAACzuB,GAAI,CAAA,EAAA,EAAIgC,GAAG,CAAC8rB,OAAQ,CAAA,CAAC,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAA;AACzJysB,MAAAA,KAAK,CAACJ,SAAS,CAAC,CAAC3uB,KAAK,GAAGA,KAAK,CAAA;AAC/B,KAAC,CAAC,CAAA;AACH,GAAA;AACD,CAAA;AAEA6uB,IAAI,CAAC9d,SAAS,GAAG;EAChB,IAAI+d,IAAIA,GAAG;AACV,IAAA,OAAO,IAAI,CAACH,SAAS,CAAC,CAACG,IAAI,CAAA;GAC3B;EAED,IAAIW,QAAQA,GAAG;AACd,IAAA,OAAO,IAAI,CAACd,SAAS,CAAC,CAACY,SAAS,CAAA;GAChC;AAED;AACD;AACA;AACA;AACA;AACCjC,EAAAA,WAAWA,GAAG;IACb,OAAOoC,WAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUkkB,GAAG,EAAE;AACjD,MAAA,OAAOA,GAAG,CAACjB,MAAM,CAAChhB,KAAK,CAACiiB,GAAG,CAAC6I,UAAU,EAAE7I,GAAG,CAAC6I,UAAU,GAAG7I,GAAG,CAAC8I,UAAU,CAAC,CAAA;AACzE,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCe,EAAAA,IAAIA,GAAG;AACN,IAAA,IAAI0B,EAAE,GAAG,IAAI,CAACC,OAAO,IAAI,IAAI,CAACA,OAAO,CAACnuB,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;IAC/D,OAAOiuB,WAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUkkB,GAAG,EAAE;MACjD,OAAO1iB,MAAM,CAAC6M,MAAM;AACpB;MACA,IAAIme,IAAI,CAAC,EAAE,EAAE;AACZ5jB,QAAAA,IAAI,EAAE6mB,EAAE,CAACpwB,WAAW,EAAC;AACtB,OAAC,CAAC,EAAE;AACH,QAAA,CAACktB,MAAM,GAAGrI,GAAAA;AACX,OAAC,CAAC,CAAA;AACH,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCyL,EAAAA,IAAIA,GAAG;IACN,IAAIC,MAAM,GAAG,IAAI,CAAA;IAEjB,OAAOJ,WAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUijB,MAAM,EAAE;MACpD,IAAI;QACH,OAAOrW,IAAI,CAACC,KAAK,CAACoW,MAAM,CAACjhB,QAAQ,EAAE,CAAC,CAAA;OACpC,CAAC,OAAOI,GAAG,EAAE;QACb,OAAOusB,IAAI,CAACzB,OAAO,CAAC2C,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAA,8BAAA,EAAgC2B,MAAM,CAACxvB,GAAI,YAAWgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,cAAc,CAAC,CAAC,CAAA;AACjI,OAAA;AACD,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCruB,EAAAA,IAAIA,GAAG;IACN,OAAO2vB,WAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUijB,MAAM,EAAE;AACpD,MAAA,OAAOA,MAAM,CAACjhB,QAAQ,EAAE,CAAA;AACzB,KAAC,CAAC,CAAA;GACF;AAED;AACD;AACA;AACA;AACA;AACCihB,EAAAA,MAAMA,GAAG;AACR,IAAA,OAAOuM,WAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAA;GAC7B;AAED;AACD;AACA;AACA;AACA;AACA;AACC+e,EAAAA,aAAaA,GAAG;IACf,IAAIC,MAAM,GAAG,IAAI,CAAA;IAEjB,OAAOP,WAAW,CAACze,IAAI,CAAC,IAAI,CAAC,CAAC/Q,IAAI,CAAC,UAAUijB,MAAM,EAAE;AACpD,MAAA,OAAO+M,WAAW,CAAC/M,MAAM,EAAE8M,MAAM,CAACL,OAAO,CAAC,CAAA;AAC3C,KAAC,CAAC,CAAA;AACH,GAAA;AACD,CAAC,CAAA;;AAED;AACAluB,MAAM,CAAC4T,gBAAgB,CAACuZ,IAAI,CAAC9d,SAAS,EAAE;AACvC+d,EAAAA,IAAI,EAAE;AAAEld,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1B6d,EAAAA,QAAQ,EAAE;AAAE7d,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC9B0b,EAAAA,WAAW,EAAE;AAAE1b,IAAAA,UAAU,EAAE,IAAA;GAAM;AACjCqc,EAAAA,IAAI,EAAE;AAAErc,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1Bie,EAAAA,IAAI,EAAE;AAAEje,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1B7R,EAAAA,IAAI,EAAE;AAAE6R,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC1B,CAAC,CAAC,CAAA;AAEFid,IAAI,CAACsB,KAAK,GAAG,UAAUC,KAAK,EAAE;EAC7B,KAAK,MAAM1hB,IAAI,IAAIhN,MAAM,CAAC+d,mBAAmB,CAACoP,IAAI,CAAC9d,SAAS,CAAC,EAAE;AAC9D;AACA,IAAA,IAAI,EAAErC,IAAI,IAAI0hB,KAAK,CAAC,EAAE;MACrB,MAAMC,IAAI,GAAG3uB,MAAM,CAACuT,wBAAwB,CAAC4Z,IAAI,CAAC9d,SAAS,EAAErC,IAAI,CAAC,CAAA;MAClEhN,MAAM,CAACiQ,cAAc,CAACye,KAAK,EAAE1hB,IAAI,EAAE2hB,IAAI,CAAC,CAAA;AACzC,KAAA;AACD,GAAA;AACD,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASX,WAAWA,GAAG;EACtB,IAAIY,MAAM,GAAG,IAAI,CAAA;AAEjB,EAAA,IAAI,IAAI,CAAC3B,SAAS,CAAC,CAACY,SAAS,EAAE;AAC9B,IAAA,OAAOV,IAAI,CAACzB,OAAO,CAAC2C,MAAM,CAAC,IAAIpiB,SAAS,CAAE,0BAAyB,IAAI,CAACrN,GAAI,CAAA,CAAC,CAAC,CAAC,CAAA;AAChF,GAAA;AAEA,EAAA,IAAI,CAACquB,SAAS,CAAC,CAACY,SAAS,GAAG,IAAI,CAAA;AAEhC,EAAA,IAAI,IAAI,CAACZ,SAAS,CAAC,CAAC3uB,KAAK,EAAE;AAC1B,IAAA,OAAO6uB,IAAI,CAACzB,OAAO,CAAC2C,MAAM,CAAC,IAAI,CAACpB,SAAS,CAAC,CAAC3uB,KAAK,CAAC,CAAA;AAClD,GAAA;AAEA,EAAA,IAAI8uB,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;;AAEpB;EACA,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB,IAAA,OAAOD,IAAI,CAACzB,OAAO,CAACC,OAAO,CAAChJ,MAAM,CAACkM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,GAAA;;AAEA;AACA,EAAA,IAAIlB,MAAM,CAACP,IAAI,CAAC,EAAE;AACjBA,IAAAA,IAAI,GAAGA,IAAI,CAACtB,MAAM,EAAE,CAAA;AACrB,GAAA;;AAEA;AACA,EAAA,IAAInJ,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AAC1B,IAAA,OAAOD,IAAI,CAACzB,OAAO,CAACC,OAAO,CAACyB,IAAI,CAAC,CAAA;AAClC,GAAA;;AAEA;AACA,EAAA,IAAI,EAAEA,IAAI,YAAYtC,MAAM,CAAC,EAAE;AAC9B,IAAA,OAAOqC,IAAI,CAACzB,OAAO,CAACC,OAAO,CAAChJ,MAAM,CAACkM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,GAAA;;AAEA;AACA;EACA,IAAIC,KAAK,GAAG,EAAE,CAAA;EACd,IAAIC,UAAU,GAAG,CAAC,CAAA;EAClB,IAAIC,KAAK,GAAG,KAAK,CAAA;EAEjB,OAAO,IAAI7B,IAAI,CAACzB,OAAO,CAAC,UAAUC,OAAO,EAAE0C,MAAM,EAAE;AAClD,IAAA,IAAIY,UAAU,CAAA;;AAEd;IACA,IAAIL,MAAM,CAACnB,OAAO,EAAE;MACnBwB,UAAU,GAAGC,UAAU,CAAC,YAAY;AACnCF,QAAAA,KAAK,GAAG,IAAI,CAAA;AACZX,QAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAA,uCAAA,EAAyCmC,MAAM,CAAChwB,GAAI,CAASgwB,OAAAA,EAAAA,MAAM,CAACnB,OAAQ,CAAA,GAAA,CAAI,EAAE,cAAc,CAAC,CAAC,CAAA;AAC1H,OAAC,EAAEmB,MAAM,CAACnB,OAAO,CAAC,CAAA;AACnB,KAAA;;AAEA;AACAL,IAAAA,IAAI,CAACU,EAAE,CAAC,OAAO,EAAE,UAAUltB,GAAG,EAAE;AAC/B,MAAA,IAAIA,GAAG,CAACoM,IAAI,KAAK,YAAY,EAAE;AAC9B;AACAgiB,QAAAA,KAAK,GAAG,IAAI,CAAA;QACZX,MAAM,CAACztB,GAAG,CAAC,CAAA;AACZ,OAAC,MAAM;AACN;AACAytB,QAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAA8CmC,4CAAAA,EAAAA,MAAM,CAAChwB,GAAI,CAAA,EAAA,EAAIgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAC,CAAA;AACnH,OAAA;AACD,KAAC,CAAC,CAAA;AAEFwsB,IAAAA,IAAI,CAACU,EAAE,CAAC,MAAM,EAAE,UAAUqB,KAAK,EAAE;AAChC,MAAA,IAAIH,KAAK,IAAIG,KAAK,KAAK,IAAI,EAAE;AAC5B,QAAA,OAAA;AACD,OAAA;AAEA,MAAA,IAAIP,MAAM,CAACnD,IAAI,IAAIsD,UAAU,GAAGI,KAAK,CAAC/xB,MAAM,GAAGwxB,MAAM,CAACnD,IAAI,EAAE;AAC3DuD,QAAAA,KAAK,GAAG,IAAI,CAAA;AACZX,QAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAA,gBAAA,EAAkBmC,MAAM,CAAChwB,GAAI,CAAegwB,aAAAA,EAAAA,MAAM,CAACnD,IAAK,CAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;AAC9F,QAAA,OAAA;AACD,OAAA;MAEAsD,UAAU,IAAII,KAAK,CAAC/xB,MAAM,CAAA;AAC1B0xB,MAAAA,KAAK,CAACrxB,IAAI,CAAC0xB,KAAK,CAAC,CAAA;AAClB,KAAC,CAAC,CAAA;AAEF/B,IAAAA,IAAI,CAACU,EAAE,CAAC,KAAK,EAAE,YAAY;AAC1B,MAAA,IAAIkB,KAAK,EAAE;AACV,QAAA,OAAA;AACD,OAAA;MAEAI,YAAY,CAACH,UAAU,CAAC,CAAA;MAExB,IAAI;QACHtD,OAAO,CAAChJ,MAAM,CAAC7Y,MAAM,CAACglB,KAAK,EAAEC,UAAU,CAAC,CAAC,CAAA;OACzC,CAAC,OAAOnuB,GAAG,EAAE;AACb;AACAytB,QAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAiDmC,+CAAAA,EAAAA,MAAM,CAAChwB,GAAI,CAAA,EAAA,EAAIgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAC,CAAA;AACtH,OAAA;AACD,KAAC,CAAC,CAAA;AACH,GAAC,CAAC,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4tB,WAAWA,CAAC/M,MAAM,EAAEyM,OAAO,EAAE;AACrC,EAAA,IAAI,OAAOnB,OAAO,KAAK,UAAU,EAAE;AAClC,IAAA,MAAM,IAAIxuB,KAAK,CAAC,8EAA8E,CAAC,CAAA;AAChG,GAAA;AAEA,EAAA,MAAM0vB,EAAE,GAAGC,OAAO,CAACnuB,GAAG,CAAC,cAAc,CAAC,CAAA;EACtC,IAAIsvB,OAAO,GAAG,OAAO,CAAA;EACrB,IAAIttB,GAAG,EAAEpD,GAAG,CAAA;;AAEZ;AACA,EAAA,IAAIsvB,EAAE,EAAE;AACPlsB,IAAAA,GAAG,GAAG,kBAAkB,CAACtF,IAAI,CAACwxB,EAAE,CAAC,CAAA;AAClC,GAAA;;AAEA;AACAtvB,EAAAA,GAAG,GAAG8iB,MAAM,CAAChhB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAACD,QAAQ,EAAE,CAAA;;AAEtC;AACA,EAAA,IAAI,CAACuB,GAAG,IAAIpD,GAAG,EAAE;AAChBoD,IAAAA,GAAG,GAAG,gCAAgC,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;AACjD,GAAA;;AAEA;AACA,EAAA,IAAI,CAACoD,GAAG,IAAIpD,GAAG,EAAE;AAChBoD,IAAAA,GAAG,GAAG,wEAAwE,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;IACxF,IAAI,CAACoD,GAAG,EAAE;AACTA,MAAAA,GAAG,GAAG,wEAAwE,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;AACxF,MAAA,IAAIoD,GAAG,EAAE;AACRA,QAAAA,GAAG,CAACuI,GAAG,EAAE,CAAC;AACX,OAAA;AACD,KAAA;;AAEA,IAAA,IAAIvI,GAAG,EAAE;MACRA,GAAG,GAAG,eAAe,CAACtF,IAAI,CAACsF,GAAG,CAACuI,GAAG,EAAE,CAAC,CAAA;AACtC,KAAA;AACD,GAAA;;AAEA;AACA,EAAA,IAAI,CAACvI,GAAG,IAAIpD,GAAG,EAAE;AAChBoD,IAAAA,GAAG,GAAG,kCAAkC,CAACtF,IAAI,CAACkC,GAAG,CAAC,CAAA;AACnD,GAAA;;AAEA;AACA,EAAA,IAAIoD,GAAG,EAAE;AACRstB,IAAAA,OAAO,GAAGttB,GAAG,CAACuI,GAAG,EAAE,CAAA;;AAEnB;AACA;AACA,IAAA,IAAI+kB,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,KAAK,EAAE;AAC9CA,MAAAA,OAAO,GAAG,SAAS,CAAA;AACpB,KAAA;AACD,GAAA;;AAEA;EACA,OAAOtC,OAAO,CAACtL,MAAM,EAAE,OAAO,EAAE4N,OAAO,CAAC,CAAC7uB,QAAQ,EAAE,CAAA;AACpD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASktB,iBAAiBA,CAAC3d,GAAG,EAAE;AAC/B;EACA,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,OAAOA,GAAG,CAAC5D,MAAM,KAAK,UAAU,IAAI,OAAO4D,GAAG,CAAC4L,MAAM,KAAK,UAAU,IAAI,OAAO5L,GAAG,CAAChQ,GAAG,KAAK,UAAU,IAAI,OAAOgQ,GAAG,CAACuf,MAAM,KAAK,UAAU,IAAI,OAAOvf,GAAG,CAAC0L,GAAG,KAAK,UAAU,IAAI,OAAO1L,GAAG,CAACoa,GAAG,KAAK,UAAU,EAAE;AAC3O,IAAA,OAAO,KAAK,CAAA;AACb,GAAA;;AAEA;EACA,OAAOpa,GAAG,CAAC5E,WAAW,CAAC6B,IAAI,KAAK,iBAAiB,IAAIhN,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAC+O,IAAI,CAACQ,GAAG,CAAC,KAAK,0BAA0B,IAAI,OAAOA,GAAG,CAACwf,IAAI,KAAK,UAAU,CAAA;AAC1J,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS5B,MAAMA,CAAC5d,GAAG,EAAE;AACpB,EAAA,OAAO,OAAOA,GAAG,KAAK,QAAQ,IAAI,OAAOA,GAAG,CAAC6b,WAAW,KAAK,UAAU,IAAI,OAAO7b,GAAG,CAAC3I,IAAI,KAAK,QAAQ,IAAI,OAAO2I,GAAG,CAAC+b,MAAM,KAAK,UAAU,IAAI,OAAO/b,GAAG,CAAC5E,WAAW,KAAK,UAAU,IAAI,OAAO4E,GAAG,CAAC5E,WAAW,CAAC6B,IAAI,KAAK,QAAQ,IAAI,eAAe,CAACX,IAAI,CAAC0D,GAAG,CAAC5E,WAAW,CAAC6B,IAAI,CAAC,IAAI,eAAe,CAACX,IAAI,CAAC0D,GAAG,CAACS,MAAM,CAACgc,WAAW,CAAC,CAAC,CAAA;AAChU,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgD,OAAKA,CAACC,QAAQ,EAAE;EACxB,IAAIC,EAAE,EAAEC,EAAE,CAAA;AACV,EAAA,IAAIvC,IAAI,GAAGqC,QAAQ,CAACrC,IAAI,CAAA;;AAExB;EACA,IAAIqC,QAAQ,CAAC1B,QAAQ,EAAE;AACtB,IAAA,MAAM,IAAIxvB,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACtD,GAAA;;AAEA;AACA;EACA,IAAI6uB,IAAI,YAAYtC,MAAM,IAAI,OAAOsC,IAAI,CAACwC,WAAW,KAAK,UAAU,EAAE;AACrE;AACAF,IAAAA,EAAE,GAAG,IAAIxC,WAAW,EAAE,CAAA;AACtByC,IAAAA,EAAE,GAAG,IAAIzC,WAAW,EAAE,CAAA;AACtBE,IAAAA,IAAI,CAACyC,IAAI,CAACH,EAAE,CAAC,CAAA;AACbtC,IAAAA,IAAI,CAACyC,IAAI,CAACF,EAAE,CAAC,CAAA;AACb;AACAF,IAAAA,QAAQ,CAACxC,SAAS,CAAC,CAACG,IAAI,GAAGsC,EAAE,CAAA;AAC7BtC,IAAAA,IAAI,GAAGuC,EAAE,CAAA;AACV,GAAA;AAEA,EAAA,OAAOvC,IAAI,CAAA;AACZ,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0C,kBAAkBA,CAAC1C,IAAI,EAAE;EACjC,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AACpC;AACA,IAAA,OAAO,0BAA0B,CAAA;AAClC,GAAC,MAAM,IAAIM,iBAAiB,CAACN,IAAI,CAAC,EAAE;AACnC;AACA,IAAA,OAAO,iDAAiD,CAAA;AACzD,GAAC,MAAM,IAAIO,MAAM,CAACP,IAAI,CAAC,EAAE;AACxB;AACA,IAAA,OAAOA,IAAI,CAAChmB,IAAI,IAAI,IAAI,CAAA;GACxB,MAAM,IAAIub,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AACjC;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM,IAAIptB,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAC+O,IAAI,CAAC6d,IAAI,CAAC,KAAK,sBAAsB,EAAE;AAC3E;AACA,IAAA,OAAO,IAAI,CAAA;GACX,MAAM,IAAIhC,WAAW,CAACC,MAAM,CAAC+B,IAAI,CAAC,EAAE;AACpC;AACA,IAAA,OAAO,IAAI,CAAA;GACX,MAAM,IAAI,OAAOA,IAAI,CAACwC,WAAW,KAAK,UAAU,EAAE;AAClD;AACA,IAAA,OAAQ,gCAA+BxC,IAAI,CAACwC,WAAW,EAAG,CAAC,CAAA,CAAA;AAC5D,GAAC,MAAM,IAAIxC,IAAI,YAAYtC,MAAM,EAAE;AAClC;AACA;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM;AACN;AACA,IAAA,OAAO,0BAA0B,CAAA;AAClC,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiF,aAAaA,CAACN,QAAQ,EAAE;AAChC,EAAA,MAAMrC,IAAI,GAAGqC,QAAQ,CAACrC,IAAI,CAAA;EAG1B,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB;AACA,IAAA,OAAO,CAAC,CAAA;AACT,GAAC,MAAM,IAAIO,MAAM,CAACP,IAAI,CAAC,EAAE;IACxB,OAAOA,IAAI,CAAC3B,IAAI,CAAA;GAChB,MAAM,IAAI9I,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AACjC;IACA,OAAOA,IAAI,CAAChwB,MAAM,CAAA;GAClB,MAAM,IAAIgwB,IAAI,IAAI,OAAOA,IAAI,CAAC4C,aAAa,KAAK,UAAU,EAAE;AAC5D;IACA,IAAI5C,IAAI,CAAC6C,iBAAiB,IAAI7C,IAAI,CAAC6C,iBAAiB,CAAC7yB,MAAM,IAAI,CAAC;AAAI;IACpEgwB,IAAI,CAAC8C,cAAc,IAAI9C,IAAI,CAAC8C,cAAc,EAAE,EAAE;AAC7C;AACA,MAAA,OAAO9C,IAAI,CAAC4C,aAAa,EAAE,CAAA;AAC5B,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAC,MAAM;AACN;AACA,IAAA,OAAO,IAAI,CAAA;AACZ,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,aAAaA,CAACC,IAAI,EAAEX,QAAQ,EAAE;AACtC,EAAA,MAAMrC,IAAI,GAAGqC,QAAQ,CAACrC,IAAI,CAAA;EAG1B,IAAIA,IAAI,KAAK,IAAI,EAAE;AAClB;IACAgD,IAAI,CAACxR,GAAG,EAAE,CAAA;AACX,GAAC,MAAM,IAAI+O,MAAM,CAACP,IAAI,CAAC,EAAE;IACxBA,IAAI,CAACtB,MAAM,EAAE,CAAC+D,IAAI,CAACO,IAAI,CAAC,CAAA;GACxB,MAAM,IAAIzN,MAAM,CAACiL,QAAQ,CAACR,IAAI,CAAC,EAAE;AACjC;AACAgD,IAAAA,IAAI,CAACC,KAAK,CAACjD,IAAI,CAAC,CAAA;IAChBgD,IAAI,CAACxR,GAAG,EAAE,CAAA;AACX,GAAC,MAAM;AACN;AACAwO,IAAAA,IAAI,CAACyC,IAAI,CAACO,IAAI,CAAC,CAAA;AAChB,GAAA;AACD,CAAA;;AAEA;AACAjD,IAAI,CAACzB,OAAO,GAAG4E,MAAM,CAAC5E,OAAO,CAAA;;AAE7B;AACA;AACA;AACA;AACA;;AAEA,MAAM6E,iBAAiB,GAAG,+BAA+B,CAAA;AACzD,MAAMC,sBAAsB,GAAG,yBAAyB,CAAA;AAExD,SAASC,YAAYA,CAACzjB,IAAI,EAAE;EAC3BA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;EAChB,IAAIujB,iBAAiB,CAAClkB,IAAI,CAACW,IAAI,CAAC,IAAIA,IAAI,KAAK,EAAE,EAAE;AAChD,IAAA,MAAM,IAAIf,SAAS,CAAE,CAAEe,EAAAA,IAAK,kCAAiC,CAAC,CAAA;AAC/D,GAAA;AACD,CAAA;AAEA,SAAS0jB,aAAaA,CAACppB,KAAK,EAAE;EAC7BA,KAAK,GAAI,CAAEA,EAAAA,KAAM,CAAC,CAAA,CAAA;AAClB,EAAA,IAAIkpB,sBAAsB,CAACnkB,IAAI,CAAC/E,KAAK,CAAC,EAAE;AACvC,IAAA,MAAM,IAAI2E,SAAS,CAAE,CAAE3E,EAAAA,KAAM,mCAAkC,CAAC,CAAA;AACjE,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS7F,IAAIA,CAACwD,GAAG,EAAE+H,IAAI,EAAE;AACxBA,EAAAA,IAAI,GAAGA,IAAI,CAACnP,WAAW,EAAE,CAAA;AACzB,EAAA,KAAK,MAAM2G,GAAG,IAAIS,GAAG,EAAE;AACtB,IAAA,IAAIT,GAAG,CAAC3G,WAAW,EAAE,KAAKmP,IAAI,EAAE;AAC/B,MAAA,OAAOxI,GAAG,CAAA;AACX,KAAA;AACD,GAAA;AACA,EAAA,OAAOnI,SAAS,CAAA;AACjB,CAAA;AAEA,MAAMs0B,GAAG,GAAGngB,MAAM,CAAC,KAAK,CAAC,CAAA;AACzB,MAAMogB,SAAO,CAAC;AACb;AACD;AACA;AACA;AACA;AACA;AACCzlB,EAAAA,WAAWA,GAAG;IACb,IAAI0lB,IAAI,GAAGnd,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAGrX,SAAS,CAAA;IAExF,IAAI,CAACs0B,GAAG,CAAC,GAAG3wB,MAAM,CAACqqB,MAAM,CAAC,IAAI,CAAC,CAAA;IAE/B,IAAIwG,IAAI,YAAYD,SAAO,EAAE;AAC5B,MAAA,MAAME,UAAU,GAAGD,IAAI,CAACE,GAAG,EAAE,CAAA;AAC7B,MAAA,MAAMC,WAAW,GAAGhxB,MAAM,CAACC,IAAI,CAAC6wB,UAAU,CAAC,CAAA;AAE3C,MAAA,KAAK,MAAMG,UAAU,IAAID,WAAW,EAAE;AACrC,QAAA,KAAK,MAAM1pB,KAAK,IAAIwpB,UAAU,CAACG,UAAU,CAAC,EAAE;AAC3C,UAAA,IAAI,CAAC9kB,MAAM,CAAC8kB,UAAU,EAAE3pB,KAAK,CAAC,CAAA;AAC/B,SAAA;AACD,OAAA;AAEA,MAAA,OAAA;AACD,KAAA;;AAEA;AACA;IACA,IAAIupB,IAAI,IAAI,IAAI,EAAE,CAAC,KAAM,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AACtD,MAAA,MAAMK,MAAM,GAAGL,IAAI,CAACrgB,MAAM,CAAC2gB,QAAQ,CAAC,CAAA;MACpC,IAAID,MAAM,IAAI,IAAI,EAAE;AACnB,QAAA,IAAI,OAAOA,MAAM,KAAK,UAAU,EAAE;AACjC,UAAA,MAAM,IAAIjlB,SAAS,CAAC,+BAA+B,CAAC,CAAA;AACrD,SAAA;;AAEA;AACA;QACA,MAAMmlB,KAAK,GAAG,EAAE,CAAA;AAChB,QAAA,KAAK,MAAMC,IAAI,IAAIR,IAAI,EAAE;AACxB,UAAA,IAAI,OAAOQ,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,CAAC7gB,MAAM,CAAC2gB,QAAQ,CAAC,KAAK,UAAU,EAAE;AAC5E,YAAA,MAAM,IAAIllB,SAAS,CAAC,mCAAmC,CAAC,CAAA;AACzD,WAAA;UACAmlB,KAAK,CAAC3zB,IAAI,CAACyP,KAAK,CAACoe,IAAI,CAAC+F,IAAI,CAAC,CAAC,CAAA;AAC7B,SAAA;AAEA,QAAA,KAAK,MAAMA,IAAI,IAAID,KAAK,EAAE;AACzB,UAAA,IAAIC,IAAI,CAACj0B,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI6O,SAAS,CAAC,6CAA6C,CAAC,CAAA;AACnE,WAAA;AACA,UAAA,IAAI,CAACE,MAAM,CAACklB,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,SAAA;AACD,OAAC,MAAM;AACN;QACA,KAAK,MAAM7sB,GAAG,IAAIxE,MAAM,CAACC,IAAI,CAAC4wB,IAAI,CAAC,EAAE;AACpC,UAAA,MAAMvpB,KAAK,GAAGupB,IAAI,CAACrsB,GAAG,CAAC,CAAA;AACvB,UAAA,IAAI,CAAC2H,MAAM,CAAC3H,GAAG,EAAE8C,KAAK,CAAC,CAAA;AACxB,SAAA;AACD,OAAA;AACD,KAAC,MAAM;AACN,MAAA,MAAM,IAAI2E,SAAS,CAAC,wCAAwC,CAAC,CAAA;AAC9D,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;EACClM,GAAGA,CAACiN,IAAI,EAAE;IACTA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChByjB,YAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB,MAAMxI,GAAG,GAAG/C,IAAI,CAAC,IAAI,CAACkvB,GAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;IACjC,IAAIxI,GAAG,KAAKnI,SAAS,EAAE;AACtB,MAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAEA,OAAO,IAAI,CAACs0B,GAAG,CAAC,CAACnsB,GAAG,CAAC,CAACjF,IAAI,CAAC,IAAI,CAAC,CAAA;AACjC,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;EACC4F,OAAOA,CAACmsB,QAAQ,EAAE;IACjB,IAAIC,OAAO,GAAG7d,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAGrX,SAAS,CAAA;AAE3F,IAAA,IAAI+0B,KAAK,GAAGI,UAAU,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAIlyB,CAAC,GAAG,CAAC,CAAA;AACT,IAAA,OAAOA,CAAC,GAAG8xB,KAAK,CAACh0B,MAAM,EAAE;AACxB,MAAA,IAAIq0B,QAAQ,GAAGL,KAAK,CAAC9xB,CAAC,CAAC,CAAA;AACvB,MAAA,MAAM0N,IAAI,GAAGykB,QAAQ,CAAC,CAAC,CAAC;AAClBnqB,QAAAA,KAAK,GAAGmqB,QAAQ,CAAC,CAAC,CAAC,CAAA;MAEzBH,QAAQ,CAAC/hB,IAAI,CAACgiB,OAAO,EAAEjqB,KAAK,EAAE0F,IAAI,EAAE,IAAI,CAAC,CAAA;AACzCokB,MAAAA,KAAK,GAAGI,UAAU,CAAC,IAAI,CAAC,CAAA;AACxBlyB,MAAAA,CAAC,EAAE,CAAA;AACJ,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;AACC6qB,EAAAA,GAAGA,CAACnd,IAAI,EAAE1F,KAAK,EAAE;IAChB0F,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChB1F,KAAK,GAAI,CAAEA,EAAAA,KAAM,CAAC,CAAA,CAAA;IAClBmpB,YAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB0jB,aAAa,CAACppB,KAAK,CAAC,CAAA;IACpB,MAAM9C,GAAG,GAAG/C,IAAI,CAAC,IAAI,CAACkvB,GAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;AACjC,IAAA,IAAI,CAAC2jB,GAAG,CAAC,CAACnsB,GAAG,KAAKnI,SAAS,GAAGmI,GAAG,GAAGwI,IAAI,CAAC,GAAG,CAAC1F,KAAK,CAAC,CAAA;AACpD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;AACC6E,EAAAA,MAAMA,CAACa,IAAI,EAAE1F,KAAK,EAAE;IACnB0F,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChB1F,KAAK,GAAI,CAAEA,EAAAA,KAAM,CAAC,CAAA,CAAA;IAClBmpB,YAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB0jB,aAAa,CAACppB,KAAK,CAAC,CAAA;IACpB,MAAM9C,GAAG,GAAG/C,IAAI,CAAC,IAAI,CAACkvB,GAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;IACjC,IAAIxI,GAAG,KAAKnI,SAAS,EAAE;MACtB,IAAI,CAACs0B,GAAG,CAAC,CAACnsB,GAAG,CAAC,CAAC/G,IAAI,CAAC6J,KAAK,CAAC,CAAA;AAC3B,KAAC,MAAM;MACN,IAAI,CAACqpB,GAAG,CAAC,CAAC3jB,IAAI,CAAC,GAAG,CAAC1F,KAAK,CAAC,CAAA;AAC1B,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;EACCmU,GAAGA,CAACzO,IAAI,EAAE;IACTA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChByjB,YAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB,OAAOvL,IAAI,CAAC,IAAI,CAACkvB,GAAG,CAAC,EAAE3jB,IAAI,CAAC,KAAK3Q,SAAS,CAAA;AAC3C,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;EACCsf,MAAMA,CAAC3O,IAAI,EAAE;IACZA,IAAI,GAAI,CAAEA,EAAAA,IAAK,CAAC,CAAA,CAAA;IAChByjB,YAAY,CAACzjB,IAAI,CAAC,CAAA;IAClB,MAAMxI,GAAG,GAAG/C,IAAI,CAAC,IAAI,CAACkvB,GAAG,CAAC,EAAE3jB,IAAI,CAAC,CAAA;IACjC,IAAIxI,GAAG,KAAKnI,SAAS,EAAE;AACtB,MAAA,OAAO,IAAI,CAACs0B,GAAG,CAAC,CAACnsB,GAAG,CAAC,CAAA;AACtB,KAAA;AACD,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCusB,EAAAA,GAAGA,GAAG;IACL,OAAO,IAAI,CAACJ,GAAG,CAAC,CAAA;AACjB,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACC1wB,EAAAA,IAAIA,GAAG;AACN,IAAA,OAAOyxB,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC1C,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCC,EAAAA,MAAMA,GAAG;AACR,IAAA,OAAOD,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC5C,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;EACC,CAAClhB,MAAM,CAAC2gB,QAAQ,CAAI,GAAA;AACnB,IAAA,OAAOO,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AAChD,GAAA;AACD,CAAA;AACAd,SAAO,CAACvhB,SAAS,CAACtT,OAAO,GAAG60B,SAAO,CAACvhB,SAAS,CAACmB,MAAM,CAAC2gB,QAAQ,CAAC,CAAA;AAE9DnxB,MAAM,CAACiQ,cAAc,CAAC2gB,SAAO,CAACvhB,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AAC5DllB,EAAAA,KAAK,EAAE,SAAS;AAChB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;AAEFnQ,MAAM,CAAC4T,gBAAgB,CAACgd,SAAO,CAACvhB,SAAS,EAAE;AAC1CtP,EAAAA,GAAG,EAAE;AAAEmQ,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzB/K,EAAAA,OAAO,EAAE;AAAE+K,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC7Bia,EAAAA,GAAG,EAAE;AAAEja,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzB/D,EAAAA,MAAM,EAAE;AAAE+D,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BuL,EAAAA,GAAG,EAAE;AAAEvL,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzByL,EAAAA,MAAM,EAAE;AAAEzL,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BjQ,EAAAA,IAAI,EAAE;AAAEiQ,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC1ByhB,EAAAA,MAAM,EAAE;AAAEzhB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BnU,EAAAA,OAAO,EAAE;AAAEmU,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC7B,CAAC,CAAC,CAAA;AAEF,SAASshB,UAAUA,CAACtD,OAAO,EAAE;EAC5B,IAAI0D,IAAI,GAAGle,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;AAE1F,EAAA,MAAMzT,IAAI,GAAGD,MAAM,CAACC,IAAI,CAACiuB,OAAO,CAACyC,GAAG,CAAC,CAAC,CAACpB,IAAI,EAAE,CAAA;EAC7C,OAAOtvB,IAAI,CAACgF,GAAG,CAAC2sB,IAAI,KAAK,KAAK,GAAG,UAAUC,CAAC,EAAE;AAC7C,IAAA,OAAOA,CAAC,CAACh0B,WAAW,EAAE,CAAA;AACvB,GAAC,GAAG+zB,IAAI,KAAK,OAAO,GAAG,UAAUC,CAAC,EAAE;IACnC,OAAO3D,OAAO,CAACyC,GAAG,CAAC,CAACkB,CAAC,CAAC,CAACtyB,IAAI,CAAC,IAAI,CAAC,CAAA;GACjC,GAAG,UAAUsyB,CAAC,EAAE;AAChB,IAAA,OAAO,CAACA,CAAC,CAACh0B,WAAW,EAAE,EAAEqwB,OAAO,CAACyC,GAAG,CAAC,CAACkB,CAAC,CAAC,CAACtyB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACrD,GAAC,CAAC,CAAA;AACH,CAAA;AAEA,MAAMuyB,QAAQ,GAAGthB,MAAM,CAAC,UAAU,CAAC,CAAA;AAEnC,SAASkhB,qBAAqBA,CAAChlB,MAAM,EAAEklB,IAAI,EAAE;AAC5C,EAAA,MAAMT,QAAQ,GAAGnxB,MAAM,CAACqqB,MAAM,CAAC0H,wBAAwB,CAAC,CAAA;EACxDZ,QAAQ,CAACW,QAAQ,CAAC,GAAG;IACpBplB,MAAM;IACNklB,IAAI;AACJzvB,IAAAA,KAAK,EAAE,CAAA;GACP,CAAA;AACD,EAAA,OAAOgvB,QAAQ,CAAA;AAChB,CAAA;AAEA,MAAMY,wBAAwB,GAAG/xB,MAAM,CAACgyB,cAAc,CAAC;AACtDC,EAAAA,IAAIA,GAAG;AACN;IACA,IAAI,CAAC,IAAI,IAAIjyB,MAAM,CAACkyB,cAAc,CAAC,IAAI,CAAC,KAAKH,wBAAwB,EAAE;AACtE,MAAA,MAAM,IAAI9lB,SAAS,CAAC,0CAA0C,CAAC,CAAA;AAChE,KAAA;AAEA,IAAA,IAAIkmB,SAAS,GAAG,IAAI,CAACL,QAAQ,CAAC,CAAA;AAC9B,IAAA,MAAMplB,MAAM,GAAGylB,SAAS,CAACzlB,MAAM;MACzBklB,IAAI,GAAGO,SAAS,CAACP,IAAI;MACrBzvB,KAAK,GAAGgwB,SAAS,CAAChwB,KAAK,CAAA;AAE7B,IAAA,MAAMwvB,MAAM,GAAGH,UAAU,CAAC9kB,MAAM,EAAEklB,IAAI,CAAC,CAAA;AACvC,IAAA,MAAMpS,GAAG,GAAGmS,MAAM,CAACv0B,MAAM,CAAA;IACzB,IAAI+E,KAAK,IAAIqd,GAAG,EAAE;MACjB,OAAO;AACNlY,QAAAA,KAAK,EAAEjL,SAAS;AAChB+1B,QAAAA,IAAI,EAAE,IAAA;OACN,CAAA;AACF,KAAA;IAEA,IAAI,CAACN,QAAQ,CAAC,CAAC3vB,KAAK,GAAGA,KAAK,GAAG,CAAC,CAAA;IAEhC,OAAO;AACNmF,MAAAA,KAAK,EAAEqqB,MAAM,CAACxvB,KAAK,CAAC;AACpBiwB,MAAAA,IAAI,EAAE,KAAA;KACN,CAAA;AACF,GAAA;AACD,CAAC,EAAEpyB,MAAM,CAACkyB,cAAc,CAAClyB,MAAM,CAACkyB,cAAc,CAAC,EAAE,CAAC1hB,MAAM,CAAC2gB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAEvEnxB,MAAM,CAACiQ,cAAc,CAAC8hB,wBAAwB,EAAEvhB,MAAM,CAACgc,WAAW,EAAE;AACnEllB,EAAAA,KAAK,EAAE,iBAAiB;AACxB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,SAASkiB,2BAA2BA,CAACnE,OAAO,EAAE;AAC7C,EAAA,MAAMne,GAAG,GAAG/P,MAAM,CAAC6M,MAAM,CAAC;AAAEylB,IAAAA,SAAS,EAAE,IAAA;AAAK,GAAC,EAAEpE,OAAO,CAACyC,GAAG,CAAC,CAAC,CAAA;;AAE5D;AACA;EACA,MAAM4B,aAAa,GAAG9wB,IAAI,CAACysB,OAAO,CAACyC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;EAChD,IAAI4B,aAAa,KAAKl2B,SAAS,EAAE;IAChC0T,GAAG,CAACwiB,aAAa,CAAC,GAAGxiB,GAAG,CAACwiB,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3C,GAAA;AAEA,EAAA,OAAOxiB,GAAG,CAAA;AACX,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASyiB,oBAAoBA,CAACziB,GAAG,EAAE;AAClC,EAAA,MAAMme,OAAO,GAAG,IAAI0C,SAAO,EAAE,CAAA;EAC7B,KAAK,MAAM5jB,IAAI,IAAIhN,MAAM,CAACC,IAAI,CAAC8P,GAAG,CAAC,EAAE;AACpC,IAAA,IAAIwgB,iBAAiB,CAAClkB,IAAI,CAACW,IAAI,CAAC,EAAE;AACjC,MAAA,SAAA;AACD,KAAA;IACA,IAAIE,KAAK,CAACC,OAAO,CAAC4C,GAAG,CAAC/C,IAAI,CAAC,CAAC,EAAE;AAC7B,MAAA,KAAK,MAAMkQ,GAAG,IAAInN,GAAG,CAAC/C,IAAI,CAAC,EAAE;AAC5B,QAAA,IAAIwjB,sBAAsB,CAACnkB,IAAI,CAAC6Q,GAAG,CAAC,EAAE;AACrC,UAAA,SAAA;AACD,SAAA;QACA,IAAIgR,OAAO,CAACyC,GAAG,CAAC,CAAC3jB,IAAI,CAAC,KAAK3Q,SAAS,EAAE;UACrC6xB,OAAO,CAACyC,GAAG,CAAC,CAAC3jB,IAAI,CAAC,GAAG,CAACkQ,GAAG,CAAC,CAAA;AAC3B,SAAC,MAAM;UACNgR,OAAO,CAACyC,GAAG,CAAC,CAAC3jB,IAAI,CAAC,CAACvP,IAAI,CAACyf,GAAG,CAAC,CAAA;AAC7B,SAAA;AACD,OAAA;AACD,KAAC,MAAM,IAAI,CAACsT,sBAAsB,CAACnkB,IAAI,CAAC0D,GAAG,CAAC/C,IAAI,CAAC,CAAC,EAAE;AACnDkhB,MAAAA,OAAO,CAACyC,GAAG,CAAC,CAAC3jB,IAAI,CAAC,GAAG,CAAC+C,GAAG,CAAC/C,IAAI,CAAC,CAAC,CAAA;AACjC,KAAA;AACD,GAAA;AACA,EAAA,OAAOkhB,OAAO,CAAA;AACf,CAAA;AAEA,MAAMuE,WAAW,GAAGjiB,MAAM,CAAC,oBAAoB,CAAC,CAAA;;AAEhD;AACA,MAAMkiB,YAAY,GAAG9R,IAAI,CAAC8R,YAAY,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,QAAQ,CAAC;AACdxnB,EAAAA,WAAWA,GAAG;IACb,IAAIiiB,IAAI,GAAG1Z,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACnF,IAAImJ,IAAI,GAAGnJ,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IAEjFyZ,IAAI,CAAC5d,IAAI,CAAC,IAAI,EAAE6d,IAAI,EAAEvQ,IAAI,CAAC,CAAA;AAE3B,IAAA,MAAM1D,MAAM,GAAG0D,IAAI,CAAC1D,MAAM,IAAI,GAAG,CAAA;IACjC,MAAM+U,OAAO,GAAG,IAAI0C,SAAO,CAAC/T,IAAI,CAACqR,OAAO,CAAC,CAAA;IAEzC,IAAId,IAAI,IAAI,IAAI,IAAI,CAACc,OAAO,CAACzS,GAAG,CAAC,cAAc,CAAC,EAAE;AACjD,MAAA,MAAMmX,WAAW,GAAG9C,kBAAkB,CAAC1C,IAAI,CAAC,CAAA;AAC5C,MAAA,IAAIwF,WAAW,EAAE;AAChB1E,QAAAA,OAAO,CAAC/hB,MAAM,CAAC,cAAc,EAAEymB,WAAW,CAAC,CAAA;AAC5C,OAAA;AACD,KAAA;IAEA,IAAI,CAACH,WAAW,CAAC,GAAG;MACnB7zB,GAAG,EAAEie,IAAI,CAACje,GAAG;MACbua,MAAM;MACN0Z,UAAU,EAAEhW,IAAI,CAACgW,UAAU,IAAIH,YAAY,CAACvZ,MAAM,CAAC;MACnD+U,OAAO;MACPrK,OAAO,EAAEhH,IAAI,CAACgH,OAAAA;KACd,CAAA;AACF,GAAA;EAEA,IAAIjlB,GAAGA,GAAG;AACT,IAAA,OAAO,IAAI,CAAC6zB,WAAW,CAAC,CAAC7zB,GAAG,IAAI,EAAE,CAAA;AACnC,GAAA;EAEA,IAAIua,MAAMA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACsZ,WAAW,CAAC,CAACtZ,MAAM,CAAA;AAChC,GAAA;;AAEA;AACD;AACA;EACC,IAAI2Z,EAAEA,GAAG;AACR,IAAA,OAAO,IAAI,CAACL,WAAW,CAAC,CAACtZ,MAAM,IAAI,GAAG,IAAI,IAAI,CAACsZ,WAAW,CAAC,CAACtZ,MAAM,GAAG,GAAG,CAAA;AACzE,GAAA;EAEA,IAAI4Z,UAAUA,GAAG;AAChB,IAAA,OAAO,IAAI,CAACN,WAAW,CAAC,CAAC5O,OAAO,GAAG,CAAC,CAAA;AACrC,GAAA;EAEA,IAAIgP,UAAUA,GAAG;AAChB,IAAA,OAAO,IAAI,CAACJ,WAAW,CAAC,CAACI,UAAU,CAAA;AACpC,GAAA;EAEA,IAAI3E,OAAOA,GAAG;AACb,IAAA,OAAO,IAAI,CAACuE,WAAW,CAAC,CAACvE,OAAO,CAAA;AACjC,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCsB,EAAAA,KAAKA,GAAG;AACP,IAAA,OAAO,IAAImD,QAAQ,CAACnD,OAAK,CAAC,IAAI,CAAC,EAAE;MAChC5wB,GAAG,EAAE,IAAI,CAACA,GAAG;MACbua,MAAM,EAAE,IAAI,CAACA,MAAM;MACnB0Z,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3B3E,OAAO,EAAE,IAAI,CAACA,OAAO;MACrB4E,EAAE,EAAE,IAAI,CAACA,EAAE;MACXC,UAAU,EAAE,IAAI,CAACA,UAAAA;AAClB,KAAC,CAAC,CAAA;AACH,GAAA;AACD,CAAA;AAEA5F,IAAI,CAACsB,KAAK,CAACkE,QAAQ,CAACtjB,SAAS,CAAC,CAAA;AAE9BrP,MAAM,CAAC4T,gBAAgB,CAAC+e,QAAQ,CAACtjB,SAAS,EAAE;AAC3CzQ,EAAAA,GAAG,EAAE;AAAEsR,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzBiJ,EAAAA,MAAM,EAAE;AAAEjJ,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5B4iB,EAAAA,EAAE,EAAE;AAAE5iB,IAAAA,UAAU,EAAE,IAAA;GAAM;AACxB6iB,EAAAA,UAAU,EAAE;AAAE7iB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAChC2iB,EAAAA,UAAU,EAAE;AAAE3iB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAChCge,EAAAA,OAAO,EAAE;AAAEhe,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC7Bsf,EAAAA,KAAK,EAAE;AAAEtf,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC3B,CAAC,CAAC,CAAA;AAEFlQ,MAAM,CAACiQ,cAAc,CAAC0iB,QAAQ,CAACtjB,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AAC7DllB,EAAAA,KAAK,EAAE,UAAU;AACjB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;AAEF,MAAM6iB,WAAW,GAAGxiB,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC/C,MAAM3R,KAAG,GAAGo0B,GAAG,CAACp0B,GAAG,IAAIq0B,SAAS,CAACr0B,GAAG,CAAA;;AAEpC;AACA,MAAMs0B,SAAS,GAAGF,GAAG,CAAC5nB,KAAK,CAAA;AAC3B,MAAM+nB,UAAU,GAAGH,GAAG,CAACtzB,MAAM,CAAA;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA,SAASgpB,QAAQA,CAAC0K,MAAM,EAAE;AACzB;AACD;AACA;AACA;AACA;AACC,EAAA,IAAI,2BAA2B,CAAC52B,IAAI,CAAC42B,MAAM,CAAC,EAAE;IAC7CA,MAAM,GAAG,IAAIx0B,KAAG,CAACw0B,MAAM,CAAC,CAAC7yB,QAAQ,EAAE,CAAA;AACpC,GAAA;;AAEA;EACA,OAAO2yB,SAAS,CAACE,MAAM,CAAC,CAAA;AACzB,CAAA;AAEA,MAAMC,0BAA0B,IAAG,SAAS,IAAIxI,MAAM,CAACD,QAAQ,CAACxb,SAAS,CAAA,CAAA;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA,SAASkkB,SAASA,CAAChlB,KAAK,EAAE;EACzB,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,CAACykB,WAAW,CAAC,KAAK,QAAQ,CAAA;AAC3E,CAAA;AAEA,SAASQ,aAAaA,CAACC,MAAM,EAAE;AAC9B,EAAA,MAAM/E,KAAK,GAAG+E,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIzzB,MAAM,CAACkyB,cAAc,CAACuB,MAAM,CAAC,CAAA;EACnF,OAAO,CAAC,EAAE/E,KAAK,IAAIA,KAAK,CAACvjB,WAAW,CAAC6B,IAAI,KAAK,aAAa,CAAC,CAAA;AAC7D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM0mB,OAAO,CAAC;EACbvoB,WAAWA,CAACoD,KAAK,EAAE;IAClB,IAAIsiB,IAAI,GAAGnd,SAAS,CAACtW,MAAM,GAAG,CAAC,IAAIsW,SAAS,CAAC,CAAC,CAAC,KAAKrX,SAAS,GAAGqX,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AAEjF,IAAA,IAAI6V,SAAS,CAAA;;AAEb;AACA,IAAA,IAAI,CAACgK,SAAS,CAAChlB,KAAK,CAAC,EAAE;AACtB,MAAA,IAAIA,KAAK,IAAIA,KAAK,CAAC5G,IAAI,EAAE;AACxB;AACA;AACA;AACA4hB,QAAAA,SAAS,GAAGZ,QAAQ,CAACpa,KAAK,CAAC5G,IAAI,CAAC,CAAA;AACjC,OAAC,MAAM;AACN;AACA4hB,QAAAA,SAAS,GAAGZ,QAAQ,CAAE,CAAEpa,EAAAA,KAAM,EAAC,CAAC,CAAA;AACjC,OAAA;MACAA,KAAK,GAAG,EAAE,CAAA;AACX,KAAC,MAAM;AACNgb,MAAAA,SAAS,GAAGZ,QAAQ,CAACpa,KAAK,CAAC3P,GAAG,CAAC,CAAA;AAChC,KAAA;IAEA,IAAIsyB,MAAM,GAAGL,IAAI,CAACK,MAAM,IAAI3iB,KAAK,CAAC2iB,MAAM,IAAI,KAAK,CAAA;AACjDA,IAAAA,MAAM,GAAGA,MAAM,CAAC1O,WAAW,EAAE,CAAA;IAE7B,IAAI,CAACqO,IAAI,CAACzD,IAAI,IAAI,IAAI,IAAImG,SAAS,CAAChlB,KAAK,CAAC,IAAIA,KAAK,CAAC6e,IAAI,KAAK,IAAI,MAAM8D,MAAM,KAAK,KAAK,IAAIA,MAAM,KAAK,MAAM,CAAC,EAAE;AAC9G,MAAA,MAAM,IAAIjlB,SAAS,CAAC,+CAA+C,CAAC,CAAA;AACrE,KAAA;AAEA,IAAA,IAAI0nB,SAAS,GAAG9C,IAAI,CAACzD,IAAI,IAAI,IAAI,GAAGyD,IAAI,CAACzD,IAAI,GAAGmG,SAAS,CAAChlB,KAAK,CAAC,IAAIA,KAAK,CAAC6e,IAAI,KAAK,IAAI,GAAGoC,OAAK,CAACjhB,KAAK,CAAC,GAAG,IAAI,CAAA;AAE7G4e,IAAAA,IAAI,CAAC5d,IAAI,CAAC,IAAI,EAAEokB,SAAS,EAAE;MAC1BlG,OAAO,EAAEoD,IAAI,CAACpD,OAAO,IAAIlf,KAAK,CAACkf,OAAO,IAAI,CAAC;MAC3ChC,IAAI,EAAEoF,IAAI,CAACpF,IAAI,IAAIld,KAAK,CAACkd,IAAI,IAAI,CAAA;AAClC,KAAC,CAAC,CAAA;AAEF,IAAA,MAAMyC,OAAO,GAAG,IAAI0C,SAAO,CAACC,IAAI,CAAC3C,OAAO,IAAI3f,KAAK,CAAC2f,OAAO,IAAI,EAAE,CAAC,CAAA;IAEhE,IAAIyF,SAAS,IAAI,IAAI,IAAI,CAACzF,OAAO,CAACzS,GAAG,CAAC,cAAc,CAAC,EAAE;AACtD,MAAA,MAAMmX,WAAW,GAAG9C,kBAAkB,CAAC6D,SAAS,CAAC,CAAA;AACjD,MAAA,IAAIf,WAAW,EAAE;AAChB1E,QAAAA,OAAO,CAAC/hB,MAAM,CAAC,cAAc,EAAEymB,WAAW,CAAC,CAAA;AAC5C,OAAA;AACD,KAAA;IAEA,IAAIa,MAAM,GAAGF,SAAS,CAAChlB,KAAK,CAAC,GAAGA,KAAK,CAACklB,MAAM,GAAG,IAAI,CAAA;IACnD,IAAI,QAAQ,IAAI5C,IAAI,EAAE4C,MAAM,GAAG5C,IAAI,CAAC4C,MAAM,CAAA;IAE1C,IAAIA,MAAM,IAAI,IAAI,IAAI,CAACD,aAAa,CAACC,MAAM,CAAC,EAAE;AAC7C,MAAA,MAAM,IAAIxnB,SAAS,CAAC,iDAAiD,CAAC,CAAA;AACvE,KAAA;IAEA,IAAI,CAAC+mB,WAAW,CAAC,GAAG;MACnB9B,MAAM;MACN0C,QAAQ,EAAE/C,IAAI,CAAC+C,QAAQ,IAAIrlB,KAAK,CAACqlB,QAAQ,IAAI,QAAQ;MACrD1F,OAAO;MACP3E,SAAS;AACTkK,MAAAA,MAAAA;KACA,CAAA;;AAED;IACA,IAAI,CAACI,MAAM,GAAGhD,IAAI,CAACgD,MAAM,KAAKx3B,SAAS,GAAGw0B,IAAI,CAACgD,MAAM,GAAGtlB,KAAK,CAACslB,MAAM,KAAKx3B,SAAS,GAAGkS,KAAK,CAACslB,MAAM,GAAG,EAAE,CAAA;IACtG,IAAI,CAAC3P,QAAQ,GAAG2M,IAAI,CAAC3M,QAAQ,KAAK7nB,SAAS,GAAGw0B,IAAI,CAAC3M,QAAQ,GAAG3V,KAAK,CAAC2V,QAAQ,KAAK7nB,SAAS,GAAGkS,KAAK,CAAC2V,QAAQ,GAAG,IAAI,CAAA;IAClH,IAAI,CAACL,OAAO,GAAGgN,IAAI,CAAChN,OAAO,IAAItV,KAAK,CAACsV,OAAO,IAAI,CAAC,CAAA;IACjD,IAAI,CAACiQ,KAAK,GAAGjD,IAAI,CAACiD,KAAK,IAAIvlB,KAAK,CAACulB,KAAK,CAAA;AACvC,GAAA;EAEA,IAAI5C,MAAMA,GAAG;AACZ,IAAA,OAAO,IAAI,CAAC8B,WAAW,CAAC,CAAC9B,MAAM,CAAA;AAChC,GAAA;EAEA,IAAItyB,GAAGA,GAAG;IACT,OAAOw0B,UAAU,CAAC,IAAI,CAACJ,WAAW,CAAC,CAACzJ,SAAS,CAAC,CAAA;AAC/C,GAAA;EAEA,IAAI2E,OAAOA,GAAG;AACb,IAAA,OAAO,IAAI,CAAC8E,WAAW,CAAC,CAAC9E,OAAO,CAAA;AACjC,GAAA;EAEA,IAAI0F,QAAQA,GAAG;AACd,IAAA,OAAO,IAAI,CAACZ,WAAW,CAAC,CAACY,QAAQ,CAAA;AAClC,GAAA;EAEA,IAAIH,MAAMA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACT,WAAW,CAAC,CAACS,MAAM,CAAA;AAChC,GAAA;;AAEA;AACD;AACA;AACA;AACA;AACCjE,EAAAA,KAAKA,GAAG;AACP,IAAA,OAAO,IAAIkE,OAAO,CAAC,IAAI,CAAC,CAAA;AACzB,GAAA;AACD,CAAA;AAEAvG,IAAI,CAACsB,KAAK,CAACiF,OAAO,CAACrkB,SAAS,CAAC,CAAA;AAE7BrP,MAAM,CAACiQ,cAAc,CAACyjB,OAAO,CAACrkB,SAAS,EAAEmB,MAAM,CAACgc,WAAW,EAAE;AAC5DllB,EAAAA,KAAK,EAAE,SAAS;AAChB8I,EAAAA,QAAQ,EAAE,KAAK;AACfF,EAAAA,UAAU,EAAE,KAAK;AACjBC,EAAAA,YAAY,EAAE,IAAA;AACf,CAAC,CAAC,CAAA;AAEFnQ,MAAM,CAAC4T,gBAAgB,CAAC8f,OAAO,CAACrkB,SAAS,EAAE;AAC1C6hB,EAAAA,MAAM,EAAE;AAAEhhB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC5BtR,EAAAA,GAAG,EAAE;AAAEsR,IAAAA,UAAU,EAAE,IAAA;GAAM;AACzBge,EAAAA,OAAO,EAAE;AAAEhe,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC7B0jB,EAAAA,QAAQ,EAAE;AAAE1jB,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC9Bsf,EAAAA,KAAK,EAAE;AAAEtf,IAAAA,UAAU,EAAE,IAAA;GAAM;AAC3BujB,EAAAA,MAAM,EAAE;AAAEvjB,IAAAA,UAAU,EAAE,IAAA;AAAK,GAAA;AAC5B,CAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6jB,qBAAqBA,CAACC,OAAO,EAAE;AACvC,EAAA,MAAMzK,SAAS,GAAGyK,OAAO,CAAChB,WAAW,CAAC,CAACzJ,SAAS,CAAA;EAChD,MAAM2E,OAAO,GAAG,IAAI0C,SAAO,CAACoD,OAAO,CAAChB,WAAW,CAAC,CAAC9E,OAAO,CAAC,CAAA;;AAEzD;AACA,EAAA,IAAI,CAACA,OAAO,CAACzS,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3ByS,IAAAA,OAAO,CAAC/D,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC7B,GAAA;;AAEA;EACA,IAAI,CAACZ,SAAS,CAACxqB,QAAQ,IAAI,CAACwqB,SAAS,CAACI,QAAQ,EAAE;AAC/C,IAAA,MAAM,IAAI1d,SAAS,CAAC,kCAAkC,CAAC,CAAA;AACxD,GAAA;EAEA,IAAI,CAAC,WAAW,CAACI,IAAI,CAACkd,SAAS,CAACxqB,QAAQ,CAAC,EAAE;AAC1C,IAAA,MAAM,IAAIkN,SAAS,CAAC,sCAAsC,CAAC,CAAA;AAC5D,GAAA;AAEA,EAAA,IAAI+nB,OAAO,CAACP,MAAM,IAAIO,OAAO,CAAC5G,IAAI,YAAYtC,MAAM,CAACD,QAAQ,IAAI,CAACyI,0BAA0B,EAAE;AAC7F,IAAA,MAAM,IAAI/0B,KAAK,CAAC,iFAAiF,CAAC,CAAA;AACnG,GAAA;;AAEA;EACA,IAAI01B,kBAAkB,GAAG,IAAI,CAAA;AAC7B,EAAA,IAAID,OAAO,CAAC5G,IAAI,IAAI,IAAI,IAAI,eAAe,CAAC/gB,IAAI,CAAC2nB,OAAO,CAAC9C,MAAM,CAAC,EAAE;AACjE+C,IAAAA,kBAAkB,GAAG,GAAG,CAAA;AACzB,GAAA;AACA,EAAA,IAAID,OAAO,CAAC5G,IAAI,IAAI,IAAI,EAAE;AACzB,IAAA,MAAM8G,UAAU,GAAGnE,aAAa,CAACiE,OAAO,CAAC,CAAA;AACzC,IAAA,IAAI,OAAOE,UAAU,KAAK,QAAQ,EAAE;AACnCD,MAAAA,kBAAkB,GAAGvjB,MAAM,CAACwjB,UAAU,CAAC,CAAA;AACxC,KAAA;AACD,GAAA;AACA,EAAA,IAAID,kBAAkB,EAAE;AACvB/F,IAAAA,OAAO,CAAC/D,GAAG,CAAC,gBAAgB,EAAE8J,kBAAkB,CAAC,CAAA;AAClD,GAAA;;AAEA;AACA,EAAA,IAAI,CAAC/F,OAAO,CAACzS,GAAG,CAAC,YAAY,CAAC,EAAE;AAC/ByS,IAAAA,OAAO,CAAC/D,GAAG,CAAC,YAAY,EAAE,wDAAwD,CAAC,CAAA;AACpF,GAAA;;AAEA;EACA,IAAI6J,OAAO,CAAC9P,QAAQ,IAAI,CAACgK,OAAO,CAACzS,GAAG,CAAC,iBAAiB,CAAC,EAAE;AACxDyS,IAAAA,OAAO,CAAC/D,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA;AAC/C,GAAA;AAEA,EAAA,IAAI2J,KAAK,GAAGE,OAAO,CAACF,KAAK,CAAA;AACzB,EAAA,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;AAChCA,IAAAA,KAAK,GAAGA,KAAK,CAACvK,SAAS,CAAC,CAAA;AACzB,GAAA;;AAEA;AACA;;EAEA,OAAOvpB,MAAM,CAAC6M,MAAM,CAAC,EAAE,EAAE0c,SAAS,EAAE;IACnC2H,MAAM,EAAE8C,OAAO,CAAC9C,MAAM;AACtBhD,IAAAA,OAAO,EAAEmE,2BAA2B,CAACnE,OAAO,CAAC;AAC7C4F,IAAAA,KAAAA;AACD,GAAC,CAAC,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,UAAUA,CAACzH,OAAO,EAAE;AAC3BnuB,EAAAA,KAAK,CAACgR,IAAI,CAAC,IAAI,EAAEmd,OAAO,CAAC,CAAA;EAEzB,IAAI,CAACtlB,IAAI,GAAG,SAAS,CAAA;EACrB,IAAI,CAACslB,OAAO,GAAGA,OAAO,CAAA;;AAEtB;EACAnuB,KAAK,CAACuuB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC3hB,WAAW,CAAC,CAAA;AACjD,CAAA;AAEAgpB,UAAU,CAAC9kB,SAAS,GAAGrP,MAAM,CAACqqB,MAAM,CAAC9rB,KAAK,CAAC8Q,SAAS,CAAC,CAAA;AACrD8kB,UAAU,CAAC9kB,SAAS,CAAClE,WAAW,GAAGgpB,UAAU,CAAA;AAC7CA,UAAU,CAAC9kB,SAAS,CAACrC,IAAI,GAAG,YAAY,CAAA;AAExC,MAAMonB,OAAK,GAAGnB,GAAG,CAACp0B,GAAG,IAAIq0B,SAAS,CAACr0B,GAAG,CAAA;;AAEtC;AACA,MAAMw1B,aAAa,GAAGvJ,MAAM,CAACoC,WAAW,CAAA;AAExC,MAAMoH,mBAAmB,GAAG,SAASA,mBAAmBA,CAACC,WAAW,EAAEC,QAAQ,EAAE;EAC/E,MAAMC,IAAI,GAAG,IAAIL,OAAK,CAACI,QAAQ,CAAC,CAAC7K,QAAQ,CAAA;EACzC,MAAMyG,IAAI,GAAG,IAAIgE,OAAK,CAACG,WAAW,CAAC,CAAC5K,QAAQ,CAAA;EAE5C,OAAO8K,IAAI,KAAKrE,IAAI,IAAIqE,IAAI,CAACA,IAAI,CAACr3B,MAAM,GAAGgzB,IAAI,CAAChzB,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,IAAIq3B,IAAI,CAACv3B,QAAQ,CAACkzB,IAAI,CAAC,CAAA;AAC3F,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMsE,cAAc,GAAG,SAASA,cAAcA,CAACH,WAAW,EAAEC,QAAQ,EAAE;EACrE,MAAMC,IAAI,GAAG,IAAIL,OAAK,CAACI,QAAQ,CAAC,CAACz1B,QAAQ,CAAA;EACzC,MAAMqxB,IAAI,GAAG,IAAIgE,OAAK,CAACG,WAAW,CAAC,CAACx1B,QAAQ,CAAA;EAE5C,OAAO01B,IAAI,KAAKrE,IAAI,CAAA;AACrB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAShyB,OAAKA,CAACQ,GAAG,EAAEie,IAAI,EAAE;AAEzB;AACA,EAAA,IAAI,CAACze,OAAK,CAACstB,OAAO,EAAE;AACnB,IAAA,MAAM,IAAIntB,KAAK,CAAC,wEAAwE,CAAC,CAAA;AAC1F,GAAA;AAEA4uB,EAAAA,IAAI,CAACzB,OAAO,GAAGttB,OAAK,CAACstB,OAAO,CAAA;;AAE5B;EACA,OAAO,IAAIttB,OAAK,CAACstB,OAAO,CAAC,UAAUC,OAAO,EAAE0C,MAAM,EAAE;AACnD;IACA,MAAM2F,OAAO,GAAG,IAAIN,OAAO,CAAC90B,GAAG,EAAEie,IAAI,CAAC,CAAA;AACtC,IAAA,MAAM5d,OAAO,GAAG80B,qBAAqB,CAACC,OAAO,CAAC,CAAA;AAE9C,IAAA,MAAMW,IAAI,GAAG,CAAC11B,OAAO,CAACF,QAAQ,KAAK,QAAQ,GAAG8hB,KAAK,GAAGD,IAAI,EAAEoT,OAAO,CAAA;AACnE,IAAA,MAAMP,MAAM,GAAGO,OAAO,CAACP,MAAM,CAAA;IAE7B,IAAIt1B,QAAQ,GAAG,IAAI,CAAA;AAEnB,IAAA,MAAM6wB,KAAK,GAAG,SAASA,KAAKA,GAAG;AAC9B,MAAA,IAAI1wB,KAAK,GAAG,IAAI61B,UAAU,CAAC,6BAA6B,CAAC,CAAA;MACzD9F,MAAM,CAAC/vB,KAAK,CAAC,CAAA;MACb,IAAI01B,OAAO,CAAC5G,IAAI,IAAI4G,OAAO,CAAC5G,IAAI,YAAYtC,MAAM,CAACD,QAAQ,EAAE;AAC5D+J,QAAAA,aAAa,CAACZ,OAAO,CAAC5G,IAAI,EAAE9uB,KAAK,CAAC,CAAA;AACnC,OAAA;AACA,MAAA,IAAI,CAACH,QAAQ,IAAI,CAACA,QAAQ,CAACivB,IAAI,EAAE,OAAA;MACjCjvB,QAAQ,CAACivB,IAAI,CAACyH,IAAI,CAAC,OAAO,EAAEv2B,KAAK,CAAC,CAAA;KAClC,CAAA;AAED,IAAA,IAAIm1B,MAAM,IAAIA,MAAM,CAACqB,OAAO,EAAE;AAC7B9F,MAAAA,KAAK,EAAE,CAAA;AACP,MAAA,OAAA;AACD,KAAA;AAEA,IAAA,MAAM+F,gBAAgB,GAAG,SAASA,gBAAgBA,GAAG;AACpD/F,MAAAA,KAAK,EAAE,CAAA;AACPgG,MAAAA,QAAQ,EAAE,CAAA;KACV,CAAA;;AAED;AACA,IAAA,MAAMC,GAAG,GAAGN,IAAI,CAAC11B,OAAO,CAAC,CAAA;AACzB,IAAA,IAAIi2B,UAAU,CAAA;AAEd,IAAA,IAAIzB,MAAM,EAAE;AACXA,MAAAA,MAAM,CAAC0B,gBAAgB,CAAC,OAAO,EAAEJ,gBAAgB,CAAC,CAAA;AACnD,KAAA;IAEA,SAASC,QAAQA,GAAG;MACnBC,GAAG,CAACjG,KAAK,EAAE,CAAA;MACX,IAAIyE,MAAM,EAAEA,MAAM,CAAC2B,mBAAmB,CAAC,OAAO,EAAEL,gBAAgB,CAAC,CAAA;MACjE3F,YAAY,CAAC8F,UAAU,CAAC,CAAA;AACzB,KAAA;IAEA,IAAIlB,OAAO,CAACvG,OAAO,EAAE;AACpBwH,MAAAA,GAAG,CAACI,IAAI,CAAC,QAAQ,EAAE,UAAUC,MAAM,EAAE;QACpCJ,UAAU,GAAGhG,UAAU,CAAC,YAAY;AACnCb,UAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAsBuH,oBAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAC,CAAA,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAC/Eo2B,UAAAA,QAAQ,EAAE,CAAA;AACX,SAAC,EAAEhB,OAAO,CAACvG,OAAO,CAAC,CAAA;AACpB,OAAC,CAAC,CAAA;AACH,KAAA;AAEAwH,IAAAA,GAAG,CAACnH,EAAE,CAAC,OAAO,EAAE,UAAUltB,GAAG,EAAE;AAC9BytB,MAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAauH,WAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAA,iBAAA,EAAmBgC,GAAG,CAAC8rB,OAAQ,CAAC,CAAA,EAAE,QAAQ,EAAE9rB,GAAG,CAAC,CAAC,CAAA;AAEjG,MAAA,IAAIzC,QAAQ,IAAIA,QAAQ,CAACivB,IAAI,EAAE;AAC9BwH,QAAAA,aAAa,CAACz2B,QAAQ,CAACivB,IAAI,EAAExsB,GAAG,CAAC,CAAA;AAClC,OAAA;AAEAo0B,MAAAA,QAAQ,EAAE,CAAA;AACX,KAAC,CAAC,CAAA;AAEFO,IAAAA,mCAAmC,CAACN,GAAG,EAAE,UAAUr0B,GAAG,EAAE;AACvD,MAAA,IAAI6yB,MAAM,IAAIA,MAAM,CAACqB,OAAO,EAAE;AAC7B,QAAA,OAAA;AACD,OAAA;AAEA,MAAA,IAAI32B,QAAQ,IAAIA,QAAQ,CAACivB,IAAI,EAAE;AAC9BwH,QAAAA,aAAa,CAACz2B,QAAQ,CAACivB,IAAI,EAAExsB,GAAG,CAAC,CAAA;AAClC,OAAA;AACD,KAAC,CAAC,CAAA;;AAEF;AACA,IAAA,IAAI2Z,QAAQ,CAACrM,OAAO,CAACoL,OAAO,CAACnc,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;AAChD;AACA;AACA83B,MAAAA,GAAG,CAACnH,EAAE,CAAC,QAAQ,EAAE,UAAUpP,CAAC,EAAE;AAC7BA,QAAAA,CAAC,CAAC8W,WAAW,CAAC,OAAO,EAAE,UAAUC,QAAQ,EAAE;AAC1C;UACA,MAAMC,eAAe,GAAGhX,CAAC,CAACiX,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAEnD;AACA,UAAA,IAAIx3B,QAAQ,IAAIu3B,eAAe,IAAI,CAACD,QAAQ,IAAI,EAAEhC,MAAM,IAAIA,MAAM,CAACqB,OAAO,CAAC,EAAE;AAC5E,YAAA,MAAMl0B,GAAG,GAAG,IAAIrC,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACxCqC,GAAG,CAACgsB,IAAI,GAAG,4BAA4B,CAAA;YACvCzuB,QAAQ,CAACivB,IAAI,CAACyH,IAAI,CAAC,OAAO,EAAEj0B,GAAG,CAAC,CAAA;AACjC,WAAA;AACD,SAAC,CAAC,CAAA;AACH,OAAC,CAAC,CAAA;AACH,KAAA;AAEAq0B,IAAAA,GAAG,CAACnH,EAAE,CAAC,UAAU,EAAE,UAAU/rB,GAAG,EAAE;MACjCqtB,YAAY,CAAC8F,UAAU,CAAC,CAAA;AAExB,MAAA,MAAMhH,OAAO,GAAGsE,oBAAoB,CAACzwB,GAAG,CAACmsB,OAAO,CAAC,CAAA;;AAEjD;MACA,IAAI9vB,OAAK,CAACw3B,UAAU,CAAC7zB,GAAG,CAAC8zB,UAAU,CAAC,EAAE;AACrC;AACA,QAAA,MAAMC,QAAQ,GAAG5H,OAAO,CAACnuB,GAAG,CAAC,UAAU,CAAC,CAAA;;AAExC;QACA,IAAIg2B,WAAW,GAAG,IAAI,CAAA;QACtB,IAAI;AACHA,UAAAA,WAAW,GAAGD,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI1B,OAAK,CAAC0B,QAAQ,EAAE9B,OAAO,CAACp1B,GAAG,CAAC,CAAC4B,QAAQ,EAAE,CAAA;SACpF,CAAC,OAAOI,GAAG,EAAE;AACb;AACA;AACA;AACA,UAAA,IAAIozB,OAAO,CAACJ,QAAQ,KAAK,QAAQ,EAAE;YAClCvF,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAA,qDAAA,EAAuDqJ,QAAS,CAAC,CAAA,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAC9Gd,YAAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAA;AACD,WAAA;AACD,SAAA;;AAEA;QACA,QAAQhB,OAAO,CAACJ,QAAQ;AACvB,UAAA,KAAK,OAAO;AACXvF,YAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAAyEuH,uEAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAC,CAAA,EAAE,aAAa,CAAC,CAAC,CAAA;AAC9Ho2B,YAAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAA;AACD,UAAA,KAAK,QAAQ;AACZ;YACA,IAAIe,WAAW,KAAK,IAAI,EAAE;AACzB;cACA,IAAI;AACH7H,gBAAAA,OAAO,CAAC/D,GAAG,CAAC,UAAU,EAAE4L,WAAW,CAAC,CAAA;eACpC,CAAC,OAAOn1B,GAAG,EAAE;AACb;gBACAytB,MAAM,CAACztB,GAAG,CAAC,CAAA;AACZ,eAAA;AACD,aAAA;AACA,YAAA,MAAA;AACD,UAAA,KAAK,QAAQ;AACZ;YACA,IAAIm1B,WAAW,KAAK,IAAI,EAAE;AACzB,cAAA,MAAA;AACD,aAAA;;AAEA;AACA,YAAA,IAAI/B,OAAO,CAACnQ,OAAO,IAAImQ,OAAO,CAACH,MAAM,EAAE;AACtCxF,cAAAA,MAAM,CAAC,IAAI5B,UAAU,CAAE,CAA+BuH,6BAAAA,EAAAA,OAAO,CAACp1B,GAAI,CAAC,CAAA,EAAE,cAAc,CAAC,CAAC,CAAA;AACrFo2B,cAAAA,QAAQ,EAAE,CAAA;AACV,cAAA,OAAA;AACD,aAAA;;AAEA;AACA;AACA,YAAA,MAAMgB,WAAW,GAAG;AACnB9H,cAAAA,OAAO,EAAE,IAAI0C,SAAO,CAACoD,OAAO,CAAC9F,OAAO,CAAC;cACrC2F,MAAM,EAAEG,OAAO,CAACH,MAAM;AACtBhQ,cAAAA,OAAO,EAAEmQ,OAAO,CAACnQ,OAAO,GAAG,CAAC;cAC5BiQ,KAAK,EAAEE,OAAO,CAACF,KAAK;cACpB5P,QAAQ,EAAE8P,OAAO,CAAC9P,QAAQ;cAC1BgN,MAAM,EAAE8C,OAAO,CAAC9C,MAAM;cACtB9D,IAAI,EAAE4G,OAAO,CAAC5G,IAAI;cAClBqG,MAAM,EAAEO,OAAO,CAACP,MAAM;cACtBhG,OAAO,EAAEuG,OAAO,CAACvG,OAAO;cACxBhC,IAAI,EAAEuI,OAAO,CAACvI,IAAAA;aACd,CAAA;AAED,YAAA,IAAI,CAAC6I,mBAAmB,CAACN,OAAO,CAACp1B,GAAG,EAAEm3B,WAAW,CAAC,IAAI,CAACrB,cAAc,CAACV,OAAO,CAACp1B,GAAG,EAAEm3B,WAAW,CAAC,EAAE;AAChG,cAAA,KAAK,MAAM/oB,IAAI,IAAI,CAAC,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;AAC9EgpB,gBAAAA,WAAW,CAAC9H,OAAO,CAACvS,MAAM,CAAC3O,IAAI,CAAC,CAAA;AACjC,eAAA;AACD,aAAA;;AAEA;AACA,YAAA,IAAIjL,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI7B,OAAO,CAAC5G,IAAI,IAAI2C,aAAa,CAACiE,OAAO,CAAC,KAAK,IAAI,EAAE;cAC9E3F,MAAM,CAAC,IAAI5B,UAAU,CAAC,0DAA0D,EAAE,sBAAsB,CAAC,CAAC,CAAA;AAC1GuI,cAAAA,QAAQ,EAAE,CAAA;AACV,cAAA,OAAA;AACD,aAAA;;AAEA;YACA,IAAIjzB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI,CAAC9zB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI9zB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,KAAK7B,OAAO,CAAC9C,MAAM,KAAK,MAAM,EAAE;cAC9G8E,WAAW,CAAC9E,MAAM,GAAG,KAAK,CAAA;cAC1B8E,WAAW,CAAC5I,IAAI,GAAG/wB,SAAS,CAAA;AAC5B25B,cAAAA,WAAW,CAAC9H,OAAO,CAACvS,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAC7C,aAAA;;AAEA;YACAgQ,OAAO,CAACvtB,OAAK,CAAC,IAAIs1B,OAAO,CAACqC,WAAW,EAAEC,WAAW,CAAC,CAAC,CAAC,CAAA;AACrDhB,YAAAA,QAAQ,EAAE,CAAA;AACV,YAAA,OAAA;AACF,SAAA;AACD,OAAA;;AAEA;AACAjzB,MAAAA,GAAG,CAACszB,IAAI,CAAC,KAAK,EAAE,YAAY;QAC3B,IAAI5B,MAAM,EAAEA,MAAM,CAAC2B,mBAAmB,CAAC,OAAO,EAAEL,gBAAgB,CAAC,CAAA;AAClE,OAAC,CAAC,CAAA;MACF,IAAI3H,IAAI,GAAGrrB,GAAG,CAAC8tB,IAAI,CAAC,IAAIwE,aAAa,EAAE,CAAC,CAAA;AAExC,MAAA,MAAM4B,gBAAgB,GAAG;QACxBr3B,GAAG,EAAEo1B,OAAO,CAACp1B,GAAG;QAChBua,MAAM,EAAEpX,GAAG,CAAC8zB,UAAU;QACtBhD,UAAU,EAAE9wB,GAAG,CAACm0B,aAAa;AAC7BhI,QAAAA,OAAO,EAAEA,OAAO;QAChBzC,IAAI,EAAEuI,OAAO,CAACvI,IAAI;QAClBgC,OAAO,EAAEuG,OAAO,CAACvG,OAAO;QACxB5J,OAAO,EAAEmQ,OAAO,CAACnQ,OAAAA;OACjB,CAAA;;AAED;AACA,MAAA,MAAMsS,OAAO,GAAGjI,OAAO,CAACnuB,GAAG,CAAC,kBAAkB,CAAC,CAAA;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;MACA,IAAI,CAACi0B,OAAO,CAAC9P,QAAQ,IAAI8P,OAAO,CAAC9C,MAAM,KAAK,MAAM,IAAIiF,OAAO,KAAK,IAAI,IAAIp0B,GAAG,CAAC8zB,UAAU,KAAK,GAAG,IAAI9zB,GAAG,CAAC8zB,UAAU,KAAK,GAAG,EAAE;AAC3H13B,QAAAA,QAAQ,GAAG,IAAIw0B,QAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;QAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AACjB,QAAA,OAAA;AACD,OAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMi4B,WAAW,GAAG;QACnBC,KAAK,EAAEC,IAAI,CAACC,YAAY;QACxBC,WAAW,EAAEF,IAAI,CAACC,YAAAA;OAClB,CAAA;;AAED;AACA,MAAA,IAAIJ,OAAO,IAAI,MAAM,IAAIA,OAAO,IAAI,QAAQ,EAAE;QAC7C/I,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACG,YAAY,CAACL,WAAW,CAAC,CAAC,CAAA;AAChDj4B,QAAAA,QAAQ,GAAG,IAAIw0B,QAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;QAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AACjB,QAAA,OAAA;AACD,OAAA;;AAEA;AACA,MAAA,IAAIg4B,OAAO,IAAI,SAAS,IAAIA,OAAO,IAAI,WAAW,EAAE;AACnD;AACA;QACA,MAAMpF,GAAG,GAAGhvB,GAAG,CAAC8tB,IAAI,CAAC,IAAIwE,aAAa,EAAE,CAAC,CAAA;AACzCtD,QAAAA,GAAG,CAACsE,IAAI,CAAC,MAAM,EAAE,UAAUlG,KAAK,EAAE;AACjC;UACA,IAAI,CAACA,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;YAC/B/B,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACI,aAAa,EAAE,CAAC,CAAA;AACvC,WAAC,MAAM;YACNtJ,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACK,gBAAgB,EAAE,CAAC,CAAA;AAC1C,WAAA;AACAx4B,UAAAA,QAAQ,GAAG,IAAIw0B,QAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;UAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AAClB,SAAC,CAAC,CAAA;AACF4yB,QAAAA,GAAG,CAACjD,EAAE,CAAC,KAAK,EAAE,YAAY;AACzB;UACA,IAAI,CAAC3vB,QAAQ,EAAE;AACdA,YAAAA,QAAQ,GAAG,IAAIw0B,QAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;YAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AAClB,WAAA;AACD,SAAC,CAAC,CAAA;AACF,QAAA,OAAA;AACD,OAAA;;AAEA;MACA,IAAIg4B,OAAO,IAAI,IAAI,IAAI,OAAOG,IAAI,CAACM,sBAAsB,KAAK,UAAU,EAAE;QACzExJ,IAAI,GAAGA,IAAI,CAACyC,IAAI,CAACyG,IAAI,CAACM,sBAAsB,EAAE,CAAC,CAAA;AAC/Cz4B,QAAAA,QAAQ,GAAG,IAAIw0B,QAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;QAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AACjB,QAAA,OAAA;AACD,OAAA;;AAEA;AACAA,MAAAA,QAAQ,GAAG,IAAIw0B,QAAQ,CAACvF,IAAI,EAAE6I,gBAAgB,CAAC,CAAA;MAC/CtK,OAAO,CAACxtB,QAAQ,CAAC,CAAA;AAClB,KAAC,CAAC,CAAA;AAEFgyB,IAAAA,aAAa,CAAC8E,GAAG,EAAEjB,OAAO,CAAC,CAAA;AAC5B,GAAC,CAAC,CAAA;AACH,CAAA;AACA,SAASuB,mCAAmCA,CAACvB,OAAO,EAAE6C,aAAa,EAAE;AACpE,EAAA,IAAIvB,MAAM,CAAA;AAEVtB,EAAAA,OAAO,CAAClG,EAAE,CAAC,QAAQ,EAAE,UAAUpP,CAAC,EAAE;AACjC4W,IAAAA,MAAM,GAAG5W,CAAC,CAAA;AACX,GAAC,CAAC,CAAA;AAEFsV,EAAAA,OAAO,CAAClG,EAAE,CAAC,UAAU,EAAE,UAAU3vB,QAAQ,EAAE;AAC1C,IAAA,MAAM+vB,OAAO,GAAG/vB,QAAQ,CAAC+vB,OAAO,CAAA;AAEhC,IAAA,IAAIA,OAAO,CAAC,mBAAmB,CAAC,KAAK,SAAS,IAAI,CAACA,OAAO,CAAC,gBAAgB,CAAC,EAAE;AAC7E/vB,MAAAA,QAAQ,CAACk3B,IAAI,CAAC,OAAO,EAAE,UAAUI,QAAQ,EAAE;AAC1C;AACA;AACA;AACA;QACA,MAAMC,eAAe,GAAGJ,MAAM,IAAIA,MAAM,CAACK,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAElE,QAAA,IAAID,eAAe,IAAI,CAACD,QAAQ,EAAE;AACjC,UAAA,MAAM70B,GAAG,GAAG,IAAIrC,KAAK,CAAC,iBAAiB,CAAC,CAAA;UACxCqC,GAAG,CAACgsB,IAAI,GAAG,4BAA4B,CAAA;UACvCiK,aAAa,CAACj2B,GAAG,CAAC,CAAA;AACnB,SAAA;AACD,OAAC,CAAC,CAAA;AACH,KAAA;AACD,GAAC,CAAC,CAAA;AACH,CAAA;AAEA,SAASg0B,aAAaA,CAAC9I,MAAM,EAAElrB,GAAG,EAAE;EACnC,IAAIkrB,MAAM,CAACgL,OAAO,EAAE;AACnBhL,IAAAA,MAAM,CAACgL,OAAO,CAACl2B,GAAG,CAAC,CAAA;AACpB,GAAC,MAAM;AACN;AACAkrB,IAAAA,MAAM,CAAC+I,IAAI,CAAC,OAAO,EAAEj0B,GAAG,CAAC,CAAA;IACzBkrB,MAAM,CAAClN,GAAG,EAAE,CAAA;AACb,GAAA;AACD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACAxgB,OAAK,CAACw3B,UAAU,GAAG,UAAUhJ,IAAI,EAAE;AAClC,EAAA,OAAOA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,CAAA;AACpF,CAAC,CAAA;;AAED;AACAxuB,OAAK,CAACstB,OAAO,GAAG4E,MAAM,CAAC5E,OAAO;;;;;;;;;;;ACvuD9B,SAASgO,gBAAgBA,CAACt7B,KAAK,EAAE;AACjC;AACA;AACE,EAAA,OAAO,UAAUu7B,CAAC,EAAE16B,OAAO,EAAE;AAC3B,IAAA,IAAI,OAAO06B,CAAC,KAAK,QAAQ,IAAIA,CAAC,CAACl5B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACnD,MAAA,OAAOrC,KAAK,CAAC,QAAQ,GAAGu7B,CAAC,EAAE16B,OAAO,CAAC,CAAA;AACpC,KAAA;AAED,IAAA,OAAOb,KAAK,CAACu7B,CAAC,EAAE16B,OAAO,CAAC,CAAA;GACzB,CAAA;AACH,CAAA;AAEA,IAAc26B,SAAA,GAAG,UAAUC,OAAO,EAAE;AACpC;EACE,IAAIC,OAAO,GAAG17B,GAAK,CAAC27B,OAAO,GAAG37B,GAAK,CAAC27B,OAAO,GAAG37B,GAAK,CAAA;;AAErD;AACA;AACA;AACA;AACA;AACE,EAAA,IAAIy7B,OAAO,IAAIA,OAAO,CAACnO,OAAO,EAAE;AAC9BoO,IAAAA,OAAO,CAACpO,OAAO,GAAGmO,OAAO,CAACnO,OAAO,CAAA;AAClC,GAAA;EAED,OAAO;AACLttB,IAAAA,KAAK,EAAEs7B,gBAAgB,CAACI,OAAO,CAAC;IAChClJ,OAAO,EAAExyB,GAAK,CAACwyB,OAAO;IACtB8C,OAAO,EAAEt1B,GAAK,CAACs1B,OAAO;IACtBf,QAAQ,EAAEv0B,GAAK,CAACu0B,QAAAA;GACjB,CAAA;AACH,CAAC;;ACnCD;AAIA,MAAMqH,SAAS,GAAG,OAAOlE,QAAQ,KAAK,WAAW,IAAI,OAAOmE,SAAS,KAAK,WAAW,CAAA;AAEnF,OAAO77B,KAAK,KAAK,UAAU,IAAI47B,SAAS,GACpC;EACE57B,KAAK;AACLwyB,EAAAA,OAAAA;AACF,CAAC,GACDsJ,SAAa,GAAE;AAErB,IAAIC,SAAS,GAAI,CAAgB,eAAA,CAAA,CAAA;AACjC,IACE,OAAOjsB,OAAO,KAAK,WAAW,IAC9BA,OAAO,IACPA,OAAO,CAACksB,OAAO,IACflsB,OAAO,CAACksB,OAAO,CAACptB,IAAI,KAAK,MAAM,IAC/BkB,OAAO,CAACoL,OAAO,EACf;AACA6gB,EAAAA,SAAS,IAAK,CAAA,SAAA,EAAWjsB,OAAO,CAACoL,OAAQ,CAAC,CAAA,CAAA;AAC5C;;ACtBA,SAAS+gB,OAAOA,CAAClzB,IAAI,EAAE5M,MAAM,EAAE;AAC7B,EAAA,IAAIqC,EAAE,CAAA;EACN,OAAOA,EAAE,KAAKP,SAAS,IAAI8K,IAAI,CAAC/G,QAAQ,CAACxD,EAAE,CAAC,EAAE;AAC5CA,IAAAA,EAAE,GAAI,CAAErC,EAAAA,MAAO,GAAE+F,IAAI,CAACC,MAAM,EAAE,CAACC,QAAQ,EAAE,CAACC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAA,CAAA;AACtD,GAAA;AACA,EAAA,OAAO7D,EAAE,CAAA;AACX;;ACNA,MAAM09B,QAAQ,CAAC;AACbnvB,EAAAA,WAAWA,CAAChL,IAAI,GAAG,EAAE,EAAE;IACrB,IAAI,CAACA,IAAI,GAAGA,IAAI,CAAA;AAClB,GAAA;AACAgqB,EAAAA,GAAGA,CAAC3lB,GAAG,EAAE8C,KAAK,EAAE;AACd,IAAA,IAAI,CAACnH,IAAI,CAACqE,GAAG,CAAC,GAAG8C,KAAK,CAAA;AACtB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EACA3G,GAAGA,CAAC,GAAGqpB,IAAI,EAAE;AACX,IAAA,OAAO,IAAI,CAACG,GAAG,CAAC,GAAGH,IAAI,CAAC,CAAA;AAC1B,GAAA;EACArO,MAAMA,CAACnX,GAAG,EAAE;AACV,IAAA,OAAO,IAAI,CAACrE,IAAI,CAACqE,GAAG,CAAC,CAAA;AACrB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EACA+1B,MAAMA,CAAC,GAAGvQ,IAAI,EAAE;AACd,IAAA,OAAO,IAAI,CAACrO,MAAM,CAAC,GAAGqO,IAAI,CAAC,CAAA;AAC7B,GAAA;EACAjqB,GAAGA,CAACyE,GAAG,EAAE;AACP,IAAA,OAAO,IAAI,CAACrE,IAAI,CAACqE,GAAG,CAAC,CAAA;AACvB,GAAA;EACAiX,GAAGA,CAACjX,GAAG,EAAE;AACP,IAAA,OAAOxE,MAAM,CAACqP,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC,IAAI,CAACpP,IAAI,EAAEqE,GAAG,CAAC,CAAA;AAC7D,GAAA;AACA2C,EAAAA,IAAIA,GAAG;AACL,IAAA,OAAOnH,MAAM,CAACC,IAAI,CAAC,IAAI,CAACE,IAAI,CAAC,CAAA;AAC/B,GAAA;AACF;;AC1BA,MAAMq6B,OAAO,CAAC;AACZrvB,EAAAA,WAAWA,CAACsvB,KAAK,EAAE9T,KAAK,EAAE;IACxB,IAAI,CAAC8T,KAAK,GAAGA,KAAK,CAAA;IAClB,IAAI,CAACC,YAAY,GAAG/T,KAAK,CAAA;IACzB,IAAI,CAACgU,QAAQ,GAAG36B,MAAM,CAACC,IAAI,CAACw6B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC1vB,GAAG,GAAG,EAAE,CAAA;AACf,GAAA;AACAM,EAAAA,KAAKA,CAAC8lB,QAAQ,EAAEwJ,QAAQ,EAAE;IACxB,IAAI,CAACC,KAAK,GAAGzJ,QAAQ,CAAA;IACrB,IAAI,CAACzf,KAAK,GAAG,IAAI,CAACkpB,KAAK,CAAC3I,IAAI,EAAE,CAAA;IAC9B,IAAI,CAACtL,KAAK,GAAGrL,QAAQ,CAAC,IAAI,CAACof,YAAY,CAAC,CAAA;IACxC,IAAI,CAAC3vB,GAAG,GAAG,EAAE,CAAA;IACb,OAAO,IAAI,CAAC8vB,WAAW,CAACF,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAAC,CAAA;AACpD,GAAA;AACAG,EAAAA,cAAcA,GAAG;IACf,OAAO,CAAC,IAAI,CAACppB,KAAK,CAAA;AACpB,GAAA;EACAqpB,UAAUA,CAAC3zB,IAAI,EAAE;IACf,OAAO,IAAI,CAACsK,KAAK,IAAItK,IAAI,KAAK,IAAI,CAACsK,KAAK,CAACtK,IAAI,CAAA;AAC/C,GAAA;AACA4zB,EAAAA,YAAYA,CAAC5zB,IAAI,EAAE6zB,QAAQ,EAAE;AAC3B,IAAA,MAAMvpB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;IACxB,IAAI,CAACtK,IAAI,IAAKsK,KAAK,IAAIA,KAAK,CAACtK,IAAI,KAAKA,IAAK,EAAE;MAC3C,IAAI,CAACsK,KAAK,GAAG,IAAI,CAACkpB,KAAK,CAAC3I,IAAI,EAAE,CAAA;AAC9B,MAAA,OAAOvgB,KAAK,CAAA;KACb,MAAM,IAAIupB,QAAQ,EAAE;AACnB,MAAA,OAAO5+B,SAAS,CAAA;AAClB,KAAC,MAAM;MACL,MAAM6+B,GAAG,GAAGxpB,KAAK,GAAI,CAAA,CAAA,EAAGA,KAAK,CAACtK,IAAK,CAAE,CAAA,CAAA,GAAG,KAAK,CAAA;AAC7C,MAAA,MAAM9I,KAAK,GAAG,IAAI68B,WAAW,CAAC,IAAI,CAACP,KAAK,CAACQ,WAAW,CAAC1pB,KAAK,EAAG,CAAYtK,UAAAA,EAAAA,IAAK,UAAS8zB,GAAI,CAAA,CAAC,CAAC,CAAC,CAAA;AAC9F58B,MAAAA,KAAK,CAACouB,OAAO,IAAK,CAAA,EAAA,EAAI,IAAI,CAAC3hB,GAAG,CAACxL,IAAI,CAAC,IAAI,CAAE,CAAE,CAAA,CAAA,CAAA;AAC5C,MAAA,MAAMjB,KAAK,CAAA;AACb,KAAA;AACF,GAAA;EACAu8B,WAAWA,CAACQ,IAAI,EAAE;AAChB,IAAA,IAAI,CAACtwB,GAAG,CAACtN,IAAI,CAAC49B,IAAI,CAAC,CAAA;AACnB,IAAA,MAAMrb,MAAM,GAAG,IAAI,CAACya,KAAK,CAACY,IAAI,CAAC,CAAC9rB,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1C,IAAA,IAAI,CAACxE,GAAG,CAACT,GAAG,EAAE,CAAA;AACd,IAAA,OAAO0V,MAAM,CAAA;AACf,GAAA;AACF;;ACzCA;AACA,SAASsb,mBAAmBA,CAACC,SAAS,EAAE;AACtC,EAAA,OAAO,SAASC,aAAaA,CAACjtB,KAAK,EAAE;AACnC,IAAA,IAAI,OAAOgtB,SAAS,KAAK,SAAS,EAAE;AAClC,MAAA,OAAOA,SAAS,CAAA;AAClB,KAAA;IACA,OAAOv7B,MAAM,CAACC,IAAI,CAACs7B,SAAS,CAAC,CAAC9sB,KAAK,CAAEwD,IAAI,IAAK;AAC5C,MAAA,MAAM3K,KAAK,GAAGi0B,SAAS,CAACtpB,IAAI,CAAC,CAAA;MAC7B,IAAI3K,KAAK,KAAK,IAAI,EAAE;QAClB,OAAO2K,IAAI,IAAI1D,KAAK,CAAA;AACtB,OAAC,MAAM,IAAIjH,KAAK,KAAK,KAAK,EAAE;AAC1B,QAAA,OAAO,EAAE2K,IAAI,IAAI1D,KAAK,CAAC,CAAA;AACzB,OAAC,MAAM,IAAI,OAAOjH,KAAK,KAAK,UAAU,EAAE;AACtC,QAAA,OAAOA,KAAK,CAACiH,KAAK,CAAC0D,IAAI,CAAC,CAAC,CAAA;OAC1B,MAAM,IAAI/E,KAAK,CAACC,OAAO,CAAC7F,KAAK,CAAC,EAAE;QAC/B,OAAOA,KAAK,CAAClH,QAAQ,CAACmO,KAAK,CAAC0D,IAAI,CAAC,CAAC,CAAA;AACpC,OAAC,MAAM;AACL,QAAA,OAAO1D,KAAK,CAAC0D,IAAI,CAAC,KAAK3K,KAAK,CAAA;AAC9B,OAAA;AACF,KAAC,CAAC,CAAA;GACH,CAAA;AACH,CAAA;AACA,SAASm0B,kBAAkBA,CAACxpB,IAAI,EAAEypB,QAAQ,EAAE;AAC1C,EAAA,IAAIC,SAAS,CAAA;AACb,EAAA,IAAIC,UAAU,CAAA;AACd,EAAA,IAAI7O,OAAO,CAAA;AACX,EAAA,IAAIwO,SAAS,CAAA;AACb,EAAA,IAAI,OAAOtpB,IAAI,KAAK,QAAQ,EAAE;IAC5B0pB,SAAS,GAAGC,UAAU,GAAG3pB,IAAI,CAAA;GAC9B,MAAM,IAAIA,IAAI,EAAE;IACf0pB,SAAS,GAAGD,QAAQ,GAAGzpB,IAAI,CAACvF,MAAM,GAAGuF,IAAI,CAAChP,MAAM,CAAA;IAChD24B,UAAU,GAAGF,QAAQ,GAAGzpB,IAAI,CAAChP,MAAM,GAAGgP,IAAI,CAACvF,MAAM,CAAA;IACjD,IAAIuF,IAAI,CAAC8a,OAAO,EAAE;AAChBA,MAAAA,OAAO,GAAG2O,QAAQ,GAAGzpB,IAAI,CAAC8a,OAAO,CAAC2O,QAAQ,GAAGzpB,IAAI,CAAC8a,OAAO,CAAC8O,QAAQ,CAAA;AACpE,KAAA;IACA,IAAI5pB,IAAI,CAAC6pB,IAAI,EAAE;AACbP,MAAAA,SAAS,GAAGG,QAAQ,GAAGzpB,IAAI,CAAC6pB,IAAI,CAACpvB,MAAM,GAAGuF,IAAI,CAAC6pB,IAAI,CAAC74B,MAAM,CAAA;MAC1D,IAAIs4B,SAAS,IAAI,IAAI,EAAE;AACrBA,QAAAA,SAAS,GAAGD,mBAAmB,CAACC,SAAS,CAAC,CAAA;AAC5C,OAAA;AACF,KAAA;AACF,GAAC,MAAM;AACL,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EACAI,SAAS,GAAG,EAAE,CAAC7xB,MAAM,CAAC6xB,SAAS,CAAC,CAACh1B,MAAM,CAACwT,OAAO,CAAC,CAAA;EAChDyhB,UAAU,GAAG,EAAE,CAAC9xB,MAAM,CAAC8xB,UAAU,CAAC,CAACj1B,MAAM,CAACwT,OAAO,CAAC,CAAA;EAClD,OAAO;IACLwhB,SAAS;IACTC,UAAU;IACV7O,OAAO;AACPwO,IAAAA,SAAAA;GACD,CAAA;AACH,CAAA;AACA,SAASQ,eAAeA,CAAChqB,KAAK,EAAE2pB,QAAQ,EAAE;AACxCA,EAAAA,QAAQ,GAAGA,QAAQ,KAAKM,UAAU,CAACC,iBAAiB,CAAA;AACpDlqB,EAAAA,KAAK,GAAGA,KAAK,CAAC9M,GAAG,CAAEgN,IAAI,IAAKwpB,kBAAkB,CAACxpB,IAAI,EAAEypB,QAAQ,CAAC,CAAC,CAAC/0B,MAAM,CAACwT,OAAO,CAAC,CAAA;AAC/E,EAAA,OAAO,SAAS+hB,SAASA,CAAC3tB,KAAK,EAAE;IAC/B,MAAM/I,MAAM,GAAG,EAAE,CAAA;AACjB,IAAA,KAAK,MAAM;MAAEm2B,SAAS;MAAEC,UAAU;MAAE7O,OAAO;AAAEwO,MAAAA,SAAAA;KAAW,IAAIxpB,KAAK,EAAE;AACjE,MAAA,IAAI6pB,UAAU,CAACx+B,MAAM,KAAK,CAAC,EAAE;AAC3B,QAAA,SAAA;OACD,MAAM,IAAIm+B,SAAS,IAAI,CAACA,SAAS,CAAChtB,KAAK,CAAC,EAAE;AACzC,QAAA,SAAA;OACD,MAAM,IAAIotB,SAAS,CAACv+B,MAAM,KAAK,CAAC,IAAIu+B,SAAS,CAACltB,KAAK,CAAEwD,IAAI,IAAK,EAAEA,IAAI,IAAI1D,KAAK,CAAC,CAAC,EAAE;AAChF,QAAA,SAAA;AACF,OAAA;AACA,MAAA,IAAI4tB,UAAU,GAAGR,SAAS,CAAC12B,GAAG,CAAEgN,IAAI,IAAK1D,KAAK,CAAC0D,IAAI,CAAC,CAAC,CAAA;AACrD,MAAA,IAAI8a,OAAO,EAAE;QACX,IAAI;UACF,MAAMqP,SAAS,GAAGrP,OAAO,CAACvZ,KAAK,CAACjF,KAAK,EAAE4tB,UAAU,CAAC,CAAA;UAClDA,UAAU,GAAGP,UAAU,CAACx+B,MAAM,KAAK,CAAC,GAAG,CAACg/B,SAAS,CAAC,GAAGA,SAAS,CAAA;SAC/D,CAAC,OAAOC,KAAK,EAAE;UACd,MAAM,IAAI99B,KAAK,CAAE,CAAA,kBAAA,EAAoBo9B,SAAU,CAAMC,IAAAA,EAAAA,UAAW,EAAC,EAAE;AACjES,YAAAA,KAAAA;AACF,WAAC,CAAC,CAAA;AACJ,SAAA;AACF,OAAA;AACAT,MAAAA,UAAU,CAACz2B,OAAO,CAAC,CAAC8M,IAAI,EAAE9P,KAAK,KAAK;AAClC,QAAA,MAAMmF,KAAK,GAAG60B,UAAU,CAACh6B,KAAK,CAAC,CAAA;QAC/B,IAAImF,KAAK,KAAKjL,SAAS,EAAE;AACvBmJ,UAAAA,MAAM,CAACyM,IAAI,CAAC,GAAG3K,KAAK,CAAA;AACtB,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AACA,IAAA,OAAO9B,MAAM,CAAA;GACd,CAAA;AACH,CAAA;AACA,MAAMw2B,UAAU,CAAC;EACf7wB,WAAWA,CAAC4G,KAAK,EAAE;IACjB,IAAI,CAACuqB,eAAe,GAAGP,eAAe,CAAChqB,KAAK,EAAEiqB,UAAU,CAACC,iBAAiB,CAAC,CAAA;IAC3E,IAAI,CAACM,eAAe,GAAGR,eAAe,CAAChqB,KAAK,EAAEiqB,UAAU,CAACQ,iBAAiB,CAAC,CAAA;AAC7E,GAAA;AACF,CAAA;AACAR,UAAU,CAACC,iBAAiB,GAAGzrB,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC1DwrB,UAAU,CAACQ,iBAAiB,GAAGhsB,MAAM,CAAC,mBAAmB,CAAC;;AC9F1D;AAOA,SAASisB,iBAAiBA,CAACpvB,KAAK,EAAE;EAChC,OAAOA,KAAK,CACTqvB,MAAM,CAAC,CAACC,KAAK,EAAE1K,IAAI,KAAK;IACvB,MAAM2K,IAAI,GAAGD,KAAK,CAACA,KAAK,CAACv/B,MAAM,GAAG,CAAC,CAAC,CAAA;IACpC,IAAIw/B,IAAI,IAAIA,IAAI,CAACx1B,IAAI,KAAK6qB,IAAI,CAAC7qB,IAAI,EAAE;MACnCw1B,IAAI,CAACC,KAAK,GAAGD,IAAI,CAACC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAA;AAClC,KAAC,MAAM;AACLF,MAAAA,KAAK,CAACl/B,IAAI,CAACw0B,IAAI,CAAC,CAAA;AAClB,KAAA;AACA,IAAA,OAAO0K,KAAK,CAAA;AACd,GAAC,EAAE,EAAE,CAAC,CACL13B,GAAG,CAAEkmB,OAAO,IAAK,CAACA,OAAO,CAAC0R,KAAK,GAAG,CAAC,GAAG1R,OAAO,CAAC0R,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI1R,OAAO,CAAC/jB,IAAI,CAAC,CAChF7H,IAAI,CAAC,MAAM,CAAC,CAAA;AACjB,CAAA;AACA,MAAMu9B,WAAW,CAAC;AAChB3xB,EAAAA,WAAWA,CAACoD,KAAK,EAAEtP,OAAO,GAAG,EAAE,EAAE;AAC/B,IAAA,IAAI,CAACA,OAAO,GAAGe,MAAM,CAAC6M,MAAM,CAC1B;AACE7D,MAAAA,aAAa,EAAE,IAAI;AACnBwD,MAAAA,SAAS,EAAEsG,IAAS,CAACvE,KAAK,CAAC;AAC3BhC,MAAAA,cAAc,EAAE,EAAE;AAClBE,MAAAA,MAAM,EAAE,IAAI;AACZC,MAAAA,MAAM,EAAE,kBAAA;KACT,EACDzN,OACF,CAAC,CAAA;AACD,IAAA,IAAI,CAACmI,IAAI,GAAG,IAAI,CAACnI,OAAO,CAACuN,SAAS,CAAA;AAClC,IAAA,IAAI,CAACrM,IAAI,GAAG,OAAOoO,KAAK,KAAK,QAAQ,GAAG+M,QAAQ,CAAC/M,KAAK,CAAC,GAAGA,KAAK,CAAA;IAC/D,IAAI,CAAClB,KAAK,GAAG,CACX;MACEjG,IAAI,EAAE,IAAI,CAACA,IAAI;AACfjH,MAAAA,IAAI,EAAEoO,KAAAA;AACR,KAAC,CACF,CAAA;IACD,IAAI,CAACwuB,SAAS,GAAG,CAAC,CAAA;AACpB,GAAA;AACAC,EAAAA,OAAOA,GAAG;AACR,IAAA,IAAI,IAAI,CAACD,SAAS,KAAK,CAAC,EAAE;AACxB,MAAA,MAAME,QAAQ,GAAGC,KAAW,CAAC,IAAI,CAAC91B,IAAI,CAAC,CAAA;AACvC,MAAA,IAAI61B,QAAQ,IAAIA,QAAQ,CAACE,OAAO,EAAE;AAChC,QAAA,IAAI,CAAC/1B,IAAI,GAAG61B,QAAQ,CAACE,OAAO,CAAA;AAC9B,OAAC,MAAM;QACL,IAAI,CAAC/1B,IAAI,GAAG0L,IAAS,CAAC,IAAI,CAAC3S,IAAI,CAAC,CAAA;AAClC,OAAA;AACA,MAAA,IAAI,CAACkN,KAAK,CAAC5P,IAAI,CAAC;QACd2J,IAAI,EAAE,IAAI,CAACA,IAAAA;AACb,OAAC,CAAC,CAAA;AACJ,KAAA;AACA,IAAA,IAAI,IAAI,CAAC9I,KAAK,IAAI,IAAI,CAAC8I,IAAI,KAAK,IAAI,CAACnI,OAAO,CAACyN,MAAM,EAAE;AACnD,MAAA,OAAO,KAAK,CAAA;KACb,MAAM,IAAI,IAAI,CAACqwB,SAAS,IAAI,IAAI,CAAC99B,OAAO,CAACsN,cAAc,EAAE;AACxD,MAAA,IAAI,CAACjO,KAAK,GAAG,IAAIyS,UAAU,CACxB,CAAA,2CAAA,EAA6C0rB,iBAAiB,CAAC,IAAI,CAACpvB,KAAK,CAAE,GAC9E,CAAC,CAAA;AACD,MAAA,OAAO,KAAK,CAAA;AACd,KAAC,MAAM;MACL,IAAI,CAAC0vB,SAAS,EAAE,CAAA;AAChB,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;AACF,GAAA;AACAne,EAAAA,GAAGA,GAAG;IACJ,IAAI,IAAI,CAACtgB,KAAK,EAAE;MACdmP,MAAM,CAACnP,KAAK,CAAC,QAAQ,EAAE,IAAI,CAACA,KAAK,CAACouB,OAAO,CAAC,CAAA;AAC1C,MAAA,IAAI,IAAI,CAACztB,OAAO,CAACwN,MAAM,KAAK,KAAK,EAAE;QACjC,MAAM,IAAI,CAACnO,KAAK,CAAA;AAClB,OAAC,MAAM;AACL,QAAA,OAAO,EAAE,CAAA;AACX,OAAA;KACD,MAAM,IAAI,IAAI,CAACW,OAAO,CAACyN,MAAM,KAAK,kBAAkB,EAAE;MACrD,OAAO0O,UAAU,CAAC,IAAI,CAACjb,IAAI,CAAC,CAAC8E,GAAG,CAC9B,IAAI,CAAChG,OAAO,CAAC+J,aAAa,GAAI5D,KAAK,IAAKgI,UAAU,CAAChI,KAAK,EAAE,IAAI,CAACiI,KAAK,CAAC,GAAGG,WAC1E,CAAC,CAAA;AACH,KAAC,MAAM;MACL,OAAO,IAAI,CAACrN,IAAI,CAAA;AAClB,KAAA;AACF,GAAA;AACF,CAAA;AACO,MAAMi9B,KAAK,GAAGA,CAAC,GAAGpT,IAAI,KAAK;AAChC,EAAA,MAAMoT,KAAK,GAAG,IAAIN,WAAW,CAAC,GAAG9S,IAAI,CAAC,CAAA;AACtC,EAAA,OAAOoT,KAAK,CAACJ,OAAO,EAAE,EAAE;IACtB,IAAI;AACFI,MAAAA,KAAK,CAACj9B,IAAI,GAAGk9B,IAAS,CAACD,KAAK,CAACj9B,IAAI,EAAEi9B,KAAK,CAACh2B,IAAI,CAAC,CAAA;KAC/C,CAAC,OAAO9B,CAAC,EAAE;MACV83B,KAAK,CAAC9+B,KAAK,GAAGgH,CAAC,CAAA;AACjB,KAAA;AACF,GAAA;AACA,EAAA,OAAO83B,KAAK,CAACxe,GAAG,EAAE,CAAA;AACpB,CAAC,CAAA;AACM,MAAM0e,SAAS,GAAI/uB,KAAK,IAAK;AAClC,EAAA,MAAMnH,MAAI,GAAG0L,IAAS,CAACvE,KAAK,CAAC,CAAA;AAC7B,EAAA,MAAM/I,MAAM,GAAG4B,MAAI,CAAC5K,KAAK,CAAC,cAAc,CAAC,GAAG8e,QAAQ,CAAC/M,KAAK,CAAC,GAAGA,KAAK,CAAA;AACnE,EAAA,OAAO8uB,IAAS,CAAC73B,MAAM,EAAE4B,MAAI,CAAC,CAAA;AAChC,CAAC,CAAA;AACM,MAAMm2B,UAAU,GAAG,OAAO,GAAGvT,IAAI,KAAK;AAC3C,EAAA,MAAMoT,KAAK,GAAG,IAAIN,WAAW,CAAC,GAAG9S,IAAI,CAAC,CAAA;AACtC,EAAA,OAAOoT,KAAK,CAACJ,OAAO,EAAE,EAAE;AACtBI,IAAAA,KAAK,CAACj9B,IAAI,GAAG,MAAMq9B,SAAc,CAACJ,KAAK,CAACj9B,IAAI,EAAEi9B,KAAK,CAACh2B,IAAI,CAAC,CAACqyB,KAAK,CAAEn0B,CAAC,IAAK;MACrE83B,KAAK,CAAC9+B,KAAK,GAAGgH,CAAC,CAAA;AACjB,KAAC,CAAC,CAAA;AACJ,GAAA;AACA,EAAA,OAAO83B,KAAK,CAACxe,GAAG,EAAE,CAAA;AACpB,CAAC,CAAA;AACM,MAAM6e,cAAc,GAAG,MAAOlvB,KAAK,IAAK;AAC7C,EAAA,MAAMnH,MAAI,GAAG0L,IAAS,CAACvE,KAAK,CAAC,CAAA;AAC7B,EAAA,MAAM/I,MAAM,GAAG4B,MAAI,CAAC5K,KAAK,CAAC,cAAc,CAAC,GAAG8e,QAAQ,CAAC/M,KAAK,CAAC,GAAGA,KAAK,CAAA;AACnE,EAAA,OAAOivB,SAAc,CAACh4B,MAAM,EAAE4B,MAAI,CAAC,CAAA;AACrC,CAAC;;AChHD,MAAMyL,OAAO,GAAG,EAAE,CAAA;AAClB,MAAM6qB,YAAY,GAAG,EAAE,CAAA;AACvB,MAAMC,aAAa,GAAG;AACpB,EAAA,aAAa,EAAGpvB,KAAK,IAAK,CAACA,KAAK,CAAC;EACjC,kBAAkB,EAAGA,KAAK,IAAKA,KAAK;AACpC,EAAA,mBAAmB,EAAGA,KAAK,IAAKA,KAAK,CAACtJ,GAAG,CAACm4B,KAAK,CAAC,CAACQ,IAAI,EAAE;EACvD,UAAU,EAAEC,MAAM;AAChB,IAAA,MAAM,IAAIt/B,KAAK,CAAC,4CAA4C,CAAC,CAAA;AAC/D,GAAA;AACF,CAAC,CAAA;AACD,MAAMu/B,kBAAkB,GAAG;AACzB,EAAA,mBAAmB,EAAE,MAAOvvB,KAAK,IAAK,CAAC,MAAMmd,OAAO,CAACqS,GAAG,CAACxvB,KAAK,CAACtJ,GAAG,CAACs4B,UAAU,CAAC,CAAC,EAAEK,IAAI,EAAC;AACxF,CAAC,CAAA;AACM,SAASz9B,IAAIA,CAACoO,KAAK,EAAEnH,IAAI,EAAE;AAChC,EAAA,IAAI,OAAOyL,OAAO,CAACzL,IAAI,CAAC,KAAK,UAAU,EAAE;AACvC,IAAA,OAAOyL,OAAO,CAACzL,IAAI,CAAC,CAACmH,KAAK,CAAC,CAAA;GAC5B,MAAM,IAAI,OAAOovB,aAAa,CAACv2B,IAAI,CAAC,KAAK,UAAU,EAAE;AACpD,IAAA,OAAOu2B,aAAa,CAACv2B,IAAI,CAAC,CAACmH,KAAK,CAAC,CAAA;AACnC,GAAC,MAAM;AACL,IAAA,MAAM,IAAItC,SAAS,CAAE,CAAkC7E,gCAAAA,EAAAA,IAAK,EAAC,CAAC,CAAA;AAChE,GAAA;AACF,CAAA;AACO,eAAe42B,SAASA,CAACzvB,KAAK,EAAEnH,IAAI,EAAE;AAC3C,EAAA,IAAI,OAAOs2B,YAAY,CAACt2B,IAAI,CAAC,KAAK,UAAU,EAAE;AAC5C,IAAA,OAAOs2B,YAAY,CAACt2B,IAAI,CAAC,CAACmH,KAAK,CAAC,CAAA;GACjC,MAAM,IAAI,OAAOuvB,kBAAkB,CAAC12B,IAAI,CAAC,KAAK,UAAU,EAAE;AACzD,IAAA,OAAO02B,kBAAkB,CAAC12B,IAAI,CAAC,CAACmH,KAAK,CAAC,CAAA;GACvC,MAAM,IAAI0vB,aAAa,CAAC72B,IAAI,EAAE,KAAK,CAAC,EAAE;AACrC,IAAA,OAAOjH,IAAI,CAACoO,KAAK,EAAEnH,IAAI,CAAC,CAAA;AAC1B,GAAC,MAAM;AACL,IAAA,MAAM,IAAI6E,SAAS,CAAE,CAAsB7E,oBAAAA,EAAAA,IAAK,EAAC,CAAC,CAAA;AACpD,GAAA;AACF,CAAA;AACO,SAAS82B,aAAaA,CAACv+B,MAAM,EAAE;EAAE+S,MAAM;AAAEC,EAAAA,KAAAA;AAAM,CAAC,EAAE;AACvD,EAAA,IAAIA,KAAK,EAAE;AACT+qB,IAAAA,YAAY,CAAC/9B,MAAM,CAAC,GAAG+S,MAAM,CAAA;AAC/B,GAAC,MAAM;AACLG,IAAAA,OAAO,CAAClT,MAAM,CAAC,GAAG+S,MAAM,CAAA;AAC1B,GAAA;AACF,CAAA;AACO,SAASurB,aAAaA,CAAC72B,IAAI,EAAEuL,KAAK,EAAE;EACzC,OAAOA,KAAK,GACR+qB,YAAY,CAACt2B,IAAI,CAAC,IAAI02B,kBAAkB,CAAC12B,IAAI,CAAC,GAC9CyL,OAAO,CAACzL,IAAI,CAAC,IAAIu2B,aAAa,CAACv2B,IAAI,CAAC,CAAA;AAC1C,CAAA;AACO,SAAS+2B,gBAAgBA,CAAC/2B,IAAI,EAAEuL,KAAK,EAAE;EAC5C,OAAO,CAACA,KAAK,GAAG+qB,YAAY,GAAG7qB,OAAO,EAAEzL,IAAI,CAAC,CAAA;AAC/C,CAAA;AACO,SAASg3B,cAAcA,CAACzrB,KAAK,EAAE;EACpC,OAAO3S,MAAM,CAACC,IAAI,CAAC0S,KAAK,GAAG+qB,YAAY,GAAG7qB,OAAO,CAAC,CAAA;AACpD;;AChDA,MAAMjH,SAAO,GAAG,EAAE,CAAA;AACX,SAASjL,KAAGA,CAAChB,MAAM,EAAEkT,OAAO,EAAE;EACnC,MAAMwrB,YAAY,GAAG,IAAIzrB,YAAY,CAACjT,MAAM,EAAEkT,OAAO,CAAC,CAAA;EACtDwrB,YAAY,CAACzxB,QAAQ,EAAE,CAAA;AACvB,EAAA,MAAMzK,KAAK,GAAGyJ,SAAO,CAACjM,MAAM,CAAC,KAAKiM,SAAO,CAACjM,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;EACvD,IAAI0+B,YAAY,CAACtrB,UAAU,EAAE;AAC3BjE,IAAAA,aAAa,CAACnP,MAAM,EAAE0+B,YAAY,CAACtrB,UAAU,CAAC,CAAA;IAC9C5Q,KAAK,CAACiF,IAAI,GAAG,IAAI,CAAA;AACnB,GAAA;EACA,IAAIi3B,YAAY,CAACrrB,UAAU,EAAE;AAC3BkrB,IAAAA,aAAa,CAACv+B,MAAM,EAAE0+B,YAAY,CAACrrB,UAAU,CAAC,CAAA;IAC9C7Q,KAAK,CAAChC,IAAI,GAAG,IAAI,CAAA;AACnB,GAAA;EACA,IAAIk+B,YAAY,CAACnrB,eAAe,EAAE;AAChCgrB,IAAAA,aAAa,CAACv+B,MAAM,EAAE0+B,YAAY,CAACnrB,eAAe,CAAC,CAAA;IACnD/Q,KAAK,CAACm8B,SAAS,GAAG,IAAI,CAAA;AACxB,GAAA;EACA,IAAIzrB,OAAO,CAACsqB,OAAO,EAAE;AACnBh7B,IAAAA,KAAK,CAACg7B,OAAO,GAAGtqB,OAAO,CAACsqB,OAAO,CAAA;AACjC,GAAA;AACF,CAAA;AACO,SAASp9B,KAAGA,CAACJ,MAAM,EAAE;EAC1B,OAAOiM,SAAO,CAACjM,MAAM,CAAC,CAAA;AACxB,CAAA;AACO,SAAS46B,QAAMA,CAAC56B,MAAM,EAAE;AAC7B,EAAA,MAAMwC,KAAK,GAAGyJ,SAAO,CAACjM,MAAM,CAAC,CAAA;EAC7B,IAAI,CAACwC,KAAK,EAAE;AACV,IAAA,OAAA;AACF,GAAA;EACA,IAAIA,KAAK,CAACiF,IAAI,EAAE;IACdoI,gBAAgB,CAAC7P,MAAM,CAAC,CAAA;AAC1B,GAAA;EACA,IAAIwC,KAAK,CAAChC,IAAI,EAAE;IACdg+B,gBAAgB,CAACx+B,MAAM,CAAC,CAAA;AAC1B,GAAA;EACA,IAAIwC,KAAK,CAACm8B,SAAS,EAAE;AACnBH,IAAAA,gBAAgB,CAACx+B,MAAM,EAAE,IAAI,CAAC,CAAA;AAChC,GAAA;EACA,OAAOiM,SAAO,CAACjM,MAAM,CAAC,CAAA;AACxB,CAAA;AACO,SAAS8b,KAAGA,CAAC9b,MAAM,EAAE;EAC1B,OAAOA,MAAM,IAAIiM,SAAO,CAAA;AAC1B,CAAA;AACO,SAASzE,MAAIA,GAAG;AACrB,EAAA,OAAOnH,MAAM,CAACC,IAAI,CAAC2L,SAAO,CAAC,CAAA;AAC7B;;AC5CO,MAAM2yB,IAAI,GAAGv+B,MAAM,CAAC6M,MAAM,CAAC,EAAE,EAAE2B,QAAQ,EAAEnB,KAAK,EAAEqF,MAAM,EAAEhK,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJnE;AAGA,SAAS/H,KAAGA,CAACR,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE8L,GAAG,GAAG,KAAK,EAAE;AAC5C,EAAA,IAAI9L,OAAO,KAAK,IAAI,IAAI8L,GAAG,KAAK,IAAI,EAAE;IACpC,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;AACA,EAAA,IAAI,CAACtL,IAAI,CAAC1C,IAAI,CAAC,GAAG+gC,KAAU,CAACr+B,IAAI,EAAElB,OAAO,CAAC,CAAC,CAAA;EAC5C,IAAI,CAACkB,IAAI,CACNwG,MAAM,CAAEvB,KAAK,IAAK,CAACpF,MAAM,CAACqP,SAAS,CAACC,cAAc,CAACC,IAAI,CAACnK,KAAK,EAAE,IAAI,CAAC,CAAC,CACrED,OAAO,CAAEC,KAAK,IAAK;AAClBA,IAAAA,KAAK,CAACxI,EAAE,GAAGy9B,OAAO,CAAC,IAAI,CAACoE,MAAM,EAAE,EAAE,UAAU,CAAC,CAAA;AAC/C,GAAC,CAAC,CAAA;AACJ,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AACA,eAAeC,QAAQA,CAACv+B,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE8L,GAAG,GAAG,KAAK,EAAE;AACvD,EAAA,IAAI9L,OAAO,KAAK,IAAI,IAAI8L,GAAG,KAAK,IAAI,EAAE;IACpC,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;AACA,EAAA,IAAI,CAACtL,IAAI,CAAC1C,IAAI,CAAC,IAAI,MAAMkhC,UAAe,CAACx+B,IAAI,EAAElB,OAAO,CAAC,CAAC,CAAC,CAAA;EACzD,IAAI,CAACkB,IAAI,CACNwG,MAAM,CAAEvB,KAAK,IAAK,CAACpF,MAAM,CAACqP,SAAS,CAACC,cAAc,CAACC,IAAI,CAACnK,KAAK,EAAE,IAAI,CAAC,CAAC,CACrED,OAAO,CAAEC,KAAK,IAAK;AAClBA,IAAAA,KAAK,CAACxI,EAAE,GAAGy9B,OAAO,CAAC,IAAI,CAACoE,MAAM,EAAE,EAAE,UAAU,CAAC,CAAA;AAC/C,GAAC,CAAC,CAAA;AACJ,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AACA,SAAStU,GAAGA,CAAChqB,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE8L,GAAG,GAAG,KAAK,EAAE;AAC5C,EAAA,IAAI9L,OAAO,KAAK,IAAI,IAAI8L,GAAG,KAAK,IAAI,EAAE;IACpC,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;EACA,IAAI,CAACtL,IAAI,GAAG,EAAE,CAAA;AACd,EAAA,OAAO,OAAOlB,OAAO,KAAK,SAAS,GAAG,IAAI,CAAC0B,GAAG,CAACR,IAAI,EAAElB,OAAO,CAAC,GAAG,IAAI,CAAC0B,GAAG,CAACR,IAAI,CAAC,CAAA;AAChF,CAAA;AACA,eAAey+B,QAAQA,CAACz+B,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE8L,GAAG,GAAG,KAAK,EAAE;AACvD,EAAA,IAAI9L,OAAO,KAAK,IAAI,IAAI8L,GAAG,KAAK,IAAI,EAAE;IACpC,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;EACA,IAAI,CAACtL,IAAI,GAAG,EAAE,CAAA;AACd,EAAA,OAAO,OAAOlB,OAAO,KAAK,SAAS,GAAG,IAAI,CAACy/B,QAAQ,CAACv+B,IAAI,EAAElB,OAAO,CAAC,GAAG,IAAI,CAACy/B,QAAQ,CAACv+B,IAAI,CAAC,CAAA;AAC1F,CAAA;AACA,SAAS0+B,KAAKA,CAAC9zB,GAAG,EAAE;AAClB,EAAA,IAAIA,GAAG,EAAE;IACP,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;EACA,IAAI,CAACtL,IAAI,GAAG,EAAE,CAAA;AACd,EAAA,IAAI,CAACwL,QAAQ,GAAG,EAAE,CAAA;AAClB,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;;;;;;AChDA,SAASmzB,QAAQA,CAAC15B,KAAK,EAAE;EACvB,IAAI,gBAAgB,IAAIA,KAAK,EAAE;IAC7B,OAAOA,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAChC,GAAA;EACA,IAAIrD,GAAG,GAAG,EAAE,CAAA;EACZ,IAAIqD,KAAK,CAAC5C,MAAM,EAAE;AAChBT,IAAAA,GAAG,IAAIqD,KAAK,CAAC5C,MAAM,CAAC,CAAC,CAAC,CAACE,MAAM,IAAI0C,KAAK,CAAC5C,MAAM,CAAC,CAAC,CAAC,CAACiX,OAAO,CAAA;AAC1D,GAAA;EACA,IAAIrU,KAAK,CAACc,MAAM,IAAId,KAAK,CAACc,MAAM,CAAC,YAAY,CAAC,IAAId,KAAK,CAACc,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/EnE,IAAAA,GAAG,IAAIqD,KAAK,CAACc,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,GAAA;AACA,EAAA,IAAId,KAAK,CAAC,aAAa,CAAC,EAAE;AACxBrD,IAAAA,GAAG,IAAIqD,KAAK,CAAC,aAAa,CAAC,CAAA;AAC7B,GAAC,MAAM,IAAIA,KAAK,CAACiU,KAAK,EAAE;AACtBtX,IAAAA,GAAG,IAAIqD,KAAK,CAACiU,KAAK,CAACvc,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAACN,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAA;AACrF,GAAA;AACA,EAAA,OAAOuF,GAAG,CAAA;AACZ,CAAA;AAEA,YAAe;EACb/E,KAAKA,CAACmD,IAAI,EAAE;IACV,OAAOA,IAAI,CAACu8B,MAAM,CAAC,CAACxtB,MAAM,EAAE9J,KAAK,KAAK;MACpC8J,MAAM,CAAC9J,KAAK,CAACxI,EAAE,CAAC,GAAGkiC,QAAQ,CAAC15B,KAAK,CAAC,CAAA;AAClC,MAAA,OAAO8J,MAAM,CAAA;KACd,EAAE,EAAE,CAAC,CAAA;AACR,GAAA;AACF,CAAC;;ACxBD,SAAS6vB,kBAAkBA,CAAChvB,GAAG,EAAEkC,IAAI,EAAEjV,KAAK,GAAGiV,IAAI,KAAK,OAAO,EAAE;AAC/D,EAAA,IAAI3K,KAAK,GAAGtK,KAAK,GAAG8hC,QAAQ,CAAC/uB,GAAG,CAAC,GAAGA,GAAG,CAACkC,IAAI,CAAC,CAAA;AAC7C,EAAA,QAAQA,IAAI;AACV,IAAA,KAAK,QAAQ,CAAA;AACb,IAAA,KAAK,QAAQ;AACX,MAAA,OAAO3K,KAAK,CAACrC,GAAG,CAAE+H,IAAI,IAAKA,IAAI,CAACyM,OAAO,IAAIzM,IAAI,CAACtK,MAAM,IAAIs8B,QAAO,CAAChyB,IAAI,CAAC,CAAC,CAAA;AAC1E,IAAA,KAAK,UAAU,CAAA;AACf,IAAA,KAAK,QAAQ;AACX,MAAA,OAAO1F,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,IAAA,KAAK,MAAM;AACT,MAAA,OAAOA,KAAK,CAAC/K,KAAK,CAAC,GAAG,CAAC,CAAC0I,GAAG,CAAEg6B,GAAG,IAAK1kB,QAAQ,CAAC0kB,GAAG,CAAC,CAAC,CAAA;AACrD,IAAA,KAAK,SAAS,CAAA;AACd,IAAA,KAAK,OAAO,CAAA;AACZ,IAAA,KAAK,QAAQ;AACX33B,MAAAA,KAAK,GAAGiT,QAAQ,CAACjT,KAAK,CAAC,CAAA;MACvB,OAAO,CAACgT,KAAK,CAAChT,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACwxB,QAAQ,CAAA;AAC1C,IAAA;MACE,OAAOxxB,KAAK,IAAI,CAACwxB,QAAQ,CAAA;AAC7B,GAAA;AACF,CAAA;AACA,SAASoG,WAAWA,CAACC,MAAM,EAAEC,MAAM,EAAEntB,IAAI,EAAEotB,IAAI,GAAG,IAAI,CAAChzB,IAAI,CAAC4F,IAAI,CAAC,EAAE;EACjEA,IAAI,GAAGA,IAAI,CAACnV,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AAC7B,EAAA,MAAM2gB,CAAC,GAAGshB,kBAAkB,CAACI,MAAM,EAAEltB,IAAI,CAAC,CAAA;AAC1C,EAAA,MAAMyL,CAAC,GAAGqhB,kBAAkB,CAACK,MAAM,EAAEntB,IAAI,CAAC,CAAA;EAC1C,OAAO,CAACotB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK5hB,CAAC,GAAGC,CAAC,GAAG,CAAC,GAAGD,CAAC,GAAGC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACvD,CAAA;AACA,SAAS4hB,eAAeA,CAAC,GAAGvtB,KAAK,EAAE;AACjC,EAAA,OAAO,CAAC0L,CAAC,EAAEC,CAAC,KAAK;AACf,IAAA,MAAMzd,IAAI,GAAG8R,KAAK,CAACtR,KAAK,EAAE,CAAA;IAC1B,IAAI+E,MAAM,GAAG,CAAC,CAAA;AACd,IAAA,OAAO,CAACA,MAAM,IAAIvF,IAAI,CAAC7C,MAAM,EAAE;AAC7BoI,MAAAA,MAAM,GAAG05B,WAAW,CAACzhB,CAAC,EAAEC,CAAC,EAAEzd,IAAI,CAACkoB,KAAK,EAAE,CAAC,CAAA;AAC1C,KAAA;AACA,IAAA,OAAO3iB,MAAM,CAAA;GACd,CAAA;AACH,CAAA;AACA,SAAS+pB,IAAIA,CAAC2B,MAAM,GAAG,EAAE,EAAEnmB,GAAG,EAAE;AAC9B,EAAA,IAAIA,GAAG,EAAE;IACP,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;AACA,EAAA,IAAI,CAACtL,IAAI,CAACovB,IAAI,CAAC,OAAO2B,MAAM,KAAK,UAAU,GAAGA,MAAM,GAAGoO,eAAe,CAAC,GAAGpO,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAC3F,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;;AC3CA,SAAStkB,UAAQA,CAACI,IAAI,EAAEuyB,SAAS,EAAE;AACjC,EAAA,IAAI,OAAOvyB,IAAI,KAAK,QAAQ,EAAE;AAC5B,IAAA,MAAM,IAAIf,SAAS,CAAE,oDAAmD,OAAOe,IAAK,EAAC,CAAC,CAAA;AACxF,GAAC,MAAM,IAAI,OAAOuyB,SAAS,KAAK,UAAU,EAAE;AAC1C,IAAA,MAAM,IAAItzB,SAAS,CAAE,6CAA4C,OAAOszB,SAAU,EAAC,CAAC,CAAA;AACtF,GAAA;AACF,CAAA;AACO,MAAMC,UAAQ,GAAG,IAAIlF,QAAQ,EAAE,CAAA;AAC/B,SAAS35B,KAAGA,CAACqM,IAAI,EAAEuyB,SAAS,EAAE;AACnC3yB,EAAAA,UAAQ,CAACI,IAAI,EAAEuyB,SAAS,CAAC,CAAA;AACzBC,EAAAA,UAAQ,CAACrV,GAAG,CAACnd,IAAI,EAAEuyB,SAAS,CAAC,CAAA;AAC/B,CAAA;AACO,SAAShF,QAAMA,CAACvtB,IAAI,EAAE;AAC3BwyB,EAAAA,UAAQ,CAACjF,MAAM,CAACvtB,IAAI,CAAC,CAAA;AACvB,CAAA;AACO,SAASyO,KAAGA,CAACzO,IAAI,EAAE;AACxB,EAAA,OAAOwyB,UAAQ,CAAC/jB,GAAG,CAACzO,IAAI,CAAC,CAAA;AAC3B,CAAA;AACO,SAAS7F,MAAIA,GAAG;AACrB,EAAA,OAAOq4B,UAAQ,CAACr4B,IAAI,EAAE,CAAA;AACxB,CAAA;AACO,SAASxH,QAAMA,CAACqN,IAAI,EAAE7M,IAAI,EAAE,GAAGlB,OAAO,EAAE;AAC7C,EAAA,IAAI,CAACugC,UAAQ,CAAC/jB,GAAG,CAACzO,IAAI,CAAC,EAAE;AACvB,IAAA,MAAM,IAAIzO,KAAK,CAAE,CAAiByO,eAAAA,EAAAA,IAAK,eAAc,CAAC,CAAA;AACxD,GAAA;EACA,OAAOwyB,UAAQ,CAACz/B,GAAG,CAACiN,IAAI,CAAC,CAAC7M,IAAI,EAAE,GAAGlB,OAAO,CAAC,CAAA;AAC7C;;;;;;;;;;;;ACxBO,SAASw/B,MAAMA,GAAG;EACvB,OAAO,IAAI,CAACt+B,IAAI,CAAC8E,GAAG,CAAEG,KAAK,IAAKA,KAAK,CAACxI,EAAE,CAAC,CAAA;AAC3C,CAAA;AACO,SAAS+C,QAAMA,CAACA,MAAM,EAAE,GAAGV,OAAO,EAAE;AACzC,EAAA,OAAOwgC,QAAU,CAAC9/B,MAAM,EAAEqb,QAAQ,CAAC,IAAI,CAAC7a,IAAI,CAAC,EAAE,GAAGlB,OAAO,CAAC,CAAA;AAC5D,CAAA;AACO,SAASc,KAAGA,CAACd,OAAO,GAAG,EAAE,EAAE;EAChC2N,qBAAQ,CAAC3N,OAAO,CAAC,CAAA;EACjB,MAAMygC,aAAa,GAAG1/B,MAAM,CAAC6M,MAAM,CAAC,EAAE,EAAE,IAAI,CAACF,cAAc,EAAE,IAAI,CAAChB,QAAQ,CAACnG,MAAM,EAAEvG,OAAO,CAAC,CAAA;EAC3F,MAAM;IAAEmI,IAAI;AAAE8E,IAAAA,KAAAA;AAAM,GAAC,GAAGwzB,aAAa,CAAA;EACrC,MAAM,CAACC,SAAS,EAAEC,WAAW,CAAC,GAAG1zB,KAAK,CAAC3P,KAAK,CAAC,GAAG,CAAC,CAAA;AACjD,EAAA,MAAMsjC,QAAQ,GACZF,SAAS,KAAK,UAAU,GAAG,cAAc,GAAGA,SAAS,KAAK,KAAK,GAAG,MAAM,GAAGA,SAAS,CAAA;AACtF,EAAA,MAAMG,OAAO,GAAG14B,IAAI,KAAK,QAAQ,GAAG,MAAM,GAAGA,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAGA,IAAI,CAAA;AAC9E,EAAA,IAAI24B,aAAa,CAAA;AACjB,EAAA,QAAQF,QAAQ;AACd,IAAA,KAAK,cAAc;AAAE,MAAA;QACnB,MAAM;UAAEh3B,IAAI;UAAEsD,MAAM;AAAEC,UAAAA,OAAAA;AAAQ,SAAC,GAAGszB,aAAa,CAAA;AAC/CK,QAAAA,aAAa,GAAG;AACdC,UAAAA,QAAQ,EAAEJ,WAAW;UACrB/2B,IAAI;AACJlJ,UAAAA,MAAM,EAAEmgC,OAAO;UACf3zB,MAAM;AACNC,UAAAA,OAAAA;SACD,CAAA;AACD,QAAA,MAAA;AACF,OAAA;AACA,IAAA,KAAK,MAAM,CAAA;AACX,IAAA,KAAK,QAAQ,CAAA;AACb,IAAA,KAAK,QAAQ,CAAA;AACb,IAAA,KAAK,QAAQ,CAAA;AACb,IAAA,KAAK,KAAK;AACR2zB,MAAAA,aAAa,GAAG;AACd34B,QAAAA,IAAI,EAAE04B,OAAAA;OACP,CAAA;AACD,MAAA,MAAA;AACF,IAAA;AACE,MAAA,MAAM,IAAIvhC,KAAK,CAAE,CAAiBshC,eAAAA,EAAAA,QAAS,GAAE,CAAC,CAAA;AAClD,GAAA;AACA,EAAA,MAAM7f,MAAM,GAAG,IAAI,CAACrgB,MAAM,CAACkgC,QAAQ,EAAE7/B,MAAM,CAAC6M,MAAM,CAACkzB,aAAa,EAAE9gC,OAAO,CAACghC,WAAW,CAAC,CAAC,CAAA;EACvF,MAAM;AAAEtgC,IAAAA,MAAAA;AAAO,GAAC,GAAG+/B,aAAa,CAAA;AAChC,EAAA,IACE//B,MAAM,KAAK,MAAM,IACjBmgC,OAAO,KAAK,MAAM,IAClB,OAAOtrB,QAAQ,KAAK,WAAW,IAC/B,OAAOA,QAAQ,CAAC0rB,aAAa,KAAK,UAAU,EAC5C;AACA,IAAA,MAAMC,GAAG,GAAG3rB,QAAQ,CAAC0rB,aAAa,CAAC,KAAK,CAAC,CAAA;IACzCC,GAAG,CAACC,SAAS,GAAGpgB,MAAM,CAAA;IACtB,OAAOmgB,GAAG,CAACE,UAAU,CAAA;GACtB,MAAM,IAAI1gC,MAAM,KAAK,QAAQ,IAAI,OAAOqgB,MAAM,KAAK,QAAQ,EAAE;AAC5D,IAAA,OAAO5U,IAAI,CAACM,SAAS,CAACsU,MAAM,CAAC,CAAA;AAC/B,GAAC,MAAM;AACL,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;AACF;;;;;;;;;AC1DA,SAASrN,KAAKA,CAACxS,IAAI,EAAElB,OAAO,EAAEqyB,QAAQ,EAAE;AACtC,EAAA,IAAI,OAAOryB,OAAO,KAAK,UAAU,IAAI,CAACqyB,QAAQ,EAAE;AAC9CA,IAAAA,QAAQ,GAAGryB,OAAO,CAAA;AAClBA,IAAAA,OAAO,GAAG5C,SAAS,CAAA;AACrB,GAAA;AACA,EAAA,MAAMikC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC1B,QAAQ,CAACz+B,IAAI,EAAElB,OAAO,CAAC,CAAA;AAClD,EAAA,IAAI,OAAOqyB,QAAQ,KAAK,UAAU,EAAE;AAClCgP,IAAAA,OAAO,CAAC9hC,IAAI,CAAC8yB,QAAQ,CAAC,CAAA;AACtB,IAAA,OAAOj1B,SAAS,CAAA;AAClB,GAAC,MAAM;AACL,IAAA,OAAOikC,OAAO,CAAA;AAChB,GAAA;AACF;;;;;;;;;ACZA;AAOA,SAAS5gC,MAAIA,CAACS,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE;AAChC,EAAA,IAAI,EAAE,IAAI,YAAYS,MAAI,CAAC,EAAE;AAC3B,IAAA,OAAO,IAAIA,MAAI,CAACS,IAAI,EAAElB,OAAO,CAAC,CAAA;AAChC,GAAA;EACA,IAAI,CAAC0M,QAAQ,GAAG1M,OAAO,CAAA;EACvB,IAAI,CAAC8L,GAAG,GAAG,EAAE,CAAA;EACb,IAAI,CAAC5K,IAAI,GAAG,EAAE,CAAA;AACd,EAAA,IAAI,CAACgqB,GAAG,CAAChqB,IAAI,EAAElB,OAAO,CAAC,CAAA;AACvB,EAAA,IAAI,CAACA,OAAO,CAACA,OAAO,CAAC,CAAA;AACrB,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AACAe,MAAM,CAAC6M,MAAM,CAACnN,MAAI,CAAC2P,SAAS,EAAEtE,GAAG,EAAE9L,SAAO,EAAEkrB,KAAG,EAAEoF,MAAI,EAAExvB,KAAG,CAAC,CAAA;AAC3DL,MAAI,CAAC2P,SAAS,CAACmB,MAAM,CAAC2gB,QAAQ,CAAC,GAAG,aAAa;EAC7C,OAAO,IAAI,CAAChxB,IAAI,CAAA;AAClB,CAAC,CAAA;AACDH,MAAM,CAAC6M,MAAM,CAACnN,MAAI,EAAE6gC,aAAa,CAAC;;ACrBlC,SAAS3zB,UAAQA,CAACI,IAAI,EAAEwzB,IAAI,EAAE;AAC5B,EAAA,IAAI,OAAOxzB,IAAI,KAAK,QAAQ,EAAE;AAC5B,IAAA,MAAM,IAAIf,SAAS,CAAE,2CAA0C,OAAOe,IAAK,EAAC,CAAC,CAAA;AAC/E,GAAC,MAAM,IAAI,OAAOwzB,IAAI,KAAK,QAAQ,EAAE;AACnC,IAAA,MAAM,IAAIv0B,SAAS,CAAE,sCAAqC,OAAOu0B,IAAK,EAAC,CAAC,CAAA;AAC1E,GAAA;AACA,EAAA,KAAK,MAAMC,SAAS,IAAID,IAAI,EAAE;AAC5B,IAAA,MAAMp7B,KAAK,GAAGo7B,IAAI,CAACC,SAAS,CAAC,CAAA;AAC7B,IAAA,IAAI,CAACvzB,KAAK,CAACC,OAAO,CAAC/H,KAAK,CAAC,IAAIA,KAAK,CAAC4M,IAAI,CAAEvW,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ,CAAC,EAAE;AAC3E,MAAA,MAAM,IAAIwQ,SAAS,CAAE,CAAsBw0B,oBAAAA,EAAAA,SAAU,8BAA6B,CAAC,CAAA;AACrF,KAAA;AACF,GAAA;AACF,CAAA;AACO,MAAMjB,QAAQ,GAAG,IAAIlF,QAAQ,CAAC;AACnC32B,EAAAA,IAAI,EAAE;AACJ+8B,IAAAA,qBAAqB,EAAE,CAAC,4BAA4B,EAAE,QAAQ,CAAC;AAC/Dt7B,IAAAA,KAAK,EAAE,CAAC,yBAAyB,EAAE,QAAQ,CAAC;AAC5C+B,IAAAA,IAAI,EAAE,CAAC,mCAAmC,EAAE,OAAO,CAAC;AACpDw5B,IAAAA,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAA;GAC3B;AACDtiC,EAAAA,IAAI,EAAE;AACJqiC,IAAAA,qBAAqB,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;AACjCt7B,IAAAA,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;AACjB+B,IAAAA,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;AAChBw5B,IAAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAA;AACvB,GAAA;AACF,CAAC,CAAC,CAAA;AACK,SAAShgC,KAAGA,CAACqM,IAAI,EAAEwzB,IAAI,EAAE;AAC9B5zB,EAAAA,UAAQ,CAACI,IAAI,EAAEwzB,IAAI,CAAC,CAAA;AACpBhB,EAAAA,QAAQ,CAACrV,GAAG,CAACnd,IAAI,EAAEwzB,IAAI,CAAC,CAAA;AAC1B,CAAA;AACO,SAASjG,QAAMA,CAACvtB,IAAI,EAAE;AAC3BwyB,EAAAA,QAAQ,CAACjF,MAAM,CAACvtB,IAAI,CAAC,CAAA;AACvB,CAAA;AACO,SAASyO,KAAGA,CAACzO,IAAI,EAAE;AACxB,EAAA,OAAOwyB,QAAQ,CAAC/jB,GAAG,CAACzO,IAAI,CAAC,CAAA;AAC3B,CAAA;AACO,SAAS7F,MAAIA,GAAG;AACrB,EAAA,OAAOq4B,QAAQ,CAACr4B,IAAI,EAAE,CAAA;AACxB,CAAA;AACO,SAASpH,KAAGA,CAACiN,IAAI,EAAE;AACxB,EAAA,IAAI,CAACwyB,QAAQ,CAAC/jB,GAAG,CAACzO,IAAI,CAAC,EAAE;AACvB,IAAA,MAAM,IAAIzO,KAAK,CAAE,CAAQyO,MAAAA,EAAAA,IAAK,eAAc,CAAC,CAAA;AAC/C,GAAA;AACA,EAAA,OAAOwyB,QAAQ,CAACz/B,GAAG,CAACiN,IAAI,CAAC,CAAA;AAC3B,CAAA;AACO,MAAM4zB,QAAQ,GAAG;AACtBC,EAAAA,QAAQ,EAAE,4BAA4B;AACtCC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,QAAQ,EAAE,yBAAyB;AACnCC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,QAAQ,EAAE,mCAAmC;AAC7CC,EAAAA,MAAM,EAAE,OAAO;AACfC,EAAAA,QAAQ,EAAE,MAAM;AAChBC,EAAAA,MAAM,EAAE,OAAA;AACV,CAAC,CAAA;AACM,MAAMC,QAAQ,GAAG;AACtBR,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,MAAM,EAAE,EAAE;AACVC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,MAAM,EAAE,IAAA;AACV,CAAC;;;;;;;;;;;;;;AClED,MAAME,OAAO,GAAG,EAAE,CAAA;AACX,SAAS3gC,KAAGA,CAAC4B,GAAG,EAAE1C,MAAM,EAAE;AAC/ByhC,EAAAA,OAAO,CAAC/+B,GAAG,CAAC,GAAG1C,MAAM,CAAA;AACvB,CAAA;AACO,SAASE,GAAGA,CAACwC,GAAG,EAAE;EACvB,OAAO++B,OAAO,CAAC/+B,GAAG,CAAC,CAAA;AACrB,CAAA;AACO,SAASkZ,KAAGA,CAAClZ,GAAG,EAAE;EACvB,OAAOvC,MAAM,CAACqP,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC+xB,OAAO,EAAE/+B,GAAG,CAAC,CAAA;AAC3D,CAAA;AACO,SAASg4B,QAAMA,CAACh4B,GAAG,EAAE;EAC1B,OAAO++B,OAAO,CAAC/+B,GAAG,CAAC,CAAA;AACrB,CAAA;AACO,SAAS4E,MAAIA,GAAG;AACrB,EAAA,OAAOnH,MAAM,CAACC,IAAI,CAACqhC,OAAO,CAAC,CAAA;AAC7B;;;;;;;;;;;ACfA;AAKA,MAAMC,SAAS,GAAG;EAChBhzB,KAAK;UACL/I,QAAM;EACNg7B,IAAI;AACJ3gC,UAAAA,QAAAA;AACF,CAAC,CAAA;AACD,MAAM2hC,OAAO,GAAG,EAAE,CAAA;AACX,SAAS7gC,GAAGA,CAAC4B,GAAG,EAAEzC,OAAO,GAAG,EAAE,EAAE;EACrC,MAAM2hC,SAAS,GAAID,OAAO,CAACj/B,GAAG,CAAC,GAAG,EAAG,CAAA;AACrC,EAAA,KAAK,MAAM6E,IAAI,IAAItH,OAAO,EAAE;IAC1B,IAAIsH,IAAI,KAAK,QAAQ,EAAE;MACrBq6B,SAAS,CAAC5hC,MAAM,GAAG;QACjB,CAAC0C,GAAG,GAAGzC,OAAO,CAACD,MAAAA;OAChB,CAAA;MACD0hC,SAAS,CAAC1hC,MAAM,CAACc,GAAG,CAAC4B,GAAG,EAAEzC,OAAO,CAACD,MAAM,CAAC,CAAA;AACzC,MAAA,SAAA;AACF,KAAA;IACA,MAAM6hC,SAAS,GAAID,SAAS,CAACr6B,IAAI,CAAC,GAAG,EAAG,CAAA;AACxC,IAAA,MAAMu6B,WAAW,GAAG7hC,OAAO,CAACsH,IAAI,CAAC,CAAA;AACjC,IAAA,KAAK,MAAM4F,IAAI,IAAI20B,WAAW,EAAE;AAC9B,MAAA,MAAMC,UAAU,GAAGD,WAAW,CAAC30B,IAAI,CAAC,CAAA;AACpC00B,MAAAA,SAAS,CAAC10B,IAAI,CAAC,GAAG,IAAI,CAAA;MACtBu0B,SAAS,CAACn6B,IAAI,CAAC,CAACzG,GAAG,CAACqM,IAAI,EAAE40B,UAAU,CAAC,CAAA;AACvC,KAAA;AACF,GAAA;AACF,CAAA;AACO,SAASrH,MAAMA,CAACh4B,GAAG,EAAE;AAC1B,EAAA,MAAMk/B,SAAS,GAAGD,OAAO,CAACj/B,GAAG,CAAC,CAAA;AAC9B,EAAA,KAAK,MAAM6E,IAAI,IAAIq6B,SAAS,EAAE;AAC5B,IAAA,MAAMC,SAAS,GAAGD,SAAS,CAACr6B,IAAI,CAAC,CAAA;AACjC,IAAA,KAAK,MAAM4F,IAAI,IAAI00B,SAAS,EAAE;AAC5BH,MAAAA,SAAS,CAACn6B,IAAI,CAAC,CAACmzB,MAAM,CAACvtB,IAAI,CAAC,CAAA;AAC9B,KAAA;AACF,GAAA;EACA,OAAOw0B,OAAO,CAACj/B,GAAG,CAAC,CAAA;AACrB,CAAA;AACO,SAASkZ,GAAGA,CAAClZ,GAAG,EAAE;EACvB,OAAOA,GAAG,IAAIi/B,OAAO,CAAA;AACvB,CAAA;AACO,SAASr6B,IAAIA,GAAG;AACrB,EAAA,OAAOnH,MAAM,CAACC,IAAI,CAACuhC,OAAO,CAAC,CAAA;AAC7B;;;;;;;;;;;;;;AC9CO,SAASn2B,OAAKA,GAAG;AACtB,EAAA,OAAO,EAAE,CAAA;AACX;;ACDA,MAAMw2B,YAAY,GAAG,CACnB,CAAC,2DAA2D,EAAE,QAAQ,CAAC,EACvE,CACE,yGAAyG,EACzG,eAAe,CAChB,CACF,CAAA;AACD,SAASC,SAASA,CAACnjC,GAAG,EAAE;AACtB,EAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;AAC3B,IAAA,OAAOyM,IAAI,CAACC,KAAK,CAAC1M,GAAG,CAAC,CAAA;AACxB,GAAA;EACA,IAAI;AACF,IAAA,OAAOyM,IAAI,CAACC,KAAK,CAAC1M,GAAG,CAAC,CAAA;GACvB,CAAC,OAAO2G,CAAC,EAAE;AACVmI,IAAAA,MAAM,CAACwB,KAAK,CAAC,iBAAiB,EAAE,gDAAgD,CAAC,CAAA;IACjF4yB,YAAY,CAAC18B,OAAO,CAAC,CAAC,CAACqe,KAAK,EAAEue,KAAK,CAAC,KAAK;MACvCpjC,GAAG,GAAGA,GAAG,CAAC7B,OAAO,CAAC0mB,KAAK,EAAEue,KAAK,CAAC,CAAA;AACjC,KAAC,CAAC,CAAA;AACF,IAAA,OAAO32B,IAAI,CAACC,KAAK,CAAC1M,GAAG,CAAC,CAAA;AACxB,GAAA;AACF;;ACrBO,SAAS0M,OAAKA,CAACkD,KAAK,EAAE;AAC3B,EAAA,OAAOA,KAAK,CAAC2O,GAAG,EAAE,IAAI3O,KAAK,CAAClQ,IAAI,EAAE,IAAIkQ,KAAK,CAAC5K,IAAI,EAAE,CAAA;AACpD;;ACFO,SAAS0H,OAAKA,CAACkD,KAAK,EAAE;AAC3B,EAAA,OAAOA,KAAK,CAACjH,KAAK,IAAIiH,KAAK,CAACyzB,WAAW,CAAA;AACzC;;ACFA;AAKO,MAAMz/B,KAAG,GAAG,OAAO,CAAA;AAOnB,MAAMqJ,SAAO,GAAG;AACrB,EAAA,aAAa,EAAE;IACbP,KAAK,EAAE42B,OAAW;AAClBnvB,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,QAAQ;AAClBI,MAAAA,SAAS,EAAGL,KAAK,IAAKA,KAAK,KAAK,EAAA;AAClC,KAAA;GACD;AACD,EAAA,wBAAwB,EAAE;IACxBlD,KAAK,EAAE42B,OAAW;AAClBnvB,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,QAAQ;AAClBI,MAAAA,SAAS,EAAE,OAAA;AACb,KAAA;GACD;AACD,EAAA,QAAQ,EAAE;IACRvD,KAAK,EAAE42B,OAAW;AAClBnvB,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,WAAW;AACrBI,MAAAA,SAAS,EAAGL,KAAK,IAAKA,KAAK,IAAI,IAAA;AACjC,KAAA;GACD;AACD,EAAA,YAAY,EAAE;IACZlD,KAAK,EAAE8iB,SAAU;AACjBrb,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,QAAQ;AAClBI,MAAAA,SAAS,EAAE,mCAAA;AACb,KAAA;GACD;AACD,EAAA,WAAW,EAAE;AACXkE,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,QAAQ;AAClBI,MAAAA,SAAS,EAAE,qEAAA;AACb,KAAA;GACD;AACD,EAAA,cAAc,EAAE;IACdvD,KAAK,EAAE62B,OAAY;AACnBpvB,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,eAAe;MACzBI,SAASA,CAACL,KAAK,EAAE;AACf,QAAA,OAAO,OAAO4zB,MAAM,KAAK,WAAW,IAAI5zB,KAAK,YAAY4zB,MAAM,CAAA;AACjE,OAAA;AACF,KAAA;GACD;AACD,EAAA,YAAY,EAAE;IACZ92B,KAAK,EAAE1H,OAAU;AACjBmP,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,eAAe;MACzBI,SAASA,CAACL,KAAK,EAAE;AACf,QAAA,OAAO,OAAO6zB,WAAW,KAAK,WAAW,IAAI7zB,KAAK,YAAY6zB,WAAW,CAAA;AAC3E,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC;;ACjED;AAIA,SAASC,YAAYA,CAACpjB,MAAM,EAAE9c,KAAK,EAAEw6B,KAAK,EAAE;AAC1C,EAAA,OAAO1d,MAAM,IAAI9c,KAAK,GAAGw6B,KAAK,CAACv/B,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAA;AACvD,CAAA;AACA,SAASklC,aAAaA,CAACC,GAAG,EAAE/B,IAAI,EAAE;AAChC,EAAA,MAAMrzB,OAAO,GAAGD,KAAK,CAACC,OAAO,CAACo1B,GAAG,CAAC,CAAA;AAClC,EAAA,IAAIxmC,OAAO,CAAA;AACX,EAAA,IAAIoR,OAAO,EAAE;AACXpR,IAAAA,OAAO,GAAGwmC,GAAG,CAACt9B,GAAG,CAAEG,KAAK,IAAKo9B,YAAY,CAACp9B,KAAK,EAAEo7B,IAAI,CAAC,CAAC,CAAA;AACzD,GAAC,MAAM;AACLzkC,IAAAA,OAAO,GAAGiE,MAAM,CAACC,IAAI,CAACsiC,GAAG,CAAC,CACvB57B,MAAM,CAAEsL,IAAI,IAAK7G,IAAI,CAACM,SAAS,CAAC62B,GAAG,CAACtwB,IAAI,CAAC,CAAC,CAAC,CAC3ChN,GAAG,CAAEgN,IAAI,IAAM,CAAA,CAAA,EAAGA,IAAK,CAAKuwB,GAAAA,EAAAA,YAAY,CAACD,GAAG,CAACtwB,IAAI,CAAC,EAAEuuB,IAAI,CAAE,EAAC,CAAC,CAAA;AACjE,GAAA;EACAzkC,OAAO,GAAGA,OAAO,CAACkJ,GAAG,CAACo9B,YAAY,CAAC,CAACp9B,GAAG,CAAEG,KAAK,IAAKo7B,IAAI,CAACG,QAAQ,CAACphC,IAAI,CAAC6F,KAAK,CAAC,CAAC,CAAA;AAC7ErJ,EAAAA,OAAO,GAAGykC,IAAI,CAACr5B,IAAI,CAAC5H,IAAI,CAACxD,OAAO,CAACwD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;EAC1C,OAAO4N,OAAO,GAAI,CAAGpR,CAAAA,EAAAA,OAAQ,GAAE,GAAI,CAAA,CAAA,EAAGA,OAAQ,CAAE,CAAA,CAAA,CAAA;AAClD,CAAA;AACA,SAASymC,YAAYA,CAACD,GAAG,EAAE/B,IAAI,EAAE;EAC/B,IAAI,OAAO+B,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,EAAE;AAC3C,IAAA,IAAIA,GAAG,CAACnlC,MAAM,KAAK,CAAC,EAAE;AACpB,MAAA,OAAO,IAAI,CAAA;AACb,KAAC,MAAM,IAAI4C,MAAM,CAACC,IAAI,CAACsiC,GAAG,CAAC,CAACnlC,MAAM,KAAK,CAAC,EAAE;AACxC,MAAA,OAAO,IAAI,CAAA;AACb,KAAC,MAAM;AACL,MAAA,OAAOklC,aAAa,CAACC,GAAG,EAAE/B,IAAI,CAAC,CAAA;AACjC,KAAA;AACF,GAAC,MAAM;AACL,IAAA,OAAOp1B,IAAI,CAACM,SAAS,CAAC62B,GAAG,CAAC,CAAA;AAC5B,GAAA;AACF,CAAA;AACA,SAASE,OAAOA,CAACF,GAAG,EAAE/B,IAAI,EAAE;AAC1B,EAAA,IAAIzkC,OAAO,GAAGwmC,GAAG,CAACt9B,GAAG,CAAEG,KAAK,IAAKk9B,aAAa,CAACl9B,KAAK,EAAEo7B,IAAI,CAAC,CAAC,CAAA;EAC5DzkC,OAAO,GAAGA,OAAO,CAACkJ,GAAG,CAACo9B,YAAY,CAAC,CAACp9B,GAAG,CAAEG,KAAK,IAAKo7B,IAAI,CAACp7B,KAAK,CAAC7F,IAAI,CAAC6F,KAAK,CAAC,CAAC,CAAA;AAC1ErJ,EAAAA,OAAO,GAAGA,OAAO,CAACwD,IAAI,CAAC,EAAE,CAAC,CAAA;EAC1B,OAAOihC,IAAI,CAACE,qBAAqB,CAACnhC,IAAI,CAAE,CAAA,CAAA,EAAGxD,OAAQ,CAAA,CAAA,CAAE,CAAC,CAAA;AACxD,CAAA;AAIA,WAAe;EACboE,IAAIA,CAACA,IAAI,EAAE;IAAEiH,IAAI;IAAEzH,MAAM,GAAGyH,IAAI,IAAI,MAAM;AAAEkS,IAAAA,OAAO,GAAG,OAAA;GAAS,GAAG,EAAE,EAAE;IACpE,IAAIA,OAAO,GAAG,OAAO,EAAE;AACrBnZ,MAAAA,IAAI,GAAGo+B,YAAiB,CAACp+B,IAAI,CAAC,CAAA;AAChC,KAAA;IACA,IAAIR,MAAM,KAAK,QAAQ,EAAE;AACvB,MAAA,OAAO4+B,QAAa,CAACp+B,IAAI,CAAC,CAAA;AAC5B,KAAC,MAAM,IAAIR,MAAM,KAAK,MAAM,EAAE;MAC5B,OAAOyL,IAAI,CAACM,SAAS,CAACvL,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACtC,KAAC,MAAM;AACLsN,MAAAA,MAAM,CAACi1B,IAAI,CACT,QAAQ,EACR,sHACF,CAAC,CAAA;AACD,MAAA,OAAOD,OAAO,CAACtiC,IAAI,EAAEL,KAAgB,CAACH,MAAM,CAAC,CAAC,CAAA;AAChD,KAAA;GACD;EACDgjC,MAAMA,CAACxiC,IAAI,EAAE;AAAEmZ,IAAAA,OAAO,GAAG,OAAA;GAAS,GAAG,EAAE,EAAE;IACvC,IAAIA,OAAO,GAAG,OAAO,EAAE;AACrBnZ,MAAAA,IAAI,GAAGo+B,YAAiB,CAACp+B,IAAI,CAAC,CAAA;AAChC,KAAA;AACA,IAAA,OAAOA,IAAI,CAAC8E,GAAG,CAAEG,KAAK,IAAKgG,IAAI,CAACM,SAAS,CAACtG,KAAK,CAAC,CAAC,CAAC7F,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9D,GAAA;AACF,CAAC;;AChED,eAAeS,MAAM,CAAC6M,MAAM,CAAC,EAAE,EAAEshB,IAAI,EAAEnxB,KAAK,CAAC;;ACC7C8C,GAAW,CAACyC,KAAG,EAAE;SACfgM,SAAK;AACL/I,UAAAA,QAAAA;AACF,CAAC,CAAC;;ACNF;AAGA,SAASo9B,SAASA,CAACC,MAAM,EAAE;EACzB,MAAM;IAAEC,SAAS;IAAEC,QAAQ;IAAEC,SAAS,EAAEtpB,KAAK,GAAGopB,SAAS;IAAEG,QAAQ,EAAEvgC,MAAM,GAAGqgC,QAAAA;AAAS,GAAC,GAAGF,MAAM,CAAA;EACjG,IAAInpB,KAAK,IAAIhX,MAAM,EAAE;IACnB,OAAO;MACLgX,KAAK;AACLhX,MAAAA,MAAAA;KACD,CAAA;AACH,GAAC,MAAM,IAAImgC,MAAM,CAAC71B,IAAI,EAAE;AACtB,IAAA,OAAO+M,OAAS,CAAC8oB,MAAM,CAAC71B,IAAI,CAAC,CAAA;AAC/B,GAAA;AACF,CAAA;AACA,MAAMk2B,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AACpD,MAAMC,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAA;AACnC,SAASC,OAAOA,CAAC70B,KAAK,EAAE20B,WAAW,EAAE;EACnC,MAAM19B,MAAM,GAAG,EAAE,CAAA;AACjB,EAAA,KAAK,MAAMyM,IAAI,IAAI1D,KAAK,EAAE;AACxB,IAAA,MAAM80B,aAAa,GAAGpxB,IAAI,CAACuQ,WAAW,EAAE,CAAA;AACxC,IAAA,IAAI0gB,WAAW,CAAC9iC,QAAQ,CAACijC,aAAa,CAAC,EAAE;AACvC79B,MAAAA,MAAM,CAAC69B,aAAa,CAAC,GAAG90B,KAAK,CAAC0D,IAAI,CAAC,CAAA;AACrC,KAAA;AACF,GAAA;EACA,IAAI1D,KAAK,CAAC+0B,UAAU,EAAE;AACpB,IAAA,KAAK,IAAI;MAAE1mC,EAAE;AAAEwK,MAAAA,IAAI,GAAG,EAAA;AAAG,KAAC,IAAImH,KAAK,CAAC+0B,UAAU,EAAE;AAC9Cl8B,MAAAA,IAAI,GAAGA,IAAI,CAACob,WAAW,EAAE,CAAA;AACzB,MAAA,IAAI0gB,WAAW,CAAC9iC,QAAQ,CAACgH,IAAI,CAAC,EAAE;AAC9B5B,QAAAA,MAAM,CAAC4B,IAAI,CAAC,GAAGxK,EAAE,CAAA;AACnB,OAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,OAAO4I,MAAM,CAAA;AACf,CAAA;AACA,MAAM+9B,OAAO,GAAG;AACdrvB,EAAAA,OAAO,EAAE,SAAS;AAClBpZ,EAAAA,IAAI,EAAE,MAAM;AACZ0oC,EAAAA,OAAO,EAAE,MAAM;AACfC,EAAAA,WAAW,EAAE,MAAM;AACnBC,EAAAA,aAAa,EAAE,QAAQ;AACvBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,YAAY,EAAE,SAAS;AACvBC,EAAAA,UAAU,EAAE,kBAAkB;AAC9BC,EAAAA,aAAa,EAAE,kBAAkB;AACjCC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,IAAI,EAAE,UAAU;AAChBC,EAAAA,MAAM,EAAE,SAAS;AACjB9uB,EAAAA,MAAM,EAAE,QAAQ;AAChB+uB,EAAAA,SAAS,EAAE,QAAQ;AACnBC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,WAAW,EAAE,YAAA;AACf,CAAC,CAAA;AACD,SAASC,wBAAwBA,GAAG;EAClC,OAAO;AACLj9B,IAAAA,IAAI,EAAE,iBAAA;GACP,CAAA;AACH,CAAA;AACA,SAASk9B,YAAYA,CAAC/1B,KAAK,EAAE;AAC3B,EAAA,MAAM/I,MAAM,GAAG;IACb4B,IAAI,EAAEm8B,OAAO,CAACh1B,KAAK,CAACnH,IAAI,CAAC,IAAI,UAAU;IACvCiS,KAAK,EAAE9K,KAAK,CAAC8K,KAAAA;GACd,CAAA;EACD,IAAI9K,KAAK,CAAC/L,MAAM,EAAE;AAChBgD,IAAAA,MAAM,CAAChD,MAAM,GAAG+L,KAAK,CAAC/L,MAAM,CAACyC,GAAG,CAAC29B,SAAS,CAAC,CAACj8B,MAAM,CAACwT,OAAO,CAAC,CAAA;AAC7D,GAAA;EACA,IAAI5L,KAAK,CAACmI,MAAM,EAAE;AAChBlR,IAAAA,MAAM,CAACkR,MAAM,GAAGnI,KAAK,CAACmI,MAAM,CAACzR,GAAG,CAAC29B,SAAS,CAAC,CAACj8B,MAAM,CAACwT,OAAO,CAAC,CAAA;AAC7D,GAAA;EACA,IAAI5L,KAAK,CAACg2B,QAAQ,EAAE;IAClB,IAAIh2B,KAAK,CAAC/L,MAAM,EAAE;AAChBgD,MAAAA,MAAM,CAAC,iBAAiB,CAAC,GAAGA,MAAM,CAAChD,MAAM,CAAA;AAC3C,KAAA;AACAgD,IAAAA,MAAM,CAAChD,MAAM,GAAG+L,KAAK,CAACg2B,QAAQ,CAACt/B,GAAG,CAAC29B,SAAS,CAAC,CAACj8B,MAAM,CAACwT,OAAO,CAAC,CAAA;AAC/D,GAAA;EACA,IAAIjN,KAAK,CAACC,OAAO,CAACoB,KAAK,CAACi2B,QAAQ,CAAC,EAAE;IACjCh/B,MAAM,CAACmT,OAAO,GAAGpK,KAAK,CAACi2B,QAAQ,CAACjlC,IAAI,EAAE,CAAA;AACxC,GAAC,MAAM,IAAIgP,KAAK,CAACi2B,QAAQ,EAAE;AACzBh/B,IAAAA,MAAM,CAACmT,OAAO,GAAGpK,KAAK,CAACi2B,QAAQ,CAAA;AACjC,GAAA;EACA,IAAIj2B,KAAK,CAACyK,SAAS,EAAE;IACnBxT,MAAM,CAACwT,SAAS,GAAGzK,KAAK,CAACyK,SAAS,CAAChM,IAAI,IAAIuB,KAAK,CAACyK,SAAS,CAAA;AAC5D,GAAA;EACA,IAAIzK,KAAK,CAACkM,IAAI,IAAIlM,KAAK,CAACkM,IAAI,CAACgqB,SAAS,EAAE;IACtCj/B,MAAM,CAACU,MAAM,GAAGw+B,OAAS,CAACn2B,KAAK,CAACkM,IAAI,CAACgqB,SAAS,CAAC,CAAA;AACjD,GAAC,MAAM,IAAIl2B,KAAK,CAACpI,IAAI,EAAE;IACrBX,MAAM,CAACU,MAAM,GAAG;AACd,MAAA,YAAY,EAAE,CAAC,CAAC,CAACqI,KAAK,CAACpI,IAAI,CAAC,CAAA;KAC7B,CAAA;AACH,GAAA;EACA,IAAIoI,KAAK,CAACkM,IAAI,IAAIlM,KAAK,CAACkM,IAAI,CAAClD,SAAS,EAAE;IACtC/R,MAAM,CAAC+R,SAAS,GAAGmtB,OAAS,CAACn2B,KAAK,CAACkM,IAAI,CAAClD,SAAS,CAAC,CAAA;AACpD,GAAA;EACA,IAAIhJ,KAAK,CAACo2B,OAAO,EAAE;AACjB,IAAA,MAAMA,OAAO,GAAGp2B,KAAK,CAACo2B,OAAO,CAAA;IAC7B,IAAIA,OAAO,CAAC33B,IAAI,EAAE;AAChBxH,MAAAA,MAAM,CAAC,iBAAiB,CAAC,GAAGm/B,OAAO,CAAC33B,IAAI,CAAA;AAC1C,KAAA;IACA,IAAI23B,OAAO,CAAC/oC,MAAM,EAAE;AAClB4J,MAAAA,MAAM,CAAC5J,MAAM,GAAG+oC,OAAO,CAAC/oC,MAAM,CAAA;AAChC,KAAA;IACA,IAAI+oC,OAAO,CAACxpC,KAAK,EAAE;AACjBqK,MAAAA,MAAM,CAACrK,KAAK,GAAGwpC,OAAO,CAACxpC,KAAK,CAAA;AAC9B,KAAA;IACA6E,MAAM,CAAC6M,MAAM,CAACrH,MAAM,EAAE49B,OAAO,CAACuB,OAAO,EAAExB,kBAAkB,CAAC,CAAC,CAAA;IAC3D,IAAIwB,OAAO,CAACC,SAAS,EAAE;AACrBp/B,MAAAA,MAAM,CAAC,YAAY,CAAC,GAAGm/B,OAAO,CAACC,SAAS,CAAA;AAC1C,KAAA;IACA,IAAID,OAAO,CAACE,KAAK,EAAE;AACjBr/B,MAAAA,MAAM,CAACjK,IAAI,GAAGopC,OAAO,CAACE,KAAK,CAAC/nC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAC/C,MAAM,IAAI6nC,OAAO,CAACC,SAAS,IAAID,OAAO,CAACG,QAAQ,EAAE;MAChDt/B,MAAM,CAACjK,IAAI,GAAGopC,OAAO,CAACC,SAAS,GAAG,GAAG,GAAGD,OAAO,CAACG,QAAQ,CAAA;AAC1D,KAAA;AACF,GAAA;AACA,EAAA,IAAIv2B,KAAK,CAACw2B,IAAI,IAAI,OAAOx2B,KAAK,CAACw2B,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;IACnDv/B,MAAM,CAAC3G,GAAG,GAAG0P,KAAK,CAACw2B,IAAI,CAAC,CAAC,CAAC,CAACnmC,GAAG,CAAA;AAChC,GAAA;EACAoB,MAAM,CAAC6M,MAAM,CAACrH,MAAM,EAAE49B,OAAO,CAAC70B,KAAK,EAAE20B,WAAW,CAAC,CAAC,CAAA;EAClD,IAAI30B,KAAK,CAACy2B,GAAG,EAAE;AACbx/B,IAAAA,MAAM,CAAC5I,EAAE,GAAG2R,KAAK,CAACy2B,GAAG,CAAA;AACvB,GAAC,MAAM,IAAIx/B,MAAM,CAAC6S,GAAG,EAAE;AACrB7S,IAAAA,MAAM,CAAC5I,EAAE,GAAG4I,MAAM,CAAC6S,GAAG,CAAA;AACxB,GAAA;AACA,EAAA,OAAO7S,MAAM,CAAA;AACf,CAAA;AACA,MAAMy/B,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAa9kC,IAAI,EAAE;AACvC,EAAA,OAAOH,MAAM,CAAC6M,MAAM,CAACy3B,YAAY,CAACnkC,IAAI,CAAC,EAAEkkC,wBAAwB,CAAK,CAAC,CAAC,CAAA;AAC1E,CAAC,CAAA;AACD,MAAMa,YAAY,GAAG,SAAfA,YAAYA,CAAa/kC,IAAI,EAAE;EACnC,OAAOmkC,YAAY,CAACnkC,IAAI,CAAC,CAAA;AAC3B,CAAC;;AC/HD,MAAMglC,YAAY,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,cAAc,CAAC,CAAA;AACtE,MAAMC,gBAAgB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;AACnF,MAAM7iC,KAAG,GAAG,UAAU,CAAA;AAItB,MAAMqJ,SAAO,GAAG;AACd,EAAA,oCAAoC,EAAE;IACpCP,KAAK,EAAE8iB,gBAAsB;AAC7Brb,IAAAA,SAAS,EAAE;AACTzB,MAAAA,kBAAkB,EAAE;AAClBU,QAAAA,KAAK,EAAE,MAAM;QACbzK,KAAKA,CAAC+9B,KAAK,EAAE;UACX,OAAOF,YAAY,CAACnzB,IAAI,CAAE+yB,IAAI,IAAKM,KAAK,CAAC5jC,IAAI,CAAC,CAAC;AAAE2F,YAAAA,IAAAA;AAAK,WAAC,KAAKA,IAAI,KAAK29B,IAAI,CAAC,CAAC,CAAA;AAC7E,SAAA;OACD;AACDh2B,MAAAA,OAAO,EAAE,wBAAA;AACX,KAAA;GACD;AACD,EAAA,wBAAwB,EAAE;IACxB1D,KAAK,EAAE8iB,YAAW;AAClBrb,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,cAAc;AACxB6C,MAAAA,kBAAkB,EAAE,CAClB;AACEU,QAAAA,KAAK,EAAE,OAAA;AACT,OAAC,EACD;AACEA,QAAAA,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC3BvV,QAAAA,KAAK,EAAE,MAAM;QACb8K,KAAKA,CAACg+B,OAAO,EAAE;UACb,OACEp4B,KAAK,CAACC,OAAO,CAACm4B,OAAO,CAAC,IACtBA,OAAO,CAAC,CAAC,CAAC,IACVF,gBAAgB,CAACpzB,IAAI,CAAEkJ,KAAK,IAAKA,KAAK,IAAIoqB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzD,SAAA;OACD,CAAA;AAEL,KAAA;GACD;AACD,EAAA,4BAA4B,EAAE;IAC5Bj6B,KAAKA,CAACiJ,UAAU,EAAE;MAChB,OAAOA,UAAU,CAACixB,OAAO,CAAA;KAC1B;AACDzyB,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,cAAc;AACxB6C,MAAAA,kBAAkB,EAAE,CAClB;AACEU,QAAAA,KAAK,EAAE,UAAU;QACjBzK,KAAKA,CAACk+B,QAAQ,EAAE;UACd,OAAO,YAAY,IAAIA,QAAQ,CAAA;AACjC,SAAA;AACF,OAAC,EACD;AACEzzB,QAAAA,KAAK,EAAE,SAAS;QAChBzK,KAAKA,CAACi+B,OAAO,EAAE;AACb,UAAA,OAAOr4B,KAAK,CAACC,OAAO,CAACo4B,OAAO,CAAC,CAAA;AAC/B,SAAA;OACD,CAAA;AAEL,KAAA;AACF,GAAA;AACF,CAAC,CAAA;AACDzlC,GAAW,CAACyC,KAAG,EAAE;AACfgM,EAAAA,KAAK,EAAE3C,SAAAA;AACT,CAAC,CAAC;;;ECpED,CAAShM,UAAAA,IAAI,EAAE6lC,OAAO,EAAE;IAGhB,IAAkC7nB,MAAM,CAACC,OAAO,EAAE;AACvDD,MAAAA,MAAA,CAAAC,OAAA,GAAiB4nB,OAAO,EAAE,CAAA;AAC9B,KAAG,MAAM;AACL7lC,MAAAA,IAAI,CAAC8lC,GAAG,GAAGD,OAAO,EAAE,CAAA;AACrB,KAAA;AACH,GAAC,EAACE,cAAI,EAAE,YAAW;;AAGjB,IAAA,IAAIr2B,cAAc,GAAGtP,MAAM,CAACqP,SAAS,CAACC,cAAc,CAAA;AACpD,IAAA,IAAI9O,QAAQ,GAAGR,MAAM,CAACqP,SAAS,CAAC7O,QAAQ,CAAA;IACxC,IAAIolC,SAAS,GAAG,OAAO,IAAI30B,MAAM,EAAE,CAAC40B,MAAM,KAAK,SAAS,CAAA;;AAE1D;;IAEE,SAASC,QAAQA,CAACxyB,CAAC,EAAE;MAAE,OAAOA,CAAC,IAAI9S,QAAQ,CAAC+O,IAAI,CAAC+D,CAAC,CAAC,KAAK,iBAAiB,CAAA;AAAE,KAAA;IAC3E,SAASyyB,QAAQA,CAACzyB,CAAC,EAAE;AAAE,MAAA,OAAOA,CAAC,IAAI,OAAOA,CAAC,KAAK,QAAQ,IAAI,CAACwyB,QAAQ,CAACxyB,CAAC,CAAC,IAAI,CAACpG,KAAK,CAACC,OAAO,CAACmG,CAAC,CAAC,CAAA;AAAE,KAAA;IAE/F,SAAS0yB,QAAQA,CAACtnB,CAAC,EAAE;AACnB,MAAA,OAAOA,CAAC,CAAC5hB,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;AACnD,KAAA;IACD,SAASmpC,QAAQA,CAACvnB,CAAC,EAAE;MACnB,IAAIwnB,EAAE,GAAG,IAAIj1B,MAAM,CAAC,GAAG,GAAGyN,CAAC,CAAC,CAAA;MAC5B,OAAOwnB,EAAE,CAACzpC,IAAI,CAAC,EAAE,CAAC,CAACW,MAAM,GAAG,CAAC,CAAA;AAC9B,KAAA;IACD,SAAS+oC,SAASA,CAACznB,CAAC,EAAE;AACpB,MAAA,OAAO,GAAG,GAAGA,CAAC,GAAG,GAAG,CAAA;AACrB,KAAA;IACD,SAAS0nB,OAAOA,CAACC,OAAO,EAAE;AACxB,MAAA,IAAI,CAACA,OAAO,CAACjpC,MAAM,EAAE,OAAO,MAAM,CAAA;MAClC,IAAI6F,MAAM,GAAIojC,OAAO,CAACphC,GAAG,CAAC,UAASyZ,CAAC,EAAE;AACpC,QAAA,OAAO,KAAK,GAAGA,CAAC,GAAG,GAAG,CAAA;AAC5B,OAAK,CAAC,CAACnf,IAAI,CAAC,GAAG,CAAC,CAAA;AACZ,MAAA,OAAO,KAAK,GAAG0D,MAAM,GAAG,GAAG,CAAA;AAC5B,KAAA;IAED,SAASqjC,eAAeA,CAACv2B,GAAG,EAAE;AAC5B,MAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;AAC3B,QAAA,OAAO,KAAK,GAAGi2B,QAAQ,CAACj2B,GAAG,CAAC,GAAG,GAAG,CAAA;AAExC,OAAK,MAAM,IAAI+1B,QAAQ,CAAC/1B,GAAG,CAAC,EAAE;AAC9B;QACM,IAAIA,GAAG,CAACw2B,UAAU,EAAE,MAAM,IAAIhoC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACjE,IAAIwR,GAAG,CAACugB,MAAM,EAAE,MAAM,IAAI/xB,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC5D,IAAIwR,GAAG,CAAC81B,MAAM,EAAE,MAAM,IAAItnC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC5D,IAAIwR,GAAG,CAACy2B,SAAS,EAAE,MAAM,IAAIjoC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC/D,OAAOwR,GAAG,CAAC9M,MAAM,CAAA;AAEvB,OAAK,MAAM;AACL,QAAA,MAAM,IAAI1E,KAAK,CAAC,iBAAiB,GAAGwR,GAAG,CAAC,CAAA;AACzC,OAAA;AACF,KAAA;AAED,IAAA,SAAS02B,GAAGA,CAAC/nB,CAAC,EAAEthB,MAAM,EAAE;AACtB,MAAA,IAAIshB,CAAC,CAACthB,MAAM,GAAGA,MAAM,EAAE;AACrB,QAAA,OAAOshB,CAAC,CAAA;AACT,OAAA;AACD,MAAA,OAAOxR,KAAK,CAAC9P,MAAM,GAAGshB,CAAC,CAACthB,MAAM,GAAG,CAAC,CAAC,CAACmC,IAAI,CAAC,GAAG,CAAC,GAAGmf,CAAC,CAAA;AAClD,KAAA;AAED,IAAA,SAASgoB,UAAUA,CAACznB,MAAM,EAAE0nB,QAAQ,EAAE;AACpC,MAAA,IAAIC,QAAQ,GAAG3nB,MAAM,CAAC7hB,MAAM,CAAA;MAC5B,IAAIypC,UAAU,GAAG,CAAC,CAAA;AAClB,MAAA,OAAO,IAAI,EAAE;QACX,IAAIp/B,GAAG,GAAGwX,MAAM,CAAC6nB,WAAW,CAAC,IAAI,EAAEF,QAAQ,GAAG,CAAC,CAAC,CAAA;AAChD,QAAA,IAAIn/B,GAAG,KAAK,CAAC,CAAC,EAAE;AACd,UAAA,MAAA;AACR,SAAO,MAAM;AACLo/B,UAAAA,UAAU,EAAE,CAAA;AACb,SAAA;AACDD,QAAAA,QAAQ,GAAGn/B,GAAG,CAAA;QACd,IAAIo/B,UAAU,KAAKF,QAAQ,EAAE;AAC3B,UAAA,MAAA;AACD,SAAA;QACD,IAAIC,QAAQ,KAAK,CAAC,EAAE;AAClB,UAAA,MAAA;AACD,SAAA;AACF,OAAA;MACD,IAAIG,aAAa,GACfF,UAAU,GAAGF,QAAQ,GACrB,CAAC,GACDC,QAAQ,GAAG,CAAC,CAAA;MACd,OAAO3nB,MAAM,CAAC9hB,SAAS,CAAC4pC,aAAa,CAAC,CAACxqC,KAAK,CAAC,IAAI,CAAC,CAAA;AACnD,KAAA;IAED,SAASyqC,aAAaA,CAAC93B,MAAM,EAAE;AAC7B,MAAA,IAAIjP,IAAI,GAAGD,MAAM,CAAC+d,mBAAmB,CAAC7O,MAAM,CAAC,CAAA;MAC7C,IAAI8Q,MAAM,GAAG,EAAE,CAAA;AACf,MAAA,KAAK,IAAI1gB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAC7C,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACpC,QAAA,IAAIkF,GAAG,GAAGvE,IAAI,CAACX,CAAC,CAAC,CAAA;AACjB,QAAA,IAAIyN,KAAK,GAAGmC,MAAM,CAAC1K,GAAG,CAAC,CAAA;AACvB,QAAA,IAAIi2B,KAAK,GAAG,EAAE,CAAC3wB,MAAM,CAACiD,KAAK,CAAC,CAAA;QAC5B,IAAIvI,GAAG,KAAK,SAAS,EAAE;AACrB,UAAA,KAAK,IAAIyiC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxM,KAAK,CAACr9B,MAAM,EAAE6pC,CAAC,EAAE,EAAE;YACrCjnB,MAAM,CAACviB,IAAI,CAAC;cAACypC,OAAO,EAAEzM,KAAK,CAACwM,CAAC,CAAA;AAAC,aAAC,CAAC,CAAA;AACjC,WAAA;AACD,UAAA,SAAA;AACD,SAAA;QACD,IAAIzqC,KAAK,GAAG,EAAE,CAAA;AACdi+B,QAAAA,KAAK,CAACt1B,OAAO,CAAC,UAASk2B,IAAI,EAAE;AAC3B,UAAA,IAAI0K,QAAQ,CAAC1K,IAAI,CAAC,EAAE;AAClB,YAAA,IAAI7+B,KAAK,CAACY,MAAM,EAAE4iB,MAAM,CAACviB,IAAI,CAAC0pC,WAAW,CAAC3iC,GAAG,EAAEhI,KAAK,CAAC,CAAC,CAAA;YACtDwjB,MAAM,CAACviB,IAAI,CAAC0pC,WAAW,CAAC3iC,GAAG,EAAE62B,IAAI,CAAC,CAAC,CAAA;AACnC7+B,YAAAA,KAAK,GAAG,EAAE,CAAA;AACpB,WAAS,MAAM;AACLA,YAAAA,KAAK,CAACiB,IAAI,CAAC49B,IAAI,CAAC,CAAA;AACjB,WAAA;AACT,SAAO,CAAC,CAAA;AACF,QAAA,IAAI7+B,KAAK,CAACY,MAAM,EAAE4iB,MAAM,CAACviB,IAAI,CAAC0pC,WAAW,CAAC3iC,GAAG,EAAEhI,KAAK,CAAC,CAAC,CAAA;AACvD,OAAA;AACD,MAAA,OAAOwjB,MAAM,CAAA;AACd,KAAA;IAED,SAASonB,YAAYA,CAACzK,KAAK,EAAE;MAC3B,IAAI3c,MAAM,GAAG,EAAE,CAAA;AACf,MAAA,KAAK,IAAI1gB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGq9B,KAAK,CAACv/B,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACrC,QAAA,IAAIyQ,GAAG,GAAG4sB,KAAK,CAACr9B,CAAC,CAAC,CAAA;QAClB,IAAIyQ,GAAG,CAACm3B,OAAO,EAAE;UACf,IAAIA,OAAO,GAAG,EAAE,CAACp9B,MAAM,CAACiG,GAAG,CAACm3B,OAAO,CAAC,CAAA;AACpC,UAAA,KAAK,IAAID,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGC,OAAO,CAAC9pC,MAAM,EAAE6pC,CAAC,EAAE,EAAE;YACvCjnB,MAAM,CAACviB,IAAI,CAAC;cAACypC,OAAO,EAAEA,OAAO,CAACD,CAAC,CAAA;AAAC,aAAC,CAAC,CAAA;AACnC,WAAA;AACD,UAAA,SAAA;AACD,SAAA;AACD,QAAA,IAAI,CAACl3B,GAAG,CAAC3I,IAAI,EAAE;UACb,MAAM,IAAI7I,KAAK,CAAC,oBAAoB,GAAG6M,IAAI,CAACM,SAAS,CAACqE,GAAG,CAAC,CAAC,CAAA;AAC5D,SAAA;QACDiQ,MAAM,CAACviB,IAAI,CAAC0pC,WAAW,CAACp3B,GAAG,CAAC3I,IAAI,EAAE2I,GAAG,CAAC,CAAC,CAAA;AACxC,OAAA;AACD,MAAA,OAAOiQ,MAAM,CAAA;AACd,KAAA;AAED,IAAA,SAASmnB,WAAWA,CAAC//B,IAAI,EAAE2I,GAAG,EAAE;AAC9B,MAAA,IAAI,CAACg2B,QAAQ,CAACh2B,GAAG,CAAC,EAAE;AAClBA,QAAAA,GAAG,GAAG;AAAEvT,UAAAA,KAAK,EAAEuT,GAAAA;SAAK,CAAA;AACrB,OAAA;MACD,IAAIA,GAAG,CAACm3B,OAAO,EAAE;AACf,QAAA,MAAM,IAAI3oC,KAAK,CAAC,2CAA2C,CAAC,CAAA;AAC7D,OAAA;;AAEL;AACI,MAAA,IAAIU,OAAO,GAAG;AACZooC,QAAAA,WAAW,EAAEjgC,IAAI;QACjBy/B,UAAU,EAAE,CAAC,CAAC92B,GAAG,CAACzR,KAAK,IAAI,CAAC,CAACyR,GAAG,CAACu3B,QAAQ;AACzCh9B,QAAAA,GAAG,EAAE,KAAK;AACV2nB,QAAAA,IAAI,EAAE,IAAI;AACVx0B,QAAAA,IAAI,EAAE,IAAI;AACVa,QAAAA,KAAK,EAAE,KAAK;AACZgpC,QAAAA,QAAQ,EAAE,KAAK;AACfhgC,QAAAA,KAAK,EAAE,IAAI;AACXF,QAAAA,IAAI,EAAE,IAAI;AACVmgC,QAAAA,WAAW,EAAE,KAAA;OACd,CAAA;;AAEL;AACI,MAAA,KAAK,IAAI/iC,GAAG,IAAIuL,GAAG,EAAE;QACnB,IAAIT,cAAc,CAACC,IAAI,CAACQ,GAAG,EAAEvL,GAAG,CAAC,EAAE;AACjCvF,UAAAA,OAAO,CAACuF,GAAG,CAAC,GAAGuL,GAAG,CAACvL,GAAG,CAAC,CAAA;AACxB,SAAA;AACF,OAAA;;AAEL;AACI,MAAA,IAAI,OAAOvF,OAAO,CAACmI,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAKnI,OAAO,CAACmI,IAAI,EAAE;AAC7D,QAAA,MAAM,IAAI7I,KAAK,CAAC,2CAA2C,GAAGU,OAAO,CAACmI,IAAI,GAAG,eAAe,GAAGA,IAAI,GAAG,IAAI,CAAC,CAAA;AAC5G,OAAA;;AAEL;AACI,MAAA,IAAI5K,KAAK,GAAGyC,OAAO,CAACzC,KAAK,CAAA;AACzByC,MAAAA,OAAO,CAACzC,KAAK,GAAG0Q,KAAK,CAACC,OAAO,CAAC3Q,KAAK,CAAC,GAAGA,KAAK,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EAAE,CAAA;MACnEyC,OAAO,CAACzC,KAAK,CAAC+yB,IAAI,CAAC,UAAS9R,CAAC,EAAEC,CAAC,EAAE;AAChC,QAAA,OAAOooB,QAAQ,CAACroB,CAAC,CAAC,IAAIqoB,QAAQ,CAACpoB,CAAC,CAAC,GAAG,CAAC,GAC9BooB,QAAQ,CAACpoB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGooB,QAAQ,CAACroB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGC,CAAC,CAACtgB,MAAM,GAAGqgB,CAAC,CAACrgB,MAAM,CAAA;AACtE,OAAK,CAAC,CAAA;AACF,MAAA,OAAO6B,OAAO,CAAA;AACf,KAAA;IAED,SAASuoC,OAAOA,CAACC,IAAI,EAAE;AACrB,MAAA,OAAOv6B,KAAK,CAACC,OAAO,CAACs6B,IAAI,CAAC,GAAGL,YAAY,CAACK,IAAI,CAAC,GAAGT,aAAa,CAACS,IAAI,CAAC,CAAA;AACtE,KAAA;AAED,IAAA,IAAIC,gBAAgB,GAAGP,WAAW,CAAC,OAAO,EAAE;AAACN,MAAAA,UAAU,EAAE,IAAI;AAAEU,MAAAA,WAAW,EAAE,IAAA;AAAI,KAAC,CAAC,CAAA;AAClF,IAAA,SAASI,YAAYA,CAAClN,KAAK,EAAEmN,SAAS,EAAE;MACtC,IAAIC,SAAS,GAAG,IAAI,CAAA;AACpB,MAAA,IAAIC,IAAI,GAAG9nC,MAAM,CAACqqB,MAAM,CAAC,IAAI,CAAC,CAAA;MAC9B,IAAI0d,WAAW,GAAG,IAAI,CAAA;MACtB,IAAIC,WAAW,GAAG,IAAI,CAAA;MACtB,IAAInrC,MAAM,GAAG,EAAE,CAAA;MACf,IAAI6mB,KAAK,GAAG,EAAE,CAAA;;AAElB;AACI,MAAA,KAAK,IAAIpkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm7B,KAAK,CAACr9B,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACrC,QAAA,IAAIm7B,KAAK,CAACn7B,CAAC,CAAC,CAACgoC,QAAQ,EAAE;AACrBS,UAAAA,WAAW,GAAG,KAAK,CAAA;AACpB,SAAA;AACF,OAAA;AAED,MAAA,KAAK,IAAIzoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGm7B,KAAK,CAACr9B,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACrC,QAAA,IAAIL,OAAO,GAAGw7B,KAAK,CAACn7B,CAAC,CAAC,CAAA;QAEtB,IAAIL,OAAO,CAACioC,OAAO,EAAE;AAC3B;AACQ,UAAA,MAAM,IAAI3oC,KAAK,CAAC,gDAAgD,CAAC,CAAA;AAClE,SAAA;AAED,QAAA,IAAIU,OAAO,CAACX,KAAK,IAAIW,OAAO,CAACqoC,QAAQ,EAAE;AAC7C;AACQ,UAAA,IAAIO,SAAS,EAAE;YACb,IAAI,CAAC5oC,OAAO,CAACqoC,QAAQ,KAAK,CAACO,SAAS,CAACP,QAAQ,EAAE;cAC7C,MAAM,IAAI/oC,KAAK,CAAC,WAAW,IAAIU,OAAO,CAACqoC,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,GAAG,iCAAiC,GAAGroC,OAAO,CAACooC,WAAW,GAAG,IAAI,CAAC,CAAA;AACrJ,aAAW,MAAM;cACL,MAAM,IAAI9oC,KAAK,CAAC,wDAAwD,GAAGU,OAAO,CAACooC,WAAW,GAAG,IAAI,CAAC,CAAA;AACvG,aAAA;AACF,WAAA;AACDQ,UAAAA,SAAS,GAAG5oC,OAAO,CAAA;AACpB,SAAA;QAED,IAAIzC,KAAK,GAAGyC,OAAO,CAACzC,KAAK,CAACiE,KAAK,EAAE,CAAA;AACjC,QAAA,IAAIsnC,WAAW,EAAE;UACf,OAAOvrC,KAAK,CAACY,MAAM,IAAI,OAAOZ,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAIA,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,KAAK,CAAC,EAAE;AAC5E,YAAA,IAAI6qC,IAAI,GAAGzrC,KAAK,CAAC2rB,KAAK,EAAE,CAAA;YACxB2f,IAAI,CAACG,IAAI,CAAC1qB,UAAU,CAAC,CAAC,CAAC,CAAC,GAAGte,OAAO,CAAA;AACnC,WAAA;AACF,SAAA;;AAEP;QACM,IAAIA,OAAO,CAACqL,GAAG,IAAIrL,OAAO,CAACxB,IAAI,IAAIwB,OAAO,CAACgzB,IAAI,EAAE;UAC/C,IAAI,CAAC2V,SAAS,EAAE;YACd,MAAM,IAAIrpC,KAAK,CAAC,0EAA0E,GAAGU,OAAO,CAACooC,WAAW,GAAG,IAAI,CAAC,CAAA;AACzH,WAAA;UACD,IAAIpoC,OAAO,CAACqoC,QAAQ,EAAE;YACpB,MAAM,IAAI/oC,KAAK,CAAC,yEAAyE,GAAGU,OAAO,CAACooC,WAAW,GAAG,IAAI,CAAC,CAAA;AACxH,WAAA;AACF,SAAA;;AAEP;AACM,QAAA,IAAI7qC,KAAK,CAACY,MAAM,KAAK,CAAC,EAAE;AACtB,UAAA,SAAA;AACD,SAAA;AACD2qC,QAAAA,WAAW,GAAG,KAAK,CAAA;AAEnBlrC,QAAAA,MAAM,CAACY,IAAI,CAACwB,OAAO,CAAC,CAAA;;AAE1B;AACM,QAAA,KAAK,IAAIgoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGzqC,KAAK,CAACY,MAAM,EAAE6pC,CAAC,EAAE,EAAE;AACrC,UAAA,IAAIl3B,GAAG,GAAGvT,KAAK,CAACyqC,CAAC,CAAC,CAAA;AAClB,UAAA,IAAI,CAACnB,QAAQ,CAAC/1B,GAAG,CAAC,EAAE;AAClB,YAAA,SAAA;AACD,WAAA;UAED,IAAIi4B,WAAW,KAAK,IAAI,EAAE;YACxBA,WAAW,GAAGj4B,GAAG,CAACm4B,OAAO,CAAA;AACnC,WAAS,MAAM,IAAIF,WAAW,KAAKj4B,GAAG,CAACm4B,OAAO,IAAIjpC,OAAO,CAACqoC,QAAQ,KAAK,KAAK,EAAE;AACpE,YAAA,MAAM,IAAI/oC,KAAK,CAAC,oCAAoC,CAAC,CAAA;AACtD,WAAA;AACF,SAAA;;AAEP;QACM,IAAI4pC,GAAG,GAAG/B,OAAO,CAAC5pC,KAAK,CAACyI,GAAG,CAACqhC,eAAe,CAAC,CAAC,CAAA;;AAEnD;AACM,QAAA,IAAI8B,MAAM,GAAG,IAAIn3B,MAAM,CAACk3B,GAAG,CAAC,CAAA;AAC5B,QAAA,IAAIC,MAAM,CAAC/7B,IAAI,CAAC,EAAE,CAAC,EAAE;AACnB,UAAA,MAAM,IAAI9N,KAAK,CAAC,+BAA+B,GAAG6pC,MAAM,CAAC,CAAA;AAC1D,SAAA;AACD,QAAA,IAAIC,UAAU,GAAGpC,QAAQ,CAACkC,GAAG,CAAC,CAAA;QAC9B,IAAIE,UAAU,GAAG,CAAC,EAAE;UAClB,MAAM,IAAI9pC,KAAK,CAAC,6BAA6B,GAAG6pC,MAAM,GAAG,uBAAuB,CAAC,CAAA;AAClF,SAAA;;AAEP;QACM,IAAI,CAACnpC,OAAO,CAAC4nC,UAAU,IAAIuB,MAAM,CAAC/7B,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5C,UAAA,MAAM,IAAI9N,KAAK,CAAC,kCAAkC,GAAG6pC,MAAM,CAAC,CAAA;AAC7D,SAAA;;AAEP;AACM1kB,QAAAA,KAAK,CAACjmB,IAAI,CAAC0oC,SAAS,CAACgC,GAAG,CAAC,CAAC,CAAA;AAC3B,OAAA;;AAGL;AACA;AACA;AACA;AACA;AACI,MAAA,IAAIG,YAAY,GAAGT,SAAS,IAAIA,SAAS,CAACP,QAAQ,CAAA;MAClD,IAAIiB,KAAK,GAAG3C,SAAS,IAAI,CAAC0C,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;MACpD,IAAI3tC,MAAM,GAAGirC,SAAS,IAAI0C,YAAY,GAAG,EAAE,GAAG,GAAG,CAAA;AAEjD,MAAA,IAAIN,WAAW,KAAK,IAAI,EAAEO,KAAK,IAAI,GAAG,CAAA;AACtC,MAAA,IAAIC,QAAQ,GAAG,IAAIv3B,MAAM,CAACm1B,OAAO,CAAC1iB,KAAK,CAAC,GAAG/oB,MAAM,EAAE4tC,KAAK,CAAC,CAAA;MACzD,OAAO;AAACH,QAAAA,MAAM,EAAEI,QAAQ;AAAE3rC,QAAAA,MAAM,EAAEA,MAAM;AAAEirC,QAAAA,IAAI,EAAEA,IAAI;QAAExpC,KAAK,EAAEupC,SAAS,IAAIH,gBAAAA;OAAiB,CAAA;AAC5F,KAAA;IAED,SAASe,OAAOA,CAAChO,KAAK,EAAE;MACtB,IAAIza,MAAM,GAAG2nB,YAAY,CAACH,OAAO,CAAC/M,KAAK,CAAC,CAAC,CAAA;MACzC,OAAO,IAAIiO,KAAK,CAAC;AAACriC,QAAAA,KAAK,EAAE2Z,MAAAA;OAAO,EAAE,OAAO,CAAC,CAAA;AAC3C,KAAA;AAED,IAAA,SAAS2oB,eAAeA,CAACC,CAAC,EAAE57B,IAAI,EAAE/H,GAAG,EAAE;MACrC,IAAI0hB,KAAK,GAAGiiB,CAAC,KAAKA,CAAC,CAACnrC,IAAI,IAAImrC,CAAC,CAAC3W,IAAI,CAAC,CAAA;AACnC,MAAA,IAAItL,KAAK,IAAI,CAAC1hB,GAAG,CAAC0hB,KAAK,CAAC,EAAE;AACxB,QAAA,MAAM,IAAIpoB,KAAK,CAAC,iBAAiB,GAAGooB,KAAK,GAAG,eAAe,GAAGiiB,CAAC,CAACvB,WAAW,GAAG,cAAc,GAAGr6B,IAAI,GAAG,IAAI,CAAC,CAAA;AAC5G,OAAA;AACD,MAAA,IAAI47B,CAAC,IAAIA,CAAC,CAACt+B,GAAG,IAAI,CAACs+B,CAAC,CAACt+B,GAAG,KAAK,CAAC,EAAE;AAC9B,QAAA,MAAM,IAAI/L,KAAK,CAAC,2BAA2B,GAAGqqC,CAAC,CAACvB,WAAW,GAAG,cAAc,GAAGr6B,IAAI,GAAG,IAAI,CAAC,CAAA;AAC5F,OAAA;AACF,KAAA;AACD,IAAA,SAAS67B,aAAaA,CAACC,MAAM,EAAEziC,KAAK,EAAE;AACpC,MAAA,IAAI03B,GAAG,GAAG+K,MAAM,CAACC,IAAI,GAAGvB,OAAO,CAACsB,MAAM,CAACC,IAAI,CAAC,GAAG,EAAE,CAAA;MACjD,OAAOD,MAAM,CAACC,IAAI,CAAA;AAElB,MAAA,IAAI9oC,IAAI,GAAGD,MAAM,CAAC+d,mBAAmB,CAAC+qB,MAAM,CAAC,CAAA;MAC7C,IAAI,CAACziC,KAAK,EAAEA,KAAK,GAAGpG,IAAI,CAAC,CAAC,CAAC,CAAA;AAE3B,MAAA,IAAI+oC,OAAO,GAAGhpC,MAAM,CAACqqB,MAAM,CAAC,IAAI,CAAC,CAAA;AACjC,MAAA,KAAK,IAAI/qB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAC7C,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACpC,QAAA,IAAIkF,GAAG,GAAGvE,IAAI,CAACX,CAAC,CAAC,CAAA;AACjB0pC,QAAAA,OAAO,CAACxkC,GAAG,CAAC,GAAGgjC,OAAO,CAACsB,MAAM,CAACtkC,GAAG,CAAC,CAAC,CAACsF,MAAM,CAACi0B,GAAG,CAAC,CAAA;AAChD,OAAA;AACD,MAAA,KAAK,IAAIz+B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAC7C,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACpC,QAAA,IAAIkF,GAAG,GAAGvE,IAAI,CAACX,CAAC,CAAC,CAAA;AACjB,QAAA,IAAIm7B,KAAK,GAAGuO,OAAO,CAACxkC,GAAG,CAAC,CAAA;AACxB,QAAA,IAAIykC,QAAQ,GAAGjpC,MAAM,CAACqqB,MAAM,CAAC,IAAI,CAAC,CAAA;AAClC,QAAA,KAAK,IAAI4c,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxM,KAAK,CAACr9B,MAAM,EAAE6pC,CAAC,EAAE,EAAE;AACrC,UAAA,IAAI5L,IAAI,GAAGZ,KAAK,CAACwM,CAAC,CAAC,CAAA;AACnB,UAAA,IAAI,CAAC5L,IAAI,CAAC6L,OAAO,EAAE,SAAA;AACnB,UAAA,IAAIx8B,MAAM,GAAG,CAACu8B,CAAC,EAAE,CAAC,CAAC,CAAA;AACnB,UAAA,IAAI5L,IAAI,CAAC6L,OAAO,KAAK1iC,GAAG,IAAI,CAACykC,QAAQ,CAAC5N,IAAI,CAAC6L,OAAO,CAAC,EAAE;AACnD+B,YAAAA,QAAQ,CAAC5N,IAAI,CAAC6L,OAAO,CAAC,GAAG,IAAI,CAAA;AAC7B,YAAA,IAAIgC,QAAQ,GAAGF,OAAO,CAAC3N,IAAI,CAAC6L,OAAO,CAAC,CAAA;YACpC,IAAI,CAACgC,QAAQ,EAAE;AACb,cAAA,MAAM,IAAI3qC,KAAK,CAAC,oCAAoC,GAAG88B,IAAI,CAAC6L,OAAO,GAAG,eAAe,GAAG1iC,GAAG,GAAG,IAAI,CAAC,CAAA;AACpG,aAAA;AACD,YAAA,KAAK,IAAIqtB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqX,QAAQ,CAAC9rC,MAAM,EAAEy0B,CAAC,EAAE,EAAE;AACxC,cAAA,IAAIsX,OAAO,GAAGD,QAAQ,CAACrX,CAAC,CAAC,CAAA;cACzB,IAAI4I,KAAK,CAACx0B,OAAO,CAACkjC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAA;AACnCz+B,cAAAA,MAAM,CAACjN,IAAI,CAAC0rC,OAAO,CAAC,CAAA;AACrB,aAAA;AACF,WAAA;UACD1O,KAAK,CAAC/vB,MAAM,CAAC8I,KAAK,CAACinB,KAAK,EAAE/vB,MAAM,CAAC,CAAA;AACjCu8B,UAAAA,CAAC,EAAE,CAAA;AACJ,SAAA;AACF,OAAA;AAED,MAAA,IAAIhiC,GAAG,GAAGjF,MAAM,CAACqqB,MAAM,CAAC,IAAI,CAAC,CAAA;AAC7B,MAAA,KAAK,IAAI/qB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAC7C,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACpC,QAAA,IAAIkF,GAAG,GAAGvE,IAAI,CAACX,CAAC,CAAC,CAAA;AACjB2F,QAAAA,GAAG,CAACT,GAAG,CAAC,GAAGmjC,YAAY,CAACqB,OAAO,CAACxkC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AAC5C,OAAA;AAED,MAAA,KAAK,IAAIlF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAC7C,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI0N,IAAI,GAAG/M,IAAI,CAACX,CAAC,CAAC,CAAA;AAClB,QAAA,IAAIqnB,KAAK,GAAG1hB,GAAG,CAAC+H,IAAI,CAAC,CAAA;AACrB,QAAA,IAAInQ,MAAM,GAAG8pB,KAAK,CAAC9pB,MAAM,CAAA;AACzB,QAAA,KAAK,IAAIoqC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpqC,MAAM,CAACO,MAAM,EAAE6pC,CAAC,EAAE,EAAE;UACtC0B,eAAe,CAAC9rC,MAAM,CAACoqC,CAAC,CAAC,EAAEj6B,IAAI,EAAE/H,GAAG,CAAC,CAAA;AACtC,SAAA;QACD,IAAImkC,QAAQ,GAAGppC,MAAM,CAAC+d,mBAAmB,CAAC4I,KAAK,CAACmhB,IAAI,CAAC,CAAA;AACrD,QAAA,KAAK,IAAIb,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmC,QAAQ,CAAChsC,MAAM,EAAE6pC,CAAC,EAAE,EAAE;AACxC0B,UAAAA,eAAe,CAAChiB,KAAK,CAACmhB,IAAI,CAACsB,QAAQ,CAACnC,CAAC,CAAC,CAAC,EAAEj6B,IAAI,EAAE/H,GAAG,CAAC,CAAA;AACpD,SAAA;AACF,OAAA;AAED,MAAA,OAAO,IAAIyjC,KAAK,CAACzjC,GAAG,EAAEoB,KAAK,CAAC,CAAA;AAC7B,KAAA;IAED,SAASgjC,gBAAgBA,CAACpkC,GAAG,EAAE;AAEjC;AACA;AACI,MAAA,IAAIqkC,KAAK,GAAG,OAAOC,GAAG,KAAK,WAAW,CAAA;AACtC,MAAA,IAAIC,UAAU,GAAGF,KAAK,GAAG,IAAIC,GAAG,EAAA,GAAGvpC,MAAM,CAACqqB,MAAM,CAAC,IAAI,CAAC,CAAA;AAEtD,MAAA,IAAIxe,KAAK,GAAG7L,MAAM,CAAC+d,mBAAmB,CAAC9Y,GAAG,CAAC,CAAA;AAC3C,MAAA,KAAK,IAAI3F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuM,KAAK,CAACzO,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACrC,QAAA,IAAImqC,SAAS,GAAG59B,KAAK,CAACvM,CAAC,CAAC,CAAA;AACxB,QAAA,IAAI0C,IAAI,GAAGiD,GAAG,CAACwkC,SAAS,CAAC,CAAA;AACzB,QAAA,IAAIC,WAAW,GAAGx8B,KAAK,CAACC,OAAO,CAACnL,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC,CAAA;AACrD0nC,QAAAA,WAAW,CAACvkC,OAAO,CAAC,UAASwT,OAAO,EAAE;AACpC,UAAA,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;YAC/B,MAAM,IAAIpa,KAAK,CAAC,sCAAsC,GAAGkrC,SAAS,GAAG,IAAI,CAAC,CAAA;AAC3E,WAAA;AACD,UAAA,IAAIH,KAAK,EAAE;AACTE,YAAAA,UAAU,CAACrf,GAAG,CAACxR,OAAO,EAAE8wB,SAAS,CAAC,CAAA;AAC5C,WAAS,MAAM;AACLD,YAAAA,UAAU,CAAC7wB,OAAO,CAAC,GAAG8wB,SAAS,CAAA;AAChC,WAAA;AACT,SAAO,CAAC,CAAA;AACH,OAAA;MACD,OAAO,UAAS5X,CAAC,EAAE;AACjB,QAAA,OAAOyX,KAAK,GAAGE,UAAU,CAACzpC,GAAG,CAAC8xB,CAAC,CAAC,GAAG2X,UAAU,CAAC3X,CAAC,CAAC,CAAA;OACjD,CAAA;AACF,KAAA;;AAEH;;AAEE,IAAA,IAAI6W,KAAK,GAAG,UAASI,MAAM,EAAEniB,KAAK,EAAE;MAClC,IAAI,CAACgjB,UAAU,GAAGhjB,KAAK,CAAA;MACvB,IAAI,CAACmiB,MAAM,GAAGA,MAAM,CAAA;MACpB,IAAI,CAACrnB,MAAM,GAAG,EAAE,CAAA;MAChB,IAAI,CAACmoB,KAAK,GAAG,EAAE,CAAA;MACf,IAAI,CAAC/K,KAAK,EAAE,CAAA;KACb,CAAA;IAED6J,KAAK,CAACr5B,SAAS,CAACwvB,KAAK,GAAG,UAAS1+B,IAAI,EAAEiB,IAAI,EAAE;AAC3C,MAAA,IAAI,CAACqgB,MAAM,GAAGthB,IAAI,IAAI,EAAE,CAAA;MACxB,IAAI,CAACgC,KAAK,GAAG,CAAC,CAAA;MACd,IAAI,CAAC/G,IAAI,GAAGgG,IAAI,GAAGA,IAAI,CAAChG,IAAI,GAAG,CAAC,CAAA;MAChC,IAAI,CAACyuC,GAAG,GAAGzoC,IAAI,GAAGA,IAAI,CAACyoC,GAAG,GAAG,CAAC,CAAA;MAC9B,IAAI,CAACC,WAAW,GAAG1oC,IAAI,GAAGA,IAAI,CAAC0oC,WAAW,GAAG,IAAI,CAAA;MACjD,IAAI,CAACC,UAAU,GAAG3oC,IAAI,GAAGA,IAAI,CAAC2oC,UAAU,GAAE,EAAE,CAAA;MAC5C,IAAI,CAACC,WAAW,GAAG5oC,IAAI,GAAGA,IAAI,CAAC4oC,WAAW,GAAG,IAAI,CAAA;AACjD,MAAA,IAAI,CAACC,QAAQ,CAAC7oC,IAAI,GAAGA,IAAI,CAACulB,KAAK,GAAG,IAAI,CAACgjB,UAAU,CAAC,CAAA;AAClD,MAAA,IAAI,CAACC,KAAK,GAAGxoC,IAAI,IAAIA,IAAI,CAACwoC,KAAK,GAAGxoC,IAAI,CAACwoC,KAAK,CAACnpC,KAAK,EAAE,GAAG,EAAE,CAAA;AACzD,MAAA,OAAO,IAAI,CAAA;KACZ,CAAA;AAEDioC,IAAAA,KAAK,CAACr5B,SAAS,CAAC5D,IAAI,GAAG,YAAW;MAChC,OAAO;QACLrQ,IAAI,EAAE,IAAI,CAACA,IAAI;QACfyuC,GAAG,EAAE,IAAI,CAACA,GAAG;QACbljB,KAAK,EAAE,IAAI,CAACA,KAAK;AACjBijB,QAAAA,KAAK,EAAE,IAAI,CAACA,KAAK,CAACnpC,KAAK,EAAE;QACzBqpC,WAAW,EAAE,IAAI,CAACA,WAAW;QAC7BC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BC,WAAW,EAAE,IAAI,CAACA,WAAAA;OACnB,CAAA;KACF,CAAA;AAEDtB,IAAAA,KAAK,CAACr5B,SAAS,CAAC46B,QAAQ,GAAG,UAAStjB,KAAK,EAAE;MACzC,IAAI,CAACA,KAAK,IAAI,IAAI,CAACA,KAAK,KAAKA,KAAK,EAAE,OAAA;MACpC,IAAI,CAACA,KAAK,GAAGA,KAAK,CAAA;AAClB,MAAA,IAAIvlB,IAAI,GAAG,IAAI,CAAC0nC,MAAM,CAACniB,KAAK,CAAC,CAAA;AAC7B,MAAA,IAAI,CAAC9pB,MAAM,GAAGuE,IAAI,CAACvE,MAAM,CAAA;AACzB,MAAA,IAAI,CAACyB,KAAK,GAAG8C,IAAI,CAAC9C,KAAK,CAAA;AACvB,MAAA,IAAI,CAAC4nC,EAAE,GAAG9kC,IAAI,CAACgnC,MAAM,CAAA;AACrB,MAAA,IAAI,CAACN,IAAI,GAAG1mC,IAAI,CAAC0mC,IAAI,CAAA;KACtB,CAAA;AAEDY,IAAAA,KAAK,CAACr5B,SAAS,CAAC66B,QAAQ,GAAG,YAAW;MACpC,IAAI,CAACD,QAAQ,CAAC,IAAI,CAACL,KAAK,CAACt/B,GAAG,EAAE,CAAC,CAAA;KAChC,CAAA;AAEDo+B,IAAAA,KAAK,CAACr5B,SAAS,CAAC86B,SAAS,GAAG,UAASxjB,KAAK,EAAE;MAC1C,IAAI,CAACijB,KAAK,CAACnsC,IAAI,CAAC,IAAI,CAACkpB,KAAK,CAAC,CAAA;AAC3B,MAAA,IAAI,CAACsjB,QAAQ,CAACtjB,KAAK,CAAC,CAAA;KACrB,CAAA;IAED,IAAIyjB,GAAG,GAAGxE,SAAS,GAAG,UAASM,EAAE,EAAEzkB,MAAM,EAAE;AAAA;AACzC,MAAA,OAAOykB,EAAE,CAACzpC,IAAI,CAACglB,MAAM,CAAC,CAAA;AAC1B,KAAG,GAAG,UAASykB,EAAE,EAAEzkB,MAAM,EAAE;AAAA;AACvB,MAAA,IAAIjlB,KAAK,GAAG0pC,EAAE,CAACzpC,IAAI,CAACglB,MAAM,CAAC,CAAA;AAC/B;MACI,IAAIjlB,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,IAAI,CAAA;AACZ,OAAA;AACD,MAAA,OAAOZ,KAAK,CAAA;KACb,CAAA;AAEDksC,IAAAA,KAAK,CAACr5B,SAAS,CAACg7B,SAAS,GAAG,UAAS7tC,KAAK,EAAE;AAC1C,MAAA,IAAI6rC,UAAU,GAAG,IAAI,CAACxrC,MAAM,CAACO,MAAM,CAAA;MACnC,KAAK,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+oC,UAAU,EAAE/oC,CAAC,EAAE,EAAE;QACnC,IAAI9C,KAAK,CAAC8C,CAAC,GAAG,CAAC,CAAC,KAAKjD,SAAS,EAAE;AAC9B,UAAA,OAAO,IAAI,CAACQ,MAAM,CAACyC,CAAC,CAAC,CAAA;AACtB,SAAA;AACF,OAAA;AACD,MAAA,MAAM,IAAIf,KAAK,CAAC,yCAAyC,CAAC,CAAA;KAC3D,CAAA;IAED,SAAS+rC,aAAaA,GAAG;MACvB,OAAO,IAAI,CAAChjC,KAAK,CAAA;AAClB,KAAA;AAEDohC,IAAAA,KAAK,CAACr5B,SAAS,CAAC4iB,IAAI,GAAG,YAAW;AAChC,MAAA,IAAI9vB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;;AAE1B;MACI,IAAI,IAAI,CAACooC,WAAW,EAAE;AACpB,QAAA,IAAI74B,KAAK,GAAG,IAAI,CAAC84B,MAAM,CAAC,IAAI,CAACD,WAAW,EAAE,IAAI,CAACR,UAAU,EAAE5nC,KAAK,CAAC,CAAA;QACjE,IAAI,CAACooC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAACR,UAAU,GAAG,EAAE,CAAA;AACpB,QAAA,OAAOr4B,KAAK,CAAA;AACb,OAAA;AAED,MAAA,IAAI+P,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AACxB,MAAA,IAAItf,KAAK,KAAKsf,MAAM,CAACrkB,MAAM,EAAE;AAC3B,QAAA,OAAM;AACP,OAAA;;AAEL;AACI,MAAA,IAAIqtC,KAAK,GAAG,IAAI,CAAC3C,IAAI,CAACrmB,MAAM,CAAClE,UAAU,CAACpb,KAAK,CAAC,CAAC,CAAA;AAC/C,MAAA,IAAIsoC,KAAK,EAAE;AACT,QAAA,OAAO,IAAI,CAACD,MAAM,CAACC,KAAK,EAAEhpB,MAAM,CAAC8B,MAAM,CAACphB,KAAK,CAAC,EAAEA,KAAK,CAAC,CAAA;AACvD,OAAA;;AAEL;AACI,MAAA,IAAI+jC,EAAE,GAAG,IAAI,CAACA,EAAE,CAAA;MAChBA,EAAE,CAACwE,SAAS,GAAGvoC,KAAK,CAAA;AACpB,MAAA,IAAI3F,KAAK,GAAG4tC,GAAG,CAAClE,EAAE,EAAEzkB,MAAM,CAAC,CAAA;;AAE/B;AACI,MAAA,IAAInjB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;MACtB,IAAI9B,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,IAAI,CAACguC,MAAM,CAAClsC,KAAK,EAAEmjB,MAAM,CAAChhB,KAAK,CAAC0B,KAAK,EAAEsf,MAAM,CAACrkB,MAAM,CAAC,EAAE+E,KAAK,CAAC,CAAA;AACrE,OAAA;AAED,MAAA,IAAIsoC,KAAK,GAAG,IAAI,CAACJ,SAAS,CAAC7tC,KAAK,CAAC,CAAA;AACjC,MAAA,IAAI6B,IAAI,GAAG7B,KAAK,CAAC,CAAC,CAAC,CAAA;MAEnB,IAAI8B,KAAK,CAACgpC,QAAQ,IAAI9qC,KAAK,CAAC2F,KAAK,KAAKA,KAAK,EAAE;QAC3C,IAAI,CAACooC,WAAW,GAAGE,KAAK,CAAA;QACxB,IAAI,CAACV,UAAU,GAAG1rC,IAAI,CAAA;;AAE5B;AACM,QAAA,OAAO,IAAI,CAACmsC,MAAM,CAAClsC,KAAK,EAAEmjB,MAAM,CAAChhB,KAAK,CAAC0B,KAAK,EAAE3F,KAAK,CAAC2F,KAAK,CAAC,EAAEA,KAAK,CAAC,CAAA;AACnE,OAAA;MAED,OAAO,IAAI,CAACqoC,MAAM,CAACC,KAAK,EAAEpsC,IAAI,EAAE8D,KAAK,CAAC,CAAA;KACvC,CAAA;IAEDumC,KAAK,CAACr5B,SAAS,CAACm7B,MAAM,GAAG,UAASC,KAAK,EAAEpsC,IAAI,EAAEssC,MAAM,EAAE;AACzD;MACI,IAAI9D,UAAU,GAAG,CAAC,CAAA;MAClB,IAAI4D,KAAK,CAAC5D,UAAU,EAAE;QACpB,IAAI+D,OAAO,GAAG,KAAK,CAAA;QACnB,IAAIC,EAAE,GAAG,CAAC,CAAA;QACV,IAAIxsC,IAAI,KAAK,IAAI,EAAE;AACjBwoC,UAAAA,UAAU,GAAG,CAAC,CAAA;AACtB,SAAO,MAAM;AACL,UAAA,OAAO+D,OAAO,CAACnuC,IAAI,CAAC4B,IAAI,CAAC,EAAE;AAAEwoC,YAAAA,UAAU,EAAE,CAAA;YAAEgE,EAAE,GAAGD,OAAO,CAACF,SAAS,CAAA;AAAE,WAAA;AACpE,SAAA;AACF,OAAA;AAED,MAAA,IAAIh5B,KAAK,GAAG;AACVtK,QAAAA,IAAI,EAAG,OAAOqjC,KAAK,CAACrjC,IAAI,KAAK,UAAU,IAAIqjC,KAAK,CAACrjC,IAAI,CAAC/I,IAAI,CAAC,IAAKosC,KAAK,CAACpD,WAAW;AACjF//B,QAAAA,KAAK,EAAE,OAAOmjC,KAAK,CAACnjC,KAAK,KAAK,UAAU,GAAGmjC,KAAK,CAACnjC,KAAK,CAACjJ,IAAI,CAAC,GAAGA,IAAI;AACnEA,QAAAA,IAAI,EAAEA,IAAI;AACVmC,QAAAA,QAAQ,EAAE8pC,aAAa;AACvBK,QAAAA,MAAM,EAAEA,MAAM;AACd9D,QAAAA,UAAU,EAAEA,UAAU;QACtBzrC,IAAI,EAAE,IAAI,CAACA,IAAI;QACfyuC,GAAG,EAAE,IAAI,CAACA,GAAAA;OACX,CAAA;AACL;;AAEI,MAAA,IAAIpe,IAAI,GAAGptB,IAAI,CAACjB,MAAM,CAAA;MACtB,IAAI,CAAC+E,KAAK,IAAIspB,IAAI,CAAA;MAClB,IAAI,CAACrwB,IAAI,IAAIyrC,UAAU,CAAA;MACvB,IAAIA,UAAU,KAAK,CAAC,EAAE;AACpB,QAAA,IAAI,CAACgD,GAAG,GAAGpe,IAAI,GAAGof,EAAE,GAAG,CAAC,CAAA;AAC9B,OAAK,MAAM;QACL,IAAI,CAAChB,GAAG,IAAIpe,IAAI,CAAA;AACjB,OAAA;;AAEL;MACI,IAAIgf,KAAK,CAAClD,WAAW,EAAE;AACrB,QAAA,IAAI3mC,GAAG,GAAG,IAAIrC,KAAK,CAAC,IAAI,CAAC68B,WAAW,CAAC1pB,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAC9D,QAAA,MAAM9Q,GAAG,CAAA;AACV,OAAA;AAED,MAAA,IAAI6pC,KAAK,CAACngC,GAAG,EAAE,IAAI,CAAC4/B,QAAQ,EAAE,CAAA,KACzB,IAAIO,KAAK,CAAChtC,IAAI,EAAE,IAAI,CAAC0sC,SAAS,CAACM,KAAK,CAAChtC,IAAI,CAAC,CAC1C,KAAA,IAAIgtC,KAAK,CAACxY,IAAI,EAAE,IAAI,CAACgY,QAAQ,CAACQ,KAAK,CAACxY,IAAI,CAAC,CAAA;AAE9C,MAAA,OAAOvgB,KAAK,CAAA;KACb,CAAA;IAED,IAAI,OAAOlB,MAAM,KAAK,WAAW,IAAIA,MAAM,CAAC2gB,QAAQ,EAAE;AACpD,MAAA,IAAI2Z,aAAa,GAAG,UAASlQ,KAAK,EAAE;QAClC,IAAI,CAACA,KAAK,GAAGA,KAAK,CAAA;OACnB,CAAA;AAEDkQ,MAAAA,aAAa,CAACz7B,SAAS,CAAC4iB,IAAI,GAAG,YAAW;QACxC,IAAIvgB,KAAK,GAAG,IAAI,CAACkpB,KAAK,CAAC3I,IAAI,EAAE,CAAA;QAC7B,OAAO;AAAC3qB,UAAAA,KAAK,EAAEoK,KAAK;AAAE0gB,UAAAA,IAAI,EAAE,CAAC1gB,KAAAA;SAAM,CAAA;OACpC,CAAA;MAEDo5B,aAAa,CAACz7B,SAAS,CAACmB,MAAM,CAAC2gB,QAAQ,CAAC,GAAG,YAAW;AACpD,QAAA,OAAO,IAAI,CAAA;OACZ,CAAA;MAEDuX,KAAK,CAACr5B,SAAS,CAACmB,MAAM,CAAC2gB,QAAQ,CAAC,GAAG,YAAW;AAC5C,QAAA,OAAO,IAAI2Z,aAAa,CAAC,IAAI,CAAC,CAAA;OAC/B,CAAA;AACF,KAAA;IAEDpC,KAAK,CAACr5B,SAAS,CAAC+rB,WAAW,GAAG,UAAS1pB,KAAK,EAAEgb,OAAO,EAAE;MACrD,IAAIhb,KAAK,IAAI,IAAI,EAAE;AACvB;QACM,IAAIrT,IAAI,GAAG,IAAI,CAACojB,MAAM,CAAChhB,KAAK,CAAC,IAAI,CAAC0B,KAAK,CAAC,CAAA;AACxC,QAAA,IAAIuP,KAAK,GAAG;AACVrT,UAAAA,IAAI,EAAEA,IAAI;UACVssC,MAAM,EAAE,IAAI,CAACxoC,KAAK;AAClB0kC,UAAAA,UAAU,EAAExoC,IAAI,CAAC4H,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;UAC7C7K,IAAI,EAAE,IAAI,CAACA,IAAI;UACfyuC,GAAG,EAAE,IAAI,CAACA,GAAAA;SACX,CAAA;AACF,OAAA;MAED,IAAIkB,cAAc,GAAG,CAAC,CAAA;AACtB,MAAA,IAAIC,kBAAkB,GAAG1qC,IAAI,CAAC6rB,GAAG,CAACza,KAAK,CAACtW,IAAI,GAAG2vC,cAAc,EAAE,CAAC,CAAC,CAAA;AACjE,MAAA,IAAIE,iBAAiB,GAAGv5B,KAAK,CAACtW,IAAI,GAAG2vC,cAAc,CAAA;AACnD,MAAA,IAAIG,cAAc,GAAGx6B,MAAM,CAACu6B,iBAAiB,CAAC,CAAC7tC,MAAM,CAAA;MACrD,IAAI+tC,cAAc,GAAGzE,UAAU,CAC3B,IAAI,CAACjlB,MAAM,EACV,IAAI,CAACrmB,IAAI,GAAGsW,KAAK,CAACtW,IAAI,GAAI2vC,cAAc,GAAG,CAC7C,CAAA,CACAtqC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;MACd,IAAI2qC,UAAU,GAAG,EAAE,CAAA;AACnBA,MAAAA,UAAU,CAAC3tC,IAAI,CAACivB,OAAO,GAAG,WAAW,GAAGhb,KAAK,CAACtW,IAAI,GAAG,OAAO,GAAGsW,KAAK,CAACm4B,GAAG,GAAG,GAAG,CAAC,CAAA;AAC/EuB,MAAAA,UAAU,CAAC3tC,IAAI,CAAC,EAAE,CAAC,CAAA;AACnB,MAAA,KAAK,IAAI6B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6rC,cAAc,CAAC/tC,MAAM,EAAEkC,CAAC,EAAE,EAAE;AAC9C,QAAA,IAAIlE,IAAI,GAAG+vC,cAAc,CAAC7rC,CAAC,CAAC,CAAA;AAC5B,QAAA,IAAI+rC,MAAM,GAAGL,kBAAkB,GAAG1rC,CAAC,CAAA;AACnC8rC,QAAAA,UAAU,CAAC3tC,IAAI,CAACgpC,GAAG,CAAC/1B,MAAM,CAAC26B,MAAM,CAAC,EAAEH,cAAc,CAAC,GAAG,IAAI,GAAG9vC,IAAI,CAAC,CAAA;AAClE,QAAA,IAAIiwC,MAAM,KAAK35B,KAAK,CAACtW,IAAI,EAAE;AACzBgwC,UAAAA,UAAU,CAAC3tC,IAAI,CAACgpC,GAAG,CAAC,EAAE,EAAEyE,cAAc,GAAGx5B,KAAK,CAACm4B,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;AAC/D,SAAA;AACF,OAAA;AACD,MAAA,OAAOuB,UAAU,CAAC7rC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC7B,CAAA;AAEDmpC,IAAAA,KAAK,CAACr5B,SAAS,CAACmgB,KAAK,GAAG,YAAW;MACjC,OAAO,IAAIkZ,KAAK,CAAC,IAAI,CAACI,MAAM,EAAE,IAAI,CAACniB,KAAK,CAAC,CAAA;KAC1C,CAAA;AAED+hB,IAAAA,KAAK,CAACr5B,SAAS,CAACoM,GAAG,GAAG,UAASguB,SAAS,EAAE;AACxC,MAAA,OAAO,IAAI,CAAA;KACZ,CAAA;IAGD,OAAO;AACLhB,MAAAA,OAAO,EAAEA,OAAO;AAChBK,MAAAA,MAAM,EAAED,aAAa;AACrBvqC,MAAAA,KAAK,EAAE0B,MAAM,CAACsrC,MAAM,CAAC;AAAChtC,QAAAA,KAAK,EAAE,IAAA;AAAI,OAAC,CAAC;AACnCgpC,MAAAA,QAAQ,EAAEtnC,MAAM,CAACsrC,MAAM,CAAC;AAAChE,QAAAA,QAAQ,EAAE,IAAA;AAAI,OAAC,CAAC;AACzC9C,MAAAA,QAAQ,EAAE6E,gBAAAA;KACX,CAAA;AAEH,GAAC,CAAC,CAAA;;;ACjoBF,MAAMkC,aAAa,GAAG;AACpBtoC,EAAAA,MAAM,EAAE;AACNiR,IAAAA,OAAO,EAAE,iBAAiB;AAC1BpZ,IAAAA,IAAI,EAAE,MAAM;AACZ0wC,IAAAA,MAAM,EAAE,MAAM;AACd7H,IAAAA,MAAM,EAAE,SAAS;AACjB8H,IAAAA,UAAU,EAAE,MAAM;AAClBjI,IAAAA,OAAO,EAAE,MAAM;AACflvB,IAAAA,UAAU,EAAE,MAAM;AAClBo3B,IAAAA,YAAY,EAAE,MAAM;AACpB9H,IAAAA,YAAY,EAAE,SAAS;AACvBrvB,IAAAA,OAAO,EAAE,SAAS;AAClBwvB,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,IAAI,EAAE,UAAU;AAChBC,IAAAA,MAAM,EAAE,SAAS;AACjB9uB,IAAAA,MAAM,EAAE,QAAQ;AAChBE,IAAAA,UAAU,EAAE,YAAY;AACxBouB,IAAAA,WAAW,EAAE,MAAM;AACnBkI,IAAAA,aAAa,EAAE,MAAM;AACrB7H,IAAAA,aAAa,EAAE,kBAAkB;AACjC8H,IAAAA,SAAS,EAAE,MAAM;AACjBC,IAAAA,WAAW,EAAE,MAAM;AACnBC,IAAAA,WAAW,EAAE,OAAO;AACpBr2B,IAAAA,MAAM,EAAE,QAAQ;AAChBE,IAAAA,QAAQ,EAAE,UAAU;AACpBI,IAAAA,MAAM,EAAE,QAAQ;AAChBquB,IAAAA,WAAW,EAAE,YAAY;AACzB2H,IAAAA,OAAO,EAAE,SAAS;AAClBC,IAAAA,KAAK,EAAE,MAAM;AACb9gC,IAAAA,KAAK,EAAE,QAAQ;AACfwN,IAAAA,YAAY,EAAE,YAAY;AAC1B5D,IAAAA,WAAW,EAAE,aAAa;AAC1Bm3B,IAAAA,KAAK,EAAE,QAAQ;AACfC,IAAAA,MAAM,EAAE,wBAAwB;AAChCC,IAAAA,KAAK,EAAE,gBAAgB;AACvBC,IAAAA,KAAK,EAAE,eAAe;AACtBh3B,IAAAA,WAAW,EAAE,aAAa;AAC1BM,IAAAA,MAAM,EAAE,QAAQ;AAChBI,IAAAA,QAAQ,EAAE,UAAU;AACpBu2B,IAAAA,KAAK,EAAE,gBAAgB;AACvBxI,IAAAA,UAAU,EAAE,kBAAkB;AAC9ByI,IAAAA,UAAU,EAAE,SAAS;AACrB5I,IAAAA,aAAa,EAAE,QAAQ;AACvBQ,IAAAA,SAAS,EAAE,QAAQ;AACnBC,IAAAA,UAAU,EAAE,QAAQ;AACpBoI,IAAAA,GAAG,EAAE,SAAA;GACN;AACD7/B,EAAAA,MAAM,EAAE;AACNwH,IAAAA,OAAO,EAAE,SAAS;AAClB,IAAA,iBAAiB,EAAE,SAAS;AAC5B,IAAA,kBAAkB,EAAE,SAAS;AAC7B,IAAA,mBAAmB,EAAE,SAAS;AAC9BC,IAAAA,IAAI,EAAE,aAAa;AACnBrZ,IAAAA,IAAI,EAAE,MAAM;AACZsZ,IAAAA,SAAS,EAAE,OAAO;AAClBrZ,IAAAA,OAAO,EAAE,QAAQ;AACjBsZ,IAAAA,OAAO,EAAE,aAAa;AACtBC,IAAAA,UAAU,EAAE,MAAM;AAClBC,IAAAA,OAAO,EAAE,SAAS;AAClBC,IAAAA,QAAQ,EAAE,MAAM;AAChBpP,IAAAA,KAAK,EAAE,aAAa;AACpB,IAAA,kBAAkB,EAAE,aAAa;AACjC,IAAA,oBAAoB,EAAE,aAAa;AACnCqP,IAAAA,KAAK,EAAE,MAAM;AACbxZ,IAAAA,MAAM,EAAE,SAAS;AACjByZ,IAAAA,OAAO,EAAE,SAAS;AAClBC,IAAAA,OAAO,EAAE,OAAO;AAChBC,IAAAA,SAAS,EAAE,OAAO;AAClBC,IAAAA,UAAU,EAAE,cAAc;AAC1BC,IAAAA,WAAW,EAAE,aAAa;AAC1BC,IAAAA,UAAU,EAAE,aAAa;AACzBC,IAAAA,cAAc,EAAE,OAAO;AACvBC,IAAAA,aAAa,EAAE,OAAO;AACtB,IAAA,kBAAkB,EAAE,eAAe;AACnCE,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,WAAW,EAAE,aAAa;AAC1BC,IAAAA,UAAU,EAAE,YAAY;AACxBC,IAAAA,sBAAsB,EAAE,QAAQ;AAChCC,IAAAA,IAAI,EAAE,QAAQ;AACd,IAAA,aAAa,EAAE,QAAQ;AACvBC,IAAAA,UAAU,EAAE,OAAO;AACnBC,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,aAAa,EAAE,QAAQ;AACvBC,IAAAA,QAAQ,EAAE,UAAU;AACpBC,IAAAA,IAAI,EAAE,OAAO;AACbC,IAAAA,MAAM,EAAE,OAAO;AACfC,IAAAA,QAAQ,EAAE,UAAU;AACpBC,IAAAA,MAAM,EAAE,QAAQ;AAChBC,IAAAA,MAAM,EAAE,OAAO;AACfC,IAAAA,OAAO,EAAE,QAAA;AACX,GAAA;AACF,CAAC;;AC5FD,MAAMu2B,WAAW,GAAG;AAClBvpC,EAAAA,MAAM,EAAE;AACNiR,IAAAA,OAAO,EAAE,iBAAiB;AAC1BpZ,IAAAA,IAAI,EAAE,MAAM;AACZ0oC,IAAAA,OAAO,EAAE,MAAM;AACfK,IAAAA,UAAU,EAAE,kBAAkB;AAC9BF,IAAAA,MAAM,EAAE,SAAS;AACjBC,IAAAA,YAAY,EAAE,SAAS;AACvBE,IAAAA,aAAa,EAAE,kBAAkB;AACjCC,IAAAA,MAAM,EAAE,QAAQ;AAChBL,IAAAA,aAAa,EAAE,QAAQ;AACvBM,IAAAA,IAAI,EAAE,UAAU;AAChBE,IAAAA,SAAS,EAAE,QAAQ;AACnBT,IAAAA,WAAW,EAAE,MAAM;AACnBU,IAAAA,UAAU,EAAE,QAAQ;AACpBC,IAAAA,WAAW,EAAE,YAAA;GACd;AACD13B,EAAAA,MAAM,EAAE;AACNwH,IAAAA,OAAO,EAAE,SAAS;AAClB,IAAA,iBAAiB,EAAE,SAAS;AAC5B,IAAA,kBAAkB,EAAE,SAAS;AAC7B,IAAA,mBAAmB,EAAE,SAAS;AAC9BpZ,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,OAAO,EAAE,QAAQ;AACjBga,IAAAA,UAAU,EAAE,aAAa;AACzB,IAAA,kBAAkB,EAAE,eAAe;AACnCU,IAAAA,MAAM,EAAE,YAAY;AACpBC,IAAAA,MAAM,EAAE,SAAS;AACjB,IAAA,aAAa,EAAE,SAAA;AACjB,GAAA;AACF,CAAC;;AC9BD,MAAM+2B,UAAQ,GAAG;AACfC,EAAAA,QAAQ,EAAE;AACRx4B,IAAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9DpZ,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C0wC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C7H,IAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1DH,IAAAA,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1DlvB,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjDo3B,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD9H,IAAAA,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChErvB,IAAAA,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D0vB,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnF9uB,IAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvDE,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjDouB,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxCkI,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1C7H,IAAAA,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjEruB,IAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpEM,IAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpEquB,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAClDP,IAAAA,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9DyI,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvF5I,IAAAA,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnEQ,IAAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/DC,IAAAA,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChEoI,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;GAChF;AACDI,EAAAA,MAAM,EAAE;IACNz4B,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;AAC/CpZ,IAAAA,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;IAC1D0oC,OAAO,EAAE,CAAC,OAAO,CAAC;AAClBG,IAAAA,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC;IAClFC,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC;IACnEE,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;IACvDJ,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpDQ,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AAChDT,IAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC9BU,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC;AACtDC,IAAAA,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAA;AACzC,GAAA;AACF,CAAC;;ACxCD,MAAMjuB,YAAU,GAAG;AACjB0B,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9B+0B,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9BC,EAAAA,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3BC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAChCC,EAAAA,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3BvqC,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACxBwqC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5BC,EAAAA,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5BC,EAAAA,cAAc,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAChCC,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7BC,EAAAA,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACpCtyC,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC7BuyC,EAAAA,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B7yB,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AACvB8yB,EAAAA,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AAC1Bj1B,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC7B5B,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACxB82B,EAAAA,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACzBC,EAAAA,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACzBC,EAAAA,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACzBC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5BC,EAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7BC,EAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7BC,EAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7BC,EAAAA,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACzBC,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCC,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AAC7BC,EAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACjCC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAChCC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC5BC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9BC,EAAAA,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACrCpvC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AAC3BqvC,EAAAA,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1BC,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACxBC,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAChCC,EAAAA,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAChCC,EAAAA,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC9BC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1B9zC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3B+zC,EAAAA,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACnCC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAChCC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BC,EAAAA,eAAe,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACrCC,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCtyC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3B0a,EAAAA,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;AACzB63B,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC7BzZ,EAAAA,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC7B0Z,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7BC,EAAAA,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACpCC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC/Bv0C,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BkQ,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC5BskC,EAAAA,YAAY,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AACjCC,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC3BC,EAAAA,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;AAC7BC,EAAAA,YAAY,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AACjCC,EAAAA,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAClCC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7BrL,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACzBsL,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC/BC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5B30C,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1Bud,EAAAA,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC9Bq3B,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1BC,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCC,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC1BC,EAAAA,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7BC,EAAAA,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7BC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC/BC,EAAAA,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACpCC,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCC,EAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACjCC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9BC,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9B13B,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACzB23B,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAChC55B,EAAAA,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5BhQ,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACxBxI,EAAAA,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AACrBqyC,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3B53B,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC7B1d,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC5Bu1C,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC7BhrC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BirC,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;AAChCC,EAAAA,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AAClCC,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1BC,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC3BC,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;AAC/BC,EAAAA,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAChCzsC,EAAAA,GAAG,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC/B0sC,EAAAA,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACpClN,EAAAA,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AAClCvlC,EAAAA,OAAO,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AACjC0yC,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC5BC,EAAAA,OAAO,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AACjCC,EAAAA,cAAc,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;AACxCC,EAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;AACpCC,EAAAA,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACnCC,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC7BC,EAAAA,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1BC,EAAAA,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACnCC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC/BC,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9BC,EAAAA,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AACjCC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;AAC5BC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACvBC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACvBC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACvBC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC3BC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC3BC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC3B5vB,EAAAA,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC5BjM,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC5B87B,EAAAA,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACnCjP,EAAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC7BngC,EAAAA,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACzBqvC,EAAAA,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AAC1BC,EAAAA,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAClCC,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC3BC,EAAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9BC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1BC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAA;AAC5B,CAAC;;ACtJD,MAAMhM,SAAO,GAAG;AACdiM,EAAAA,UAAU,EAAE;AACV,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACRxa,IAAAA,CAAC,EAAE,GAAG;AACN,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACRppB,IAAAA,CAAC,EAAE,GAAG;AACN6jC,IAAAA,CAAC,EAAE,GAAG;AACN3qB,IAAAA,CAAC,EAAE,GAAG;AACN/L,IAAAA,CAAC,EAAE,GAAG;AACNjY,IAAAA,CAAC,EAAE,GAAG;AACNhB,IAAAA,CAAC,EAAE,GAAG;AACNotB,IAAAA,CAAC,EAAE,GAAG;AACNxhB,IAAAA,CAAC,EAAE,GAAG;AACNgkC,IAAAA,cAAc,EAAE,GAAA;GACjB;AACDC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,aAAa,EAAE,IAAI;AACnBC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,OAAO,EAAE,GAAG;AACZC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,OAAO,EAAE,GAAG;AACZC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,iBAAiB,EAAE,GAAG;AACtBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,MAAM,EAAE,GAAG;AACXC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,iBAAiB,EAAE,GAAG;AACtBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,MAAM,EAAE,GAAG;AACXC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,kBAAkB,EAAE,GAAG;AACvBC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,gBAAgB,EAAE,GAAG;AACrBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,iBAAiB,EAAE,GAAG;AACtBC,IAAAA,gBAAgB,EAAE,GAAG;AACrBC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,SAAS,EAAE,GAAG;AACdC,IAAAA,CAAC,EAAE,GAAG;AACNC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,OAAO,EAAE,GAAG;AACZrkC,IAAAA,CAAC,EAAE,GAAG;AACNskC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPx4C,IAAAA,CAAC,EAAE,GAAG;AACNy4C,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,CAAC,EAAE,GAAG;AACN53B,IAAAA,CAAC,EAAE,GAAG;AACN63B,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,UAAU,EAAE,GAAG;AACfrR,IAAAA,CAAC,EAAE,GAAG;AACNsR,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,gBAAgB,EAAE,GAAG;AACrBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,gBAAgB,EAAE,GAAG;AACrBC,IAAAA,iBAAiB,EAAE,GAAG;AACtBC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,kBAAkB,EAAE,GAAG;AACvBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,iBAAiB,EAAE,GAAG;AACtBC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,mBAAmB,EAAE,GAAG;AACxBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,iBAAiB,EAAE,GAAG;AACtBC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,SAAS,EAAE,GAAG;AACdC,IAAAA,OAAO,EAAE,GAAG;AACZC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,OAAO,EAAE,GAAG;AACZC,IAAAA,OAAO,EAAE,GAAG;AACZC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,SAAS,EAAE,GAAG;AACdC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,oBAAoB,EAAE,GAAG;AACzBC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,SAAS,EAAE,GAAG;AACdC,IAAAA,gBAAgB,EAAE,GAAG;AACrBC,IAAAA,cAAc,EAAE,GAAG;AACnBC,IAAAA,aAAa,EAAE,GAAG;AAClBC,IAAAA,eAAe,EAAE,GAAG;AACpBC,IAAAA,WAAW,EAAE,GAAG;AAChBC,IAAAA,YAAY,EAAE,GAAG;AACjBC,IAAAA,mBAAmB,EAAE,GAAG;AACxBnI,IAAAA,cAAc,EAAE,IAAI;AACpBoI,IAAAA,SAAS,EAAE,GAAA;GACZ;AACDC,EAAAA,YAAY,EAAE;AACZC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,MAAM,EAAE,GAAG;AACXC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,IAAI,EAAE,GAAG;AACTC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,UAAU,EAAE,GAAG;AACfC,IAAAA,IAAI,EAAE,GAAG;AACTC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,IAAI,EAAE,GAAG;AACTC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,MAAM,EAAE,GAAG;AACXC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,EAAE,EAAE,GAAG;AACPC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,OAAO,EAAE,GAAG;AACZC,IAAAA,MAAM,EAAE,GAAG;AACXC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,QAAQ,EAAE,GAAG;AACbC,IAAAA,OAAO,EAAE,GAAG;AACZC,IAAAA,GAAG,EAAE,GAAG;AACRC,IAAAA,KAAK,EAAE,GAAG;AACVC,IAAAA,MAAM,EAAE,GAAG;AACXC,IAAAA,OAAO,EAAE,GAAA;AACX,GAAA;AACF,CAAC;;ACxMD;AAMO,MAAMzS,QAAQ,GAAG0S,UAAS,CAAA;AAC1B,MAAMhpC,UAAU,GAAGipC,YAAW,CAAA;AAC9B,MAAMjL,UAAU,GAAGjM,SAAO,CAACiM,UAAU,CAAA;AACrC,MAAMG,QAAQ,GAAGpM,SAAO,CAACoM,QAAQ,CAAA;AACjC,MAAMoI,YAAY,GAAGxU,SAAO,CAACwU,YAAY,CAAA;AACzC,MAAM2C,cAAc,GAAG;AAC5BC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,GAAG,EAAE,IAAI;AACTC,EAAAA,KAAK,EAAE,uBAAuB;AAC9BC,EAAAA,IAAI,EAAE,kBAAkB;AACxBC,EAAAA,IAAI,EAAE,2BAA2B;AACjCC,EAAAA,MAAM,EAAE,yCAAyC;AACjDC,EAAAA,KAAK,EAAE,qBAAqB;AAC5BC,EAAAA,MAAM,EAAE,2CAA2C;AACnDC,EAAAA,MAAM,EAAE,gCAAgC;AACxCC,EAAAA,QAAQ,EAAE,mEAAmE;AAC7EC,EAAAA,GAAG,EAAE,gCAAgC;AACrCC,EAAAA,IAAI,EAAE,oBAAoB;AAC1BC,EAAAA,IAAI,EAAE,yCAAyC;AAC/CC,EAAAA,GAAG,EAAE,iCAAiC;AACtCC,EAAAA,MAAM,EAAE,2BAA2B;AACnCC,EAAAA,IAAI,EAAE,sCAAsC;AAC5CC,EAAAA,IAAI,EAAE,sCAAsC;AAC5CC,EAAAA,GAAG,EAAE,8BAA8B;AACnCC,EAAAA,IAAI,EAAE,2CAA2C;AACjDC,EAAAA,KAAK,EAAE,gDAAgD;AACvDC,EAAAA,MAAM,EAAE,uDAAuD;AAC/DC,EAAAA,GAAG,EAAE,8BAAA;AACP,CAAC,CAAA;AACM,MAAMC,cAAc,GAAG;AAC5BC,EAAAA,EAAE,EAAE,SAAS;AACbC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,EAAE,EAAE,SAAS;AACbC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,EAAE,EAAE,SAAS;AACbC,EAAAA,EAAE,EAAE,MAAM;AACVC,EAAAA,QAAQ,EAAE,MAAM;AAChBC,EAAAA,EAAE,EAAE,WAAW;AACfC,EAAAA,OAAO,EAAE,WAAW;AACpBC,EAAAA,EAAE,EAAE3lD,SAAS;AACb4lD,EAAAA,EAAE,EAAE5lD,SAAS;AACb6lD,EAAAA,EAAE,EAAE7lD,SAAAA;AACN,CAAC,CAAA;AACM,MAAM8lD,kBAAkB,GAAG;AAChCC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,WAAW,EAAE,SAAS;AACtBC,EAAAA,SAAS,EAAE,SAAS;AACpBC,EAAAA,MAAM,EAAE,MAAM;AACdC,EAAAA,MAAM,EAAE,MAAM;AACdC,EAAAA,SAAS,EAAE,MAAM;AACjBC,EAAAA,MAAM,EAAE,WAAW;AACnBC,EAAAA,eAAe,EAAE,aAAa;AAC9BC,EAAAA,aAAa,EAAE,WAAW;AAC1BC,EAAAA,OAAO,EAAE,QAAQ;AACjBC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,MAAM,EAAE5mD,SAAS;AACjB6mD,EAAAA,MAAM,EAAE7mD,SAAS;AACjB8mD,EAAAA,MAAM,EAAE9mD,SAAS;AACjB+mD,EAAAA,MAAM,EAAE/mD,SAAS;AACjBgnD,EAAAA,MAAM,EAAEhnD,SAAAA;AACV,CAAC,CAAA;AACM,MAAMinD,UAAU,GAAG;AACxBC,EAAAA,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACxBC,EAAAA,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACrBC,EAAAA,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AAChCC,EAAAA,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC9BC,EAAAA,SAAS,EAAE,CAAC,yCAAyC,EAAE,SAAS,CAAC;AACjEC,EAAAA,MAAM,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC;AAC5CC,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAA;AAC7B,CAAC,CAAA;AACM,MAAMC,gBAAgB,GAAG;EAC9BC,aAAaA,CAACC,KAAK,EAAE;IACnB,OAAOtzC,MAAM,CAACuzC,YAAY,CAAC1pC,QAAQ,CAACypC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;GAChD;AACDr8C,EAAAA,IAAIA,CAAC/I,GAAG,EAAEP,IAAI,EAAE;AACd,IAAA,OAAOO,GAAG,CAAA;GACX;EACDA,GAAGA,CAACA,GAAG,EAAE;AACP,IAAA,OAAOA,GAAG,CAAA;AACZ,GAAA;AACF,CAAC,CAAA;AACM,MAAMslD,eAAe,GAAG,eAAe,CAAA;AACvC,MAAMC,SAAS,GAAG;AACvB,EAAA,IAAI,EAAE,QAAQ;AACd,EAAA,KAAK,EAAE,QAAQ;AACf,EAAA,IAAI,EAAE,QAAQ;AACd,EAAA,IAAI,EAAE,QAAQ;AACd,EAAA,GAAG,EAAE,QAAA;AACP,CAAC,CAAA;AACM,MAAMC,oBAAoB,GAAG;AAClC,EAAA,GAAG,EAAE,aAAa;AAClBC,EAAAA,EAAE,EAAE,aAAa;AACjBvlD,EAAAA,CAAC,EAAE,WAAW;AACdwlD,EAAAA,EAAE,EAAE,WAAW;AACfC,EAAAA,MAAM,EAAEloD,SAAAA;AACV,CAAC,CAAA;AACM,MAAMmoD,WAAW,GAAG;AACzB,EAAA,GAAG,EAAE;AACH,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACbllD,IAAAA,CAAC,EAAE,QAAQ;AACXkI,IAAAA,CAAC,EAAE,QAAA;GACJ;AACD1I,EAAAA,CAAC,EAAE;AACD,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,CAAC,EAAE,QAAQ;AACX,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE,QAAQ;AACb2e,IAAAA,CAAC,EAAE,QAAQ;AACXnY,IAAAA,CAAC,EAAE,QAAQ;AACXgO,IAAAA,CAAC,EAAE,QAAQ;AACX5R,IAAAA,CAAC,EAAE,QAAQ;AACX,IAAA,QAAQ,EAAE,QAAQ;AAClB+iD,IAAAA,CAAC,EAAE,QAAQ;AACX5yB,IAAAA,CAAC,EAAE,QAAQ;AACXxR,IAAAA,CAAC,EAAE,QAAQ;AACXqkC,IAAAA,CAAC,EAAE,QAAQ;AACXl9C,IAAAA,CAAC,EAAE,QAAQ;AACXkX,IAAAA,CAAC,EAAE,QAAQ;AACXimC,IAAAA,CAAC,EAAE,QAAQ;AACXt0C,IAAAA,CAAC,EAAE,QAAA;AACL,GAAA;AACF,CAAC,CAAA;AACM,MAAMu0C,qBAAqB,GAAG,CACnC,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,IAAI,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,CACV;;;;;;;;;;;;;;;;;;;;;AC3LD,eAAe;EACbC,SAAS;AACTh5C,EAAAA,KAAK,EAAE;cACL6gC,aAAQ;AACRC,YAAAA,WAAAA;GACD;AACDthC,EAAAA,KAAK,EAAE;AACLqhC,IAAAA,QAAQ,EAAE,IAAI;AACdjgC,IAAAA,MAAM,EAAE,KAAK;AACbq4C,IAAAA,YAAY,EAAE,OAAA;GACf;AACDnlD,EAAAA,MAAM,EAAE;AACNolD,IAAAA,YAAY,EAAE,KAAK;AACnBC,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,SAAS,EAAE,IAAA;GACZ;AACDC,EAAAA,KAAK,EAAE;AACLC,IAAAA,gBAAgB,EAAE,KAAK;AACvBC,IAAAA,qBAAqB,EAAE,GAAA;AACzB,GAAA;AACF,CAAC;;ACvBD,SAAShyC,SAAOA,CAAC9N,CAAC,EAAEiL,CAAC,EAAE;AACrB,EAAA,IAAIF,CAAC,GAAGrQ,MAAM,CAACC,IAAI,CAACqF,CAAC,CAAC,CAAA;EACtB,IAAItF,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAIC,CAAC,GAAGtT,MAAM,CAACqT,qBAAqB,CAAC/N,CAAC,CAAC,CAAA;IACvCiL,CAAC,KACE+C,CAAC,GAAGA,CAAC,CAAC3M,MAAM,CAAC,UAAU4J,CAAC,EAAE;MACzB,OAAOvQ,MAAM,CAACuT,wBAAwB,CAACjO,CAAC,EAAEiL,CAAC,CAAC,CAACL,UAAU,CAAA;AACzD,KAAC,CAAC,CAAC,EACHG,CAAC,CAAC5S,IAAI,CAAC+V,KAAK,CAACnD,CAAC,EAAEiD,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,EAAA,OAAOjD,CAAC,CAAA;AACV,CAAA;AACA,SAASoD,eAAaA,CAACnO,CAAC,EAAE;AACxB,EAAA,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,SAAS,CAACtW,MAAM,EAAEmT,CAAC,EAAE,EAAE;AACzC,IAAA,IAAIF,CAAC,GAAG,IAAI,IAAIqD,SAAS,CAACnD,CAAC,CAAC,GAAGmD,SAAS,CAACnD,CAAC,CAAC,GAAG,EAAE,CAAA;AAChDA,IAAAA,CAAC,GAAG,CAAC,GACD6C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;MAC1CT,iBAAe,CAACxK,CAAC,EAAEiL,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAC,CAAC,GACFvQ,MAAM,CAAC2T,yBAAyB,GAChC3T,MAAM,CAAC4T,gBAAgB,CAACtO,CAAC,EAAEtF,MAAM,CAAC2T,yBAAyB,CAACtD,CAAC,CAAC,CAAC,GAC/D+C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;AACtCvQ,MAAAA,MAAM,CAACiQ,cAAc,CAAC3K,CAAC,EAAEiL,CAAC,EAAEvQ,MAAM,CAACuT,wBAAwB,CAAClD,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOjL,CAAC,CAAA;AACV,CAAA;AACA,SAASwK,iBAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,gBAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,gBAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,cAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,cAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AAKA,MAAMizB,UAAU,GAAG,2BAA2B,CAAA;AAC9C,MAAM+hB,UAAU,GAAG;AACjBC,EAAAA,OAAO,EAAE,KAAK;AACdD,EAAAA,UAAU,EAAE;AACV7oD,IAAAA,KAAK,EAAE,KAAK;AACZqqC,IAAAA,UAAU,EAAE,IAAA;AACd,GAAA;AACF,CAAC,CAAA;AACD,MAAMjM,OAAK,GAAG8K,GAAG,CAACoD,MAAM,CAAC;AACvByc,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJhpD,MAAAA,KAAK,EAAE,uCAAuC;AAC9CqqC,MAAAA,UAAU,EAAE,IAAA;KACb;AACD1lB,IAAAA,EAAE,EAAE;AACF3kB,MAAAA,KAAK,EAAE,GAAG;AACViB,MAAAA,IAAI,EAAE,OAAA;AACR,KAAA;GACD;AACD2H,EAAAA,KAAK,EAAEqO,eAAa,CAClBA,eAAa,CAAC,EAAE,EAAE4xC,UAAU,CAAC,EAC7B,EAAE,EACF;AACEI,IAAAA,cAAc,EAAE;AACdjpD,MAAAA,KAAK,EAAE,2DAA2D;AAClEy1B,MAAAA,IAAI,EAAE,oBAAA;KACP;AACDyzB,IAAAA,aAAa,EAAE;AACblpD,MAAAA,KAAK,EAAE8mC,UAAU;AACjBrR,MAAAA,IAAI,EAAE,mBAAA;AACR,KAAA;AACF,GACF,CAAC;AACD0zB,EAAAA,kBAAkB,EAAElyC,eAAa,CAC/BA,eAAa,CAAC,EAAE,EAAE4xC,UAAU,CAAC,EAC7B,EAAE,EACF;AACEO,IAAAA,MAAM,EAAE;AACNppD,MAAAA,KAAK,EAAE,MAAM;AACby1B,MAAAA,IAAI,EAAE,QAAA;AACR,KAAA;AACF,GACF,CAAC;AACD4zB,EAAAA,iBAAiB,EAAEpyC,eAAa,CAC9BA,eAAa,CAAC,EAAE,EAAE4xC,UAAU,CAAC,EAC7B,EAAE,EACF;AACEO,IAAAA,MAAM,EAAE;AACNppD,MAAAA,KAAK,EAAE,MAAM;AACby1B,MAAAA,IAAI,EAAE,mBAAA;KACP;AACDj1B,IAAAA,KAAK,EAAE,SAAS;AAChB8oD,IAAAA,KAAK,EAAE;AACLtpD,MAAAA,KAAK,EAAE,GAAG;AACVy1B,MAAAA,IAAI,EAAE,QAAA;AACR,KAAA;AACF,GACF,CAAC;AACD8zB,EAAAA,MAAM,EAAEtyC,eAAa,CACnBA,eAAa,CAAC,EAAE,EAAE4xC,UAAU,CAAC,EAC7B,EAAE,EACF;IACE/hB,UAAU;AACV/3B,IAAAA,MAAM,EAAE,OAAO;AACfse,IAAAA,IAAI,EAAE,GAAG;AACTm8B,IAAAA,MAAM,EAAE,GAAG;AACXF,IAAAA,KAAK,EAAE,GAAG;AACVG,IAAAA,KAAK,EAAE;AACLzpD,MAAAA,KAAK,EAAE,GAAG;AACViB,MAAAA,IAAI,EAAE,eAAA;KACP;AACDmoD,IAAAA,MAAM,EAAE;AACNppD,MAAAA,KAAK,EAAE,GAAG;AACViB,MAAAA,IAAI,EAAE,eAAA;KACP;AACDyoD,IAAAA,MAAM,EAAE;AACN1pD,MAAAA,KAAK,EAAE,MAAM;AACb8N,MAAAA,GAAG,EAAE,IAAA;AACP,KAAA;AACF,GACF,CAAC;AACD67C,EAAAA,aAAa,EAAE;AACbP,IAAAA,MAAM,EAAE;AACNppD,MAAAA,KAAK,EAAE,GAAG;AACViB,MAAAA,IAAI,EAAE,eAAA;KACP;AACDwoD,IAAAA,KAAK,EAAE;AACLzpD,MAAAA,KAAK,EAAE,GAAG;AACV8N,MAAAA,GAAG,EAAE,IAAA;KACN;AACDjM,IAAAA,IAAI,EAAE;AACJ7B,MAAAA,KAAK,EAAE,oBAAoB;AAC3BqqC,MAAAA,UAAU,EAAE,IAAA;AACd,KAAA;GACD;AACDuf,EAAAA,aAAa,EAAE;AACbR,IAAAA,MAAM,EAAE;AACNppD,MAAAA,KAAK,EAAE,GAAG;AACViB,MAAAA,IAAI,EAAE,eAAA;KACP;AACDyoD,IAAAA,MAAM,EAAE;AACN1pD,MAAAA,KAAK,EAAE,GAAG;AACV8N,MAAAA,GAAG,EAAE,IAAA;KACN;AACDjM,IAAAA,IAAI,EAAE;AACJ7B,MAAAA,KAAK,EAAE,qBAAqB;AAC5BqqC,MAAAA,UAAU,EAAE,IAAA;AACd,KAAA;AACF,GAAA;AACF,CAAC,CAAC,CAAA;AACF,MAAMwf,UAAU,GAAG;AACjB,EAAA,GAAG,EAAE,GAAG;AACR,EAAA,GAAG,EAAE,GAAA;AACP,CAAC,CAAA;AACM,MAAMC,aAAa,GAAG,IAAI/nB,OAAY,CAC3C;AACEgoB,EAAAA,IAAIA,GAAG;IACL,MAAMxqD,OAAO,GAAG,EAAE,CAAA;AAClB,IAAA,OAAO,IAAI,EAAE;AACX,MAAA,OAAO,IAAI,CAACg/B,UAAU,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAA,IAAI,CAACC,YAAY,CAAC,MAAM,CAAC,CAAA;AAC3B,OAAA;AACA,MAAA,IAAI,IAAI,CAACF,cAAc,EAAE,EAAE;AACzB,QAAA,MAAA;AACF,OAAA;MACA/+B,OAAO,CAAC0B,IAAI,CAAC,IAAI,CAACo9B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AACzC,KAAA;AACA,IAAA,OAAO9+B,OAAO,CAAC4K,MAAM,CAACwT,OAAO,CAAC,CAAA;GAC/B;AACDrb,EAAAA,CAACA,GAAG;AACF,IAAA,IAAI0nD,QAAQ,CAAA;AACZ,IAAA,OAAOA,QAAQ,KAAK,IAAI,CAAC90C,KAAK,EAAE;MAC9B80C,QAAQ,GAAG,IAAI,CAAC90C,KAAK,CAAA;AACrB,MAAA,IAAI,CAACspB,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACrC,MAAA,IAAI,CAACA,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACpC,KAAA;GACD;AACDyrB,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAACzrB,YAAY,CAAC,IAAI,CAAC,CAAA;AACvB,IAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,IAAA,MAAMzzB,IAAI,GAAG,CACX,IAAI,CAAC2zB,UAAU,CAAC,gBAAgB,CAAC,GAC7B,IAAI,CAACC,YAAY,CAAC,gBAAgB,CAAC,GACnC,IAAI,CAACA,YAAY,CAAC,eAAe,CAAC,EACtC1zB,KAAK,CAACzJ,WAAW,EAAE,CAAA;AACrB,IAAA,IAAI,CAACg9B,WAAW,CAAC,GAAG,CAAC,CAAA;IACrB,MAAM6rB,SAAS,GAAG,IAAI,CAAC1rB,YAAY,CAAC,QAAQ,CAAC,CAAC1zB,KAAK,CAAA;AACnD,IAAA,IAAI,CAACuzB,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,IAAA,IAAI7a,MAAM,CAAA;IACV,IAAI5Y,IAAI,KAAK,QAAQ,EAAE;MACrB,MAAM,CAAC5C,GAAG,EAAE8C,KAAK,CAAC,GAAG,IAAI,CAACuzB,WAAW,CAAC,OAAO,CAAC,CAAA;MAC9C,IAAI,CAAClU,KAAK,CAACggC,OAAO,CAACniD,GAAG,CAAC,GAAG8C,KAAK,CAAA;AACjC,KAAC,MAAM,IAAIF,IAAI,KAAK,UAAU,EAAE;AAC9B,MAAA,IAAI,CAACyzB,WAAW,CAAC,YAAY,CAAC,CAAA;AAChC,KAAC,MAAM;MACL,MAAM79B,KAAK,GAAG,IAAI,CAACg+B,YAAY,CAAC,OAAO,CAAC,CAAC1zB,KAAK,CAAA;AAC9C,MAAA,IAAI,CAACuzB,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,MAAA,IAAI,CAACG,YAAY,CAAC,OAAO,CAAC,CAAA;AAC1B,MAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,MAAA,MAAM+rB,SAAS,GAAG,IAAI,CAAC/rB,WAAW,CAAC,WAAW,CAAC,CAAA;MAC/C7a,MAAM,GAAGvM,eAAa,CACpB;QACErM,IAAI;AACJpK,QAAAA,KAAAA;OACD,EACD4pD,SACF,CAAC,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAAC/rB,WAAW,CAAC,GAAG,CAAC,CAAA;IACrB,MAAMgsB,UAAU,GAAG,IAAI,CAAC7rB,YAAY,CAAC,QAAQ,CAAC,CAAC1zB,KAAK,CAAA;AACpD,IAAA,IAAIu/C,UAAU,KAAKR,UAAU,CAACK,SAAS,CAAC,EAAE;MACxCj5C,MAAM,CAACi1B,IAAI,CACT,iBAAiB,EAChB,uBAAsBgkB,SAAU,CAAA,kBAAA,EAAoBG,UAAW,CAAA,CAAA,CAClE,CAAC,CAAA;AACH,KAAA;AACA,IAAA,OAAO7mC,MAAM,CAAA;GACd;AACD8mC,EAAAA,SAASA,GAAG;AACV,IAAA,MAAMthD,MAAM,GAAG;AACbX,MAAAA,UAAU,EAAE,EAAC;KACd,CAAA;AACD,IAAA,OAAO,IAAI,CAACk2B,UAAU,CAAC,YAAY,CAAC,EAAE;MACpC,MAAM,CAAC7f,KAAK,EAAE5T,KAAK,CAAC,GAAG,IAAI,CAACuzB,WAAW,CAAC,OAAO,CAAC,CAAA;AAChD,MAAA,IAAIksB,eAAe,CAAA;MACnB,IAAIC,cAAc,GAAG,SAAS,CAAA;MAC9B,IAAI9rC,KAAK,CAAChe,QAAQ,CAAC2C,QAAM,CAACqlD,KAAK,CAACC,gBAAgB,CAAC,EAAE;AACjD4B,QAAAA,eAAe,GAAG7rC,KAAK,CAACza,KAAK,CAAC,CAAC,EAAE,CAACZ,QAAM,CAACqlD,KAAK,CAACC,gBAAgB,CAAC/nD,MAAM,CAAC,CAAA;AACzE,OAAC,MAAM,IACL8d,KAAK,CAAC9a,QAAQ,CAACP,QAAM,CAACqlD,KAAK,CAACC,gBAAgB,GAAGtlD,QAAM,CAACqlD,KAAK,CAACE,qBAAqB,CAAC,EAClF;QACC,CAAC2B,eAAe,EAAEC,cAAc,CAAC,GAAG9rC,KAAK,CAAC3e,KAAK,CAC9CsD,QAAM,CAACqlD,KAAK,CAACC,gBAAgB,GAAGtlD,QAAM,CAACqlD,KAAK,CAACE,qBAC/C,CAAC,CAAA;AACH,OAAA;AACA,MAAA,IAAI2B,eAAe,EAAE;AACnB,QAAA,IAAI,CAACvhD,MAAM,CAACyhD,WAAW,EAAE;AACvBzhD,UAAAA,MAAM,CAACyhD,WAAW,GAAG,EAAE,CAAA;AACzB,SAAA;AACA,QAAA,IAAI,CAACzhD,MAAM,CAACyhD,WAAW,CAACF,eAAe,CAAC,EAAE;AACxCvhD,UAAAA,MAAM,CAACyhD,WAAW,CAACF,eAAe,CAAC,GAAG,EAAE,CAAA;AAC1C,SAAA;QACAvhD,MAAM,CAACyhD,WAAW,CAACF,eAAe,CAAC,CAACC,cAAc,CAAC,GAAG1/C,KAAK,CAAA;AAC7D,OAAC,MAAM;AACL9B,QAAAA,MAAM,CAACX,UAAU,CAACqW,KAAK,CAAC,GAAG5T,KAAK,CAAA;AAClC,OAAA;AACA,MAAA,IAAI,CAACuzB,WAAW,CAAC,GAAG,CAAC,CAAA;MACrB,IAAI,IAAI,CAACG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;AACpC,QAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;AACvB,OAAC,MAAM;AACL,QAAA,MAAA;AACF,OAAA;AACF,KAAA;AACA,IAAA,OAAOr1B,MAAM,CAAA;GACd;AACD0hD,EAAAA,KAAKA,GAAG;AACN,IAAA,MAAMhsC,KAAK,GAAG,IAAI,CAAC8f,YAAY,CAAC,YAAY,CAAC,CAAC1zB,KAAK,CAACzJ,WAAW,EAAE,CAAA;AACjE,IAAA,IAAI,CAACg9B,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,IAAA,IAAI,CAACG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAC3B,IAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,IAAA,MAAMvzB,KAAK,GAAG,IAAI,CAACuzB,WAAW,CAAC,YAAY,CAAC,CAAA;AAC5C,IAAA,OAAO,CAAC3f,KAAK,EAAE5T,KAAK,CAAC,CAAA;GACtB;AACD6/C,EAAAA,UAAUA,GAAG;AACX,IAAA,IAAI3hD,MAAM,GAAG,IAAI,CAACq1B,WAAW,CAAC,gBAAgB,CAAC,CAAA;AAC/C,IAAA,IAAI,CAACA,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,IAAA,OAAO,IAAI,CAACE,UAAU,CAAC,MAAM,CAAC,EAAE;AAC9B,MAAA,IAAI,CAACC,YAAY,CAAC,MAAM,CAAC,CAAA;AACzB,MAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;MACrBr1B,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,gBAAgB,CAAC,CAACr6B,QAAQ,EAAE,CAAA;AACvD,MAAA,IAAI,CAACq6B,WAAW,CAAC,GAAG,CAAC,CAAA;AACvB,KAAA;AACA,IAAA,OAAOr1B,MAAM,CAAA;GACd;AACD4hD,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,IAAI,CAACrsB,UAAU,CAAC,YAAY,CAAC,EAAE;MACjC,OAAO,IAAI,CAACpU,KAAK,CAACggC,OAAO,CAAC,IAAI,CAAC3rB,YAAY,CAAC,YAAY,CAAC,CAAC1zB,KAAK,CAACzJ,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;KACrF,MAAM,IAAI,IAAI,CAACk9B,UAAU,CAAC,QAAQ,CAAC,EAAE;MACpC,OAAOxgB,QAAQ,CAAC,IAAI,CAACygB,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;KAC7C,MAAM,IAAI,IAAI,CAACD,UAAU,CAAC,OAAO,CAAC,EAAE;AACnC,MAAA,OAAO,IAAI,CAACF,WAAW,CAAC,aAAa,CAAC,CAAA;AACxC,KAAC,MAAM;AACL,MAAA,OAAO,IAAI,CAACA,WAAW,CAAC,eAAe,CAAC,CAAA;AAC1C,KAAA;GACD;AACDwsB,EAAAA,WAAWA,GAAG;IACZ,IAAI7hD,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,IAAI,CAACw1B,YAAY,CAAC,OAAO,CAAC,CAAA;AAC1B,IAAA,OAAO,CAAC,IAAI,CAACD,UAAU,CAAC,OAAO,CAAC,EAAE;AAChCv1B,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;AACA,IAAA,IAAI,CAACG,YAAY,CAAC,OAAO,CAAC,CAAA;AAC1B,IAAA,OAAOx1B,MAAM,CAAA;GACd;AACD8hD,EAAAA,aAAaA,GAAG;IACd,IAAI9hD,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,IAAI,CAACw1B,YAAY,CAAC,QAAQ,CAAC,CAAA;AAC3B,IAAA,OAAO,CAAC,IAAI,CAACD,UAAU,CAAC,QAAQ,CAAC,EAAE;AACjCv1B,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;AACA,IAAA,IAAI,CAACG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAC3B,IAAA,OAAOx1B,MAAM,CAAA;GACd;AACD+hD,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,IAAI,CAACxsB,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC7B,MAAA,OAAQ,IAAG,IAAI,CAACF,WAAW,CAAC,eAAe,CAAE,CAAE,CAAA,CAAA,CAAA;AACjD,KAAC,MAAM;AACL,MAAA,OAAO,IAAI,CAACG,YAAY,CAAC,MAAM,CAAC,CAAC1zB,KAAK,CAAA;AACxC,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEq/C,EAAAA,OAAO,EAAEtH,cAAAA;AACX,CACF,CAAC,CAAA;AACM,SAASh0C,OAAKA,CAAChN,IAAI,EAAE;EAC1B,OAAOioD,aAAa,CAACj7C,KAAK,CAACuvB,OAAK,CAACiE,KAAK,CAACxgC,IAAI,CAAC,CAAC,CAAA;AAC/C;;AChVA,MAAMmpD,WAAW,GAAG;AAClBC,EAAAA,YAAY,EAAE,cAAc;AAC5BC,EAAAA,UAAU,EAAE,gCAAgC;AAC5CC,EAAAA,UAAU,EAAE,kBAAkB;AAC9BC,EAAAA,SAAS,EAAE,OAAA;AACb,CAAC,CAAA;AACD,MAAMC,gBAAgB,GAAIziD,KAAK,IAAK;AAClC,EAAA,MAAM,GAAGpI,KAAK,EAAEo0B,KAAK,CAAC,GAAGhsB,KAAK,CAAC5I,KAAK,CAACgrD,WAAW,CAACE,UAAU,CAAC,IAAI,EAAE,CAAA;AAClE,EAAA,IAAI,CAAC1qD,KAAK,IAAI,CAACo0B,KAAK,EAAE;AACpB,IAAA,OAAO,EAAE,CAAA;AACX,GAAC,MAAM;AACL,IAAA,MAAM02B,GAAG,GAAG;AACV1gD,MAAAA,IAAI,EAAE,MAAM;MACZpK,KAAK;AACL6H,MAAAA,UAAU,EAAE,EAAC;KACd,CAAA;IACDusB,KAAK,CACF10B,IAAI,EAAE,CACNH,KAAK,CAACirD,WAAW,CAACG,UAAU,CAAC,CAC7BhhD,MAAM,CAAE8iB,CAAC,IAAKA,CAAC,CAAC,CAChBtkB,OAAO,CAAEksB,IAAI,IAAK;AACjB,MAAA,IAAI,CAAC7sB,GAAG,EAAE8C,KAAK,CAAC,GAAG+pB,IAAI,CAAC90B,KAAK,CAACirD,WAAW,CAACI,SAAS,CAAC,CAAA;AACpD,MAAA,IAAItgD,KAAK,EAAE;AACT9C,QAAAA,GAAG,GAAGA,GAAG,CAAC9H,IAAI,EAAE,CAAA;AAChB4K,QAAAA,KAAK,GAAGA,KAAK,CAAC5K,IAAI,EAAE,CAAA;QACpB,IAAI8H,GAAG,KAAK,MAAM,EAAE;UAClBsjD,GAAG,CAAC1gD,IAAI,GAAGE,KAAK,CAAA;AAClB,SAAC,MAAM;AACLwgD,UAAAA,GAAG,CAACjjD,UAAU,CAACL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAC7B,SAAA;AACF,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,IAAA,OAAOwgD,GAAG,CAAA;AACZ,GAAA;AACF,CAAC,CAAA;AACD,MAAMC,WAAW,GAAIxlB,GAAG,IAAKA,GAAG,CAAC7lC,IAAI,EAAE,CAACH,KAAK,CAACirD,WAAW,CAACC,YAAY,CAAC,CAACxiD,GAAG,CAAC4iD,gBAAgB,CAAC;;ACnC7F;AAGA,MAAMG,SAAS,GAAG,IAAIxsC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AAC7C,MAAMysC,WAAW,GAAG,6EAA6E,CAAA;AACjG,MAAM/f,SAAO,GAAG,oBAAoB,CAAA;AACpC,SAASggB,WAAWA,CAAC7pD,IAAI,EAAE;AACzB,EAAA,OAAO,CAACwB,QAAM,CAACF,MAAM,CAACqlD,UAAU,IAAI,CAAC3mD,IAAI,CAAC7B,KAAK,CAACyrD,WAAW,CAAC,CAAA;AAC9D,CAAA;AACA,SAASE,iBAAiBA,CAACvrD,EAAE,EAAE;EAC7B,IAAIA,EAAE,KAAK,IAAI,EAAE;AACf,IAAA,OAAO,MAAM,CAAA;AACf,GAAC,MAAM,IAAIA,EAAE,KAAKP,SAAS,EAAE;AAC3B,IAAA,OAAO,WAAW,CAAA;AACpB,GAAC,MAAM,IAAIwD,QAAM,CAACF,MAAM,CAACqlD,UAAU,EAAE;IACnC,OAAOpoD,EAAE,CAAC4D,QAAQ,EAAE,CAAC1D,OAAO,CAACmrD,WAAW,EAAE,EAAE,CAAC,CAAA;AAC/C,GAAC,MAAM;AACL,IAAA,OAAOrrD,EAAE,CAAC4D,QAAQ,EAAE,CAAA;AACtB,GAAA;AACF,CAAA;AACA,SAAS4nD,SAASA,CAAC/pD,IAAI,EAAE;EACvB,IAAI,CAACA,IAAI,EAAE;AACT,IAAA,OAAO,EAAE,CAAA;AACX,GAAC,MAAM;AACL,IAAA,OAAOA,IAAI,CACRogB,SAAS,CAAC,MAAM,CAAC,CACjB3hB,OAAO,CAACorC,SAAO,EAAE,EAAE,CAAC,CACpB3rC,KAAK,CAAC0rD,WAAW,CAAC,CAClBxmD,IAAI,CAAEwmC,IAAI,IAAKA,IAAI,CAAC7qC,MAAM,IAAI,CAAC4qD,SAAS,CAACvsC,GAAG,CAACwsB,IAAI,CAACpqC,WAAW,EAAE,CAAC,CAAC,CAAA;AACtE,GAAA;AACF,CAAA;AACA,MAAMmP,IAAI,GAAG,IAAIuxB,UAAe,CAAC,CAC/B;AACEt7B,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,OAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,uBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,SAAS;AACjBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,KAAK;AACbyJ,IAAAA,MAAM,EAAE;AACNhK,MAAAA,MAAM,EAAE,KAAK;AACbgX,MAAAA,KAAK,EAAE,KAAA;AACT,KAAA;AACF,GAAA;AACF,CAAC,CACF,CAAC,CAAA;AACF,MAAM2uC,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC5F,MAAMr0C,IAAI,GAAG,aAAa,CAAA;AAC1B,MAAMs0C,KAAK,GAAG,cAAc,CAAA;AAC5B,MAAMC,MAAM,GAAG;AACpBjJ,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,GAAG,EAAE,EAAE;AACPuI,EAAAA,OAAO,EAAE,CAAC;AACVC,EAAAA,QAAQ,EAAE,CAAC;AACXC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,KAAK,EAAE,CAAC;AACRjJ,EAAAA,GAAG,EAAE,CAAC;AACNkJ,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,MAAM,EAAE,CAAC;AACTC,EAAAA,SAAS,EAAE,CAAC;AACZC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,QAAQ,EAAE,EAAA;AACZ,CAAC,CAAA;AACM,MAAMC,SAAS,GAAG;AACvBC,EAAAA,QAAQ,EAAE,mBAAmB;AAC7BC,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BnlB,EAAAA,SAAS,EAAE,YAAY;AACvBolB,EAAAA,UAAU,EAAE,kBAAkB;AAC9BnlB,EAAAA,UAAU,EAAE,kBAAkB;AAC9BolB,EAAAA,SAAS,EAAE,iBAAiB;AAC5B5zC,EAAAA,QAAQ,EAAE,mBAAmB;AAC7B6zC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,OAAO,EAAE,UAAU;AACnBt0C,EAAAA,MAAM,EAAE,QAAQ;AAChBu0C,EAAAA,QAAQ,EAAE,eAAe;AACzBC,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BC,EAAAA,QAAQ,EAAE,eAAe;AACzBC,EAAAA,QAAQ,EAAE,gBAAgB;AAC1BC,EAAAA,QAAQ,EAAE,aAAa;AACvBC,EAAAA,MAAM,EAAE,gBAAgB;AACxBC,EAAAA,QAAQ,EAAE,uBAAuB;AACjCC,EAAAA,QAAQ,EAAE,yBAAyB;AACnCC,EAAAA,QAAQ,EAAE,uBAAuB;AACjCC,EAAAA,QAAQ,EAAE,wBAAwB;AAClCC,EAAAA,QAAQ,EAAE,qBAAA;AACZ,CAAC,CAAA;AACM,MAAMC,wBAAwB,GACnC,gLAAgL,CAAA;AAC3K,SAAS3lB,SAASA,CAACjqB,IAAI,EAAE;EAC9B,MAAMiJ,KAAK,GAAGjJ,IAAI,CACfle,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACbO,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CACrBP,KAAK,CAAC,GAAG,CAAC,CAAA;EACb,MAAM4J,IAAI,GAAG,CAACud,KAAK,CAAC,CAAC,CAAC,CAAC5mB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACzE,EAAA,MAAM6yC,KAAK,GAAG,CAACjsB,KAAK,CAAC,CAAC,CAAC,CAAA;AACvB,EAAA,MAAM4mC,GAAG,GAAG,CAAC5mC,KAAK,CAAC,CAAC,CAAC,CAAA;AACrB,EAAA,IAAI,CAACisB,KAAK,IAAIA,KAAK,GAAG,EAAE,EAAE;IACxB,OAAO,CAACxpC,IAAI,CAAC,CAAA;AACf,GAAC,MAAM,IAAI,CAACmkD,GAAG,EAAE;AACf,IAAA,OAAO,CAACnkD,IAAI,EAAEwpC,KAAK,CAAC,CAAA;AACtB,GAAC,MAAM;AACL,IAAA,OAAO,CAACxpC,IAAI,EAAEwpC,KAAK,EAAE2a,GAAG,CAAC,CAAA;AAC3B,GAAA;AACF,CAAA;AACO,SAASC,UAAUA,CAACjjD,KAAK,EAAE;EAChC,IAAIA,KAAK,IAAI,IAAI,EAAE;AACjB,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;EACA,IAAI,CAACA,KAAK,EAAE;AACV,IAAA,OAAO,CAACiT,QAAQ,CAACjT,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;AAC9B,GAAA;EACAA,KAAK,GAAGA,KAAK,CAAC5K,IAAI,EAAE,CAACmB,WAAW,EAAE,CAAA;EAClC,IAAIyJ,KAAK,IAAIihD,MAAM,EAAE;AACnB,IAAA,OAAO,CAACA,MAAM,CAACjhD,KAAK,CAAC,CAAC,CAAA;AACxB,GAAA;AACA,EAAA,MAAMoc,KAAK,GAAGpc,KAAK,CAAC/K,KAAK,CAAC,KAAK,CAAC,CAAA;AAChC,EAAA,IAAIozC,KAAK,CAAA;AACT,EAAA,IAAI2a,GAAG,CAAA;AACP,EAAA,IAAI5mC,KAAK,CAAC,CAAC,CAAC,IAAI6kC,MAAM,EAAE;AACtB5Y,IAAAA,KAAK,GAAG4Y,MAAM,CAAC7kC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB4mC,IAAAA,GAAG,GAAG/vC,QAAQ,CAACmJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;GACzB,MAAM,IAAIA,KAAK,CAAC,CAAC,CAAC,IAAI6kC,MAAM,EAAE;AAC7B5Y,IAAAA,KAAK,GAAG4Y,MAAM,CAAC7kC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB4mC,IAAAA,GAAG,GAAG/vC,QAAQ,CAACmJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,GAAA;AACA,EAAA,OAAO4mC,GAAG,GAAG,CAAC3a,KAAK,EAAE2a,GAAG,CAAC,GAAG3a,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EAAE,CAAA;AAClD,CAAA;AACO,SAAS6a,WAAWA,CAAChoD,MAAM,EAAE0D,MAAM,EAAEvL,MAAM,EAAE0e,KAAK,EAAE;EACzD,IAAIrc,KAAK,GAAG,EAAE,CAAA;AACd,EAAA,IAAIwF,MAAM,IAAIA,MAAM,CAAC,CAAC,CAAC,EAAE;AACvBxF,IAAAA,KAAK,IAAIorD,SAAS,CAAC5lD,MAAM,CAAC,CAAC,CAAC,CAACE,MAAM,IAAIF,MAAM,CAAC,CAAC,CAAC,CAACiX,OAAO,CAAC,CAAA;AAC3D,GAAA;AACA,EAAA,IAAIvT,MAAM,IAAIA,MAAM,CAAC,YAAY,CAAC,IAAIA,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;IAC7DlJ,KAAK,IAAIkJ,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrC,GAAA;AACA,EAAA,IAAIvL,MAAM,EAAE;AACVqC,IAAAA,KAAK,IAAIrC,MAAM,CAAA;GAChB,MAAM,IAAI0e,KAAK,EAAE;AAChBrc,IAAAA,KAAK,IAAIorD,SAAS,CAAC/uC,KAAK,CAAC,CAAA;AAC3B,GAAA;AACA,EAAA,OAAOrc,KAAK,CAAA;AACd,CAAA;AACO,MAAMytD,UAAU,GAAG;AACxBC,EAAAA,IAAI,EAAE;IACJ7uB,QAAQA,CAAC,GAAG7R,IAAI,EAAE;AAChB,MAAA,OAAOA,IAAI,CAACvoB,IAAI,CAAC0Y,OAAO,CAAC,CAAA;KAC1B;IACDuhB,QAAQA,CAACp0B,KAAK,EAAE;MACd,OAAO,CAACA,KAAK,CAAC,CAAA;AAChB,KAAA;GACD;AACDyM,EAAAA,IAAI,EAAE;IACJ8nB,QAAQA,CAACphB,IAAI,EAAE;MACb,MAAMiJ,KAAK,GAAGjJ,IAAI,CACfle,KAAK,CAAC,GAAG,CAAC,CACV0I,GAAG,CAAExJ,IAAI,IAAMA,IAAI,IAAIA,IAAI,KAAK,IAAI,GAAGipC,SAAS,CAACjpC,IAAI,CAAC,GAAGY,SAAU,CAAC,CAAA;MACvE,OAAOie,KAAK,CAACoJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrB;AACEjK,QAAAA,OAAO,EAAEgB,IAAAA;AACX,OAAC,GACD;AACE,QAAA,YAAY,EAAEiJ,KAAAA;OACf,CAAA;KACN;IACDgY,QAAQA,CAACjhB,IAAI,EAAE;MACb,IAAI,YAAY,IAAIA,IAAI,EAAE;AACxB,QAAA,OAAOA,IAAI,CAAC,YAAY,CAAC,CACtBxV,GAAG,CAAE0lD,QAAQ,IACZA,QAAQ,CAAC1lD,GAAG,CAAE0lD,QAAQ,IAAKA,QAAQ,CAACnqD,QAAQ,EAAE,CAACoqD,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAACrrD,IAAI,CAAC,GAAG,CAC3E,CAAC,CACAA,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,OAAA;AACF,KAAA;GACD;AACDsrD,EAAAA,UAAU,EAAE;AACVhvB,IAAAA,QAAQA,CAAC11B,IAAI,EAAEwpC,KAAK,EAAE2a,GAAG,EAAE;AACzB,MAAA,IAAIhwC,KAAK,CAAC,CAACnU,IAAI,CAAC,EAAE;QAChB,OAAO;AACLsT,UAAAA,OAAO,EAAEtT,IAAAA;SACV,CAAA;AACH,OAAC,MAAM,IAAI,CAACmU,KAAK,CAAC,CAACgwC,GAAG,CAAC,IAAI,CAAChwC,KAAK,CAAC,CAACq1B,KAAK,CAAC,EAAE;QACzC,OAAO;UACL,YAAY,EAAE,CAAC,CAAC,CAACxpC,IAAI,EAAE,CAACwpC,KAAK,EAAE,CAAC2a,GAAG,CAAC,CAAA;SACrC,CAAA;AACH,OAAC,MAAM;QACL,OAAO;UACL,YAAY,EAAE,CAAC,CAAC,CAACnkD,IAAI,EAAE,GAAGokD,UAAU,CAAC5a,KAAK,CAAC,CAAC,CAAA;SAC7C,CAAA;AACH,OAAA;KACD;IACDjU,QAAQA,CAACjhB,IAAI,EAAE;MACb,IAAI,YAAY,IAAIA,IAAI,EAAE;AACxB,QAAA,MAAM,CAACtU,IAAI,EAAEwpC,KAAK,EAAE2a,GAAG,CAAC,GAAG7vC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,OAAO,CAACtU,IAAI,CAAC3F,QAAQ,EAAE,EAAEmvC,KAAK,GAAI2a,GAAG,GAAI,CAAA,EAAEjC,MAAM,CAAC1Y,KAAK,GAAG,CAAC,CAAE,CAAA,CAAA,EAAG2a,GAAI,CAAA,CAAC,GAAG3a,KAAK,GAAItzC,SAAS,CAAC,CAAA;AAC7F,OAAC,MAAM;AACL,QAAA,OAAO,EAAE,CAAA;AACX,OAAA;AACF,KAAA;GACD;AACDyuD,EAAAA,MAAM,EAAE;AACNjvB,IAAAA,QAAQA,CAACj/B,EAAE,EAAEwK,IAAI,EAAE;MACjB,IAAIA,IAAI,KAAK,QAAQ,EAAE;AACrB,QAAA,OAAOxK,EAAE,CAAA;AACX,OAAA;KACD;IACD8+B,QAAQA,CAAC9+B,EAAE,EAAE;AACX,MAAA,OAAO,CAACA,EAAE,EAAE,QAAQ,CAAC,CAAA;AACvB,KAAA;GACD;AACDmuD,EAAAA,WAAW,EAAE;AACXlvB,IAAAA,QAAQA,CAACxiB,KAAK,EAAE2xC,KAAK,EAAE;AACrB,MAAA,IAAIA,KAAK,EAAE;AACT3xC,QAAAA,KAAK,IAAI,IAAI,GAAG2xC,KAAK,GAAG,GAAG,CAAA;AAC7B,OAAA;AACA,MAAA,OAAO3xC,KAAK,CAAA;KACb;IACDqiB,QAAQA,CAACriB,KAAK,EAAE;AACd,MAAA,OAAOA,KAAK,CAAC7c,KAAK,CAAC,sBAAsB,CAAC,CAACiE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACxD,KAAA;GACD;AACDwqD,EAAAA,aAAa,EAAE;IACbpvB,QAAQA,CAACqvB,YAAY,EAAE;AACrB,MAAA,IAAIA,YAAY,CAACptD,UAAU,CAAC,MAAM,CAAC,EAAE;AACnC,QAAA,OAAOotD,YAAY,CAAA;AACrB,OAAA;AACF,KAAA;GACD;AACDC,EAAAA,QAAQ,EAAE;IACRtvB,QAAQA,CAAC10B,IAAI,EAAE;AACb,MAAA,OAAOA,IAAI,CAAC5H,IAAI,CAAC,GAAG,CAAC,CAAA;KACtB;IACDm8B,QAAQA,CAACv0B,IAAI,EAAE;AACb,MAAA,OAAOA,IAAI,CAAC5K,KAAK,CAAC,GAAG,CAAC,CAAA;AACxB,KAAA;GACD;AACD+rD,EAAAA,KAAK,EAAE;IACLzsB,QAAQA,CAAC7+B,KAAK,EAAE;AACd,MAAA,OAAO,CAACA,KAAK,EAAEA,KAAK,CAAC,CAAA;KACtB;AACD0+B,IAAAA,QAAQA,CAAC9+B,EAAE,EAAEI,KAAK,EAAEwF,MAAM,EAAE0D,MAAM,EAAEvL,MAAM,EAAE0e,KAAK,EAAE;AACjD,MAAA,IAAIrc,KAAK,IAAIkrD,WAAW,CAAClrD,KAAK,CAAC,EAAE;AAC/B,QAAA,OAAOA,KAAK,CAAA;AACd,OAAC,MAAM,IAAI6C,QAAM,CAACF,MAAM,CAAColD,YAAY,EAAE;QACrC,OAAOoD,iBAAiB,CAACvrD,EAAE,CAAC,CAAA;AAC9B,OAAC,MAAM;AACL,QAAA,OAAO4tD,WAAW,CAAChoD,MAAM,EAAE0D,MAAM,EAAEvL,MAAM,EAAE0e,KAAK,CAAC,IAAI8uC,iBAAiB,CAACvrD,EAAE,CAAC,CAAA;AAC5E,OAAA;AACF,KAAA;GACD;AACDwuD,EAAAA,KAAK,EAAE;IACLvvB,QAAQA,CAAC10B,IAAI,EAAE;AACb,MAAA,OAAOA,IAAI,CAAClC,GAAG,CAAC+H,IAAI,CAACuvB,eAAe,CAAC,CAAA;KACtC;IACDb,QAAQA,CAACv0B,IAAI,EAAE;AACb,MAAA,OAAOA,IAAI,CAAClC,GAAG,CAAC+H,IAAI,CAACsvB,eAAe,CAAC,CAAA;AACvC,KAAA;GACD;AACD+uB,EAAAA,WAAW,EAAE;AACXxvB,IAAAA,QAAQA,CAAC10B,IAAI,EAAEyS,KAAK,EAAE;MACpB,OAAOzS,IAAI,CAAClC,GAAG,CAAC,CAACqmD,SAAS,EAAEhsD,CAAC,KAAK;AAChC,QAAA,IAAIisD,WAAW,CAAA;AACf,QAAA,MAAMC,UAAU,GAAGx+C,IAAI,CAACuvB,eAAe,CAAC+uB,SAAS,CAAC,CAAA;AAClD,QAAA,IACE,QAAQ1xC,KAAK,KAAK,IAAI,IACtBA,KAAK,KAAK,KAAK,CAAC,IAChB,CAAC2xC,WAAW,GAAG3xC,KAAK,CAAC5X,IAAI,MAAM,IAAI,IACnCupD,WAAW,KAAK,KAAK,CAAC,GAClB,KAAK,CAAC,GACNA,WAAW,CAACjsD,CAAC,CAAC,CAAC,KAAK,QAAQ,EAChC;UACAksD,UAAU,CAAC1xC,MAAM,GAAGF,KAAK,CAAC5X,IAAI,CAAC1C,CAAC,CAAC,CAAA;AACnC,SAAA;AACA,QAAA,OAAOksD,UAAU,CAAA;AACnB,OAAC,CAAC,CAAA;KACH;IACD9vB,QAAQA,CAACv0B,IAAI,EAAE;MACb,MAAM+S,KAAK,GAAG,EAAE,CAAA;MAChB,MAAMN,KAAK,GAAG,EAAE,CAAA;AAChB,MAAA,KAAK,IAAIta,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6H,IAAI,CAAC/J,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACpC4a,QAAAA,KAAK,CAACzc,IAAI,CAACuP,IAAI,CAACsvB,eAAe,CAACn1B,IAAI,CAAC7H,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,QAAA,IAAI6H,IAAI,CAAC7H,CAAC,CAAC,CAACwa,MAAM,EAAE;UAClBF,KAAK,CAACta,CAAC,CAAC,GAAG6H,IAAI,CAAC7H,CAAC,CAAC,CAACwa,MAAM,CAAA;AAC3B,SAAA;AACF,OAAA;AACA,MAAA,OAAO,CACLI,KAAK,EACLN,KAAK,CAACxc,MAAM,GACR;AACE4E,QAAAA,IAAI,EAAE4X,KAAAA;OACP,GACDvd,SAAS,CACd,CAAA;AACH,KAAA;GACD;AACDovD,EAAAA,KAAK,EAAE;IACL5vB,QAAQA,CAACgJ,KAAK,EAAE;AACd,MAAA,OAAOA,KAAK,CAAC/nC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAClC;IACD4+B,QAAQA,CAACmJ,KAAK,EAAE;AACd,MAAA,OAAOA,KAAK,CAAC/nC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACjC,KAAA;GACD;AACD4uD,EAAAA,gBAAgB,EAAE;IAChB7vB,QAAQA,CAAC,GAAG7R,IAAI,EAAE;AAChB,MAAA,OAAOA,IAAI,CAACvoB,IAAI,CAAC0Y,OAAO,CAAC,CAAA;KAC1B;IACDuhB,QAAQA,CAACnwB,MAAM,EAAE;MACf,MAAM/O,KAAK,GAAG+O,MAAM,CAAC/K,QAAQ,EAAE,CAAChE,KAAK,CAAC6tD,wBAAwB,CAAC,CAAA;MAC/D,OAAO7tD,KAAK,GAAGA,KAAK,CAACiE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;AACvC,KAAA;GACD;AACDkrD,EAAAA,MAAM,EAAE;IACNjwB,QAAQA,CAAC/U,KAAK,EAAE;AACd,MAAA,IAAI,+DAA+D,CAACta,IAAI,CAACsa,KAAK,CAAC,EAAE;AAC/E,QAAA,OAAOA,KAAK,CAAA;AACd,OAAA;AACF,KAAA;GACD;AACDilC,EAAAA,KAAK,EAAE;AACL/vB,IAAAA,QAAQA,CAACxiB,KAAK,EAAE03B,QAAQ,EAAEia,KAAK,EAAE;AAC/B,MAAA,IAAIja,QAAQ,EAAE;QACZ13B,KAAK,IAAI,IAAI,GAAG03B,QAAQ,CAAA;AAC1B,OAAA;AACA,MAAA,OAAO13B,KAAK,CAAA;KACb;IACDqiB,QAAQA,CAACriB,KAAK,EAAE;MACd,OAAO,CAACA,KAAK,CAAC,CAAA;AAChB,KAAA;AACF,GAAA;AACF,CAAC;;AC/VD,MAAMwyC,OAAO,GAAG,CACd;AACE5oD,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,UAAU;AAClBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,KAAK;AACbyJ,IAAAA,MAAM,EAAE;AACNrR,MAAAA,IAAI,EAAE,KAAK;AACXuxC,MAAAA,QAAQ,EAAE,KAAA;AACZ,KAAA;GACD;AACD7f,EAAAA,OAAO,EAAE;IACP2O,QAAQA,CAACrkB,QAAQ,EAAE;AACjB,MAAA,OAAQ,CAAoBy0C,kBAAAA,EAAAA,QAAU,CAACz0C,QAAQ,CAAE,CAAE,CAAA,CAAA,CAAA;AACrD,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEpU,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNktC,MAAAA,SAAS,EAAE,KAAA;KACZ;AACDzjC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAM;AACdovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;MACNkrC,UAAUA,CAAC/mC,IAAI,EAAE;QACf,OAAOA,IAAI,KAAK,MAAM,CAAA;OACvB;MACDwsC,aAAaA,CAACxsC,IAAI,EAAE;QAClB,OAAOA,IAAI,KAAK,MAAM,CAAA;AACxB,OAAA;KACD;AACDsF,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,QAAQ;AAChBqgB,EAAAA,OAAO,EAAE;IACP8O,QAAQA,CAACkwB,IAAI,EAAE;MACb,OAAO;AACLA,QAAAA,IAAAA;OACD,CAAA;KACF;AACDrwB,IAAAA,QAAQA,CAAC;AAAEqwB,MAAAA,IAAAA;AAAK,KAAC,EAAE;AACjB,MAAA,OAAOA,IAAI,CAAA;AACb,KAAA;AACF,GAAA;AACF,CAAC,CACF,CAAA;AACD,MAAMC,OAAO,GAAG,CACd;AACE/oD,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN6pC,MAAAA,UAAU,EAAE,KAAA;KACb;AACDpgC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,iBAAiB;EACzBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN6yB,MAAAA,QAAQ,EAAE,KAAA;KACX;AACDppB,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;AACnCyJ,EAAAA,MAAM,EAAE,MAAM;EACdqgB,OAAO,EAAE09B,UAAU,CAACK,MAAM;AAC1BhvB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNkrC,MAAAA,UAAU,EAAE,KAAA;KACb;AACDzhC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNwsC,MAAAA,SAAS,EAAE,KAAK;AAChBrC,MAAAA,SAAS,EAAE,KAAK;AAChBkC,MAAAA,YAAY,EAAE,KAAA;KACf;AACD5iC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN0rC,MAAAA,WAAW,EAAE,KAAK;AAClBkB,MAAAA,YAAY,EAAE,KAAK;AACnB72B,MAAAA,SAAS,EAAE,KAAA;KACZ;AACDtM,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,CACF,CAAA;AACD,eAAe,IAAI6xB,UAAe,CAAC,CACjC,GAAGytB,OAAO,EACV,GAAGH,OAAO,EACV;AACE5oD,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,UAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,UAAU;EAClBqgB,OAAO,EAAE09B,UAAU,CAAC12C,IAAAA;AACtB,CAAC,EACD;AACE9Q,EAAAA,MAAM,EAAE,YAAY;AACpByJ,EAAAA,MAAM,EAAE,QAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACrCyJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACY,WAAAA;AACtB,CAAC,EACD;AACEpoD,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,aAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,gBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,YAAY;AACpByJ,EAAAA,MAAM,EAAE,kBAAkB;EAC1BqgB,OAAO,EAAE09B,UAAU,CAACW,KAAAA;AACtB,CAAC,EACD;AACEnoD,EAAAA,MAAM,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC;AACvDyJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,IAAI;AACZyJ,IAAAA,MAAM,EAAE;AACN,MAAA,mBAAmB,EAAE,IAAA;AACvB,KAAA;GACD;EACDqgB,OAAO,EAAE09B,UAAU,CAACmB,KAAAA;AACtB,CAAC,EACD;AACE3oD,EAAAA,MAAM,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC;AACvDyJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNwsC,MAAAA,SAAS,EAAE,KAAA;KACZ;AACD/iC,IAAAA,MAAM,EAAE;AACN,MAAA,mBAAmB,EAAE,KAAK;MAC1BtF,IAAIA,CAACA,IAAI,EAAE;QACT,OAAO,CAACA,IAAI,IAAI,CAACA,IAAI,CAACtJ,UAAU,CAAC,SAAS,CAAC,CAAA;AAC7C,OAAA;AACF,KAAA;GACD;EACDivB,OAAO,EAAE09B,UAAU,CAACmB,KAAAA;AACtB,CAAC,EACD;AACE3oD,EAAAA,MAAM,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;AAChEyJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN,MAAA,CAAC+Q,IAAI,GAAG,SAAA;KACT;AACDtH,IAAAA,MAAM,EAAE;MACNtF,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,CAAA;AAC9E,KAAA;GACD;EACD2lB,OAAO,EAAE09B,UAAU,CAACmB,KAAAA;AACtB,CAAC,EACD;AACE3oD,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,uBAAuB;AAC/BovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN,MAAA,CAAC+Q,IAAI,GAAG,SAAA;KACT;AACDtH,IAAAA,MAAM,EAAE;MACNtF,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,CAAA;AAC9E,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,qBAAqB;AAC7BovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,KAAK;AACbyJ,IAAAA,MAAM,EAAE;AACN,MAAA,uBAAuB,EAAE,KAAA;AAC3B,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,mBAAmB;AAC3BovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN,MAAA,CAAC+Q,IAAI,GAAG,CACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,aAAa,CAAA;KAEhB;AACDtH,IAAAA,MAAM,EAAE;MACNtF,IAAI,EAAE,CACJ,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,EACN,aAAa,EACb,wBAAwB,EACxB,QAAQ,EACR,aAAa,EACb,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,CAAA;AAEb,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,kBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,aAAa;AACrByJ,EAAAA,MAAM,EAAE,wBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,KAAK;AACbyJ,EAAAA,MAAM,EAAE,KAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,SAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACW,KAAAA;AACtB,CAAC,EACD;AACEnoD,EAAAA,MAAM,EAAE,CAAC+Q,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC;AACtCtH,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AACzBqgB,EAAAA,OAAO,EAAE;AACP8O,IAAAA,QAAQA,CAACz0B,IAAI,EAAE6kD,OAAO,EAAEC,OAAO,EAAE;MAC/B,IAAI,CAACA,OAAO,EAAE;QACZ,IAAI9kD,IAAI,KAAK,eAAe,EAAE;AAC5B8kD,UAAAA,OAAO,GAAG,UAAU,CAAA;AACtB,SAAA;QACA,IAAI9kD,IAAI,KAAK,WAAW,EAAE;AACxB8kD,UAAAA,OAAO,GAAG,WAAW,CAAA;AACvB,SAAA;QACA,IAAI9kD,IAAI,KAAK,YAAY,EAAE;AACzB8kD,UAAAA,OAAO,GAAG,YAAY,CAAA;AACxB,SAAA;AACF,OAAA;AACA,MAAA,OAAO,CAACrgD,aAAK,CAAC5I,MAAM,CAACmE,IAAI,CAAC,IAAI,UAAU,EAAE8kD,OAAO,IAAID,OAAO,CAAC,CAAA;KAC9D;AACDvwB,IAAAA,QAAQA,CAACt0B,IAAI,EAAEmR,KAAK,EAAE;MACpB,MAAM4zC,UAAU,GAAGtgD,aAAK,CAACa,MAAM,CAACtF,IAAI,CAAC,IAAI,MAAM,CAAA;AAC/C,MAAA,OAAOmR,KAAK,IAAI4wC,SAAS,GAAG,CAACgD,UAAU,EAAE9vD,SAAS,EAAEkc,KAAK,CAAC,GAAG,CAAC4zC,UAAU,EAAE5zC,KAAK,CAAC,CAAA;AAClF,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEtV,EAAAA,MAAM,EAAE+Q,IAAI;AACZ8nB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,KAAA;AACR,KAAA;GACD;AACD2lB,EAAAA,OAAO,EAAE;AACP2O,IAAAA,QAAQA,GAAG;AACT,MAAA,OAAO,MAAM,CAAA;AACf,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEz4B,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,YAAY;EACpBqgB,OAAO,EAAE09B,UAAU,CAAC12C,IAAAA;AACtB,CAAC,EACD;AACE9Q,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,aAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;AACzCyJ,EAAAA,MAAM,EAAE,aAAa;EACrBqgB,OAAO,EAAE09B,UAAU,CAACM,WAAAA;AACtB,CAAC,EACD;AACE9nD,EAAAA,MAAM,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;AACzCyJ,EAAAA,MAAM,EAAE,OAAO;EACfqgB,OAAO,EAAE09B,UAAU,CAACM,WAAW;AAC/BjvB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,KAAK;AACbyJ,IAAAA,MAAM,EAAE;AACN,MAAA,aAAa,EAAE,KAAA;AACjB,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAEqlD,KAAK;AACb57C,EAAAA,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;EAC1EqgB,OAAO,EAAE09B,UAAU,CAACnC,KAAAA;AACtB,CAAC,EACD;AACErlD,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNsI,MAAAA,MAAM,EAAE,KAAK;AACb,MAAA,CAACyI,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,CAAA;KACjC;AACDtH,IAAAA,MAAM,EAAE;MACNvR,KAAKA,CAACA,KAAK,EAAE;QACX,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACA,KAAK,CAACqB,KAAK,CAAC,KAAK,CAAC,CAAA;OACxD;MACD4K,IAAI,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,CAAA;AAC5F,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN,MAAA,CAAC+Q,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAA;KAClD;AACDtH,IAAAA,MAAM,EAAE;MACNvR,KAAKA,CAACA,KAAK,EAAE;AACX,QAAA,OAAOA,KAAK,KAAK,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACqB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;OAClE;AACD4K,MAAAA,IAAI,EAAE,CACJ,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,CAAA;AAEhB,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAAC12C,IAAAA;AACtB,CAAC,EACD;AACE9Q,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;AAChCyJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACI,UAAU;AAC9B/uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNwX,MAAAA,IAAI,EAAE,KAAA;KACP;AACD/N,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,cAAc;AACtBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNmE,MAAAA,IAAI,EAAE,QAAA;KACP;AACDsF,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,QAAA;AACR,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,SAAS;EACjBqgB,OAAO,EAAE09B,UAAU,CAACU,QAAAA;AACtB,CAAC,EACD;AACEloD,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,UAAU;EAClBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAAA;AACtB,CAAC,EACD;AACEznD,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,UAAU;AAClBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNyU,MAAAA,QAAQ,EAAE,KAAA;KACX;AACDhL,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,MAAM;AACdovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN5H,MAAAA,IAAI,EAAE,KAAA;KACP;AACDqR,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,KAAK;AACbyJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;MACNtF,IAAI,EAAE,CAAC,iBAAiB,CAAA;AAC1B,KAAA;AACF,GAAA;AACF,CAAC,EACD;EACEnE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACxCyJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACiB,gBAAgB;AACpC5vB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;MACN,CAAC+Q,IAAI,CAAE5M,CAAAA,IAAI,EAAE;QACX,OAAOA,IAAI,KAAK,QAAQ,CAAA;AAC1B,OAAA;KACD;AACDsF,IAAAA,MAAM,EAAE;MACNtF,IAAIA,CAACA,IAAI,EAAE;QACT,OAAOA,IAAI,KAAK,QAAQ,CAAA;AAC1B,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;MACN,CAAC+Q,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAA;KACzD;AACDtH,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAA;AAC1C,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,eAAe;EACvBqgB,OAAO,EAAE09B,UAAU,CAAC12C,IAAAA;AACtB,CAAC,EACD;AACE9Q,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,0BAA0B;EAClCqgB,OAAO,EAAE09B,UAAU,CAACC,IAAAA;AACtB,CAAC,EACD;AACEznD,EAAAA,MAAM,EAAE,eAAe;AACvByJ,EAAAA,MAAM,EAAE,oBAAoB;EAC5BqgB,OAAO,EAAE09B,UAAU,CAACC,IAAAA;AACtB,CAAC,EACD;AACEznD,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,gBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,MAAM;AACdovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNiqC,MAAAA,cAAc,EAAE,CAAC7wC,SAAS,EAAE,MAAM,CAAA;AACpC,KAAA;GACD;EACD0wB,OAAO,EAAE09B,UAAU,CAACgB,KAAAA;AACtB,CAAC,EACD;AACExoD,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,iBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,aAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;AAChCyJ,EAAAA,MAAM,EAAE,MAAM;EACdqgB,OAAO,EAAE09B,UAAU,CAACK,MAAAA;AACtB,CAAC,EACD;AACE7nD,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,iBAAiB;EACzBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAAA;AACtB,CAAC,EACD;AACEznD,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,IAAI;AACZyJ,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,CACJ,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,wBAAwB,EACxB,MAAM,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,CAAA;AAEZ,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN+V,MAAAA,SAAS,EAAE,KAAA;KACZ;AACDtM,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,SAAA;AACR,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,aAAa;AACrByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN+V,MAAAA,SAAS,EAAE,KAAK;AAChB62B,MAAAA,YAAY,EAAE,KAAA;KACf;AACDnjC,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAA;AAC3B,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;MACNwrC,YAAYA,CAACyc,YAAY,EAAE;QACzB,OAAOA,YAAY,IAAI,CAACA,YAAY,CAACptD,UAAU,CAAC,MAAM,CAAC,CAAA;OACxD;AACDkb,MAAAA,SAAS,EAAE,KAAK;AAChB62B,MAAAA,YAAY,EAAE,KAAK;AACnBlB,MAAAA,WAAW,EAAE,KAAA;KACd;AACDjiC,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,YAAA;AACR,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;AACnCyJ,EAAAA,MAAM,EAAE,SAAS;AACjBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNiqC,MAAAA,cAAc,EAAE,SAAA;KACjB;AACDxgC,IAAAA,MAAM,EAAE;AACNnR,MAAAA,IAAI,EAAE,KAAA;AACR,KAAA;GACD;AACDwxB,EAAAA,OAAO,EAAE;IACP8O,QAAQA,CAACngC,OAAO,EAAE;AAChB,MAAA,OAAOA,OAAO,CAAA;KACf;IACDggC,QAAQA,CAAChgC,OAAO,EAAE;AAChB,MAAA,OAAO,CAACA,OAAO,EAAE,SAAS,CAAC,CAAA;AAC7B,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEuH,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACkB,MAAAA;AACtB,CAAC,EACD;AACE1oD,EAAAA,MAAM,EAAE,YAAY;AACpByJ,EAAAA,MAAM,EAAE,aAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,YAAY;AACpByJ,EAAAA,MAAM,EAAE,YAAY;AACpBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,KAAK;AACbyJ,IAAAA,MAAM,EAAE;AACN,MAAA,aAAa,EAAE,KAAA;AACjB,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC;AAC3CyJ,EAAAA,MAAM,EAAE,OAAO;EACfqgB,OAAO,EAAE09B,UAAU,CAACmB,KAAAA;AACtB,CAAC,EACD;AACE3oD,EAAAA,MAAM,EAAE,YAAY;AACpByJ,EAAAA,MAAM,EAAE,YAAY;EACpBqgB,OAAO,EAAE09B,UAAU,CAACW,KAAAA;AACtB,CAAC,EACD;AACEnoD,EAAAA,MAAM,EAAE,KAAK;AACbyJ,EAAAA,MAAM,EAAE,KAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,KAAK;EACbqgB,OAAO,EAAE09B,UAAU,CAACQ,aAAa;AACjCnvB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNrE,MAAAA,GAAG,EAAE,KAAA;KACN;AACD8N,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,SAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,mBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,iBAAiB,CAAC;AAC1DyJ,EAAAA,MAAM,EAAE,cAAc;EACtBqgB,OAAO,EAAE09B,UAAU,CAACmB,KAAAA;AACtB,CAAC,CACF,CAAC;;AChuBF,aAAe,IAAIrtB,UAAe,CAAC,CACjC;AACEt7B,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,UAAU;AAClBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,KAAK;AACbyJ,IAAAA,MAAM,EAAE;AACNrR,MAAAA,IAAI,EAAE,KAAA;AACR,KAAA;GACD;AACD0xB,EAAAA,OAAO,EAAE;IACP2O,QAAQA,CAACrkB,QAAQ,EAAE;AACjB,MAAA,OAAQ,CAAoBy0C,kBAAAA,EAAAA,QAAU,CAACz0C,QAAQ,CAAE,CAAE,CAAA,CAAA,CAAA;AACrD,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEpU,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,iBAAiB;EACzBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAAA;AACtB,CAAC,EACD;AACEznD,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACW,KAAAA;AACtB,CAAC,EACD;AACEnoD,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,gBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,mBAAmB;AAC3BovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;MACN,CAAC+Q,IAAI,GAAG,CACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,aAAa,CAAA;KAEhB;AACDtH,IAAAA,MAAM,EAAE;MACNtF,IAAI,EAAE,CACJ,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,EACN,aAAa,EACb,wBAAwB,EACxB,QAAQ,EACR,aAAa,EACb,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,CAAA;AAEb,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,kBAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAA;AACtC,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN,MAAA,CAAC+Q,IAAI,GAAG,SAAA;KACT;AACDtH,IAAAA,MAAM,EAAE;MACNtF,IAAI,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,CAAA;AAC9E,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,KAAK;AACbyJ,EAAAA,MAAM,EAAE,KAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,SAAS;AACjByJ,EAAAA,MAAM,EAAE,SAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACW,KAAAA;AACtB,CAAC,EACD;AACEnoD,EAAAA,MAAM,EAAEqlD,KAAK;AACb57C,EAAAA,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;EAC1EqgB,OAAO,EAAE09B,UAAU,CAACnC,KAAAA;AACtB,CAAC,EACD;AACErlD,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN,MAAA,CAAC+Q,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAA;KAClD;AACDtH,IAAAA,MAAM,EAAE;MACNvR,KAAKA,CAACA,KAAK,EAAE;AACX,QAAA,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAK,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACqB,KAAK,CAAC,KAAK,CAAE,CAAA;OACtF;AACD4K,MAAAA,IAAI,EAAE,CACJ,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,CAAA;AAEhB,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;AAChCyJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAE09B,UAAU,CAACI,UAAAA;AACtB,CAAC,EACD;AACE5nD,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN,MAAA,CAAC+Q,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAA;KAC1C;AACDtH,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAA;AAC3B,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,KAAK;AACbyJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACNsI,MAAAA,MAAM,EAAE,KAAA;KACT;AACDmB,IAAAA,MAAM,EAAE;MACNtF,IAAI,EAAE,CAAC,iBAAiB,CAAA;AAC1B,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,MAAM;EACdqgB,OAAO,EAAE09B,UAAU,CAACgB,KAAAA;AACtB,CAAC,EACD;AACExoD,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,CACJ,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,wBAAwB,EACxB,MAAM,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,CAAA;AAEb,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN+V,MAAAA,SAAS,EAAE,KAAA;KACZ;AACDtM,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,kBAAA;AACR,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,aAAa;AACrByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN+V,MAAAA,SAAS,EAAE,KAAK;AAChB62B,MAAAA,YAAY,EAAE,KAAA;KACf;AACDnjC,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,QAAA;AACR,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AACN0rC,MAAAA,WAAW,EAAE,KAAK;AAClBkB,MAAAA,YAAY,EAAE,KAAK;AACnB72B,MAAAA,SAAS,EAAE,KAAA;KACZ;AACDtM,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,QAAA;AACR,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,WAAW;EACnBqgB,OAAO,EAAE09B,UAAU,CAACC,IAAI;AACxB5uB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;MACNwrC,YAAYA,CAACyc,YAAY,EAAE;QACzB,OAAOA,YAAY,IAAI,CAACA,YAAY,CAACptD,UAAU,CAAC,MAAM,CAAC,CAAA;OACxD;AACDkb,MAAAA,SAAS,EAAE,KAAK;AAChB62B,MAAAA,YAAY,EAAE,KAAK;AACnBlB,MAAAA,WAAW,EAAE,KAAK;AAClBoF,MAAAA,MAAM,EAAE,KAAA;KACT;AACDrnC,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,YAAA;AACR,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,OAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,CAAC+Q,IAAI,EAAE,MAAM,CAAC;AACtBtH,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AACzBqgB,EAAAA,OAAO,EAAE;AACP8O,IAAAA,QAAQA,CAACswB,UAAU,EAAEC,OAAO,EAAE;MAC5B,MAAMhlD,IAAI,GAAGyE,WAAK,CAAC5I,MAAM,CAACkpD,UAAU,CAAC,IAAI,UAAU,CAAA;AACnD,MAAA,IAAIC,OAAO,EAAE;AACX,QAAA,OAAO,CAAChlD,IAAI,EAAEglD,OAAO,CAAC,CAAA;AACxB,OAAC,MAAM,IAAID,UAAU,KAAK,eAAe,EAAE;AACzC,QAAA,OAAO,CAAC/kD,IAAI,EAAE,iBAAiB,CAAC,CAAA;AAClC,OAAC,MAAM,IAAI+kD,UAAU,KAAK,WAAW,EAAE;AACrC,QAAA,OAAO,CAAC/kD,IAAI,EAAE,YAAY,CAAC,CAAA;AAC7B,OAAC,MAAM;QACL,OAAO,CAACA,IAAI,CAAC,CAAA;AACf,OAAA;KACD;AACDs0B,IAAAA,QAAQA,CAAC2wB,UAAU,EAAE9zC,KAAK,EAAE;MAC1B,MAAMnR,IAAI,GAAGyE,WAAK,CAACa,MAAM,CAAC2/C,UAAU,CAAC,IAAI,MAAM,CAAA;AAC/C,MAAA,IAAI,+BAA+B,CAAChgD,IAAI,CAACkM,KAAK,CAAC,EAAE;QAC/C,OAAO,CAAC,eAAe,CAAC,CAAA;OACzB,MAAM,IAAI,0BAA0B,CAAClM,IAAI,CAACkM,KAAK,CAAC,EAAE;QACjD,OAAO,CAAC,WAAW,CAAC,CAAA;AACtB,OAAC,MAAM;AACL,QAAA,OAAO,CAACnR,IAAI,EAAEmR,KAAK,CAAC,CAAA;AACtB,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEtV,EAAAA,MAAM,EAAE+Q,IAAI;AACZ8nB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;AACNtF,MAAAA,IAAI,EAAE,KAAA;AACR,KAAA;GACD;AACD2lB,EAAAA,OAAO,EAAE;AACP2O,IAAAA,QAAQA,GAAG;AACT,MAAA,OAAO,MAAM,CAAA;AACf,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEz4B,EAAAA,MAAM,EAAE,KAAK;AACbyJ,EAAAA,MAAM,EAAE,KAAA;AACV,CAAC,EACD;AACEzJ,EAAAA,MAAM,EAAE,cAAc;AACtByJ,EAAAA,MAAM,EAAE,KAAK;EACbqgB,OAAO,EAAE09B,UAAU,CAACQ,aAAa;AACjCnvB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;AACNsM,MAAAA,SAAS,EAAE,KAAA;AACb,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACE/V,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAA;AACV,CAAC,CACF,CAAC;;AC3XF,SAAS0G,SAAOA,CAAC9N,CAAC,EAAEiL,CAAC,EAAE;AACrB,EAAA,IAAIF,CAAC,GAAGrQ,MAAM,CAACC,IAAI,CAACqF,CAAC,CAAC,CAAA;EACtB,IAAItF,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAIC,CAAC,GAAGtT,MAAM,CAACqT,qBAAqB,CAAC/N,CAAC,CAAC,CAAA;IACvCiL,CAAC,KACE+C,CAAC,GAAGA,CAAC,CAAC3M,MAAM,CAAC,UAAU4J,CAAC,EAAE;MACzB,OAAOvQ,MAAM,CAACuT,wBAAwB,CAACjO,CAAC,EAAEiL,CAAC,CAAC,CAACL,UAAU,CAAA;AACzD,KAAC,CAAC,CAAC,EACHG,CAAC,CAAC5S,IAAI,CAAC+V,KAAK,CAACnD,CAAC,EAAEiD,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,EAAA,OAAOjD,CAAC,CAAA;AACV,CAAA;AACA,SAASoD,eAAaA,CAACnO,CAAC,EAAE;AACxB,EAAA,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,SAAS,CAACtW,MAAM,EAAEmT,CAAC,EAAE,EAAE;AACzC,IAAA,IAAIF,CAAC,GAAG,IAAI,IAAIqD,SAAS,CAACnD,CAAC,CAAC,GAAGmD,SAAS,CAACnD,CAAC,CAAC,GAAG,EAAE,CAAA;AAChDA,IAAAA,CAAC,GAAG,CAAC,GACD6C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;MAC1CT,iBAAe,CAACxK,CAAC,EAAEiL,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAC,CAAC,GACFvQ,MAAM,CAAC2T,yBAAyB,GAChC3T,MAAM,CAAC4T,gBAAgB,CAACtO,CAAC,EAAEtF,MAAM,CAAC2T,yBAAyB,CAACtD,CAAC,CAAC,CAAC,GAC/D+C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;AACtCvQ,MAAAA,MAAM,CAACiQ,cAAc,CAAC3K,CAAC,EAAEiL,CAAC,EAAEvQ,MAAM,CAACuT,wBAAwB,CAAClD,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOjL,CAAC,CAAA;AACV,CAAA;AACA,SAASwK,iBAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,gBAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,gBAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,cAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,cAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AACA,MAAMi8C,IAAI,GAAG,IAAI9wC,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;AAClE,MAAM+wC,SAAS,GAAG,IAAI/wC,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;AAC/D,MAAMgxC,UAAU,GAAG,IAAIhxC,GAAG,CAAC,CACzB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,CACjB,CAAC,CAAA;AACF,MAAMixC,eAAe,GAAG,IAAIjxC,GAAG,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAClF,MAAMkxC,WAAW,GAAG,IAAIlxC,GAAG,CAAC,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAA;AAC7D,MAAMmxC,gBAAgB,GAAG,IAAInxC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;AACnD,MAAMoxC,eAAe,GAAG,IAAIpxC,GAAG,CAAC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAC9D,MAAMqxC,SAAS,GAAG;AAChBrhB,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE8gB,IAAI,CAAC;AACtB5gB,EAAAA,YAAY,EAAE,CAAC,MAAM,EAAE8gB,UAAU,CAAC;AAClC3gB,EAAAA,WAAW,EAAE,CAAC,MAAM,EAAE2gB,UAAU,CAAC;AACjC7gB,EAAAA,aAAa,EAAE,CAAC,MAAM,EAAE+gB,WAAW,CAAC;AACpC5xD,EAAAA,IAAI,EAAE,CAAC,MAAM,EAAEyxD,SAAS,CAAC;AACzBj4C,EAAAA,UAAU,EAAE,CAAC,MAAM,EAAEm4C,eAAe,CAAC;AACrC7gB,EAAAA,SAAS,EAAE,CAAC,MAAM,EAAE6gB,eAAe,CAAC;AACpChpB,EAAAA,WAAW,EAAE,CAAC,MAAM,EAAEkpB,gBAAgB,CAAC;AACvCt3C,EAAAA,UAAU,EAAE,CAAC,SAAS,EAAEu3C,eAAe,CAAA;AACzC,CAAC,CAAA;AACM,SAASxb,QAAQA,CAAC1kC,MAAM,EAAEtH,KAAK,EAAEnD,QAAQ,EAAE;AAChD,EAAA,IAAImD,KAAK,CAACgsC,QAAQ,IAAInvC,QAAQ,EAAE;AAC9B,IAAA,MAAMqH,MAAM,GAAGrH,QAAQ,CAACmD,KAAK,CAACgsC,QAAQ,CAAC,CAAA;AACvC,IAAA,IAAI9nC,MAAM,CAACzE,UAAU,KAAKO,KAAK,EAAE;AAC/B,MAAA,OAAOA,KAAK,CAAA;AACd,KAAA;AACA,IAAA,MAAMjF,IAAI,GAAGsT,eAAa,CAAC,EAAE,EAAE29B,QAAQ,CAAC9nC,MAAM,CAAClC,IAAI,EAAEkC,MAAM,CAACzE,UAAU,EAAE5C,QAAQ,CAAC,CAAC,CAAA;IAClF,OAAO9B,IAAI,CAAC6E,GAAG,CAAA;IACf,OAAO7E,IAAI,CAACixC,QAAQ,CAAA;IACpB,OAAOjxC,IAAI,CAACmyC,IAAI,CAAA;IAChB,OAAOnyC,IAAI,CAACkxC,QAAQ,CAAA;IACpB,OAAOlxC,IAAI,CAAC6tC,YAAY,CAAA;IACxB,OAAO7tC,IAAI,CAACmxC,OAAO,CAAA;IACnB,OAAOnxC,IAAI,CAACnD,KAAK,CAAA;IACjB,OAAOmD,IAAI,CAAClB,OAAO,CAAA;IACnB,OAAOkB,IAAI,CAACwxC,OAAO,CAAA;IACnB,OAAOxxC,IAAI,CAACyxC,OAAO,CAAA;IACnB,OAAOzxC,IAAI,CAAC0xC,cAAc,CAAA;IAC1B,OAAO1xC,IAAI,CAAC4xC,aAAa,CAAA;IACzB,OAAO5xC,IAAI,CAAC2xC,WAAW,CAAA;IACvB,OAAO3xC,IAAI,CAAC2sD,QAAQ,CAAA;IACpB,OAAO3sD,IAAI,CAAC4sD,aAAa,CAAA;IACzB,OAAO5sD,IAAI,CAAC6xC,OAAO,CAAA;AACnB,IAAA,IAAI,CAAC1oC,MAAM,CAAClC,IAAI,KAAK,QAAQ,IAAIkC,MAAM,CAAClC,IAAI,KAAK,MAAM,KAAKmlD,SAAS,CAAC9wC,GAAG,CAAC/O,MAAM,CAAC,EAAE;AACjFvM,MAAAA,IAAI,CAAC8sC,UAAU,GAAG9sC,IAAI,CAACqC,MAAM,CAAA;AAC/B,KAAA;AACA,IAAA,IAAI8G,MAAM,CAAClC,IAAI,IAAIylD,SAAS,EAAE;MAC5B,MAAM,CAACtyD,MAAM,EAAEyyD,OAAO,CAAC,GAAGH,SAAS,CAACvjD,MAAM,CAAClC,IAAI,CAAC,CAAA;AAChD,MAAA,IAAI4lD,OAAO,CAACvxC,GAAG,CAAC/O,MAAM,CAAC,EAAE;QACvBvM,IAAI,CAAC5F,MAAM,GAAG,OAAO,CAAC,GAAG4F,IAAI,CAACkZ,KAAK,CAAA;QACnClZ,IAAI,CAAC5F,MAAM,GAAG,UAAU,CAAC,GAAG4F,IAAI,CAAC4wC,QAAQ,CAAA;QACzC,IAAIx2C,MAAM,KAAK,SAAS,EAAE;UACxB4F,IAAI,CAAC5F,MAAM,GAAG,YAAY,CAAC,GAAG4F,IAAI,CAAC6wC,UAAU,CAAA;AAC/C,SAAA;QACA,OAAO7wC,IAAI,CAACkZ,KAAK,CAAA;QACjB,OAAOlZ,IAAI,CAAC4wC,QAAQ,CAAA;QACpB,OAAO5wC,IAAI,CAAC6wC,UAAU,CAAA;QACtB,OAAO7wC,IAAI,CAAC2wC,UAAU,CAAA;QACtB,OAAO3wC,IAAI,CAACgyC,SAAS,CAAA;QACrB,OAAOhyC,IAAI,CAACuuC,UAAU,CAAA;QACtB,OAAOvuC,IAAI,CAACuxC,cAAc,CAAA;AAC5B,OAAA;AACF,KAAA;AACA,IAAA,OAAO1xC,MAAM,CAAC6M,MAAM,CAAC1M,IAAI,EAAEiF,KAAK,CAAC,CAAA;AACnC,GAAA;AACA,EAAA,OAAOA,KAAK,CAAA;AACd;;AC7HA,SAAS6nD,wBAAwBA,CAAChqD,MAAM,EAAEiqD,QAAQ,EAAE;AAClD,EAAA,IAAIjqD,MAAM,IAAI,IAAI,EAAE,OAAO,EAAE,CAAA;AAC7B,EAAA,IAAIyJ,MAAM,GAAGygD,6BAA6B,CAAClqD,MAAM,EAAEiqD,QAAQ,CAAC,CAAA;EAC5D,IAAI1oD,GAAG,EAAElF,CAAC,CAAA;EACV,IAAIU,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAI+5C,gBAAgB,GAAGptD,MAAM,CAACqT,qBAAqB,CAACpQ,MAAM,CAAC,CAAA;AAC3D,IAAA,KAAK3D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8tD,gBAAgB,CAAChwD,MAAM,EAAEkC,CAAC,EAAE,EAAE;AAC5CkF,MAAAA,GAAG,GAAG4oD,gBAAgB,CAAC9tD,CAAC,CAAC,CAAA;MACzB,IAAI4tD,QAAQ,CAACjnD,OAAO,CAACzB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAA;AAChC,MAAA,IAAI,CAACxE,MAAM,CAACqP,SAAS,CAACg+C,oBAAoB,CAAC99C,IAAI,CAACtM,MAAM,EAAEuB,GAAG,CAAC,EAAE,SAAA;AAC9DkI,MAAAA,MAAM,CAAClI,GAAG,CAAC,GAAGvB,MAAM,CAACuB,GAAG,CAAC,CAAA;AAC3B,KAAA;AACF,GAAA;AACA,EAAA,OAAOkI,MAAM,CAAA;AACf,CAAA;AACA,SAASygD,6BAA6BA,CAAClqD,MAAM,EAAEiqD,QAAQ,EAAE;AACvD,EAAA,IAAIjqD,MAAM,IAAI,IAAI,EAAE,OAAO,EAAE,CAAA;EAC7B,IAAIyJ,MAAM,GAAG,EAAE,CAAA;AACf,EAAA,IAAI4gD,UAAU,GAAGttD,MAAM,CAACC,IAAI,CAACgD,MAAM,CAAC,CAAA;EACpC,IAAIuB,GAAG,EAAElF,CAAC,CAAA;AACV,EAAA,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGguD,UAAU,CAAClwD,MAAM,EAAEkC,CAAC,EAAE,EAAE;AACtCkF,IAAAA,GAAG,GAAG8oD,UAAU,CAAChuD,CAAC,CAAC,CAAA;IACnB,IAAI4tD,QAAQ,CAACjnD,OAAO,CAACzB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAA;AAChCkI,IAAAA,MAAM,CAAClI,GAAG,CAAC,GAAGvB,MAAM,CAACuB,GAAG,CAAC,CAAA;AAC3B,GAAA;AACA,EAAA,OAAOkI,MAAM,CAAA;AACf,CAAA;AACA,SAAS0G,SAAOA,CAAC9N,CAAC,EAAEiL,CAAC,EAAE;AACrB,EAAA,IAAIF,CAAC,GAAGrQ,MAAM,CAACC,IAAI,CAACqF,CAAC,CAAC,CAAA;EACtB,IAAItF,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAIC,CAAC,GAAGtT,MAAM,CAACqT,qBAAqB,CAAC/N,CAAC,CAAC,CAAA;IACvCiL,CAAC,KACE+C,CAAC,GAAGA,CAAC,CAAC3M,MAAM,CAAC,UAAU4J,CAAC,EAAE;MACzB,OAAOvQ,MAAM,CAACuT,wBAAwB,CAACjO,CAAC,EAAEiL,CAAC,CAAC,CAACL,UAAU,CAAA;AACzD,KAAC,CAAC,CAAC,EACHG,CAAC,CAAC5S,IAAI,CAAC+V,KAAK,CAACnD,CAAC,EAAEiD,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,EAAA,OAAOjD,CAAC,CAAA;AACV,CAAA;AACA,SAASoD,eAAaA,CAACnO,CAAC,EAAE;AACxB,EAAA,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,SAAS,CAACtW,MAAM,EAAEmT,CAAC,EAAE,EAAE;AACzC,IAAA,IAAIF,CAAC,GAAG,IAAI,IAAIqD,SAAS,CAACnD,CAAC,CAAC,GAAGmD,SAAS,CAACnD,CAAC,CAAC,GAAG,EAAE,CAAA;AAChDA,IAAAA,CAAC,GAAG,CAAC,GACD6C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;MAC1CT,iBAAe,CAACxK,CAAC,EAAEiL,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAC,CAAC,GACFvQ,MAAM,CAAC2T,yBAAyB,GAChC3T,MAAM,CAAC4T,gBAAgB,CAACtO,CAAC,EAAEtF,MAAM,CAAC2T,yBAAyB,CAACtD,CAAC,CAAC,CAAC,GAC/D+C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;AACtCvQ,MAAAA,MAAM,CAACiQ,cAAc,CAAC3K,CAAC,EAAEiL,CAAC,EAAEvQ,MAAM,CAACuT,wBAAwB,CAAClD,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOjL,CAAC,CAAA;AACV,CAAA;AACA,SAASwK,iBAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,gBAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,gBAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,cAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,cAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AAKA,SAASk9C,MAAMA,CAACh/C,KAAK,EAAEk5B,IAAI,EAAE;EAC3B,MAAMxlC,QAAQ,GAAG,EAAE,CAAA;AACnB,EAAA,KAAK,MAAMmD,KAAK,IAAImJ,KAAK,EAAE;AACzBtM,IAAAA,QAAQ,CAACmD,KAAK,CAACpI,KAAK,CAAC,GAAGoI,KAAK,CAAA;AAC/B,GAAA;AACA,EAAA,OAAOmJ,KAAK,CAACtJ,GAAG,CAAC,CAAC;IAAEmC,IAAI;IAAEpK,KAAK;AAAE6H,IAAAA,UAAAA;AAAW,GAAC,KAC3C4iC,IAAI,CAAClL,eAAe,CAClB9oB,eAAa,CACX;IACE,CAACO,IAAI,GAAG5M,IAAI;AACZ,IAAA,CAACkhD,KAAK,GAAGtrD,KAAAA;GACV,EACDo0C,QAAQ,CAAChqC,IAAI,EAAEvC,UAAU,EAAE5C,QAAQ,CACrC,CACF,CACF,CAAC,CAAA;AACH,CAAA;AACA,SAASurD,OAAOA,CAACj/C,KAAK,EAAEk5B,IAAI,EAAE;AAC5B,EAAA,OAAOl5B,KAAK,CAACtJ,GAAG,CAAEG,KAAK,IAAK;AAC1B,IAAA,MAAMqoD,qBAAqB,GAAGhmB,IAAI,CAACnL,eAAe,CAACl3B,KAAK,CAAC;AACvD,MAAA;QAAE,CAAC4O,IAAI,GAAG5M,IAAI;AAAE,QAAA,CAACkhD,KAAK,GAAGtrD,KAAAA;AAAM,OAAC,GAAGywD,qBAAqB;AACxD5oD,MAAAA,UAAU,GAAGooD,wBAAwB,CACnCQ,qBAAqB,EACrB,CAACz5C,IAAI,EAAEs0C,KAAK,CAAC,CAACrjD,GAAG,CAAC+K,gBAAc,CAClC,CAAC,CAAA;IACH,OAAO;MACL5I,IAAI;MACJpK,KAAK;AACL6H,MAAAA,UAAAA;KACD,CAAA;AACH,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAAS6oD,aAAWA,CAACn/C,KAAK,EAAE;AACjC,EAAA,OAAOg/C,MAAM,CAACh/C,KAAK,EAAEo+B,MAAM,CAAC,CAAA;AAC9B,CAAA;AACO,SAASghB,cAAYA,CAACp/C,KAAK,EAAE;AAClC,EAAA,OAAOi/C,OAAO,CAACj/C,KAAK,EAAEo+B,MAAM,CAAC,CAAA;AAC/B,CAAA;AACO,SAASthC,OAAKA,CAACkD,KAAK,EAAE;AAC3B,EAAA,OAAOg/C,MAAM,CAACh/C,KAAK,EAAEm+B,QAAQ,CAAC,CAAA;AAChC,CAAA;AACO,SAAS/sC,QAAMA,CAAC4O,KAAK,EAAE;AAC5B,EAAA,OAAOi/C,OAAO,CAACj/C,KAAK,EAAEm+B,QAAQ,CAAC,CAAA;AACjC;;ACjIO,SAASkhB,aAAaA,CAAC3uC,MAAM,EAAE;AACpC,EAAA,MAAMxB,CAAC,GAAGwB,MAAM,CAACuD,WAAW,EAAE,CAAA;AAC9B,EAAA,MAAM9E,CAAC,GAAGuB,MAAM,CAACphB,WAAW,EAAE,CAAA;AAC9B,EAAA,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2f,MAAM,CAAC7hB,MAAM,EAAEkC,CAAC,EAAE,EAAE;IACtC,IAAIme,CAAC,CAACne,CAAC,CAAC,KAAKoe,CAAC,CAACpe,CAAC,CAAC,EAAE;MACjB,OAAOme,CAAC,CAACne,CAAC,CAAC,KAAK2f,MAAM,CAAC3f,CAAC,CAAC,CAAA;AAC3B,KAAA;AACF,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AACO,SAASuuD,eAAeA,CAACnqC,KAAK,EAAE;AACrC,EAAA,IAAIA,KAAK,CAACtmB,MAAM,KAAK,CAAC,EAAE;AACtB,IAAA,OAAOf,SAAS,CAAA;AAClB,GAAA;EACA,IAAIyxD,KAAK,GAAG,EAAE,CAAA;AACd,EAAA,OAAOpqC,KAAK,CAACtmB,MAAM,GAAG,CAAC,EAAE;IACvB,MAAM;MAAEkK,KAAK;AAAEymD,MAAAA,UAAAA;AAAW,KAAC,GAAGrqC,KAAK,CAACyE,KAAK,EAAE,CAAA;IAC3C2lC,KAAK,IAAIxmD,KAAK,IAAIymD,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;AAC3C,GAAA;EACA,MAAMvoD,MAAM,GAAGsoD,KAAK,GAAGpqC,KAAK,CAAC,CAAC,CAAC,CAACpc,KAAK,CAAA;AACrC,EAAA,OAAO9B,MAAM,CAAC,CAAC,CAAC,IAAIA,MAAM,CAAA;AAC5B,CAAA;AACO,SAASwoD,cAAcA,CAACtqC,KAAK,EAAEuqC,UAAU,GAAG,IAAI,EAAE;EACvD,MAAMv0C,KAAK,GAAG,EAAE,CAAA;EAChB,MAAMw0C,SAAS,GAAG,EAAE,CAAA;AACpB,EAAA,IAAID,UAAU,EAAE;AACd,IAAA,OAAOvqC,KAAK,CAACtmB,MAAM,GAAG,CAAC,IAAIsmB,KAAK,CAAC,CAAC,CAAC,CAACyqC,SAAS,KAAK,KAAK,EAAE;AACvDz0C,MAAAA,KAAK,CAACjc,IAAI,CAAC,GAAGywD,SAAS,CAAC,CAAA;MACxBA,SAAS,CAAC9wD,MAAM,GAAG,CAAC,CAAA;MACpB,OAAOsmB,KAAK,CAACtmB,MAAM,GAAG,CAAC,IAAIsmB,KAAK,CAAC,CAAC,CAAC,CAACyqC,SAAS,KAAK,KAAK,IAAI,CAACzqC,KAAK,CAAC,CAAC,CAAC,CAACqqC,UAAU,EAAE;QAC/Er0C,KAAK,CAACjc,IAAI,CAACimB,KAAK,CAACyE,KAAK,EAAE,CAAC,CAAA;AAC3B,OAAA;MACA,OAAOzE,KAAK,CAACtmB,MAAM,GAAG,CAAC,IAAIsmB,KAAK,CAAC,CAAC,CAAC,CAACyqC,SAAS,KAAK,KAAK,IAAIzqC,KAAK,CAAC,CAAC,CAAC,CAACqqC,UAAU,EAAE;QAC9EG,SAAS,CAACzwD,IAAI,CAACimB,KAAK,CAACyE,KAAK,EAAE,CAAC,CAAA;AAC/B,OAAA;AACF,KAAA;AACF,GAAA;EACA,MAAM5tB,MAAM,GAAG,EAAE,CAAA;EACjB,MAAMmI,MAAM,GAAG,EAAE,CAAA;AACjB,EAAA,OAAOghB,KAAK,CAACtmB,MAAM,GAAG,CAAC,EAAE;AACvB7C,IAAAA,MAAM,CAACkD,IAAI,CAAC,GAAGiF,MAAM,CAAC,CAAA;IACtBA,MAAM,CAACtF,MAAM,GAAG,CAAC,CAAA;AACjB,IAAA,OAAOsmB,KAAK,CAACtmB,MAAM,GAAG,CAAC,IAAIsmB,KAAK,CAAC,CAAC,CAAC,CAACyqC,SAAS,KAAK,KAAK,EAAE;MACvD5zD,MAAM,CAACkD,IAAI,CAACimB,KAAK,CAACyE,KAAK,EAAE,CAAC,CAAA;AAC5B,KAAA;AACA,IAAA,OAAOzE,KAAK,CAACtmB,MAAM,GAAG,CAAC,IAAIsmB,KAAK,CAAC,CAAC,CAAC,CAACyqC,SAAS,KAAK,KAAK,EAAE;MACvDzrD,MAAM,CAACjF,IAAI,CAACimB,KAAK,CAACyE,KAAK,EAAE,CAAC,CAAA;AAC5B,KAAA;AACF,GAAA;EACA,IAAI+lC,SAAS,CAAC9wD,MAAM,EAAE;AACpBsF,IAAAA,MAAM,CAAC0rD,OAAO,CAAC,GAAGF,SAAS,CAAC,CAAA;AAC9B,GAAA;EACA,IAAIxqC,KAAK,CAACtmB,MAAM,EAAE;AAChBsF,IAAAA,MAAM,CAACjF,IAAI,CAACimB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACvB,GAAA;AACA,EAAA,OAAO,CAACmqC,eAAe,CAACn0C,KAAK,CAAC,EAAEm0C,eAAe,CAACtzD,MAAM,CAAC,EAAEszD,eAAe,CAACnrD,MAAM,CAAC,CAAC,CAAA;AACnF,CAAA;AACO,SAAS2rD,eAAeA,CAACC,MAAM,EAAE;EACtC,IAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACtxD,KAAK,EAAE;IACtB,MAAMgQ,KAAI,GAAG,EAAE,CAAA;AACf,IAAA,KAAK,MAAM,CAAC;MAAE1F,KAAK;AAAEtK,MAAAA,KAAAA;KAAO,CAAC,IAAIsxD,MAAM,EAAE;AACvCthD,MAAAA,KAAI,CAAChQ,KAAK,CAAC,GAAGsK,KAAK,CAAA;AACrB,KAAA;AACA,IAAA,OAAO0F,KAAI,CAAA;AACb,GAAA;EACA,MAAMA,IAAI,GAAG,EAAE,CAAA;EACf,MAAM,CAAC0M,KAAK,EAAEnf,MAAM,EAAEmI,MAAM,CAAC,GAAGsrD,cAAc,CAACM,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAClxD,MAAM,KAAK,CAAC,CAAC,CAAA;AAC9E,EAAA,IAAIsF,MAAM,EAAE;IACVsK,IAAI,CAACtK,MAAM,GAAGA,MAAM,CAAA;AACtB,GAAA;AACA,EAAA,IAAInI,MAAM,EAAE;IACVyS,IAAI,CAACzS,MAAM,GAAGA,MAAM,CAAA;AACtB,GAAA;AACA,EAAA,IAAI+zD,MAAM,CAAClxD,MAAM,KAAK,CAAC,EAAE;IACvB4P,IAAI,CAAC0M,KAAK,GAAGm0C,eAAe,CAACS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACvCthD,IAAI,CAACrS,MAAM,GAAGkzD,eAAe,CAACS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,GAAC,MAAM,IAAIA,MAAM,CAAClxD,MAAM,KAAK,CAAC,EAAE;IAC9B4P,IAAI,CAAC0M,KAAK,GAAGm0C,eAAe,CAACS,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;GACxC,MAAM,IAAI50C,KAAK,EAAE;IAChB1M,IAAI,CAAC0M,KAAK,GAAGA,KAAK,CAAA;AACpB,GAAA;AACA,EAAA,OAAO1M,IAAI,CAAA;AACb;;AClFA,SAASoG,SAAOA,CAAC9N,CAAC,EAAEiL,CAAC,EAAE;AACrB,EAAA,IAAIF,CAAC,GAAGrQ,MAAM,CAACC,IAAI,CAACqF,CAAC,CAAC,CAAA;EACtB,IAAItF,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAIC,CAAC,GAAGtT,MAAM,CAACqT,qBAAqB,CAAC/N,CAAC,CAAC,CAAA;IACvCiL,CAAC,KACE+C,CAAC,GAAGA,CAAC,CAAC3M,MAAM,CAAC,UAAU4J,CAAC,EAAE;MACzB,OAAOvQ,MAAM,CAACuT,wBAAwB,CAACjO,CAAC,EAAEiL,CAAC,CAAC,CAACL,UAAU,CAAA;AACzD,KAAC,CAAC,CAAC,EACHG,CAAC,CAAC5S,IAAI,CAAC+V,KAAK,CAACnD,CAAC,EAAEiD,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,EAAA,OAAOjD,CAAC,CAAA;AACV,CAAA;AACA,SAASoD,eAAaA,CAACnO,CAAC,EAAE;AACxB,EAAA,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,SAAS,CAACtW,MAAM,EAAEmT,CAAC,EAAE,EAAE;AACzC,IAAA,IAAIF,CAAC,GAAG,IAAI,IAAIqD,SAAS,CAACnD,CAAC,CAAC,GAAGmD,SAAS,CAACnD,CAAC,CAAC,GAAG,EAAE,CAAA;AAChDA,IAAAA,CAAC,GAAG,CAAC,GACD6C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;MAC1CT,iBAAe,CAACxK,CAAC,EAAEiL,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAC,CAAC,GACFvQ,MAAM,CAAC2T,yBAAyB,GAChC3T,MAAM,CAAC4T,gBAAgB,CAACtO,CAAC,EAAEtF,MAAM,CAAC2T,yBAAyB,CAACtD,CAAC,CAAC,CAAC,GAC/D+C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;AACtCvQ,MAAAA,MAAM,CAACiQ,cAAc,CAAC3K,CAAC,EAAEiL,CAAC,EAAEvQ,MAAM,CAACuT,wBAAwB,CAAClD,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOjL,CAAC,CAAA;AACV,CAAA;AACA,SAASwK,iBAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,gBAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,gBAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,cAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,cAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AAMA,MAAMhS,IAAI,GAAG;AACXkwD,EAAAA,YAAY,EAAE;AACZ/xD,IAAAA,KAAK,EAAE,SAAS;AAChBiB,IAAAA,IAAI,EAAE,aAAA;GACP;AACD+wD,EAAAA,OAAO,EAAE;AACPhyD,IAAAA,KAAK,EAAE,qBAAqB;IAC5B8K,KAAK,EAAGoX,CAAC,IAAKA,CAAC,CAACje,KAAK,CAAC,CAAC,CAAC,CAAC/D,IAAI,EAAC;GAC/B;AACDkpD,EAAAA,MAAM,EAAE;AACNppD,IAAAA,KAAK,EAAE,GAAG;AACViB,IAAAA,IAAI,EAAE,eAAA;GACP;AACDgxD,EAAAA,SAAS,EAAE;AACTjyD,IAAAA,KAAK,EAAE,GAAG;AACViB,IAAAA,IAAI,EAAE,aAAA;GACP;AACD4nD,EAAAA,UAAU,EAAE;AACV7oD,IAAAA,KAAK,EAAE,SAAS;AAChBqqC,IAAAA,UAAU,EAAE,IAAI;IAChBv/B,KAAKA,CAACoK,KAAK,EAAE;AACX,MAAA,OAAOA,KAAK,KAAK,GAAG,GAAG,MAAM,GAAG,GAAG,CAAA;AACrC,KAAA;AACF,GAAA;AACF,CAAC,CAAA;AACD,MAAMkpB,KAAK,GAAG8K,GAAG,CAACoD,MAAM,CAAC;AACvB4lB,EAAAA,aAAa,EAAEj7C,eAAa,CAC1BA,eAAa,CAAC,EAAE,EAAEpV,IAAI,CAAC,EACvB,EAAE,EACF;AACEA,IAAAA,IAAI,EAAE,cAAA;AACR,GACF,CAAC;AACDswD,EAAAA,YAAY,EAAEl7C,eAAa,CACzBA,eAAa,CACX;AACEm7C,IAAAA,GAAG,EAAE,oBAAoB;AACzB9I,IAAAA,KAAK,EAAE,GAAG;AACV+I,IAAAA,MAAM,EAAE,GAAG;AACX7I,IAAAA,MAAM,EAAE,GAAA;AACV,GAAC,EACD3nD,IACF,CAAC,EACD,EAAE,EACF;AACEA,IAAAA,IAAI,EAAE,iBAAA;AACR,GACF,CAAC;AACDywD,EAAAA,WAAW,EAAEr7C,eAAa,CACxBA,eAAa,CACX;AACEm7C,IAAAA,GAAG,EAAE,WAAA;AACP,GAAC,EACDvwD,IACF,CAAC,EACD,EAAE,EACF;AACEA,IAAAA,IAAI,EAAE,cAAA;AACR,GACF,CAAC;AACD0wD,EAAAA,gBAAgB,EAAEt7C,eAAa,CAC7BA,eAAa,CACX;AACEqyC,IAAAA,KAAK,EAAE,GAAA;AACT,GAAC,EACDznD,IACF,CAAC,EACD,EAAE,EACF;AACEA,IAAAA,IAAI,EAAE,eAAA;AACR,GACF,CAAC;AACDyuC,EAAAA,UAAU,EAAEr5B,eAAa,CACvBA,eAAa,CAAC,EAAE,EAAEpV,IAAI,CAAC,EACvB,EAAE,EACF;AACE2wD,IAAAA,KAAK,EAAE,GAAG;AACVhJ,IAAAA,MAAM,EAAE,GAAG;AACXF,IAAAA,KAAK,EAAE,GAAG;AACVmJ,IAAAA,SAAS,EAAE,GAAG;AACdhJ,IAAAA,KAAK,EAAE,GAAG;AACViJ,IAAAA,SAAS,EAAE,KAAK;AAChB7wD,IAAAA,IAAI,EAAE,mBAAA;AACR,GACF,CAAC;AACD+nD,EAAAA,aAAa,EAAE3yC,eAAa,CAC1BA,eAAa,CAAC,EAAE,EAAEpV,IAAI,CAAC,EACvB,EAAE,EACF;AACE6nD,IAAAA,MAAM,EAAE;AACN1pD,MAAAA,KAAK,EAAE,GAAG;AACV8N,MAAAA,GAAG,EAAE,IAAA;KACN;AACDjM,IAAAA,IAAI,EAAE,cAAA;AACR,GACF,CAAC;AACD8wD,EAAAA,WAAW,EAAE17C,eAAa,CACxBA,eAAa,CAAC,EAAE,EAAEpV,IAAI,CAAC,EACvB,EAAE,EACF;AACEowD,IAAAA,SAAS,EAAE;AACTjyD,MAAAA,KAAK,EAAE,GAAG;AACV8N,MAAAA,GAAG,EAAE,IAAA;KACN;AACD8kD,IAAAA,MAAM,EAAE,OAAO;AACf/wD,IAAAA,IAAI,EAAE,gBAAA;AACR,GACF,CAAC;AACDgxD,EAAAA,WAAW,EAAE57C,eAAa,CACxBA,eAAa,CACX;AACE67C,IAAAA,UAAU,EAAE;AACV9yD,MAAAA,KAAK,EAAE,OAAO;AACd8N,MAAAA,GAAG,EAAE,IAAA;AACP,KAAA;AACF,GAAC,EACDjM,IACF,CAAC,EACD,EAAE,EACF;AACEA,IAAAA,IAAI,EAAE,cAAA;GAEV,CAAA;AACF,CAAC,CAAC,CAAA;AACF,SAASkxD,iBAAiBA,CAACtwC,MAAM,EAAE;AAEjC,EAAA,OAAOA,MAAM,CAAA;AACf,CAAA;AACA,SAASuwC,eAAeA,CAACnxD,IAAI,EAAEsB,MAAM,EAAE;AACrC,EAAA,IAAIA,MAAM,IAAIklD,UAAoB,EAAE;AAClC,IAAA,OAAOxmD,IAAI,IAAIwmD,UAAoB,CAACllD,MAAM,CAAC,CAACJ,IAAI,CAAClB,IAAI,CAAC,CAAA;AACxD,GAAC,MAAM;AACL,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;AACF,CAAA;AACO,MAAMoxD,YAAY,GAAG,IAAIlxB,OAAY,CAC1C;AACE7tB,EAAAA,MAAMA,GAAG;IACP,IAAIlL,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,CAAC,IAAI,CAACs1B,cAAc,EAAE,EAAE;AAC7Bt1B,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;IACA,OAAO00B,iBAAiB,CAAC/pD,MAAM,CAAC,CAAA;GACjC;AACDkqD,EAAAA,WAAWA,GAAG;IACZ,MAAMvoD,IAAI,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,IAAI,EAAE;AACX,MAAA,IAAI,CAAC6zB,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;MACrC7zB,IAAI,CAAC1J,IAAI,CAAC,IAAI,CAACo9B,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AACnC,MAAA,IAAI,CAACG,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACrC,MAAA,IAAI,IAAI,CAACF,cAAc,EAAE,EAAE;AACzB,QAAA,OAAO3zB,IAAI,CAAA;AACb,OAAC,MAAM;AACL,QAAA,IAAI,CAAC6zB,YAAY,CAAC,KAAK,CAAC,CAAA;AAC1B,OAAA;AACF,KAAA;GACD;AACD20B,EAAAA,IAAIA,GAAG;IACL,MAAMrB,MAAM,GAAG,EAAE,CAAA;AACjB,IAAA,OAAO,IAAI,EAAE;MACXA,MAAM,CAAC7wD,IAAI,CAAC,IAAI,CAACo9B,WAAW,CAAC,WAAW,CAAC,CAAC,CAAA;AAC1C,MAAA,IAAI,IAAI,CAACC,cAAc,EAAE,IAAI,IAAI,CAACC,UAAU,CAAC,KAAK,CAAC,EAAE;QACnD,OAAOszB,eAAe,CAACC,MAAM,CAAC,CAAA;AAChC,OAAC,MAAM;AACL,QAAA,IAAI,CAACtzB,YAAY,CAAC,OAAO,CAAC,CAAA;AAC1B,QAAA,IAAI,CAACA,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACvC,OAAA;AACF,KAAA;GACD;AACD40B,EAAAA,SAASA,GAAG;IACV,MAAMlsC,KAAK,GAAG,EAAE,CAAA;AAChB,IAAA,OAAO,IAAI,EAAE;AACX,MAAA,MAAMjoB,IAAI,GAAG,IAAI,CAACo/B,WAAW,CAAC,WAAW,CAAC,CAAA;MAC1C,IAAIp/B,IAAI,CAACuB,KAAK,EAAE;QACdvB,IAAI,CAACuB,KAAK,GAAG6wD,eAAe,CAAC,CAC3B,GAAGnqC,KAAK,EACR;UACEpc,KAAK,EAAE7L,IAAI,CAACuB,KAAAA;AACd,SAAC,CACF,CAAC,CAAA;QACF,OAAO,CAACvB,IAAI,CAAC,CAAA;AACf,OAAA;AACAioB,MAAAA,KAAK,CAACjmB,IAAI,CAAChC,IAAI,CAAC,CAAA;AAChB,MAAA,IAAI,IAAI,CAACq/B,cAAc,EAAE,IAAI,IAAI,CAACC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAACA,UAAU,CAAC,OAAO,CAAC,EAAE;AAC/E,QAAA,OAAOrX,KAAK,CAAA;AACd,OAAC,MAAM;AACL,QAAA,OAAO,IAAI,CAACqX,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAACA,UAAU,CAAC,YAAY,CAAC,EAAE;UACjE,IAAI,CAACC,YAAY,EAAE,CAAA;AACrB,SAAA;AACF,OAAA;AACF,KAAA;GACD;AACD60B,EAAAA,SAASA,GAAG;IACV,IAAI1B,SAAS,GAAG,IAAI,CAAA;IACpB,IAAI7mD,KAAK,GAAG,EAAE,CAAA;AACd,IAAA,OAAO,IAAI,EAAE;MACX,IAAI6mD,SAAS,KAAK,IAAI,IAAI,IAAI,CAACpzB,UAAU,CAAC,MAAM,CAAC,EAAE;QACjD,MAAM18B,IAAI,GAAG,IAAI,CAAC28B,YAAY,EAAE,CAAC1zB,KAAK,CAAA;AACtCA,QAAAA,KAAK,IAAIjJ,IAAI,CAAA;AACb8vD,QAAAA,SAAS,GAAGP,aAAa,CAACvvD,IAAI,CAAC,CAAA;AACjC,OAAC,MAAM,IACL,IAAI,CAACy8B,cAAc,EAAE,IACrB,IAAI,CAACC,UAAU,CAAC,KAAK,CAAC,IACtB,IAAI,CAACA,UAAU,CAAC,OAAO,CAAC,IACxB,IAAI,CAACA,UAAU,CAAC,YAAY,CAAC,EAC7B;QACA,OAAO;UACLzzB,KAAK;AACL6mD,UAAAA,SAAAA;SACD,CAAA;OACF,MAAM,IAAI,IAAI,CAACpzB,UAAU,CAAC,QAAQ,CAAC,EAAE;QACpC,OAAO;UACLzzB,KAAK;UACL6mD,SAAS;AACTJ,UAAAA,UAAU,EAAE,IAAA;SACb,CAAA;OACF,MAAM,IAAI,IAAI,CAAChzB,UAAU,CAAC,QAAQ,CAAC,EAAE;AACpC,QAAA,IAAI,CAACC,YAAY,CAAC,QAAQ,CAAC,CAAA;AAC3B,QAAA,MAAM38B,IAAI,GAAG,IAAI,CAACw8B,WAAW,CAAC,WAAW,CAAC,CAAA;AAC1C,QAAA,IAAIx8B,IAAI,CAAC,CAAC,CAAC,CAACrB,KAAK,EAAE;UACjBsK,KAAK,IAAI,GAAG,GAAGjJ,IAAI,CAAC,CAAC,CAAC,CAACrB,KAAK,CAAA;AAC9B,SAAA;QACA,OAAO;AACLsK,UAAAA,KAAK,EAAEumD,eAAe,CAACxvD,IAAI,CAAC;AAC5BrB,UAAAA,KAAK,EAAEsK,KAAAA;SACR,CAAA;AACH,OAAC,MAAM;AACLA,QAAAA,KAAK,IAAI,IAAI,CAACuzB,WAAW,CAAC,MAAM,CAAC,CAAA;AACnC,OAAA;AACF,KAAA;GACD;AACDi1B,EAAAA,UAAUA,GAAG;IACX,MAAM3oD,IAAI,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,CAAC,IAAI,CAAC2zB,cAAc,EAAE,EAAE;MAC7B,IAAIt1B,MAAM,GAAG,EAAE,CAAA;AACf,MAAA,OAAO,CAAC,IAAI,CAACs1B,cAAc,EAAE,IAAI,CAAC,IAAI,CAACC,UAAU,CAAC,KAAK,CAAC,EAAE;AACxDv1B,QAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,OAAA;AACA1zB,MAAAA,IAAI,CAAC1J,IAAI,CAAC8xD,iBAAiB,CAAC/pD,MAAM,CAAC,CAAC,CAAA;AACpC,MAAA,IAAI,CAACw1B,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAChC,KAAA;IACA,OAAO7zB,IAAI,CAAC/J,MAAM,KAAK,CAAC,GAAG+J,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAA;GAC1C;AACD4oD,EAAAA,eAAeA,GAAG;IAChB,MAAM5oD,IAAI,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,CAAC,IAAI,CAAC2zB,cAAc,EAAE,EAAE;MAC7B,IAAIt1B,MAAM,GAAG,EAAE,CAAA;AACf,MAAA,OAAO,CAAC,IAAI,CAACs1B,cAAc,EAAE,IAAI,CAAC,IAAI,CAACC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC1Dv1B,QAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,OAAA;MACA1zB,IAAI,CAAC1J,IAAI,CAAC+H,MAAM,CAAC9I,IAAI,EAAE,CAAC,CAAA;AACxB,MAAA,IAAI,CAACs+B,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAChC,MAAA,IAAI,CAACA,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACvC,KAAA;AACA,IAAA,OAAO7zB,IAAI,CAAA;GACZ;AACD6oD,EAAAA,cAAcA,GAAG;IACf,IAAIxqD,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,CAAC,IAAI,CAACs1B,cAAc,EAAE,EAAE;AAC7Bt1B,MAAAA,MAAM,IAAI,IAAI,CAACw1B,YAAY,EAAE,CAAC38B,IAAI,CAAA;AACpC,KAAA;IACA,OAAOkxD,iBAAiB,CAAC/pD,MAAM,CAAC,CAAA;GACjC;AACDyqD,EAAAA,SAASA,GAAG;AACV,IAAA,MAAMC,GAAG,GAAG,IAAI,CAACr1B,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAC9C,IAAI;AACF,MAAA,IAAIs1B,SAAS,CAACD,GAAG,CAAC,KAAKA,GAAG,EAAE;QAC1B,OAAOE,SAAS,CAACF,GAAG,CAAC,CAAA;AACvB,OAAC,MAAM;AACL,QAAA,OAAOA,GAAG,CAAA;AACZ,OAAA;KACD,CAAC,OAAO5qD,CAAC,EAAE;MACV,OAAO8qD,SAAS,CAACF,GAAG,CAAC,CAAA;AACvB,KAAA;GACD;AACDG,EAAAA,eAAeA,GAAG;AAChB,IAAA,IAAI,CAAC1pC,KAAK,CAACm+B,YAAY,GAAG,IAAI,CAAA;IAC9B,IAAIt/C,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,CAAC,IAAI,CAACs1B,cAAc,EAAE,EAAE;AAC7Bt1B,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;IACA,OAAO00B,iBAAiB,CAAC/pD,MAAM,CAAC,CAAA;GACjC;AACD8qD,EAAAA,WAAWA,GAAG;IACZ,MAAMrJ,WAAW,GAAG,EAAE,CAAA;AACtB,IAAA,OAAO,IAAI,EAAE;MACX,MAAM;QAAEr5C,KAAK;QAAE5L,IAAI;QAAEvG,IAAI;AAAE6L,QAAAA,KAAAA;AAAM,OAAC,GAAG,IAAI,CAACuzB,WAAW,CAAC,YAAY,CAAC,CAAA;MACnE,IAAIjtB,KAAK,KAAK,MAAM,EAAE;AACpB,QAAA,IAAI,CAACq5C,WAAW,CAACxrD,IAAI,EAAE;UACrBwrD,WAAW,CAACxrD,IAAI,GAAG,EAAE,CAAA;AACvB,SAAA;AACA,QAAA,IAAI,CAACwrD,WAAW,CAACxrD,IAAI,CAACuG,IAAI,CAAC,EAAE;AAC3BilD,UAAAA,WAAW,CAACxrD,IAAI,CAACuG,IAAI,CAAC,GAAG,EAAE,CAAA;AAC7B,SAAA;QACAilD,WAAW,CAACxrD,IAAI,CAACuG,IAAI,CAAC,CAACvG,IAAI,CAAC,GAAG6L,KAAK,CAAA;AACtC,OAAC,MAAM,IAAIsG,KAAK,KAAK,MAAM,EAAE;AAC3B,QAAA,IAAI,CAACq5C,WAAW,CAACjlD,IAAI,EAAE;UACrBilD,WAAW,CAACjlD,IAAI,GAAG,EAAE,CAAA;AACvB,SAAA;AACAilD,QAAAA,WAAW,CAACjlD,IAAI,CAACA,IAAI,CAAC,GAAGsF,KAAK,CAAA;AAChC,OAAC,MAAM;QACL2/C,WAAW,CAAC/rC,KAAK,GAAG5T,KAAK,CAAA;AAC3B,OAAA;AACA,MAAA,IAAI,IAAI,CAACwzB,cAAc,EAAE,EAAE;AACzB,QAAA,MAAA;AACF,OAAC,MAAM;AACL,QAAA,IAAI,CAACE,YAAY,CAAC,WAAW,CAAC,CAAA;AAC9B,QAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;AACvB,OAAA;AACF,KAAA;AACA,IAAA,OAAOosB,WAAW,CAAA;GACnB;AACDsJ,EAAAA,UAAUA,GAAG;IACX,MAAMzjB,UAAU,GAAG,EAAE,CAAA;AACrB,IAAA,IAAI,IAAI,CAAC/R,UAAU,CAAC,WAAW,CAAC,EAAE;AAChC+R,MAAAA,UAAU,CAAC9qC,IAAI,GAAGuY,QAAQ,CAAC,IAAI,CAACygB,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAA;AAC9D,MAAA,IAAI,IAAI,CAACD,UAAU,CAAC,OAAO,CAAC,EAAE;AAC5B,QAAA,IAAI,CAACC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC1B8R,UAAU,CAACrxC,IAAI,GAAG,IAAI,CAACu/B,YAAY,CAAC,MAAM,CAAC,CAAA;QAC3C8R,UAAU,CAACl/B,KAAK,GAAG,MAAM,CAAA;AAC3B,OAAC,MAAM;QACLk/B,UAAU,CAACl/B,KAAK,GAAG,MAAM,CAAA;AAC3B,OAAA;AACF,KAAC,MAAM;MACLk/B,UAAU,CAACl/B,KAAK,GAAG,OAAO,CAAA;AAC5B,KAAA;AACA,IAAA,IAAI,CAACotB,YAAY,CAAC,QAAQ,CAAC,CAAA;AAC3B,IAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;AACrB,IAAA,IAAI,IAAI,CAACE,UAAU,CAAC,OAAO,CAAC,EAAE;AAC5B,MAAA,IAAI,CAACC,YAAY,CAAC,OAAO,CAAC,CAAA;MAC1B,IAAIvhB,OAAO,GAAG,EAAE,CAAA;AAChB,MAAA,OAAO,CAAC,IAAI,CAACshB,UAAU,CAAC,OAAO,CAAC,EAAE;AAChC,QAAA,IACE,IAAI,CAACA,UAAU,CAAC,WAAW,CAAC,IAC5B,IAAI,CAACA,UAAU,CAAC,OAAO,CAAC,IACxB,IAAI,CAACA,UAAU,CAAC,OAAO,CAAC,IACxB,IAAI,CAACA,UAAU,CAAC,WAAW,CAAC,IAC5B,IAAI,CAACA,UAAU,CAAC,QAAQ,CAAC,EACzB;AACAthB,UAAAA,OAAO,IAAI,IAAI,CAAC/H,KAAK,CAACpK,KAAK,CAAA;UAC3B,IAAI,CAACoK,KAAK,GAAG,IAAI,CAACkpB,KAAK,CAAC3I,IAAI,EAAE,CAAA;AAChC,SAAC,MAAM;AACLxY,UAAAA,OAAO,IAAI,IAAI,CAACohB,WAAW,CAAC,MAAM,CAAC,CAAA;AACrC,SAAA;AACF,OAAA;AACA,MAAA,IAAI,CAACG,YAAY,CAAC,OAAO,CAAC,CAAA;AAC1B8R,MAAAA,UAAU,CAACxlC,KAAK,GAAGioD,iBAAiB,CAAC91C,OAAO,CAAC,CAAA;AAC7C,MAAA,IAAI,CAACohB,WAAW,CAAC,GAAG,CAAC,CAAA;AACvB,KAAC,MAAM;MACLiS,UAAU,CAACxlC,KAAK,GAAG,EAAE,CAAA;MACrB,IAAI9B,MAAM,GAAG,EAAE,CAAA;AACf,MAAA,OAAO,IAAI,EAAE;AACXA,QAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AAClC,QAAA,IAAI,IAAI,CAACE,UAAU,CAAC,OAAO,CAAC,EAAE;AAC5B,UAAA,IAAI,CAACC,YAAY,CAAC,OAAO,CAAC,CAAA;AAC1B,UAAA,IAAI,CAACH,WAAW,CAAC,GAAG,CAAC,CAAA;UACrBiS,UAAU,CAACxlC,KAAK,CAAC7J,IAAI,CAAC8xD,iBAAiB,CAAC/pD,MAAM,CAAC,CAAC,CAAA;AAChDA,UAAAA,MAAM,GAAG,EAAE,CAAA;AACb,SAAC,MAAM,IAAI,IAAI,CAACs1B,cAAc,EAAE,IAAI,IAAI,CAACC,UAAU,CAAC,WAAW,CAAC,EAAE;UAChE+R,UAAU,CAACxlC,KAAK,CAAC7J,IAAI,CAAC8xD,iBAAiB,CAAC/pD,MAAM,CAAC,CAAC,CAAA;AAChD,UAAA,MAAA;AACF,SAAA;AACF,OAAA;AACF,KAAA;AACA,IAAA,OAAOsnC,UAAU,CAAA;GAClB;AACDwa,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAIkJ,WAAW,CAAA;IACf,IAAIhrD,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,IAAI,CAACw1B,YAAY,CAAC,QAAQ,CAAC,CAAA;AAC3B,IAAA,MAAM8pB,YAAY,GAAG,IAAI,CAACn+B,KAAK,CAACm+B,YAAY,CAAA;AAC5C,IAAA,IAAI,CAACn+B,KAAK,CAACm+B,YAAY,GAAGA,YAAY,IAAI,IAAI,CAAC/pB,UAAU,CAAC,SAAS,CAAC,CAAA;AACnE,IAAA,CAACy1B,WAAW,GAAG,IAAI,CAAC7pC,KAAK,EAAE8pC,eAAe,KACxCD,WAAW,CAACC,eAAe,GAAG,IAAI,CAAC9pC,KAAK,CAACm+B,YAAY,CAAC,CAAA;AACzD,IAAA,OAAO,CAAC,IAAI,CAAC/pB,UAAU,CAAC,QAAQ,CAAC,EAAE;AACjCv1B,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;IACA,MAAM61B,QAAQ,GAAG5L,YAAY,IAAI,CAAC,IAAI,CAACn+B,KAAK,CAACm+B,YAAY,CAAA;IACzD,MAAM6L,WAAW,GAAGD,QAAQ,IAAI,IAAI,CAAC/pC,KAAK,CAAC8pC,eAAe,CAAA;AAC1D,IAAA,IAAI,CAAC9pC,KAAK,CAACm+B,YAAY,GAAGA,YAAY,CAAA;AACtC,IAAA,IAAI,CAAC9pB,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC3B,OAAO21B,WAAW,GAAGnB,eAAe,CAAChqD,MAAM,EAAE,QAAQ,CAAC,GAAGA,MAAM,CAAA;GAChE;AACDorD,EAAAA,UAAUA,GAAG;IACX,IAAIprD,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,IAAI,CAACw1B,YAAY,CAAC,WAAW,CAAC,CAAA;AAC9B,IAAA,OAAO,CAAC,IAAI,CAACD,UAAU,CAAC,WAAW,CAAC,EAAE;AACpC,MAAA,IAAI,IAAI,CAACA,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC7B,MAAMq0B,MAAM,GAAG,IAAI,CAACp0B,YAAY,CAAC,QAAQ,CAAC,CAAC1zB,KAAK,CAAA;AAChD,QAAA,MAAMjJ,IAAI,GAAG,IAAI,CAACw8B,WAAW,CAAC,MAAM,CAAC,CAACt+B,KAAK,CAAC,EAAE,CAAC,CAAA;AAC/C,QAAA,IAAI8B,IAAI,CAACoQ,KAAK,CAAEoiD,IAAI,IAAKA,IAAI,IAAIhM,WAAqB,CAACuK,MAAM,CAAC,CAAC,EAAE;UAC/D5pD,MAAM,IAAInH,IAAI,CAAC4G,GAAG,CAAE4rD,IAAI,IAAKhM,WAAqB,CAACuK,MAAM,CAAC,CAACyB,IAAI,CAAC,CAAC,CAACtxD,IAAI,CAAC,EAAE,CAAC,CAAA;AAC5E,SAAC,MAAM;AACL,UAAA,MAAMuxD,UAAU,GAAGjM,oBAA8B,CAACuK,MAAM,CAAC,CAAA;AACzD5pD,UAAAA,MAAM,IAAIq/C,UAAoB,CAACiM,UAAU,CAAC,CAACvxD,IAAI,CAAClB,IAAI,CAACkB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AAChE,SAAA;AACA,QAAA,SAAA;AACF,OAAA;AACA,MAAA,IAAI,IAAI,CAACw7B,UAAU,CAAC,SAAS,CAAC,EAAE;AAC9B,QAAA,MAAMyzB,OAAO,GAAG,IAAI,CAAC98C,KAAK,CAACpK,KAAK,CAAA;AAChC,QAAA,IAAIknD,OAAO,IAAI3J,oBAA8B,EAAE;AAC7C,UAAA,IAAI,CAAC7pB,YAAY,CAAC,SAAS,CAAC,CAAA;AAC5B,UAAA,MAAM38B,IAAI,GAAG,IAAI,CAACw8B,WAAW,CAAC,eAAe,CAAC,CAAA;UAC9Cr1B,MAAM,IAAIgqD,eAAe,CAACnxD,IAAI,EAAEwmD,oBAA8B,CAAC2J,OAAO,CAAC,CAAC,CAAA;AACxE,UAAA,SAAA;AACF,SAAA;AACF,OAAA;AACAhpD,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;AACA,IAAA,IAAI,CAACG,YAAY,CAAC,WAAW,CAAC,CAAA;AAC9B,IAAA,OAAOx1B,MAAM,CAAA;GACd;AACD+hD,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,IAAI,CAACxsB,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC7B,MAAA,OAAO,IAAI,CAACF,WAAW,CAAC,eAAe,CAAC,CAAA;KACzC,MAAM,IAAI,IAAI,CAACE,UAAU,CAAC,WAAW,CAAC,EAAE;AACvC,MAAA,OAAO,IAAI,CAACF,WAAW,CAAC,YAAY,CAAC,CAAA;KACtC,MAAM,IAAI,IAAI,CAACE,UAAU,CAAC,YAAY,CAAC,EAAE;AACxC,MAAA,OAAO,IAAI,CAACC,YAAY,CAAC,YAAY,CAAC,CAAC1zB,KAAK,CAAA;KAC7C,MAAM,IAAI,IAAI,CAACyzB,UAAU,CAAC,cAAc,CAAC,EAAE;AAC1C,MAAA,OAAO,IAAI,CAACF,WAAW,CAAC,aAAa,CAAC,CAAA;KACvC,MAAM,IAAI,IAAI,CAACE,UAAU,CAAC,SAAS,CAAC,EAAE;AACrC,MAAA,OAAO,IAAI,CAACF,WAAW,CAAC,SAAS,CAAC,CAAA;AACpC,KAAA;IACA,MAAMx8B,IAAI,GAAG,IAAI,CAAC28B,YAAY,CAAC,MAAM,CAAC,CAAC1zB,KAAK,CAACxK,OAAO,CAClD+nD,eAAyB,EACxBkM,QAAQ,IAAKlM,SAAmB,CAACkM,QAAQ,CAC5C,CAAC,CAAA;AACD,IAAA,MAAMC,gBAAgB,GAAG,IAAI,CAACrqC,KAAK,CAACqqC,gBAAgB,CAAA;IACpD,IAAI,CAACrqC,KAAK,CAACqqC,gBAAgB,GAAG,SAAS,CAAC3kD,IAAI,CAAChO,IAAI,CAAC,CAAA;AAClD,IAAA,IAAI,CAAC,IAAI,CAACsoB,KAAK,CAACm+B,YAAY,EAAE;AAC5B,MAAA,IAAImM,YAAY,CAAA;MACf,CAACA,YAAY,GAAG,IAAI,CAACtqC,KAAK,EAAE8pC,eAAe,KACzCQ,YAAY,CAACR,eAAe,GAC3BpyD,IAAI,KAAKA,IAAI,CAACR,WAAW,EAAE,IAAIQ,IAAI,KAAKA,IAAI,CAACmkB,WAAW,EAAE,CAAC,CAAA;AAC/D,MAAA,OAAOnkB,IAAI,CAAA;AACb,KAAA;AACA,IAAA,MAAM,CAAC6yD,KAAK,EAAE,GAAGC,eAAe,CAAC,GAAG9yD,IAAI,CAAA;AACxC,IAAA,MAAMiI,IAAI,GAAG6qD,eAAe,CAAC5xD,IAAI,CAAC,EAAE,CAAC,CAAA;AACrC,IAAA,MAAM6xD,aAAa,GAAG9qD,IAAI,CAACzI,WAAW,EAAE,CAAA;IACxC,IAAIyI,IAAI,KAAK8qD,aAAa,EAAE;AAC1B,MAAA,OAAO/yD,IAAI,CAAA;AACb,KAAA;IACA,IAAI,CAAC2yD,gBAAgB,EAAE;AACrB,MAAA,OAAO3yD,IAAI,CAACR,WAAW,EAAE,CAAA;AAC3B,KAAA;IACA,OAAOqzD,KAAK,GAAGE,aAAa,CAAA;GAC7B;AACDC,EAAAA,OAAOA,GAAG;AACR,IAAA,MAAMC,YAAY,GAAG,IAAI,CAACt2B,YAAY,CAAC,SAAS,CAAC,CAAA;AACjD,IAAA,MAAMwzB,OAAO,GAAG8C,YAAY,CAAChqD,KAAK,CAAA;AAClC,IAAA,IAAIknD,OAAO,IAAI3J,cAAwB,EAAE;AACvC,MAAA,MAAMxmD,IAAI,GAAG,IAAI,CAACw8B,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,MAAA,MAAMl7B,MAAM,GAAGklD,cAAwB,CAAC2J,OAAO,CAAC,CAAA;AAChD,MAAA,OAAOgB,eAAe,CAACnxD,IAAI,EAAEsB,MAAM,CAAC,CAAA;AACtC,KAAC,MAAM,IAAI6uD,OAAO,IAAI3J,kBAA4B,EAAE;AAClD,MAAA,MAAMxmD,IAAI,GAAG,IAAI,CAACw8B,WAAW,CAAC,eAAe,CAAC,CAAA;AAC9C,MAAA,MAAMl7B,MAAM,GAAGklD,kBAA4B,CAAC2J,OAAO,CAAC,CAAA;AACpD,MAAA,OAAOgB,eAAe,CAACnxD,IAAI,EAAEsB,MAAM,CAAC,CAAA;AACtC,KAAC,MAAM,IAAI6uD,OAAO,IAAI3J,QAAkB,EAAE;AACxC,MAAA,OAAOA,QAAkB,CAAC2J,OAAO,CAAC,CAAA;AACpC,KAAC,MAAM,IAAIA,OAAO,IAAI3J,YAAsB,EAAE;AAC5C,MAAA,OAAOA,YAAsB,CAAC2J,OAAO,CAAC,CAAA;AACxC,KAAC,MAAM,IAAIA,OAAO,IAAI3J,UAAoB,IAAI,CAAC,IAAI,CAAC/pB,cAAc,EAAE,EAAE;AACpE,MAAA,MAAMz8B,IAAI,GAAG,IAAI,CAACw8B,WAAW,CAAC,MAAM,CAAC,CAAA;AACrC,MAAA,MAAM02B,SAAS,GAAGlzD,IAAI,CAAC,CAAC,CAAC,GAAGwmD,UAAoB,CAAC2J,OAAO,CAAC,CAAA;AACzD,MAAA,OAAO+C,SAAS,CAAC9yC,SAAS,CAAC,KAAK,CAAC,GAAGpgB,IAAI,CAACoC,KAAK,CAAC,CAAC,CAAC,CAAA;AACnD,KAAC,MAAM,IAAI+tD,OAAO,IAAI3J,gBAA0B,EAAE;AAChD,MAAA,MAAM2M,IAAI,GAAG3M,gBAA0B,CAAC2J,OAAO,CAAC,CAAA;MAChD,MAAMxkC,IAAI,GAAG,EAAE,CAAA;AACf,MAAA,IAAIynC,KAAK,GAAGD,IAAI,CAACp0D,MAAM,CAAA;AACvB,MAAA,OAAOq0D,KAAK,EAAE,GAAG,CAAC,EAAE;AAClB,QAAA,IAAI,CAACz2B,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QACrChR,IAAI,CAACvsB,IAAI,CAAC,IAAI,CAACo9B,WAAW,CAAC,eAAe,CAAC,CAAC,CAAA;AAC9C,OAAA;AACA,MAAA,OAAO22B,IAAI,CAAC,GAAGxnC,IAAI,CAAC,CAAA;KACrB,MAAM,IAAI,aAAa,CAAC3d,IAAI,CAACmiD,OAAO,CAAC,EAAE;AACtC,MAAA,OAAO8C,YAAY,CAACjzD,IAAI,CAACoC,KAAK,CAAC,CAAC,CAAC,CAAA;AACnC,KAAC,MAAM;MACL,OAAO6wD,YAAY,CAACjzD,IAAI,CAAA;AAC1B,KAAA;GACD;AACDqzD,EAAAA,GAAGA,GAAG;IACJ,IAAIlsD,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,CAAC,IAAI,CAACs1B,cAAc,EAAE,IAAI,CAAC,IAAI,CAACC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC3Dv1B,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;AACA,IAAA,OAAOr1B,MAAM,CAAA;GACd;AACDmsD,EAAAA,WAAWA,GAAG;AACZ,IAAA,IAAI,CAAC32B,YAAY,CAAC,cAAc,CAAC,CAAA;AACjC,IAAA,MAAM42B,QAAQ,GAAG,IAAI,CAAC/2B,WAAW,CAAC,eAAe,CAAC,CAAA;IAClD,IAAIr1B,MAAM,GAAG,EAAE,CAAA;AACf,IAAA,OAAO,CAAC,IAAI,CAACu1B,UAAU,CAAC,YAAY,CAAC,EAAE;AACrCv1B,MAAAA,MAAM,IAAI,IAAI,CAACq1B,WAAW,CAAC,MAAM,CAAC,CAAA;AACpC,KAAA;AACA,IAAA,MAAMjc,GAAG,GAAG,IAAI,CAACoc,YAAY,CAAC,YAAY,CAAC,CAAA;AAC3C,IAAA,MAAM62B,MAAM,GAAG,IAAI,CAACh3B,WAAW,CAAC,eAAe,CAAC,CAAA;IAChD,IAAI+2B,QAAQ,KAAKC,MAAM,EAAE;AACvB,MAAA,MAAM,IAAI12B,WAAW,CACnB,IAAI,CAACP,KAAK,CAACQ,WAAW,CACpBxc,GAAG,EACF,CAA4BgzC,0BAAAA,EAAAA,QAAS,kBAAiBC,MAAO,CAAA,CAAA,CAChE,CACF,CAAC,CAAA;AACH,KAAA;IACA,OAAOrC,eAAe,CAAChqD,MAAM,EAAEq/C,cAAwB,CAAC+M,QAAQ,CAAC,CAAC,CAAA;GACnE;AACD9yD,EAAAA,CAACA,GAAG;AACF,IAAA,OAAO,IAAI,CAACi8B,UAAU,CAAC,YAAY,CAAC,EAAE;AACpC,MAAA,IAAI,CAACC,YAAY,CAAC,YAAY,CAAC,CAAA;AACjC,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACE8pB,EAAAA,YAAY,EAAE,KAAK;AACnB2L,EAAAA,eAAe,EAAE,KAAK;AACtBO,EAAAA,gBAAgB,EAAE,IAAA;AACpB,CACF,CAAC,CAAA;AACD,SAASc,uBAAuBA,CAACp6C,QAAQ,EAAE;EACzC,OAAOmtC,qBAA+B,CAACzkD,QAAQ,CAACsX,QAAQ,CAAC7Z,WAAW,EAAE,CAAC,CAAA;AACzE,CAAA;AACA,SAASk0D,SAASA,CAACC,SAAS,EAAE;AAC5B,EAAA,IAAI9kD,KAAK,CAACC,OAAO,CAAC6kD,SAAS,CAAC,EAAE;AAC5B,IAAA,OAAOA,SAAS,CAACvjD,KAAK,CAACqjD,uBAAuB,CAAC,CAAA;AACjD,GAAA;EACA,OAAOA,uBAAuB,CAACE,SAAS,CAAC,CAAA;AAC3C,CAAA;AACA,SAASC,WAAWA,CAACn3C,SAAS,EAAEk3C,SAAS,EAAE;AACzC,EAAA,IAAIl3C,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;IAC3B,OAAOA,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,aAAa,GAAG,MAAM,CAAA;AACzD,GAAA;AACA,EAAA,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;AAC5B,IAAA,MAAMo3C,MAAM,GAAGryD,QAAM,CAACwL,KAAK,CAACy5C,YAAY,CAAA;AACxC,IAAA,IAAIoN,MAAM,KAAK,QAAQ,IAAKA,MAAM,KAAK,SAAS,IAAIH,SAAS,CAACC,SAAS,CAAE,EAAE;AACzE,MAAA,OAAO,iBAAiB,CAAA;AAC1B,KAAC,MAAM;AACL,MAAA,OAAO,QAAQ,CAAA;AACjB,KAAA;AACF,GAAA;AACA,EAAA,QAAQl3C,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,GAAGA,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC;AAC5D,IAAA,KAAK,MAAM;AACT,MAAA,OAAO,YAAY,CAAA;AACrB,IAAA,KAAK,WAAW;AACd,MAAA,OAAO,iBAAiB,CAAA;AAC1B,IAAA,KAAK,UAAU;AACb,MAAA,OAAO,gBAAgB,CAAA;AACzB,IAAA,KAAK,KAAK;AACR,MAAA,OAAO,WAAW,CAAA;AACpB,IAAA,KAAK,OAAO,CAAA;AACZ,IAAA,KAAK,SAAS,CAAA;AACd,IAAA;AACE,MAAA,OAAO,QAAQ,CAAA;AACnB,GAAA;AACF,CAAA;AACA,SAASq3C,aAAaA,CAACr3C,SAAS,EAAE;AAChC,EAAA,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AAC3B,IAAA,OAAO,cAAc,CAAA;AACvB,GAAA;EACA,QAAQA,SAAS,CAAC,CAAC,CAAC;AAClB,IAAA,KAAK,MAAM;AACT,MAAA,OAAO,aAAa,CAAA;AACtB,IAAA,KAAK,WAAW;AACd,MAAA,OAAO,kBAAkB,CAAA;AAC3B,IAAA,KAAK,OAAO,CAAA;AACZ,IAAA;AACE,MAAA,OAAO,eAAe,CAAA;AAC1B,GAAA;AACF,CAAA;AACO,SAASzP,OAAKA,CAAChN,IAAI,EAAE6c,KAAK,EAAE82C,SAAS,GAAG,EAAE,EAAE;EACjD,MAAMl3C,SAAS,GAAG+pC,UAAoB,CAAC3pC,KAAK,CAAC,IAAI,EAAE,CAAA;EACnD,OAAOu0C,YAAY,CAACpkD,KAAK,CACvBuvB,KAAK,CAACiE,KAAK,CAACxgC,IAAI,EAAE;AAChBsoB,IAAAA,KAAK,EAAEwrC,aAAa,CAACr3C,SAAS,CAAC;AAC/B1f,IAAAA,IAAI,EAAE,CAAC;AACPyuC,IAAAA,GAAG,EAAE,CAAA;GACN,CAAC,EACFooB,WAAW,CAACn3C,SAAS,EAAEk3C,SAAS,CAClC,CAAC,CAAA;AACH,CAAA;AACO,SAASI,eAAeA,CAAC/zD,IAAI,EAAE;EACpC,OAAOoxD,YAAY,CAACpkD,KAAK,CACvBuvB,KAAK,CAACiE,KAAK,CAACxgC,IAAI,EAAE;AAChBsoB,IAAAA,KAAK,EAAE,YAAY;AACnBvrB,IAAAA,IAAI,EAAE,CAAC;AACPyuC,IAAAA,GAAG,EAAE,CAAA;GACN,CAAC,EACF,aACF,CAAC,CAAA;AACH;;AC1oBA,SAASz2B,OAAOA,CAAC9N,CAAC,EAAEiL,CAAC,EAAE;AACrB,EAAA,IAAIF,CAAC,GAAGrQ,MAAM,CAACC,IAAI,CAACqF,CAAC,CAAC,CAAA;EACtB,IAAItF,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAIC,CAAC,GAAGtT,MAAM,CAACqT,qBAAqB,CAAC/N,CAAC,CAAC,CAAA;IACvCiL,CAAC,KACE+C,CAAC,GAAGA,CAAC,CAAC3M,MAAM,CAAC,UAAU4J,CAAC,EAAE;MACzB,OAAOvQ,MAAM,CAACuT,wBAAwB,CAACjO,CAAC,EAAEiL,CAAC,CAAC,CAACL,UAAU,CAAA;AACzD,KAAC,CAAC,CAAC,EACHG,CAAC,CAAC5S,IAAI,CAAC+V,KAAK,CAACnD,CAAC,EAAEiD,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,EAAA,OAAOjD,CAAC,CAAA;AACV,CAAA;AACA,SAASoD,aAAaA,CAACnO,CAAC,EAAE;AACxB,EAAA,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,SAAS,CAACtW,MAAM,EAAEmT,CAAC,EAAE,EAAE;AACzC,IAAA,IAAIF,CAAC,GAAG,IAAI,IAAIqD,SAAS,CAACnD,CAAC,CAAC,GAAGmD,SAAS,CAACnD,CAAC,CAAC,GAAG,EAAE,CAAA;AAChDA,IAAAA,CAAC,GAAG,CAAC,GACD6C,OAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;MAC1CT,eAAe,CAACxK,CAAC,EAAEiL,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAC,CAAC,GACFvQ,MAAM,CAAC2T,yBAAyB,GAChC3T,MAAM,CAAC4T,gBAAgB,CAACtO,CAAC,EAAEtF,MAAM,CAAC2T,yBAAyB,CAACtD,CAAC,CAAC,CAAC,GAC/D+C,OAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;AACtCvQ,MAAAA,MAAM,CAACiQ,cAAc,CAAC3K,CAAC,EAAEiL,CAAC,EAAEvQ,MAAM,CAACuT,wBAAwB,CAAClD,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOjL,CAAC,CAAA;AACV,CAAA;AACA,SAASwK,eAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,cAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,cAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,YAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,YAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AAKA,SAASzD,QAAQA,CAAC7Q,OAAO,EAAEs2D,YAAY,EAAE;EACvC,MAAMC,QAAQ,GAAG,EAAE,CAAA;AACnB,EAAA,KAAK,MAAM;IAAElrD,IAAI;IAAEpK,KAAK;AAAE6H,IAAAA,UAAAA;GAAY,IAAI9I,OAAO,EAAE;IACjD,IAAIqL,IAAI,IAAIirD,YAAY,EAAE;MACxB,MAAME,OAAO,GAAG,EAAE,CAAA;AAClB,MAAA,KAAK,MAAMr3C,KAAK,IAAIm3C,YAAY,CAACjrD,IAAI,CAAC,EAAE;AACtC,QAAA,IAAI8F,KAAK,CAACC,OAAO,CAAC+N,KAAK,CAAC,IAAI,CAACA,KAAK,CAAClJ,IAAI,CAAEkJ,KAAK,IAAKA,KAAK,IAAIrW,UAAU,CAAC,EAAE;UACvE0tD,OAAO,CAAC90D,IAAI,CAACyd,KAAK,CAAC3b,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/B,SAAC,MAAM,IAAI,OAAO2b,KAAK,KAAK,QAAQ,IAAI,EAAEA,KAAK,IAAIrW,UAAU,CAAC,EAAE;AAC9D0tD,UAAAA,OAAO,CAAC90D,IAAI,CAACyd,KAAK,CAAC,CAAA;AACrB,SAAA;AACF,OAAA;MACA,IAAIq3C,OAAO,CAACn1D,MAAM,EAAE;AAClBk1D,QAAAA,QAAQ,CAAC70D,IAAI,CAAC,CAACT,KAAK,EAAG,CAAA,gBAAA,EAAkBu1D,OAAO,CAAChzD,IAAI,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC,CAAC,CAAA;AACjE,OAAA;AACF,KAAC,MAAM;MACL+yD,QAAQ,CAAC70D,IAAI,CAAC,CAACT,KAAK,EAAG,CAAiBoK,eAAAA,EAAAA,IAAK,CAAE,CAAA,CAAA,CAAC,CAAC,CAAA;AACnD,KAAA;AACF,GAAA;EACA,IAAIkrD,QAAQ,CAACl1D,MAAM,EAAE;AACnB,IAAA,MAAM,IAAI2T,UAAU,CAClB,CAAC,kBAAkB,CAAC,CACjBjH,MAAM,CAACwoD,QAAQ,CAACrtD,GAAG,CAAC,CAAC,CAACjI,KAAK,EAAEw1D,OAAO,CAAC,KAAM,CAAMx1D,IAAAA,EAAAA,KAAM,QAAOw1D,OAAQ,CAAA,CAAC,CAAC,CAAC,CACzEjzD,IAAI,CAAC,IAAI,CACd,CAAC,CAAA;AACH,GAAA;AACF,CAAA;AACA,SAASkzD,gBAAgBA,CAACrtD,KAAK,EAAE;EAC/B,MAAMI,MAAM,GAAG,EAAE,CAAA;AACjB,EAAA,IAAI,UAAU,IAAIJ,KAAK,CAACP,UAAU,EAAE;AAClCW,IAAAA,MAAM,CAACkS,QAAQ,GAAGg7C,OAAU,CAACttD,KAAK,CAACP,UAAU,CAAC6S,QAAQ,EAAE,UAAU,CAAC,CAAA;AACrE,GAAA;AACA,EAAA,KAAK,MAAMi7C,QAAQ,IAAIvtD,KAAK,CAACP,UAAU,EAAE;AACvC,IAAA,MAAMyC,KAAK,GAAGlC,KAAK,CAACP,UAAU,CAAC8tD,QAAQ,CAAC,CAAA;IACxC,IAAIrrD,KAAK,KAAK,EAAE,EAAE;AAChB,MAAA,SAAA;AACF,KAAA;AACA9B,IAAAA,MAAM,CAACmtD,QAAQ,CAAC,GAAGD,OAAU,CAACprD,KAAK,GAAG,EAAE,EAAEqrD,QAAQ,EAAEntD,MAAM,CAACkS,QAAQ,CAAC,CAAA;AACtE,GAAA;AACA,EAAA,KAAK,MAAMi7C,QAAQ,IAAIvtD,KAAK,CAAC6hD,WAAW,EAAE;IACxC,KAAK,MAAMna,UAAU,IAAI1nC,KAAK,CAAC6hD,WAAW,CAAC0L,QAAQ,CAAC,EAAE;AACpDntD,MAAAA,MAAM,CAACmtD,QAAQ,GAAG,MAAM,GAAG7lB,UAAU,CAAC,GAAGslB,eAAe,CACtDhtD,KAAK,CAAC6hD,WAAW,CAAC0L,QAAQ,CAAC,CAAC7lB,UAAU,CACxC,CAAC,CAAA;AACH,KAAA;AACF,GAAA;AACA,EAAA,OAAOr5B,aAAa,CAClBA,aAAa,CAAC,EAAE,EAAErO,KAAK,CAAC,EACxB,EAAE,EACF;AACEP,IAAAA,UAAU,EAAEW,MAAAA;AACd,GACF,CAAC,CAAA;AACH,CAAA;AACO,SAAS6F,OAAKA,CAACtP,OAAO,EAAE;AAC7B,EAAA,IAAI8D,QAAM,CAACwL,KAAK,CAACoB,MAAM,EAAE;AACvBG,IAAAA,QAAQ,CAAC7Q,OAAO,EAAE0wC,QAAQ,CAACC,QAAQ,CAAC,CAAA;AACtC,GAAA;EACA,OAAOkmB,OAAW,CAAC72D,OAAO,CAACkJ,GAAG,CAACwtD,gBAAgB,CAAC,CAAC,CAAA;AACnD,CAAA;AACO,SAAS/E,WAAWA,CAAC3xD,OAAO,EAAE;AACnC,EAAA,IAAI8D,QAAM,CAACwL,KAAK,CAACoB,MAAM,EAAE;AACvBG,IAAAA,QAAQ,CAAC7Q,OAAO,EAAE0wC,QAAQ,CAACE,MAAM,CAAC,CAAA;AACpC,GAAA;EACA,OAAOkmB,aAAS,CAAC92D,OAAO,CAACkJ,GAAG,CAACwtD,gBAAgB,CAAC,CAAC,CAAA;AACjD;;ACzHO,MAAMlwD,GAAG,GAAG,SAAS,CAAA;AACrB,MAAMqJ,OAAO,GAAG;AACrB,EAAA,gBAAgB,EAAE;AAChBP,IAAAA,KAAK,EAAEyc,OAAS;AAChBhV,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,QAAQ;AAClBI,MAAAA,SAAS,EAAE,6EAAA;AACb,KAAA;GACD;AACD,EAAA,wBAAwB,EAAE;IACxBvD,KAAKA,CAACkD,KAAK,EAAE;AACX,MAAA,OAAOukD,OAAY,CAAC,CAACvkD,KAAK,CAAC,CAAC,CAAA;KAC7B;AACDuE,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,cAAc;AACxB6C,MAAAA,kBAAkB,EAAE;AAClBU,QAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAA;AACvC,OAAA;AACF,KAAA;GACD;AACD,EAAA,wBAAwB,EAAE;AACxB1G,IAAAA,KAAK,EAAEynD,OAAY;AACnBhgD,IAAAA,SAAS,EAAE;AACTvB,MAAAA,iBAAiB,EAAE,wBAAA;AACrB,KAAA;GACD;AACD,EAAA,cAAc,EAAE;AACdlG,IAAAA,KAAK,EAAEyc,OAAS;AAChBqV,IAAAA,OAAO,EAAE,sBAAA;GACV;AACD,EAAA,sBAAsB,EAAE;IACtB9xB,KAAKA,CAACkD,KAAK,EAAE;AACX,MAAA,OAAOm/C,WAAW,CAAC,CAACn/C,KAAK,CAAC,CAAC,CAAA;AAC7B,KAAA;GACD;AACD,EAAA,sBAAsB,EAAE;AACtBlD,IAAAA,KAAK,EAAEqiD,WAAAA;GACR;AACD,EAAA,cAAc,EAAE;AACdriD,IAAAA,KAAK,EAAE0nD,WAAW;AAClBjgD,IAAAA,SAAS,EAAE;AACTtE,MAAAA,QAAQ,EAAE,QAAQ;AAClBI,MAAAA,SAAS,EAAE,qEAAA;AACb,KAAA;AACF,GAAA;AACF,CAAC;;AChDD;AAGA,MAAMs5B,OAAO,GAAG,EAAE,CAAA;AAClB,KAAK,MAAMsmB,OAAO,IAAIla,QAAQ,EAAE;AAC9BpM,EAAAA,OAAO,CAACoM,QAAQ,CAACka,OAAO,CAAC,CAAC,GAAGA,OAAO,CAAA;AACtC,CAAA;AACA,KAAK,MAAM+C,SAAS,IAAIpd,UAAU,EAAE;AAClCjM,EAAAA,OAAO,CAACiM,UAAU,CAACod,SAAS,CAAC,CAAC,GAAGA,SAAS,CAAA;AAC5C,CAAA;AACA,KAAK,MAAMR,QAAQ,IAAI5M,SAAS,EAAE;AAChCjc,EAAAA,OAAO,CAACic,SAAS,CAAC4M,QAAQ,CAAC,CAAC,GAAGA,QAAQ,CAAA;AACzC,CAAA;AACA,MAAMiC,WAAW,GAAG,EAAE,CAAA;AACtB,KAAK,MAAMxE,OAAO,IAAI9R,YAAY,EAAE;AAClCsW,EAAAA,WAAW,CAACtW,YAAY,CAAC8R,OAAO,CAAC,CAAC,GAAGA,OAAO,CAAA;AAC9C,CAAA;AACA,MAAMyE,cAAc,GAClB,wGAAwG,CAAA;AAC1G,MAAMC,iBAAiB,GAAG,qEAAqE,CAAA;AAC/F,MAAMC,sBAAsB,GAAG,mEAAmE,CAAA;AAClG,MAAMC,cAAc,GAAG;AACrBC,EAAAA,SAAS,EAAE,GAAG;AACdlsD,EAAAA,IAAI,EAAE,OAAA;AACR,CAAC,CAAA;AACD,MAAMmsD,gBAAgB,GAAG;AACvBh0D,EAAAA,CAAC,EAAE,WAAW;AACdoe,EAAAA,CAAC,EAAE,WAAW;AACdokC,EAAAA,EAAE,EAAE,WAAW;AACfyR,EAAAA,GAAG,EAAE,oBAAoB;AACzBC,EAAAA,GAAG,EAAE,kBAAkB;AACvB,EAAA,uCAAuC,EAAE,WAAW;AACpD,EAAA,qBAAqB,EAAE,GAAA;AACzB,CAAC,CAAA;AACD,SAASC,eAAeA,CAAC5C,IAAI,EAAE;EAC7B,IAAIA,IAAI,IAAI3oB,OAAO,EAAE;AACnB,IAAA,OAAOA,OAAO,CAAC2oB,IAAI,CAAC,IAAI1M,SAAS,GAAGjc,OAAO,CAAC2oB,IAAI,CAAC,GAAI,CAAA,EAAA,EAAI3oB,OAAO,CAAC2oB,IAAI,CAAE,CAAG,EAAA,CAAA,CAAA;AAC5E,GAAC,MAAM,IAAIA,IAAI,IAAImC,WAAW,EAAE;AAC9B,IAAA,OAAQ,CAAKA,GAAAA,EAAAA,WAAW,CAACnC,IAAI,CAAE,CAAE,CAAA,CAAA,CAAA;AACnC,GAAC,MAAM;AACL,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;AACF,CAAA;AACA,SAAS6C,WAAWA,CAACpsD,KAAK,EAAE;AAC1B,EAAA,IAAI,CAACzH,QAAM,CAACF,MAAM,CAACslD,SAAS,EAAE;AAC5B,IAAA,OAAO39C,KAAK,CAAA;AACd,GAAA;EACA,OAAOA,KAAK,CACTmX,SAAS,CAAC,MAAM,CAAC,CACjB3hB,OAAO,CAACm2D,cAAc,EAAGpC,IAAI,IAAK4C,eAAe,CAAC5C,IAAI,CAAC,CAAC,CACxD/zD,OAAO,CAACo2D,iBAAiB,EAAG12D,KAAK,IAChC0Q,KAAK,CAACoe,IAAI,CAAC9uB,KAAK,CAAC,CAACkgC,MAAM,CAAC,CAACi3B,OAAO,EAAEpC,SAAS,KAAM,CAAA,GAAA,EAAKrpB,OAAO,CAACqpB,SAAS,CAAE,CAAA,CAAA,EAAGoC,OAAQ,CAAA,CAAA,CAAE,CACzF,CAAC,CACA72D,OAAO,CAACq2D,sBAAsB,EAAE,EAAE,CAAC,CAAA;AACxC,CAAA;AACA,SAASS,cAAcA,CAACtsD,KAAK,EAAE;EAC7B,MAAMusD,WAAW,GAAG,EAAE,CAAA;AACtB,EAAA,IAAIC,MAAM,GAAGxsD,KAAK,CAAC/K,KAAK,CAAC,0CAA0C,CAAC,CAAA;EACpEu3D,MAAM,GAAGA,MAAM,CAAC7uD,GAAG,CAAC,CAACyM,KAAK,EAAEvP,KAAK,KAAK;AACpC,IAAA,IAAIA,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;MACnB,OAAOuxD,WAAW,CAAChiD,KAAK,CAAC,CAAA;AAC3B,KAAC,MAAM,IAAIA,KAAK,IAAI4hD,gBAAgB,EAAE;AACpCO,MAAAA,WAAW,CAACp2D,IAAI,CAAC,GAAG,GAAGiU,KAAK,CAACnV,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;MAC3C,OAAO+2D,gBAAgB,CAAC5hD,KAAK,CAAC,CAAA;AAChC,KAAC,MAAM,IAAIA,KAAK,KAAKmiD,WAAW,CAACA,WAAW,CAACz2D,MAAM,GAAG,CAAC,CAAC,EAAE;MACxDy2D,WAAW,CAACvpD,GAAG,EAAE,CAAA;AACjB,MAAA,OAAO,GAAG,CAAA;AACZ,KAAC,MAAM;AACL,MAAA,OAAO,EAAE,CAAA;AACX,KAAA;AACF,GAAC,CAAC,CAAA;AACF,EAAA,OAAOwpD,MAAM,CAACv0D,IAAI,CAAC,EAAE,CAAC,CAAA;AACxB,CAAA;AACA,SAASuxD,UAAUA,CAAC9jD,IAAI,EAAE;AACxB,EAAA,IAAIA,IAAI,CAACtK,MAAM,IAAI,CAACsK,IAAI,CAACzS,MAAM,IAAI,CAACyS,IAAI,CAAC0M,KAAK,GAAG,CAAC1M,IAAI,CAACrS,MAAM,EAAE;AAC7D,IAAA,OAAOqS,IAAI,CAACtK,MAAM,CAACtC,QAAQ,CAACgzD,cAAc,CAACjsD,IAAI,CAAC,GAAG6F,IAAI,CAACtK,MAAM,GAAI,IAAGsK,IAAI,CAACtK,MAAO,CAAE,CAAA,CAAA,CAAA;AACrF,GAAA;AACA,EAAA,MAAMghB,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;AAClB,EAAA,IAAI1W,IAAI,CAACzS,MAAM,IAAIyS,IAAI,CAACtK,MAAM,EAAE;IAC9BghB,KAAK,CAAC,CAAC,CAAC,IAAI1W,IAAI,CAACzS,MAAM,GAAG,GAAG,CAAA;AAC/B,GAAA;EACA,IAAIyS,IAAI,CAACtK,MAAM,EAAE;AACfghB,IAAAA,KAAK,CAAC,CAAC,CAAC,IAAI1W,IAAI,CAACtK,MAAM,CAAA;AACzB,GAAA;EACA,IAAIsK,IAAI,CAACrS,MAAM,EAAE;AACf+oB,IAAAA,KAAK,CAACjmB,IAAI,CAACuP,IAAI,CAACrS,MAAM,CAAC,CAAA;IACvB+oB,KAAK,CAACjmB,IAAI,CAACuP,IAAI,CAAC0M,KAAK,IAAI,EAAE,CAAC,CAAA;AAC9B,GAAC,MAAM;AACLgK,IAAAA,KAAK,CAACjmB,IAAI,CAACuP,IAAI,CAAC0M,KAAK,CAAC,CAAA;AACxB,GAAA;AACA,EAAA,OAAOg6C,WAAW,CAAChwC,KAAK,CAACnkB,IAAI,CAAC,IAAI,CAAC,CAAC7C,IAAI,EAAE,CAAC,CAAA;AAC7C,CAAA;AACA,SAASq3D,WAAWA,CAAC16C,KAAK,EAAE;AAC1B,EAAA,OAAOu6C,cAAc,CAACv6C,KAAK,CAAC,CACzB9c,KAAK,CAAC,QAAQ,CAAC,CACf0I,GAAG,CAAC,CAACxJ,IAAI,EAAE6D,CAAC,KAAMA,CAAC,GAAG,CAAC,GAAG7D,IAAI,GAAGA,IAAI,CAACqB,OAAO,CAAC,8BAA8B,EAAE,QAAQ,CAAE,CAAC,CACzFyC,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAA;AACA,SAASy0D,iBAAiBA,CAAC1sD,KAAK,EAAE2sD,SAAS,EAAE;AAC3C,EAAA,QAAQA,SAAS;AACf,IAAA,KAAK,OAAO;MACV,OAAOF,WAAW,CAACzsD,KAAK,CAAC,CAAA;AAC3B,IAAA,KAAK,SAAS;AACZ,MAAA,OAAOssD,cAAc,CAACtsD,KAAK,CAAC9G,QAAQ,EAAE,CAAC,CAAA;AACzC,IAAA,KAAK,MAAM;MACT,OAAOswD,UAAU,CAACxpD,KAAK,CAAC,CAAA;AAC1B,IAAA,KAAK,UAAU,CAAA;AACf,IAAA,KAAK,KAAK;AACR,MAAA,OAAOA,KAAK,CAAC9G,QAAQ,EAAE,CAAA;AACzB,IAAA;AACE,MAAA,OAAOkzD,WAAW,CAACpsD,KAAK,CAAC9G,QAAQ,EAAE,CAAC,CAAA;AACxC,GAAA;AACF,CAAA;AACA,SAAS0zD,UAAUA,CAACviC,MAAM,EAAEsiC,SAAS,EAAEE,QAAQ,EAAE;AAC/C,EAAA,MAAMC,SAAS,GAAGhB,cAAc,CAACe,QAAQ,CAAC,CAAA;AAC1C,EAAA,OAAOxiC,MAAM,CACV1sB,GAAG,CAAEqC,KAAK,IAAK;AACd,IAAA,MAAM+sD,SAAS,GAAGL,iBAAiB,CAAC1sD,KAAK,EAAE2sD,SAAS,CAAC,CAAA;IACrD,OAAOI,SAAS,CAACj0D,QAAQ,CAACg0D,SAAS,CAAC,GAAI,CAAGC,CAAAA,EAAAA,SAAU,CAAE,CAAA,CAAA,GAAGA,SAAS,CAAA;AACrE,GAAC,CAAC,CACD90D,IAAI,CAAC60D,SAAS,CAAC,CAAA;AACpB,CAAA;AACA,SAASE,qBAAqBA,CAAC3iC,MAAM,EAAE;AACrC,EAAA,IAAIzkB,KAAK,CAACC,OAAO,CAACwkB,MAAM,CAAC,EAAE;IACzB,OAAOA,MAAM,CAAC1sB,GAAG,CAAEqC,KAAK,IAAKosD,WAAW,CAACpsD,KAAK,CAAC,CAACxK,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAACyC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzF,GAAC,MAAM;AACL,IAAA,OAAO,GAAG,GAAGm0D,WAAW,CAAC/hC,MAAM,CAAC,CAAC70B,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,GAAG,CAAA;AAClE,GAAA;AACF,CAAA;AACO,SAAS6C,QAAMA,CAACub,KAAK,EAAE5T,KAAK,EAAE;AACnC,EAAA,IAAI,EAAE4T,KAAK,IAAI/E,UAAU,CAAC,EAAE;AAC1B,IAAA,OAAO69C,iBAAiB,CAAC1sD,KAAK,EAAE,UAAU,CAAC,CAAA;AAC7C,GAAA;EACA,MAAM,CAAC6sD,QAAQ,EAAEF,SAAS,CAAC,GAAG99C,UAAU,CAAC+E,KAAK,CAAC,CAAA;EAC/C,IAAIi5C,QAAQ,IAAIf,cAAc,EAAE;AAC9B,IAAA,OAAOc,UAAU,CAAC5sD,KAAK,EAAE2sD,SAAS,EAAEE,QAAQ,CAAC,CAAA;AAC/C,GAAC,MAAM;AACL,IAAA,OAAOH,iBAAiB,CAAC1sD,KAAK,EAAE2sD,SAAS,CAAC,CAAA;AAC5C,GAAA;AACF,CAAA;AACO,SAASM,gBAAgBA,CAACjtD,KAAK,EAAE;EACtC,MAAM2/C,WAAW,GAAG,EAAE,CAAA;EACtB,IAAI3/C,KAAK,CAAC4T,KAAK,EAAE;IACf+rC,WAAW,CAACxpD,IAAI,CAAC,GAAG,GAAG62D,qBAAqB,CAAChtD,KAAK,CAAC4T,KAAK,CAAC,CAAC,CAAA;AAC5D,GAAA;EACA,IAAI5T,KAAK,CAACtF,IAAI,EAAE;AACd,IAAA,KAAK,MAAM,CAACktD,SAAS,EAAEsF,SAAS,CAAC,IAAIx0D,MAAM,CAACjE,OAAO,CAACuL,KAAK,CAACtF,IAAI,CAAC,EAAE;MAC/D,IAAI,CAACwyD,SAAS,EAAE;AACd,QAAA,SAAA;AACF,OAAA;AACA,MAAA,MAAMl1D,CAAC,GAAGib,QAAQ,CAAC20C,SAAS,CAAC,GAAG,CAAC,CAAA;MACjCjI,WAAW,CAACxpD,IAAI,CAAC6B,CAAC,GAAG,GAAG,GAAGg1D,qBAAqB,CAACE,SAAS,CAAC,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;EACA,IAAIltD,KAAK,CAAC7L,IAAI,EAAE;AACd,IAAA,KAAK,MAAM,CAACyzD,SAAS,EAAEsF,SAAS,CAAC,IAAIx0D,MAAM,CAACjE,OAAO,CAACuL,KAAK,CAAC7L,IAAI,CAAC,EAAE;MAC/D,IAAI,CAAC+4D,SAAS,EAAE;AACd,QAAA,SAAA;AACF,OAAA;AACA,MAAA,MAAMl1D,CAAC,GAAGib,QAAQ,CAAC20C,SAAS,CAAC,GAAG,CAAC,CAAA;AACjC,MAAA,KAAK,MAAMzzD,IAAI,IAAI+4D,SAAS,EAAE;AAC5B,QAAA,IAAI,CAACA,SAAS,CAAC/4D,IAAI,CAAC,EAAE;AACpB,UAAA,SAAA;AACF,SAAA;AACAwrD,QAAAA,WAAW,CAACxpD,IAAI,CAAC6B,CAAC,GAAG,GAAG,GAAG7D,IAAI,GAAG,GAAG,GAAG64D,qBAAqB,CAACE,SAAS,CAAC/4D,IAAI,CAAC,CAAC,CAAC,CAAA;AACjF,OAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,OAAOwrD,WAAW,CAAC1nD,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/B;;ACvKA,SAASk1D,iBAAiBA,CAAC;EAAErtD,IAAI;EAAEpK,KAAK;AAAE6H,EAAAA,UAAAA;AAAW,CAAC,EAAE;AACtD,EAAA,MAAMW,MAAM,GAAG;IACb4B,IAAI;IACJpK,KAAK;AACL6H,IAAAA,UAAU,EAAE,EAAC;GACd,CAAA;AACD,EAAA,KAAK,MAAM8tD,QAAQ,IAAI9tD,UAAU,EAAE;AACjC,IAAA,MAAMyC,KAAK,GAAGzC,UAAU,CAAC8tD,QAAQ,CAAC,CAAA;IAClC,MAAM,CAACz3C,KAAK,EAAE4xB,UAAU,CAAC,GAAG6lB,QAAQ,CAACp2D,KAAK,CAAC,MAAM,CAAC,CAAA;AAClD,IAAA,IAAIuwC,UAAU,EAAE;AACd,MAAA,IAAI,CAACtnC,MAAM,CAACyhD,WAAW,EAAE;AACvBzhD,QAAAA,MAAM,CAACyhD,WAAW,GAAG,EAAE,CAAA;AACzB,OAAA;AACA,MAAA,IAAI,CAACzhD,MAAM,CAACyhD,WAAW,CAAC/rC,KAAK,CAAC,EAAE;AAC9B1V,QAAAA,MAAM,CAACyhD,WAAW,CAAC/rC,KAAK,CAAC,GAAG,EAAE,CAAA;AAChC,OAAA;AACA1V,MAAAA,MAAM,CAACyhD,WAAW,CAAC/rC,KAAK,CAAC,CAAC4xB,UAAU,CAAC,GAAGynB,gBAAgB,CAACjtD,KAAK,CAAC,CAAA;AACjE,KAAC,MAAM;MACL9B,MAAM,CAACX,UAAU,CAAC8tD,QAAQ,CAAC,GAAG+B,QAAW,CAAC/B,QAAQ,EAAErrD,KAAK,CAAC,CAAA;AAC5D,KAAA;AACF,GAAA;AACA,EAAA,OAAO9B,MAAM,CAAA;AACf,CAAA;AACO,SAAS7F,QAAMA,CAAC5D,OAAO,EAAE;EAC9B,OAAO62D,QAAW,CAAC72D,OAAO,CAAC,CAACkJ,GAAG,CAACwvD,iBAAiB,CAAC,CAAA;AACpD,CAAA;AACO,SAAS9G,YAAYA,CAAC5xD,OAAO,EAAE;EACpC,OAAO82D,cAAS,CAAC92D,OAAO,CAAC,CAACkJ,GAAG,CAACwvD,iBAAiB,CAAC,CAAA;AAClD;;AC7BA,SAASE,WAAWA,CAACz5C,KAAK,EAAE5T,KAAK,EAAEk5B,IAAI,EAAE;EACvC,OAAOA,IAAI,CAACG,QAAQ,CAACphC,IAAI,CAAE,CAAA,EAAE2b,KAAM,CAAA,IAAA,EAAM5T,KAAM,CAAA,EAAA,CAAG,CAAC,CAAA;AACrD,CAAA;AACA,SAASstD,aAAWA,CAACxvD,KAAK,EAAEo7B,IAAI,EAAE;EAChC,MAAMulB,MAAM,GAAG,EAAE,CAAA;AACjB,EAAA,KAAK,MAAM7qC,KAAK,IAAI9V,KAAK,CAACP,UAAU,EAAE;AACpCkhD,IAAAA,MAAM,CAACtoD,IAAI,CAACk3D,WAAW,CAACz5C,KAAK,EAAE9V,KAAK,CAACP,UAAU,CAACqW,KAAK,CAAC,EAAEslB,IAAI,CAAC,CAAC,CAAA;IAC9D,IAAIp7B,KAAK,CAAC6hD,WAAW,IAAI7hD,KAAK,CAAC6hD,WAAW,CAAC/rC,KAAK,CAAC,EAAE;MACjD,KAAK,MAAM4xB,UAAU,IAAI1nC,KAAK,CAAC6hD,WAAW,CAAC/rC,KAAK,CAAC,EAAE;QACjD,IAAI6rC,eAAe,GAAG7rC,KAAK,GAAGrb,QAAM,CAACqlD,KAAK,CAACC,gBAAgB,CAAA;QAC3D,IAAIrY,UAAU,KAAK,SAAS,EAAE;AAC5Bia,UAAAA,eAAe,IAAIlnD,QAAM,CAACqlD,KAAK,CAACE,qBAAqB,GAAGtY,UAAU,CAAA;AACpE,SAAA;AACAiZ,QAAAA,MAAM,CAACtoD,IAAI,CAACk3D,WAAW,CAAC5N,eAAe,EAAE3hD,KAAK,CAAC6hD,WAAW,CAAC/rC,KAAK,CAAC,CAAC4xB,UAAU,CAAC,EAAEtM,IAAI,CAAC,CAAC,CAAA;AACvF,OAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,OAAOA,IAAI,CAACp7B,KAAK,CAAC7F,IAAI,CAAE,CAAG6F,CAAAA,EAAAA,KAAK,CAACgC,IAAK,CAAGhC,CAAAA,EAAAA,KAAK,CAACpI,KAAM,CAAGwjC,CAAAA,EAAAA,IAAI,CAACr5B,IAAI,CAAC5H,IAAI,CAACwmD,MAAM,CAACxmD,IAAI,CAAC,EAAE,CAAC,CAAE,GAAE,CAAC,CAAA;AAC7F,CAAA;AACO,SAASI,QAAMA,CAAC4iC,GAAG,EAAE/B,IAAI,EAAE;AAChC,EAAA,MAAMzkC,OAAO,GAAGwmC,GAAG,CAACt9B,GAAG,CAAEG,KAAK,IAAKwvD,aAAW,CAACxvD,KAAK,EAAEo7B,IAAI,CAAC,CAAC,CAACjhC,IAAI,CAAC,EAAE,CAAC,CAAA;AACrE,EAAA,OAAOihC,IAAI,CAACE,qBAAqB,CAACnhC,IAAI,CAACxD,OAAO,CAAC,CAAA;AACjD;;ACvBA,SAAS64D,WAAWA,CAAC;EAAExtD,IAAI;EAAEpK,KAAK;AAAE6H,EAAAA,UAAAA;AAAW,CAAC,EAAE27B,IAAI,EAAE;AACtD,EAAA,MAAMulB,MAAM,GAAG/lD,MAAM,CAACjE,OAAO,CAAC8I,UAAU,CAAC,CACtCiF,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE1C,IAAI,CAAC,CAAC,CAAC,CACxBnC,GAAG,CAAC,CAAC,CAACiW,KAAK,EAAE5T,KAAK,CAAC,KAAKk5B,IAAI,CAACG,QAAQ,CAACphC,IAAI,CAAE,CAAE2b,EAAAA,KAAM,KAAI5T,KAAM,CAAA,CAAC,CAAC,CAAC,CAAA;EACpE,OAAOk5B,IAAI,CAACp7B,KAAK,CAAC7F,IAAI,CAAE,CAAA,CAAA,EAAGvC,KAAM,CAAA,CAAA,EAAGwjC,IAAI,CAACr5B,IAAI,CAAC5H,IAAI,CAACwmD,MAAM,CAACxmD,IAAI,CAAC,EAAE,CAAC,CAAE,CAAA,CAAC,CAAC,CAAA;AACxE,CAAA;AACO,SAASI,QAAMA,CAAC4iC,GAAG,EAAE/B,IAAI,EAAE;AAChC,EAAA,MAAMzkC,OAAO,GAAGwmC,GAAG,CAACt9B,GAAG,CAAEG,KAAK,IAAKwvD,WAAW,CAACxvD,KAAK,EAAEo7B,IAAI,CAAC,CAAC,CAACjhC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvE,EAAA,OAAOihC,IAAI,CAACE,qBAAqB,CAACnhC,IAAI,CAACxD,OAAO,CAAC,CAAA;AACjD;;ACLA,MAAM0pC,OAAO,GAAG,SAAVA,OAAOA,CAAaovB,MAAM,EAAEt1B,SAAS,EAAE;AAC3C,EAAA,OAAO,UAAUp/B,IAAI,EAAE0c,IAAI,GAAG,EAAE,EAAE;IAChC,MAAM;MAAEzV,IAAI;MAAEzH,MAAM,GAAGyH,IAAI,IAAI,MAAA;AAAO,KAAC,GAAGyV,IAAI,CAAA;AAC9C1c,IAAAA,IAAI,GAAG00D,MAAM,CAAC10D,IAAI,CAAC,CAAA;IACnB,IAAIR,MAAM,KAAK,QAAQ,EAAE;AACvB,MAAA,OAAOQ,IAAI,CAAA;KACZ,MAAM,IAAIL,KAAgB,CAACH,MAAM,CAAC,EAAE;AACnC,MAAA,OAAO4/B,SAAS,CAACp/B,IAAI,EAAEL,KAAgB,CAACH,MAAM,CAAC,EAAEkd,IAAI,CAAC,CAAA;AACxD,KAAC,MAAM;AACL,MAAA,MAAM,IAAI9L,UAAU,CAAE,CAAqBpR,mBAAAA,EAAAA,MAAO,iBAAgB,CAAC,CAAA;AACrE,KAAA;GACD,CAAA;AACH,CAAC,CAAA;AACD,aAAe;AACbgtC,EAAAA,MAAM,EAAElH,OAAO,CAACotB,YAAS,EAAElzD,QAAM,CAAC;AAClC+sC,EAAAA,QAAQ,EAAEjH,OAAO,CAACmtB,QAAW,EAAEjzD,QAAM,CAAC;AACtCm1D,EAAAA,MAAM,EAAErvB,OAAO,CAACotB,YAAS,EAAEkC,QAAY,CAAA;AACzC,CAAC;;ACjBDj1D,GAAW,CAACyC,GAAG,EAAE;SACfgM,OAAK;EACL/I,MAAM;AACN3F,UAAAA,QAAAA;AACF,CAAC,CAAC;;ACNF,MAAMm1D,cAAc,GAAG;AACrB,EAAA,OAAO,EAAG,CAAA,8njBAAA,CAAA;AACZ,CAAC,CAAA;AAED,MAAMl0D,OAAO,GAAG,IAAIy9B,QAAa,CAACy2B,cAAc,CAAC;;ACJjD,MAAMC,gBAAgB,GAAG;AACvBC,EAAAA,GAAG,EAAG,CAAA,sluCAAA,CAAA;AACR,CAAC,CAAA;AACD,MAAMh1D,SAAS,GAAG,IAAIq+B,QAAa,CAAC02B,gBAAgB,CAAC;;ACFrD,MAAME,OAAO,GAAG3kD,MAAM,CAAC4kD,GAAG,CAAC,SAAS,CAAC,CAAA;AACrC,MAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAa7gC,QAAQ,EAAE;EAC1C,MAAM8gC,KAAK,GAAG,SAARA,KAAKA,CAAa3uC,KAAK,EAAEvhB,KAAK,EAAE;AACpC,IAAA,IAAIuhB,KAAK,CAAC4uC,GAAG,CAACC,qBAAqB,EAAE;AACnC,MAAA,MAAM,CAACj7D,MAAM,EAAEk7D,OAAO,CAAC,GAAG9uC,KAAK,CAAC4uC,GAAG,CAACC,qBAAqB,CAAC,IAAI,CAACE,SAAS,CAAC,CAAA;AACzEtwD,MAAAA,KAAK,GAAG,CAAC7K,MAAM,EAAE6K,KAAK,EAAEqwD,OAAO,CAAC,CAACl2D,IAAI,CAAC,EAAE,CAAC,CAAA;AAC3C,KAAA;IACA,OAAOi1B,QAAQ,CAACjlB,IAAI,CAAC,IAAI,EAAEoX,KAAK,EAAEvhB,KAAK,CAAC,CAAA;GACzC,CAAA;AACDkwD,EAAAA,KAAK,CAACH,OAAO,CAAC,GAAG,IAAI,CAAA;AACrB,EAAA,OAAOG,KAAK,CAAA;AACd,CAAC,CAAA;AACD,KAAK,MAAM31D,MAAM,IAAIg2D,GAAG,CAACC,MAAM,CAACC,OAAO,EAAE;AACvC,EAAA,MAAMrhC,QAAQ,GAAGmhC,GAAG,CAACC,MAAM,CAACC,OAAO,CAACl2D,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAA;AAClE,EAAA,IAAI,CAAC60B,QAAQ,IAAIA,QAAQ,CAAC2gC,OAAO,CAAC,EAAE;AAClC,IAAA,SAAA;AACF,GAAA;AACAQ,EAAAA,GAAG,CAACC,MAAM,CAACC,OAAO,CAACl2D,MAAM,CAAC,CAAC,qBAAqB,CAAC,GAAG01D,eAAe,CAAC7gC,QAAQ,CAAC,CAAA;AAC/E,CAAA;AACA,SAASshC,cAAcA,CAACC,MAAM,EAAE;AAC9B,EAAA,IAAIj1D,OAAO,CAAC2a,GAAG,CAACs6C,MAAM,CAAC,EAAE;AACvB,IAAA,OAAOj1D,OAAO,CAACf,GAAG,CAACg2D,MAAM,CAAC,CAAA;AAC5B,GAAA;EACA,MAAMC,YAAY,GAAGD,MAAM,CAACj5D,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAC7C,EAAA,IAAIgE,OAAO,CAAC2a,GAAG,CAACu6C,YAAY,CAAC,EAAE;AAC7B,IAAA,OAAOl1D,OAAO,CAACf,GAAG,CAACi2D,YAAY,CAAC,CAAA;AAClC,GAAA;AACA,EAAA,OAAO,EAAE,CAAA;AACX,CAAA;AACA,MAAMC,OAAO,GAAG,EAAE,CAAA;AAClB,MAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAahqD,KAAK,EAAE6pD,MAAM,EAAEI,QAAQ,EAAEC,YAAY,EAAEN,cAAc,EAAE;AACnF,EAAA,MAAMO,UAAU,GAAI,CAAA,EAAEnqD,KAAM,CAAA,CAAA,EAAG6pD,MAAO,CAAC,CAAA,CAAA;AACvC,EAAA,IAAI7sD,MAAM,CAAA;EACV,IAAI+sD,OAAO,CAACI,UAAU,CAAC,YAAYV,GAAG,CAACW,MAAM,EAAE;AAC7CptD,IAAAA,MAAM,GAAG+sD,OAAO,CAACI,UAAU,CAAC,CAAA;AAC5BntD,IAAAA,MAAM,CAACqsD,GAAG,CAACa,YAAY,GAAGA,YAAY,CAAA;AACtCltD,IAAAA,MAAM,CAACqsD,GAAG,CAACC,qBAAqB,GAAGn5D,SAAS,CAAA;AAC5C6M,IAAAA,MAAM,CAAC7F,WAAW,CAAC,EAAE,CAAC,CAAA;AACxB,GAAC,MAAM;IACL6F,MAAM,GAAG+sD,OAAO,CAACI,UAAU,CAAC,GAAG,IAAIV,GAAG,CAACW,MAAM,CAC3C;MACER,cAAc;AACdM,MAAAA,YAAAA;AACF,KAAC,EACDD,QAAQ,EACRJ,MAAM,EACN,IACF,CAAC,CAAA;AACH,GAAA;AACA,EAAA,OAAO7sD,MAAM,CAAA;AACf,CAAC,CAAA;AACD,MAAMqtD,aAAa,GAAG,SAAhBA,aAAaA,CAAap2D,IAAI,EAAE+L,KAAK,EAAE6pD,MAAM,EAAEp2D,MAAM,EAAE;EAC3D,IAAI,CAACg2D,GAAG,CAACC,MAAM,CAACC,OAAO,CAACl2D,MAAM,CAAC,IAAI,CAACg2D,GAAG,CAACC,MAAM,CAACC,OAAO,CAACl2D,MAAM,CAAC,CAAC,qBAAqB,CAAC,EAAE;AACrF,IAAA,MAAM,IAAIsM,SAAS,CAAE,CAAsBtM,oBAAAA,EAAAA,MAAO,GAAE,CAAC,CAAA;AACvD,GAAA;EACA,MAAM62D,KAAK,GAAGr2D,IAAI,CAACu8B,MAAM,CAAC,CAAC+5B,KAAK,EAAErxD,KAAK,KAAK;AAC1CqxD,IAAAA,KAAK,CAACrxD,KAAK,CAACxI,EAAE,CAAC,GAAGwI,KAAK,CAAA;AACvB,IAAA,OAAOqxD,KAAK,CAAA;GACb,EAAE,EAAE,CAAC,CAAA;AACN,EAAA,MAAMz2B,QAAQ,GAAG9/B,SAAS,CAACH,GAAG,CAACG,SAAS,CAACub,GAAG,CAACvP,KAAK,CAAC,GAAGA,KAAK,GAAG,KAAK,CAAC,CAAA;EACpE6pD,MAAM,GAAGj1D,OAAO,CAAC2a,GAAG,CAACs6C,MAAM,CAAC,GAAGA,MAAM,GAAG15D,SAAS,CAAA;AACjD,EAAA,MAAMi1B,QAAQ,GAAG,SAAXA,QAAQA,CAAa9sB,GAAG,EAAE;AAC9B,IAAA,IAAIxE,MAAM,CAACqP,SAAS,CAACC,cAAc,CAACC,IAAI,CAACinD,KAAK,EAAEhyD,GAAG,CAAC,EAAE;MACpD,OAAOgyD,KAAK,CAAChyD,GAAG,CAAC,CAAA;AACnB,KAAC,MAAM;AACL,MAAA,MAAM,IAAIjG,KAAK,CAAE,CAA6BiG,2BAAAA,EAAAA,GAAI,GAAE,CAAC,CAAA;AACvD,KAAA;GACD,CAAA;AACD,EAAA,MAAM0E,MAAM,GAAGgtD,WAAW,CAAChqD,KAAK,EAAE6pD,MAAM,EAAE/1B,QAAQ,EAAE1O,QAAQ,EAAEwkC,cAAc,CAAC,CAAA;AAC7E5sD,EAAAA,MAAM,CAACwtD,eAAe,CAAC/2D,MAAM,CAAC,CAAA;AAC9BuJ,EAAAA,MAAM,CAACrD,GAAG,CAAC8wD,sBAAsB,CAACC,gBAAgB,GAAG,KAAK,CAAA;AAC1D,EAAA,OAAO1tD,MAAM,CAAA;AACf,CAAC;;AC3ED,MAAM2tD,kBAAkB,GAAGA,CAAC53C,MAAM,EAAEjS,IAAI,EAAE1F,KAAK,KAC7C2X,MAAM,CAACniB,OAAO,CAAC,cAAc,EAAG,CAAA,QAAA,EAAUkQ,IAAK,CAAI1F,EAAAA,EAAAA,KAAM,GAAE,CAAC,CAAA;AAC9D,MAAMwvD,gBAAgB,GAAGA,CAACxvD,KAAK,EAAE1K,EAAE,KAAKi6D,kBAAkB,CAACvvD,KAAK,EAAE,cAAc,EAAE1K,EAAE,CAAC;;ACCrF,MAAMm6D,QAAQ,GAAGA,CAAC9zD,MAAM,EAAE+zD,KAAK,KAAM,OAAOA,KAAK,KAAK,UAAU,GAAGA,KAAK,CAAC/zD,MAAM,CAAC,GAAG+zD,KAAK,IAAI,EAAG,CAAA;AAChF,SAAS73D,YAAYA,CAACgB,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE;EACvD,MAAM;AAAE+gC,IAAAA,QAAQ,GAAG,KAAK;IAAEn3B,IAAI;AAAElJ,IAAAA,MAAM,GAAG,MAAM;AAAEs3D,IAAAA,MAAM,GAAG,KAAA;AAAM,GAAC,GAAGh4D,OAAO,CAAA;AAC3E,EAAA,MAAM+F,GAAG,GAAG/F,OAAO,CAACmG,KAAK,GAAG,EAAE,CAAC0E,MAAM,CAAC7K,OAAO,CAACmG,KAAK,CAAC,GAAGjF,IAAI,CAAC8E,GAAG,CAAC,CAAC;AAAErI,IAAAA,EAAAA;GAAI,KAAKA,EAAE,CAAC,CAAA;AAC/EuD,EAAAA,IAAI,GAAGo+B,YAAiB,CAACp+B,IAAI,CAAC,CAAA;EAC9B,MAAMgB,QAAQ,GAAGo1D,aAAa,CAACp2D,IAAI,EAAE6/B,QAAQ,EAAEn3B,IAAI,EAAElJ,MAAM,CAAC,CAAA;EAC5D,MAAMu3D,SAAS,GAAG/1D,QAAQ,CAACkC,WAAW,CAAC2B,GAAG,EAAEiyD,MAAM,CAAC,CAAA;AACnD,EAAA,IAAIh4D,OAAO,CAACkN,MAAM,IAAIlN,OAAO,CAACmN,OAAO,EAAE;IACrC,MAAMoqD,KAAK,GAAGr2D,IAAI,CAACu8B,MAAM,CAAC,CAAC85B,KAAK,EAAEpxD,KAAK,KAAK;AAC1CoxD,MAAAA,KAAK,CAACpxD,KAAK,CAACxI,EAAE,CAAC,GAAGwI,KAAK,CAAA;AACvB,MAAA,OAAOoxD,KAAK,CAAA;KACb,EAAE,EAAE,CAAC,CAAA;AACNr1D,IAAAA,QAAQ,CAACo0D,GAAG,CAACC,qBAAqB,GAAG,UAAU54D,EAAE,EAAE;AACjD,MAAA,MAAMwI,KAAK,GAAGoxD,KAAK,CAAC55D,EAAE,CAAC,CAAA;AACvB,MAAA,OAAO,CAACm6D,QAAQ,CAAC3xD,KAAK,EAAEnG,OAAO,CAACmN,OAAO,CAAC,EAAE2qD,QAAQ,CAAC3xD,KAAK,EAAEnG,OAAO,CAACkN,MAAM,CAAC,CAAC,CAAA;KAC3E,CAAA;AACH,GAAA;EACA,IAAIlN,OAAO,CAACk4D,UAAU,EAAE;AACtBh2D,IAAAA,QAAQ,CAAC0E,GAAG,CAAC8wD,sBAAsB,CAACC,gBAAgB,GAAG,IAAI,CAAA;AAC7D,GAAA;AACA,EAAA,MAAMz3D,YAAY,GAAGgC,QAAQ,CAACoC,gBAAgB,EAAE,CAAA;AAChD,EAAA,MAAM,CAAC;IAAE6zD,QAAQ;AAAEC,IAAAA,MAAAA;AAAO,GAAC,EAAE5wD,OAAO,CAAC,GAAGtH,YAAY,CAAA;EACpD,MAAMpD,OAAO,GAAG0K,OAAO,CAACxB,GAAG,CAAC,CAACkmB,OAAO,EAAEhpB,KAAK,KAAK20D,gBAAgB,CAAC3rC,OAAO,EAAE+rC,SAAS,CAAC/0D,KAAK,CAAC,CAAC,CAAC,CAAA;EAC5F,IAAIlD,OAAO,CAACq4D,YAAY,EAAE;AACxB,IAAA,OAAOv7D,OAAO,CAACkJ,GAAG,CAAC,CAACkmB,OAAO,EAAEhpB,KAAK,KAAK,CAAC+0D,SAAS,CAAC/0D,KAAK,CAAC,EAAEgpB,OAAO,CAAC,CAAC,CAAA;AACrE,GAAA;EACA,OAAOisC,QAAQ,GAAGr7D,OAAO,CAACwD,IAAI,CAAC,EAAE,CAAC,GAAG83D,MAAM,CAAA;AAC7C;;AC5BA,SAASE,eAAeA,CAAC7tD,QAAQ,EAAE;AACjC,EAAA,OAAO,OAAOA,QAAQ,KAAK,QAAQ,GAC/BA,QAAQ,GACR;AACE9M,IAAAA,EAAE,EAAE8M,QAAAA;GACL,CAAA;AACP,CAAA;AACA,SAAS8tD,eAAeA,CAACC,QAAQ,EAAE;EACjC,IAAIA,QAAQ,CAAC7yD,aAAa,EAAE;AAC1B,IAAA,OAAO6yD,QAAQ,CAAA;AACjB,GAAA;EACA,OAAO;IACL7yD,aAAa,EAAE,EAAE,CAACkF,MAAM,CAAC2tD,QAAQ,CAAC,CAACxyD,GAAG,CAACsyD,eAAe,CAAC;AACvD1yD,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,CAAA;AACb,KAAA;GACD,CAAA;AACH,CAAA;AACA,SAAS4yD,gBAAgBA,CAAC79B,OAAO,EAAE;EACjC,IAAI,CAACA,OAAO,EAAE;AACZ,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;AACA,EAAA,OAAOA,OAAO,CAAC50B,GAAG,CAACuyD,eAAe,CAAC,CAAA;AACrC,CAAA;AACe,SAASC,QAAQA,CAACt3D,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE;EACnD,MAAM;AAAE+gC,IAAAA,QAAQ,GAAG,KAAK;IAAEn3B,IAAI;AAAElJ,IAAAA,MAAM,GAAG,MAAA;AAAO,GAAC,GAAGV,OAAO,CAAA;AAC3D,EAAA,MAAM+F,GAAG,GAAG7E,IAAI,CAAC8E,GAAG,CAAC,CAAC;AAAErI,IAAAA,EAAAA;GAAI,KAAKA,EAAE,CAAC,CAAA;EACpC,MAAMb,OAAO,GAAGkD,OAAO,CAACmG,KAAK,GAAGnG,OAAO,CAACmG,KAAK,GAAGJ,GAAG,CAAA;AACnD7E,EAAAA,IAAI,GAAGo+B,YAAiB,CAACp+B,IAAI,CAAC,CAAA;EAC9B,MAAMgB,QAAQ,GAAGo1D,aAAa,CAACp2D,IAAI,EAAE6/B,QAAQ,EAAEn3B,IAAI,EAAElJ,MAAM,CAAC,CAAA;AAC5D,EAAA,MAAMg4D,MAAM,GAAGD,gBAAgB,CAACz4D,OAAO,CAAC24D,YAAY,CAAC,CAAA;AACrD,EAAA,MAAMH,QAAQ,GAAGD,eAAe,CAACz7D,OAAO,CAAC,CAAA;AACzC,EAAA,MAAM87D,KAAK,GAAGH,gBAAgB,CAACz4D,OAAO,CAAC64D,aAAa,CAAC,CAAA;AACrD,EAAA,MAAMtyD,MAAM,GAAGrE,QAAQ,CAAC42D,qBAAqB,CAAC,CAAC,GAAGJ,MAAM,EAAEF,QAAQ,EAAE,GAAGI,KAAK,CAAC,EAAEl4D,MAAM,EAAE,EAAE,CAAC,CAAA;EAC1F,OAAO6F,MAAM,CAACmyD,MAAM,CAACv6D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACjC;;AC/BA0C,GAAW,CAAC,MAAM,EAAE;AAClB0F,EAAAA,MAAM,EAAE;IACNrG,YAAY;AACZs4D,IAAAA,QAAAA;GACD;AACD53D,EAAAA,MAAM,EAAE;YACNqJ,aAAM;IACNpI,OAAO;AACPZ,IAAAA,SAAAA;AACF,GAAA;AACF,CAAC,CAAC;;ACbF;AACA,MAAM83D,YAAY,GAAG,6BAA6B,CAAA;AAClD,MAAMC,SAAS,GAAGC,IAAI,CAACC,cAAc,CAACC,eAAe,CAACC,MAAM,CAACL,YAAY,CAAC,CAAA;AAE1E,MAAMv9C,IAAI,GAAG,IAAIy9C,IAAI,CAACI,IAAI,CAACN,YAAY,EAAE;AACvCpmC,EAAAA,IAAI,EAAE,QAAQ;EACdjG,OAAO,EAAEssC,SAAS,CAACtsC,OAAO;EAC1B4sC,SAAS,EAAEN,SAAS,CAACM,SAAS;AAC9BC,EAAAA,UAAU,EAAE76C,IAAI;EAChB86C,SAASA,CAACvpD,MAAM,EAAE;AAChB,IAAA,OAAOA,MAAM,CAACwpD,WAAW,EAAE,CAACn8D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3C,GAAA;AACF,CAAC,CAAC,CAAA;AAEF,MAAMo8D,UAAU,GAAGT,IAAI,CAACC,cAAc,CAACnpD,MAAM,CAAC;EAC5C4pD,QAAQ,EAAE,CAACn+C,IAAI,CAAC;AAChBo+C,EAAAA,QAAQ,EAAE,EAAA;AACZ,CAAC,CAAC,CAAA;AAEF/4D,GAAW,CAAC,OAAO,EAAE;AACnByO,EAAAA,KAAK,EAAE;AACL,IAAA,YAAY,EAAE;AACZuE,MAAAA,SAAS,EAAE;AACTtE,QAAAA,QAAQ,EAAE,QAAQ;AAClB2C,QAAAA,SAAS,EAAE;AACT5U,UAAAA,KAAK,EAAE,kBAAkB;AACzBmV,UAAAA,KAAK,EAAE,WAAW;AAClBjD,UAAAA,KAAK,EAAE,KAAA;AACT,SAAA;OACD;MACDpD,KAAKA,CAACnM,IAAI,EAAE;AACV,QAAA,OAAOg5D,IAAI,CAACY,IAAI,CAAC55D,IAAI,EAAE;AAAEivB,UAAAA,IAAI,EAAE,IAAA;AAAK,SAAC,CAAC,CAAA;AACxC,OAAA;AACF,KAAA;GACD;AACD3oB,EAAAA,MAAM,EAAE;IACN0yD,IAAIA,CAAC/3D,IAAI,EAAE;AACT,MAAA,OAAO+3D,IAAI,CAACa,IAAI,CAAC54D,IAAI,EAAE;AAAE64D,QAAAA,MAAM,EAAEL,UAAAA;AAAW,OAAC,CAAC,CAAA;AAChD,KAAA;AACF,GAAA;AACF,CAAC,CAAC;;ACtCF;AACA;AACA;AACA;;AAEA,MAAMM,eAAe,GAAG;AACtBC,EAAAA,GAAG,EAAE,SAAS;AACdhlD,EAAAA,OAAO,EAAE,iBAAiB;AAAE;AAC5BilD,EAAAA,WAAW,EAAE,gBAAgB;AAC7BhlD,EAAAA,IAAI,EAAE,MAAM;AACZilD,EAAAA,IAAI,EAAE,aAAa;AACnBt+D,EAAAA,IAAI,EAAE,MAAM;AACZu+D,EAAAA,SAAS,EAAE,YAAY;AACvBx1B,EAAAA,UAAU,EAAE,OAAO;AACnB,EAAA,kBAAkB,EAAE,kBAAkB;AACtC1jC,EAAAA,IAAI,EAAE,SAAS;AACfm5D,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,UAAU,EAAE,kBAAkB;AAC9B,EAAA,aAAa,EAAE,UAAU;AAAE;AAC3BC,EAAAA,YAAY,EAAE,oBAAoB;AAClC,EAAA,gBAAgB,EAAE,WAAW;AAC7BC,EAAAA,OAAO,EAAE,UAAU;AACnB,EAAA,qBAAqB,EAAE,YAAY;AACnCC,EAAAA,KAAK,EAAE,UAAU;AAAE;AACnB/kD,EAAAA,OAAO,EAAE,SAAS;AAClB,EAAA,iBAAiB,EAAE,SAAS;AAC5B,EAAA,YAAY,EAAE,YAAY;AAC1B,EAAA,YAAY,EAAE,aAAa;AAC3B,EAAA,kBAAkB,EAAE,kBAAkB;AACtCovB,EAAAA,MAAM,EAAE,QAAQ;AAAE;AAClB9+B,EAAAA,GAAG,EAAE,KAAK;AACV00D,EAAAA,UAAU,EAAE,gBAAgB;AAC5BvtB,EAAAA,KAAK,EAAE,eAAe;AACtB,EAAA,mBAAmB,EAAE,mBAAmB;AACxCl3B,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,MAAM,EAAE,QAAQ;AAChB,EAAA,wBAAwB,EAAE,wBAAwB;AAClDsuB,EAAAA,WAAW,EAAE,MAAM;AAAE;AACrBhuB,EAAAA,MAAM,EAAE,QAAQ;AAChBmkD,EAAAA,MAAM,EAAE,YAAY;AACpBC,EAAAA,MAAM,EAAE,QAAQ;AAChBlkD,EAAAA,QAAQ,EAAE,UAAU;AACpB,EAAA,eAAe,EAAE,UAAU;AAC3B,EAAA,oBAAoB,EAAE,UAAU;AAChC,EAAA,qBAAqB,EAAE,UAAU;AACjC,EAAA,0BAA0B,EAAE,UAAU;AACtC,EAAA,iBAAiB,EAAE,MAAM;AACzBG,EAAAA,QAAQ,EAAE,UAAU;AACpBgkD,EAAAA,OAAO,EAAE,aAAa;AACtB/jD,EAAAA,MAAM,EAAE,QAAQ;AAChBquB,EAAAA,WAAW,EAAE,SAAS;AACtBiI,EAAAA,KAAK,EAAE,gBAAgB;AACvB0tB,EAAAA,OAAO,EAAE,SAAA;AACX,CAAC,CAAA;AAED,MAAMC,eAAe,GAAG;AACtB9lD,EAAAA,OAAO,EAAE,SAAS;AAClB,EAAA,iBAAiB,EAAE,SAAS;AAC5B,EAAA,kBAAkB,EAAE,kBAAkB;AACtC,EAAA,mBAAmB,EAAE,mBAAmB;AACxCC,EAAAA,IAAI,EAAE,MAAM;AACZrZ,EAAAA,IAAI,EAAE,MAAM;AACZsZ,EAAAA,SAAS,EAAE,gBAAgB;AAC3BrZ,EAAAA,OAAO,EAAE,SAAS;AAAE;AACpBsZ,EAAAA,OAAO,EAAE,iBAAiB;AAC1BC,EAAAA,UAAU,EAAE,WAAW;AACvBC,EAAAA,OAAO,EAAE,MAAM;AACfC,EAAAA,QAAQ,EAAE,SAAS;AACnBpP,EAAAA,KAAK,EAAE,SAAS;AAAE;AAClB,EAAA,kBAAkB,EAAE,YAAY;AAChC,EAAA,oBAAoB,EAAE,cAAc;AACpCqP,EAAAA,KAAK,EAAE,YAAY;AACnBxZ,EAAAA,MAAM,EAAE,SAAS;AAAE;AACnByZ,EAAAA,OAAO,EAAE,KAAK;AACdC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,SAAS,EAAE,iBAAiB;AAC5BC,EAAAA,UAAU,EAAE,YAAY;AACxBC,EAAAA,WAAW,EAAE,SAAS;AACtBC,EAAAA,UAAU,EAAE,iBAAiB;AAC7B9P,EAAAA,GAAG,EAAE,KAAK;AACV+P,EAAAA,cAAc,EAAE,gBAAgB;AAChCC,EAAAA,aAAa,EAAE,OAAO;AACtBC,EAAAA,QAAQ,EAAE,UAAU;AACpB,EAAA,kBAAkB,EAAE,kBAAkB;AACtCC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,WAAW,EAAE,SAAS;AAAE;AACxBC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,sBAAsB,EAAE,wBAAwB;AAChDC,EAAAA,IAAI,EAAE,QAAQ;AACd,EAAA,aAAa,EAAE,MAAM;AACrBC,EAAAA,UAAU,EAAE,qBAAqB;AACjCC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE,SAAS;AAAE;AACnB,EAAA,aAAa,EAAE,SAAS;AAAE;AAC1BC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,IAAI,EAAE,iBAAiB;AACvBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,OAAO,EAAE,SAAA;AACX,CAAC,CAAA;AAED,MAAMgkD,YAAY,GAAG,CACnB;AAAEh3D,EAAAA,MAAM,EAAE,cAAc;AAAEyJ,EAAAA,MAAM,EAAE,QAAA;AAAS,CAAC,EAC5C;AAAEzJ,EAAAA,MAAM,EAAE,aAAa;AAAEyJ,EAAAA,MAAM,EAAE,OAAA;AAAQ,CAAC,EAC1C;AAAEzJ,EAAAA,MAAM,EAAE,eAAe;AAAEyJ,EAAAA,MAAM,EAAE,uBAAA;AAAwB,CAAC,EAC5D;AAAEzJ,EAAAA,MAAM,EAAE,aAAa;AAAEyJ,EAAAA,MAAM,EAAE,QAAA;AAAS,CAAC,EAC3C;AAAEzJ,EAAAA,MAAM,EAAE,MAAM;AAAEyJ,EAAAA,MAAM,EAAE,SAAA;AAAU,CAAC,EACrC;AAAEzJ,EAAAA,MAAM,EAAE,OAAO;AAAEyJ,EAAAA,MAAM,EAAE,QAAA;AAAS,CAAC,CACtC,CAAA;AAED,MAAMwtD,MAAM,GAAG,IAAI37B,UAAe,CAAC07B,YAAY,CAAC,CAAA;AAEhD,MAAME,eAAe,GAAG;AACtBjgD,EAAAA,KAAK,EAAE;IACL2hB,QAAQA,CAAC3hB,KAAK,EAAE;AACd,MAAA,OAAOA,KAAK,CAACjV,GAAG,CAACi1D,MAAM,CAAC39B,eAAe,CAAC,CAAA;KACzC;IACDb,QAAQA,CAACxhB,KAAK,EAAE;AACd,MAAA,OAAOA,KAAK,CAACjV,GAAG,CAACi1D,MAAM,CAAC59B,eAAe,CAAC,CAAA;AAC1C,KAAA;GACD;AACDtjB,EAAAA,SAAS,EAAE;AACT6iB,IAAAA,QAAQA,CAAC;MAAE7uB,IAAI;MAAEotD,IAAI;MAAEC,MAAM;AAAEC,MAAAA,OAAAA;AAAQ,KAAC,EAAE;AACxC,MAAA,MAAMC,KAAK,GAAG,CAACH,IAAI,EAAEC,MAAM,EAAEC,OAAO,CAAC,CAAC3zD,MAAM,CAACwT,OAAO,CAAC,CAAC5a,IAAI,CAAC,IAAI,CAAC,CAAA;AAChE,MAAA,OAAO,CAACyN,IAAI,EAAEutD,KAAK,IAAIl+D,SAAS,CAAC,CAAA;KAClC;AACDq/B,IAAAA,QAAQA,CAAC1uB,IAAI,EAAEutD,KAAK,EAAE;AACpB,MAAA,MAAML,MAAM,GAAG;AAAEltD,QAAAA,IAAAA;OAAM,CAAA;AAEvB,MAAA,IAAIutD,KAAK,EAAE;AACT;AACA;AACA;AACA;AACA,QAAA,MAAM72C,KAAK,GAAG62C,KAAK,CAACh+D,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/B29D,QAAAA,MAAM,CAACI,OAAO,GAAG52C,KAAK,CAACpZ,GAAG,EAAE,CAAA;AAC5B,QAAA,IAAIoZ,KAAK,CAACtmB,MAAM,KAAK,CAAC,EAAE;AACtB88D,UAAAA,MAAM,CAACG,MAAM,GAAG32C,KAAK,CAACpZ,GAAG,EAAE,CAAA;AAC7B,SAAA;AACA,QAAA,IAAIoZ,KAAK,CAACtmB,MAAM,KAAK,CAAC,EAAE;AACtB88D,UAAAA,MAAM,CAACE,IAAI,GAAG12C,KAAK,CAACpZ,GAAG,EAAE,CAAA;AAC3B,SAAA;AACF,OAAA;AAEA,MAAA,OAAO4vD,MAAM,CAAA;AACf,KAAA;GACD;AACDz/C,EAAAA,IAAI,EAAE;IACJohB,QAAQA,CAACphB,IAAI,EAAE;MACb,IAAIA,IAAI,YAAYkD,IAAI,EAAE;AACxB,QAAA,OAAO+mB,OAAS,CAACjqB,IAAI,CAACi+C,WAAW,EAAE,CAAC,CAAA;AACtC,OAAC,MAAM;QACL,OAAOh0B,OAAS,CAAC,IAAI/mB,IAAI,CAAClD,IAAI,CAAC,CAACi+C,WAAW,EAAE,CAAC,CAAA;AAChD,OAAA;KACD;IACDh9B,QAAQA,CAACjhB,IAAI,EAAE;MACb,IAAIA,IAAI,CAACsW,GAAG,EAAE;QACZ,OAAOtW,IAAI,CAACsW,GAAG,CAAA;AACjB,OAAA;AACA,MAAA,MAAM,CAAC5qB,IAAI,EAAEwpC,KAAK,EAAE2a,GAAG,CAAC,GAAG7vC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,MAAA,IAAI6vC,GAAG,EAAE;AACP,QAAA,OAAO,IAAI3sC,IAAI,CAACA,IAAI,CAAC68C,GAAG,CAACr0D,IAAI,EAAEwpC,KAAK,GAAG,CAAC,EAAE2a,GAAG,CAAC,CAAC,CAAA;OAChD,MAAM,IAAI3a,KAAK,EAAE;AAChB,QAAA,OAAO,IAAIhyB,IAAI,CAACA,IAAI,CAAC68C,GAAG,CAACr0D,IAAI,EAAEwpC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;AAC5C,OAAC,MAAM;QACL,OAAO,IAAIhyB,IAAI,CAACA,IAAI,CAAC68C,GAAG,CAACr0D,IAAI,CAAC,CAAC,CAAA;AACjC,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC,CAAA;AAED,MAAMs0D,YAAY,GAAG,CACnB,UAAU,EAEV;AAAEx3D,EAAAA,MAAM,EAAE,SAAS;AAAEyJ,EAAAA,MAAM,EAAE,QAAQ;EAAEqgB,OAAO,EAAEotC,eAAe,CAACjgD,KAAAA;AAAM,CAAC;AAEvE;;AAEA;;AAEA;AACEjX,EAAAA,MAAM,EAAE,eAAe;AACvByJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AAAEpvB,IAAAA,MAAM,EAAE;AAAEtF,MAAAA,IAAI,EAAE,UAAA;AAAW,KAAA;GAAG;EACtC2lB,OAAO,EAAEotC,eAAe,CAAC1/C,IAAAA;AAC3B,CAAC,EAED;AAAExX,EAAAA,MAAM,EAAE,KAAK;AAAEyJ,EAAAA,MAAM,EAAE,KAAA;AAAM,CAAC,EAEhC;AACEzJ,EAAAA,MAAM,EAAE,aAAa;AACrByJ,EAAAA,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;AACvDqgB,EAAAA,OAAO,EAAE;IACP8O,QAAQA,CAACqH,WAAW,EAAE;MACpB,MAAMw3B,cAAc,GAAGxtD,KAAK,CAAC,CAAC,CAAC,CAACytD,IAAI,CAACt+D,SAAS,CAAC,CAAA;AAC/C,MAAA,KAAK,MAAM;QAAE+K,IAAI;AAAEE,QAAAA,KAAAA;OAAO,IAAI47B,WAAW,EAAE;QACzC,IAAI,CAAC,IAAI,CAACqK,GAAG,IAAInmC,IAAI,KAAK,KAAK,EAAE;AAC/BszD,UAAAA,cAAc,CAAC,CAAC,CAAC,GAAGpzD,KAAK,CAAA;AAC3B,SAAA;QACA,IAAI,CAAC,IAAI,CAAC1I,GAAG,IAAIwI,IAAI,KAAK,KAAK,EAAE;AAC/BszD,UAAAA,cAAc,CAAC,CAAC,CAAC,GAAGpzD,KAAK,CAAA;AAC3B,SAAA;QACA,IAAIF,IAAI,KAAK,OAAO,IAAIE,KAAK,CAACxJ,UAAU,CAAC,WAAW,CAAC,EAAE;UACrD48D,cAAc,CAAC,CAAC,CAAC,GAAGpzD,KAAK,CAAC7G,KAAK,CAAC,CAAC,CAAC,CAAA;AACpC,SAAA;QACA,IAAI2G,IAAI,KAAK,OAAO,IAAIE,KAAK,CAACxJ,UAAU,CAAC,WAAW,CAAC,EAAE;UACrD48D,cAAc,CAAC,CAAC,CAAC,GAAGpzD,KAAK,CAAC7G,KAAK,CAAC,CAAC,CAAC,CAAA;AACpC,SAAA;QACA,IAAI2G,IAAI,KAAK,OAAO,IAAIE,KAAK,CAACxJ,UAAU,CAAC,QAAQ,CAAC,EAAE;UAClD48D,cAAc,CAAC,CAAC,CAAC,GAAGpzD,KAAK,CAAC7G,KAAK,CAAC,CAAC,CAAC,CAAA;AACpC,SAAA;QACA,IAAI2G,IAAI,KAAK,OAAO,IAAIE,KAAK,CAACxJ,UAAU,CAAC,OAAO,CAAC,EAAE;UACjD48D,cAAc,CAAC,CAAC,CAAC,GAAGpzD,KAAK,CAAC7G,KAAK,CAAC,CAAC,CAAC,CAAA;AACpC,SAAA;AACF,OAAA;AACA,MAAA,OAAOi6D,cAAc,CAAA;KACtB;AACDh/B,IAAAA,QAAQA,CAAC6R,GAAG,EAAEuB,IAAI,EAAEG,IAAI,EAAEiF,KAAK,EAAED,IAAI,EAAEr1C,GAAG,EAAE;MAC1C,OAAO,CACL2uC,GAAG,IAAI;AAAEnmC,QAAAA,IAAI,EAAE,KAAK;AAAEE,QAAAA,KAAK,EAAEimC,GAAAA;OAAK,EAClC3uC,GAAG,IAAI;AAAEwI,QAAAA,IAAI,EAAE,KAAK;AAAEE,QAAAA,KAAK,EAAE1I,GAAAA;OAAK,EAElCkwC,IAAI,IAAI;AAAE1nC,QAAAA,IAAI,EAAE,OAAO;QAAEE,KAAK,EAAG,YAAWwnC,IAAK,CAAA,CAAA;OAAG,EACpDG,IAAI,IAAI;AAAE7nC,QAAAA,IAAI,EAAE,OAAO;QAAEE,KAAK,EAAG,YAAW2nC,IAAK,CAAA,CAAA;OAAG,EACpDiF,KAAK,IAAI;AAAE9sC,QAAAA,IAAI,EAAE,OAAO;QAAEE,KAAK,EAAG,SAAQ4sC,KAAM,CAAA,CAAA;OAAG,EACnDD,IAAI,IAAI;AAAE7sC,QAAAA,IAAI,EAAE,OAAO;QAAEE,KAAK,EAAG,QAAO2sC,IAAK,CAAA,CAAA;AAAE,OAAC,CACjD,CAACttC,MAAM,CAACwT,OAAO,CAAC,CAAA;AACnB,KAAA;AACF,GAAA;AACF,CAAC,EAED;AACElX,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,SAAS;AACjBqgB,EAAAA,OAAO,EAAE;IACP8O,QAAQA,CAAC2I,QAAQ,EAAE;AACjB,MAAA,OAAOA,QAAQ,CAACjlC,IAAI,CAAC,GAAG,CAAC,CAAA;KAC1B;IACDm8B,QAAQA,CAAC8I,QAAQ,EAAE;AACjB,MAAA,OAAOA,QAAQ,CAACjoC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChC,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACE0G,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AAAE23D,MAAAA,IAAI,EAAE,KAAK;AAAEx1D,MAAAA,KAAK,EAAE,KAAA;KAAO;AACrCsH,IAAAA,MAAM,EAAE;MACNtF,IAAIA,CAACA,IAAI,EAAE;AACT,QAAA,OAAO,CAAC,CAAC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAChH,QAAQ,CAACgH,IAAI,CAAC,CAAA;AAC5E,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC,EAED;AACEnE,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AAAEmC,MAAAA,KAAK,EAAE,IAAI;AAAEu/B,MAAAA,OAAO,EAAE,KAAA;KAAO;AACvCj4B,IAAAA,MAAM,EAAE;MAAEtF,IAAI,EAAE,CAAC,OAAO,CAAA;AAAE,KAAA;AAC5B,GAAA;AACF,CAAC,EAED;AACEnE,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,iBAAiB;AACzBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AAAE23D,MAAAA,IAAI,EAAE,IAAI;AAAEj2B,MAAAA,OAAO,EAAE,KAAA;KAAO;AACtCj4B,IAAAA,MAAM,EAAE;AAAEtF,MAAAA,IAAI,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAA;AAAE,KAAA;AAC7D,GAAA;AACF,CAAC,EAED;AAAEnE,EAAAA,MAAM,EAAE,KAAK;AAAEyJ,EAAAA,MAAM,EAAE,KAAA;AAAM,CAAC,EAEhC,SAAS,CACV,CAAA;AAED,MAAMmuD,UAAU,GAAG;AACjB;AACA;AACE53D,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAM;AACdqgB,EAAAA,OAAO,EAAE;IACP2O,QAAQA,CAACt0B,IAAI,EAAE;AACb,MAAA,OAAOA,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;KACnD;IACDy0B,QAAQA,CAACz0B,IAAI,EAAE;AACb,MAAA,OAAOA,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AACpD,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA,GAAGqzD,YAAY,CAChB,CAAA;AAED,MAAMK,SAAS,GAAG;AAChB;AACA,GAAGL,YAAY;AAEf;AACA;AAAEx3D,EAAAA,MAAM,EAAE,cAAc;AAAEyJ,EAAAA,MAAM,EAAE,aAAA;AAAc,CAAC,EACjD;AAAEzJ,EAAAA,MAAM,EAAE,cAAc;AAAEyJ,EAAAA,MAAM,EAAE,YAAA;AAAa,CAAC;AAEhD;AACA;AACA;AACA,kBAAkB;AAElB;AACA;AAAEzJ,EAAAA,MAAM,EAAE,YAAY;AAAEyJ,EAAAA,MAAM,EAAE,WAAW;EAAEqgB,OAAO,EAAEotC,eAAe,CAACjgD,KAAAA;AAAM,CAAC,EAC7E;AAAEjX,EAAAA,MAAM,EAAE,SAAS;AAAEyJ,EAAAA,MAAM,EAAE,SAAS;EAAEqgB,OAAO,EAAEotC,eAAe,CAACjgD,KAAAA;AAAM,CAAC;AAExE;AACA;AACEjX,EAAAA,MAAM,EAAE,YAAY;EACpByJ,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC;AAC7DqgB,EAAAA,OAAO,EAAE;IACP2O,QAAQA,CAAC1uB,IAAI,EAAEyN,IAAI,EAAE8/C,KAAK,EAAEQ,YAAY,EAAE;AACxC,MAAA,MAAMb,MAAM,GAAG;QAAEltD,IAAI,EAAEA,IAAI,IAAI+tD,YAAAA;OAAc,CAAA;AAE7C,MAAA,IAAIR,KAAK,EAAE;QACTL,MAAM,CAACpkC,QAAQ,GAAGykC,KAAK,CAAA;AACzB,OAAA;AACA,MAAA,IAAI9/C,IAAI,EAAE;QACRy/C,MAAM,CAAC,YAAY,CAAC,GAAGC,eAAe,CAAC1/C,IAAI,CAACihB,QAAQ,CAACjhB,IAAI,CAAC,CAAA;AAE1D,QAAA,IAAIA,IAAI,CAAC,YAAY,CAAC,IAAIA,IAAI,CAAC,YAAY,CAAC,CAACrd,MAAM,KAAK,CAAC,EAAE;UACzD88D,MAAM,CAAC,UAAU,CAAC,GAAGC,eAAe,CAAC1/C,IAAI,CAACihB,QAAQ,CAAC;YACjD,YAAY,EAAE,CAACjhB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,WAAC,CAAC,CAAA;AACJ,SAAA;AACF,OAAA;AAEA,MAAA,OAAOy/C,MAAM,CAAA;KACd;IACDr+B,QAAQA,CAACpnB,KAAK,EAAE;AACd,MAAA,OAAO,CACLA,KAAK,CAACzH,IAAI,EACV03B,OAAS,CAACjwB,KAAK,CAAC,YAAY,CAAC,CAACikD,WAAW,EAAE,EAAEjkD,KAAK,CAAC,UAAU,CAAC,CAACikD,WAAW,EAAE,CAAC,EAC7EjkD,KAAK,CAACqhB,QAAQ,CACf,CAAA;AACH,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA;AACA;;AAEA;AACA;AAAE7yB,EAAAA,MAAM,EAAE,UAAU;AAAEyJ,EAAAA,MAAM,EAAE,QAAA;AAAS,CAAC;AACxC;;AAEA;AACA;AAAEzJ,EAAAA,MAAM,EAAE,eAAe;AAAEyJ,EAAAA,MAAM,EAAE,UAAU;EAAEqgB,OAAO,EAAEotC,eAAe,CAAC1/C,IAAAA;AAAK,CAAC,EAE9E;AACExX,EAAAA,MAAM,EAAE,iBAAiB;AACzByJ,EAAAA,MAAM,EAAE,UAAU;EAClBqgB,OAAO,EAAEotC,eAAe,CAAC1/C,IAAI;AAC7BqhB,EAAAA,IAAI,EAAE;AAAE74B,IAAAA,MAAM,EAAE;AAAE,MAAA,eAAe,EAAE,KAAA;KAAO;AAAEyJ,IAAAA,MAAM,EAAE,KAAA;AAAM,GAAA;AAC5D,CAAC,EAED;AACEzJ,EAAAA,MAAM,EAAE,gBAAgB;AACxByJ,EAAAA,MAAM,EAAE,QAAQ;EAChBqgB,OAAO,EAAEotC,eAAe,CAAC1/C,IAAI;AAC7BqhB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AAAE,MAAA,eAAe,EAAE,KAAA;KAAO;AAClCyJ,IAAAA,MAAMA,GAAG;MACP,OAAO,IAAI,CAACtF,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAACkS,OAAO,CAAA;AAC9C,KAAA;AACF,GAAA;AACF,CAAC,EAED;AACErW,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AACzByJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AAAE74B,IAAAA,MAAM,EAAE;AAAE,MAAA,gBAAgB,EAAE,KAAK;AAAE,MAAA,eAAe,EAAE,KAAK;AAAEkD,MAAAA,IAAI,EAAE,IAAA;AAAK,KAAA;GAAG;AACjF4mB,EAAAA,OAAO,EAAE;AACP8O,IAAAA,QAAQA,CAAC11B,IAAI,EAAEwpC,KAAK,EAAE;AACpB,MAAA,MAAMl1B,IAAI,GAAGk1B,KAAK,GAAG,CAACxpC,IAAI,EAAEwpC,KAAK,CAAC,GAAG,CAACxpC,IAAI,CAAC,CAAA;MAC3C,OAAO;QAAE,YAAY,EAAE,CAACsU,IAAI,CAAA;OAAG,CAAA;KAChC;IACDihB,QAAQA,CAACx1B,MAAM,EAAE;AACf,MAAA,MAAM,CAACC,IAAI,EAAEwpC,KAAK,CAAC,GAAGzpC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,MAAA,OAAO,CAACC,IAAI,EAAEwpC,KAAK,CAAC,CAAA;AACtB,KAAA;AACF,GAAA;AACF,CAAC,EAED;AACE1sC,EAAAA,MAAM,EAAE,eAAe;AACvByJ,EAAAA,MAAM,EAAE,eAAe;AACvBqgB,EAAAA,OAAO,EAAE;IACP8O,QAAQA,CAAC11B,IAAI,EAAE;MACb,OAAO;AAAE,QAAA,YAAY,EAAE,CAAC,CAACA,IAAI,CAAC,CAAA;OAAG,CAAA;KAClC;IACDu1B,QAAQA,CAACjhB,IAAI,EAAE;MACb,OAAOA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACjC,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA,SAAS;AAET;AACA;AAAExX,EAAAA,MAAM,EAAE,SAAS;AAAEyJ,EAAAA,MAAM,EAAE,QAAQ;EAAEqgB,OAAO,EAAEotC,eAAe,CAACjgD,KAAAA;AAAM,CAAC,EACvE;AAAEjX,EAAAA,MAAM,EAAE,gBAAgB;AAAEyJ,EAAAA,MAAM,EAAE,mBAAmB;EAAEqgB,OAAO,EAAEotC,eAAe,CAACjgD,KAAAA;AAAM,CAAC;AAEzF;AACA;AACEjX,EAAAA,MAAM,EAAE,OAAO;AACfyJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AAAE23D,MAAAA,IAAI,EAAE,KAAA;KAAO;AACvBluD,IAAAA,MAAM,EAAE;AAAEtF,MAAAA,IAAI,EAAE,OAAA;AAAQ,KAAA;AAC1B,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;AAAEtF,MAAAA,IAAI,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAA;AAAE,KAAA;AAC7D,GAAA;AACF,CAAC;AAED;AACA;AAAEnE,EAAAA,MAAM,EAAE,QAAQ;AAAEyJ,EAAAA,MAAM,EAAE,YAAA;AAAa,CAAC,EAC1C,QAAQ;AAER;AACA;AACEzJ,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;MACNtF,IAAIA,CAACA,IAAI,EAAE;QACT,OAAOA,IAAI,KAAK,QAAQ,CAAA;AAC1B,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEnE,EAAAA,MAAM,EAAE,aAAa;AACrByJ,EAAAA,MAAM,EAAE,OAAO;AACfovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AAAE,MAAA,WAAW,EAAE,KAAA;KAAO;AAC9ByJ,IAAAA,MAAM,EAAE;AAAEtF,MAAAA,IAAI,EAAE,QAAA;AAAS,KAAA;AAC3B,GAAA;AACF,CAAC;AAED;AACA;AAAEnE,EAAAA,MAAM,EAAE,MAAM;AAAEyJ,EAAAA,MAAM,EAAE,MAAA;AAAO,CAAC,EAClC;AAAEzJ,EAAAA,MAAM,EAAE,MAAM;AAAEyJ,EAAAA,MAAM,EAAE,MAAA;AAAO,CAAC;AAClC;AACA;AAAEzJ,EAAAA,MAAM,EAAE,OAAO;AAAEyJ,EAAAA,MAAM,EAAE,OAAA;AAAQ,CAAC;AAEpC;AACA,OAAO;AAEP;AACA;AAAEzJ,EAAAA,MAAM,EAAE,SAAS;AAAEyJ,EAAAA,MAAM,EAAE,iBAAA;AAAkB,CAAC,EAChD;AAAEzJ,EAAAA,MAAM,EAAE,cAAc;AAAEyJ,EAAAA,MAAM,EAAE,cAAA;AAAe,CAAC,EAClD;AACEzJ,EAAAA,MAAM,EAAE,aAAa;AACrByJ,EAAAA,MAAM,EAAE,cAAc;AACtBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE;AAAE,MAAA,cAAc,EAAE,KAAA;KAAO;AACjCyJ,IAAAA,MAAM,EAAE,KAAA;AACV,GAAA;AACF,CAAC;AACD;;AAEA;AACA;AACEzJ,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,UAAU;AAClBovB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE,IAAI;AACZ;AACAzJ,IAAAA,MAAM,EAAE;MACNyU,QAAQA,CAACkV,IAAI,EAAE;AACb,QAAA,OAAO,YAAY,CAACvgB,IAAI,CAACugB,IAAI,CAAC,CAAA;AAChC,OAAA;AACF,KAAA;GACD;AACDG,EAAAA,OAAO,EAAE;AACP;IACA2O,QAAQA,CAAChkB,QAAQ,EAAE;MACjB,OAAO,CAACA,QAAQ,CAAC,CAAA;KAClB;IACDmkB,QAAQA,CAACm2B,SAAS,EAAE;MAClB,OAAOA,SAAS,CAAC,CAAC,CAAC,CAAA;AACrB,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA;AACE/uD,EAAAA,MAAM,EAAE,UAAU;AAClByJ,EAAAA,MAAM,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;EACpCqgB,OAAO,EAAEotC,eAAe,CAACnhD,SAAAA;AAC3B,CAAC;AAED;AACA;AACA;AACA;;AAEA;AACA;AAAE/V,EAAAA,MAAM,EAAE,OAAO;AAAEyJ,EAAAA,MAAM,EAAE,MAAM;AAAEovB,EAAAA,IAAI,EAAE;AAAE74B,IAAAA,MAAM,EAAE;AAAE2K,MAAAA,KAAK,EAAE,KAAA;AAAM,KAAA;AAAE,GAAA;AAAE,CAAC,EACvE;AAAE3K,EAAAA,MAAM,EAAE,OAAO;AAAEyJ,EAAAA,MAAM,EAAE,MAAM;AAAEovB,EAAAA,IAAI,EAAE;AAAEpvB,IAAAA,MAAM,EAAE,KAAA;AAAM,GAAA;AAAE,CAAC;AAE5D;AACA,QAAQ;AAER;AACA;AACEzJ,EAAAA,MAAM,EAAE,eAAe;AACvByJ,EAAAA,MAAM,EAAE,cAAc;AACtB;AACAovB,EAAAA,IAAI,EAAE;AAAEpvB,IAAAA,MAAM,EAAE,KAAA;GAAO;AACvBqgB,EAAAA,OAAO,EAAE;IACP8O,QAAQA,CAACiN,MAAM,EAAE;AACf,MAAA,OAAOA,MAAM,CAACvpC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1B,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA;AACE0D,EAAAA,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;AACrCyJ,EAAAA,MAAM,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;AACxCovB,EAAAA,IAAI,EAAE;AAAE74B,IAAAA,MAAM,EAAE;AAAE+V,MAAAA,SAAS,EAAE,KAAA;KAAO;AAAEtM,IAAAA,MAAM,EAAE;AAAEtF,MAAAA,IAAI,EAAE,QAAA;AAAS,KAAA;GAAG;AAClE2lB,EAAAA,OAAO,EAAE;AACP8O,IAAAA,QAAQA,CAAC8S,WAAW,EAAEqsB,UAAU,EAAE;AAChC,MAAA,MAAM,CAAChuD,IAAI,EAAEutD,KAAK,CAAC,GAAGJ,eAAe,CAACnhD,SAAS,CAAC6iB,QAAQ,CAAC8S,WAAW,CAAC,CAAA;AACrE,MAAA,OAAO,CAACqsB,UAAU,GAAI,CAAA,EAAEA,UAAW,CAAA,EAAA,EAAIhuD,IAAK,CAAA,CAAC,GAAGA,IAAI,EAAEutD,KAAK,CAAC,CAAA;KAC7D;AACD7+B,IAAAA,QAAQA,CAAC1uB,IAAI,EAAEutD,KAAK,EAAE;MACpB,OAAO,CAACJ,eAAe,CAACnhD,SAAS,CAAC0iB,QAAQ,CAAC1uB,IAAI,EAAEutD,KAAK,CAAC,CAAC,CAAA;AAC1D,KAAA;AACF,GAAA;AACF,CAAC,EACD;AACEt3D,EAAAA,MAAM,EAAE,WAAW;AACnByJ,EAAAA,MAAM,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;AACxCovB,EAAAA,IAAI,EAAE;AACJpvB,IAAAA,MAAM,EAAE;MACNtF,IAAIA,CAACA,IAAI,EAAE;QACT,OAAOA,IAAI,KAAK,QAAQ,CAAA;AAC1B,OAAA;AACF,KAAA;GACD;EACD2lB,OAAO,EAAEotC,eAAe,CAACnhD,SAAAA;AAC3B,CAAC;AAED;AACA,SAAS;AAET;AACA;AACE/V,EAAAA,MAAM,EAAE,QAAQ;AAChByJ,EAAAA,MAAM,EAAE,QAAQ;AAChBovB,EAAAA,IAAI,EAAE;AACJ74B,IAAAA,MAAM,EAAE,IAAI;AACZ;AACAyJ,IAAAA,MAAM,EAAE;AACNyM,MAAAA,MAAM,EAAE,CACN,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,UAAU,CAAA;AAEd,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA;AAAElW,EAAAA,MAAM,EAAE,OAAO;AAAEyJ,EAAAA,MAAM,EAAE,YAAY;AAAEovB,EAAAA,IAAI,EAAE;AAAEpvB,IAAAA,MAAM,EAAE;AAAEnR,MAAAA,IAAI,EAAE,KAAA;AAAM,KAAA;AAAE,GAAA;AAAE,CAAC,EAC5E;AACE0H,EAAAA,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;AACxByJ,EAAAA,MAAM,EAAE,MAAM;AACdqgB,EAAAA,OAAO,EAAE;AACP8O,IAAAA,QAAQA,CAACx1B,KAAK,EAAEuY,GAAG,EAAE;MACnB,OAAOA,GAAG,GAAI,CAAEvY,EAAAA,KAAM,IAAGuY,GAAI,CAAA,CAAC,GAAGvY,KAAK,CAAA;KACvC;IACDq1B,QAAQA,CAACngC,IAAI,EAAE;MACb,MAAM,CAAC8K,KAAK,EAAEuY,GAAG,CAAC,GAAGrjB,IAAI,CAACgB,KAAK,CAAC,GAAG,CAAC,CAAA;MACpC,OAAOqiB,GAAG,GAAG,CAACvY,KAAK,EAAEuY,GAAG,CAAC,GAAG,CAACvY,KAAK,CAAC,CAAA;AACrC,KAAA;AACF,GAAA;AACF,CAAC,EACD;AAAEpD,EAAAA,MAAM,EAAE,OAAO;AAAEyJ,EAAAA,MAAM,EAAE,iBAAA;AAAkB,CAAC;AAE9C;AACA;AAAEzJ,EAAAA,MAAM,EAAE,aAAa;AAAEyJ,EAAAA,MAAM,EAAE,YAAY;EAAEqgB,OAAO,EAAEotC,eAAe,CAACjgD,KAAAA;AAAM,CAAC;AAE/E;AACA;AACEjX,EAAAA,MAAM,EAAE,MAAM;AACdyJ,EAAAA,MAAM,EAAE,MAAM;AACdqgB,EAAAA,OAAO,EAAE;IACP8O,QAAQA,CAACz0B,IAAI,EAAE;AACb,MAAA,OAAO6xD,eAAe,CAAC7xD,IAAI,CAAC,IAAI,UAAU,CAAA;KAC3C;IACDs0B,QAAQA,CAACt0B,IAAI,EAAE;MACb,IAAIA,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;AAC1C,QAAA,OAAO,aAAa,CAAA;AACtB,OAAA;AACA,MAAA,OAAO4yD,eAAe,CAAC5yD,IAAI,CAAC,IAAI,SAAS,CAAA;AAC3C,KAAA;AACF,GAAA;AACF,CAAC;AAED;AACA,QAAQ,EACR;AAAEnE,EAAAA,MAAM,EAAE,gBAAgB;AAAEyJ,EAAAA,MAAM,EAAE,mBAAA;AAAoB,CAAC,CAC1D,CAAA;AAED,MAAMuuD,cAAc,GAAG,IAAI18B,UAAe,CAACs8B,UAAU,CAAC,CAAA;AACtD,MAAMK,aAAa,GAAG,IAAI38B,UAAe,CAACu8B,SAAS,CAAC,CAAA;AACpD,MAAMK,WAAW,GAAG,OAAO,CAAA;;AAE3B;AACA,SAASC,KAAKA,CAACh2D,KAAK,EAAE;EACpB,IAAI,KAAK,IAAIA,KAAK,EAAE;AAClBA,IAAAA,KAAK,CAACxI,EAAE,GAAGwI,KAAK,CAACiT,GAAG,CAAA;AACtB,GAAC,MAAM,IAAI,KAAK,IAAIjT,KAAK,EAAE;AACzBA,IAAAA,KAAK,CAACxI,EAAE,GAAGwI,KAAK,CAACvG,GAAG,CAAC/B,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AACrE,GAAA;AACF,CAAA;AAEA,SAASuO,KAAKA,CAACkD,KAAK,EAAE;AACpB,EAAA,MAAMg3C,IAAI,GAAG0V,cAAc,CAAC1+B,eAAe,CAAChuB,KAAK,CAAC,CAAA;AAClD,EAAA,IAAIA,KAAK,CAAC,aAAa,CAAC,IAAI,OAAO,EAAE;AACnCg3C,IAAAA,IAAI,CAACn+C,IAAI,GAAG6xD,eAAe,CAACtjD,QAAQ,CAAA;AACtC,GAAA;EACA4vC,IAAI,CAAC8V,kBAAkB,GAAG,IAAI,CAAA;EAC9BD,KAAK,CAAC7V,IAAI,CAAC,CAAA;AAEX,EAAA,MAAM//C,MAAM,GAAG,CAAC+/C,IAAI,CAAC,CAAA;AACrB,EAAA,IAAIh3C,KAAK,CAAC,oBAAoB,CAAC,EAAE;IAC/B,MAAM+sD,iBAAiB,GAAGJ,aAAa,CAAC3+B,eAAe,CAAChuB,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACpF6sD,KAAK,CAACE,iBAAiB,CAAC,CAAA;AACxB91D,IAAAA,MAAM,CAAC/H,IAAI,CAAC69D,iBAAiB,CAAC,CAAA;AAChC,GAAA;EAEA,IAAIpuD,KAAK,CAACC,OAAO,CAACoB,KAAK,CAAC0K,UAAU,CAAC,EAAE;AACnCzT,IAAAA,MAAM,CAAC/H,IAAI,CAAC,GAAG8Q,KAAK,CAAC0K,UAAU,CAAChU,GAAG,CAACi2D,aAAa,CAAC3+B,eAAe,CAAC,CAAC,CAAA;AACrE,GAAA;AAEA,EAAA,OAAO/2B,MAAM,CAAA;AACf,CAAA;AAEA,SAAS7F,MAAMA,CAAC4O,KAAK,EAAEtP,OAAO,GAAG,EAAE,EAAE;AACnCsP,EAAAA,KAAK,GAAGA,KAAK,CAAC9N,KAAK,EAAE,CAAA;EACrB,MAAM;IACJ8kD,IAAI;IACJgW,SAAS;AACTC,IAAAA,UAAU,GAAGL,WAAW;AACxBzuC,IAAAA,OAAO,GAAG,2DAAA;AACZ,GAAC,GAAGztB,OAAO,CAAA;AAEX,EAAA,IAAIq8D,iBAAiB,CAAA;AACrB,EAAA,MAAMG,cAAc,GAAGltD,KAAK,CAAChB,SAAS,CAAEnI,KAAK,IAAKm2D,SAAS,IAAIn2D,KAAK,CAACxI,EAAE,KAAK2+D,SAAS,CAAC,CAAA;EACtF,IAAIC,UAAU,IAAI,OAAO,IAAIC,cAAc,GAAG,CAAC,CAAC,EAAE;AAChDH,IAAAA,iBAAiB,GAAGJ,aAAa,CAAC5+B,eAAe,CAAC,GAAG/tB,KAAK,CAAC7D,MAAM,CAAC+wD,cAAc,EAAE,CAAC,CAAC,CAAC,CAAA;AACvF,GAAA;AAEA,EAAA,IAAIh6B,SAAS,GAAGlzB,KAAK,CAAChB,SAAS,CAAEnI,KAAK,IAAMmgD,IAAI,GAAGngD,KAAK,CAACxI,EAAE,KAAK2oD,IAAI,GAAGngD,KAAK,CAACi2D,kBAAmB,CAAC,CAAA;EACjG55B,SAAS,GAAGA,SAAS,GAAG,CAAC,CAAC,GAAGA,SAAS,GAAG,CAAC,CAAA;EAC1C,MAAMi6B,OAAO,GAAGntD,KAAK,CAACkzB,SAAS,CAAC,GAC5Bw5B,cAAc,CAAC3+B,eAAe,CAAC,GAAG/tB,KAAK,CAAC7D,MAAM,CAAC+2B,SAAS,EAAE,CAAC,CAAC,CAAC,GAC7D,EAAE,CAAA;AACN,EAAA,IAAIi6B,OAAO,IAAIF,UAAU,GAAG,OAAO,EAAE;IACnC,OAAOE,OAAO,CAACt0D,IAAI,CAAA;AACrB,GAAA;EAEA,MAAMu0D,GAAG,GAAAj+D,QAAA,CAAA;AAAK,IAAA,aAAa,EAAE89D,UAAU;AAAE9uC,IAAAA,OAAAA;AAAO,GAAA,EAAKgvC,OAAO,CAAE,CAAA;AAE9D,EAAA,IAAIJ,iBAAiB,EAAE;AACrBK,IAAAA,GAAG,CAAC,oBAAoB,CAAC,GAAGL,iBAAiB,CAAA;AAC/C,GAAA;EAEA,IAAI/sD,KAAK,CAACnR,MAAM,EAAE;AAChB;IACAu+D,GAAG,CAAC1iD,UAAU,GAAG1K,KAAK,CAACtJ,GAAG,CAACi2D,aAAa,CAAC5+B,eAAe,CAAC,CAAA;AAC3D,GAAA;AAEA,EAAA,OAAOq/B,GAAG,CAAA;AACZ,CAAA;AAEA77D,GAAW,CAAC,MAAM,EAAE;AAClByO,EAAAA,KAAK,EAAE;AACL,IAAA,aAAa,EAAE;AACbuE,MAAAA,SAAS,EAAE;AACTtE,QAAAA,QAAQ,EAAE,cAAc;AACxB6C,QAAAA,kBAAkB,EAAE;AAClBU,UAAAA,KAAK,EAAE,aAAA;AACT,SAAA;OACD;AACD1G,MAAAA,KAAAA;AACF,KAAA;GACD;AACD7F,EAAAA,MAAM,EAAE;AACNm2D,IAAAA,GAAGA,CAACx7D,IAAI,EAAElB,OAAO,GAAG,EAAE,EAAE;AACtB,MAAA,MAAMuG,MAAM,GAAG7F,MAAM,CAACQ,IAAI,EAAElB,OAAO,CAAC,CAAA;AACpC,MAAA,IAAIA,OAAO,CAACmI,IAAI,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO5B,MAAM,CAAA;AACf,OAAC,MAAM;QACL,OAAO1F,QAAqB,CAAC,MAAM,EAAE0F,MAAM,CAAC,CAAA;AAC9C,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC,CAAC;;AC7tBF,SAASgqB,KAAKA,CAACzf,GAAG,EAAE;EAClB,MAAM2L,IAAI,GAAG,EAAE,CAAA;AACf,EAAA,KAAK,MAAMlX,GAAG,IAAIuL,GAAG,EAAE;IACrB2L,IAAI,CAAClX,GAAG,CAAC,GAAG,OAAOuL,GAAG,CAACvL,GAAG,CAAC,KAAK,QAAQ,GAAGgrB,KAAK,CAACzf,GAAG,CAACvL,GAAG,CAAC,CAAC,GAAGuL,GAAG,CAACvL,GAAG,CAAC,CAAA;AACvE,GAAA;AACA,EAAA,OAAOkX,IAAI,CAAA;AACb,CAAA;AAEA,SAAShc,IAAIA,CAACS,IAAI,EAAE0c,IAAI,EAAE;AACxB,EAAA,IAAI,EAAE,IAAI,YAAYnd,IAAI,CAAC,EAAE;AAC3B,IAAA,OAAO,IAAIA,IAAI,CAACS,IAAI,EAAE0c,IAAI,CAAC,CAAA;AAC7B,GAAA;EAEA,MAAM2c,IAAI,GAAG,IAAIoiC,MAAQ,CAACz7D,IAAI,EAAE0c,IAAI,CAAC,CAAA;AACrC,EAAA,IAAI,CAAClR,QAAQ,GAAG6tB,IAAI,CAAC7tB,QAAQ,CAAA;AAC7B,EAAA,IAAI,CAACZ,GAAG,GAAGyuB,IAAI,CAACzuB,GAAG,CAAA;AACnB,EAAA,IAAI,CAAC5K,IAAI,GAAGq5B,IAAI,CAACr5B,IAAI,CAAA;AACvB,CAAA;AAEAT,IAAI,CAACI,OAAO,GAAG0vB,KAAK,CAAC1vB,OAAO,CAAC;;ACzB7B,UAAgB,CAA28P,08PAAA,CAAA;;ACA39P,cAAgB,CAAu0f,s0fAAA,CAAA;;ACAv1f,eAAgB,CAAi1J,g1JAAA,CAAA;;ACAj2J,gBAAgB,CAA2rR,0rRAAA,CAAA;;ACQ3sR,MAAMD,MAAM,GAAGH,IAAI,CAACI,OAAO,CAACD,MAAM,CAACE,GAAG,CAAC,MAAM,CAAC,CAAA;;AAE9C;AACAF,MAAM,CAACK,SAAS,CAACS,GAAG,CAAC,WAAW,EAAEk7D,SAAS,CAAC,CAAA;AAC5Ch8D,MAAM,CAACK,SAAS,CAACS,GAAG,CAAC,UAAU,EAAEm7D,QAAQ,CAAC,CAAA;AAC1Cj8D,MAAM,CAACK,SAAS,CAACS,GAAG,CAAC,KAAK,EAAEo7D,GAAG,CAAC,CAAA;AAChCl8D,MAAM,CAACK,SAAS,CAACS,GAAG,CAAC,SAAS,EAAEq7D,OAAO,CAAC,CAAA;AAExC,MAAMC,cAAc,GAAG5zD,uBAAuB,CAAC3I,IAAI;;;;"}