{"version":3,"file":"default-dist_v16_dynamic-forms_markdown_fesm2022_dynamic-forms-markdown_mjs.js","mappings":"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","sources":["./libs/markdown/src/lib/dynamic-form-markdown.service.ts","./libs/markdown/src/lib/dynamic-form-markdown.component.ts","./libs/markdown/src/lib/dynamic-form-markdown.component.html","./libs/markdown/src/lib/dynamic-form-markdown.module.ts","./libs/markdown/src/public_api.ts","./libs/markdown/src/dynamic-forms-markdown.ts","./node_modules/marked/lib/marked.esm.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","./node_modules/@babel/runtime/helpers/esm/typeof.js"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { marked } from 'marked';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DynamicFormMarkdownOptions } from './dynamic-form-markdown-options';\n\n@Injectable()\nexport class DynamicFormMarkdownService {\n\n  constructor(private httpClient: HttpClient, private sanitizer: DomSanitizer) {\n    marked.setOptions({\n      renderer: this.createRenderer(),\n      headerIds: false,\n    });\n  }\n\n  compile(markdown: string, options?: DynamicFormMarkdownOptions): string {\n    const securityContext = this.getSecurityContext(options);\n    return this.sanitizer.sanitize(securityContext, this.parseMarkdown(markdown));\n  }\n\n  compileFromSource(source: string, options?: DynamicFormMarkdownOptions): Observable<string> {\n    return this.httpClient.get(source, { responseType: 'text' }).pipe(\n      map(markdown => this.compile(markdown, options)),\n    );\n  }\n\n  private createRenderer(): marked.Renderer {\n    const renderer = new marked.Renderer();\n    renderer.link = (href, title, text) => {\n      const link = marked.Renderer.prototype.link.call(renderer, href, title, text);\n      return link.replace('<a', '<a target=\"_blank\"');\n    };\n    return renderer;\n  }\n\n  private parseMarkdown(markdown: string): string {\n    return marked.parse(markdown);\n  }\n\n  private getSecurityContext(options?: DynamicFormMarkdownOptions): SecurityContext {\n    return options && !options.sanitize ? SecurityContext.NONE : SecurityContext.HTML;\n  }\n}\n","import { Component, DoCheck, OnInit } from '@angular/core';\nimport { DynamicFormElementBase } from '@dynamic-forms/core';\nimport { of, BehaviorSubject, Observable } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { DynamicFormMarkdownDefinition } from './dynamic-form-markdown-definition';\nimport { DynamicFormMarkdownTemplate } from './dynamic-form-markdown-template';\nimport { DynamicFormMarkdownService } from './dynamic-form-markdown.service';\n\n@Component({\n  selector: 'dynamic-form-markdown',\n  templateUrl: './dynamic-form-markdown.component.html',\n})\nexport class DynamicFormMarkdownComponent<\n  Template extends DynamicFormMarkdownTemplate = DynamicFormMarkdownTemplate,\n  Definition extends DynamicFormMarkdownDefinition<Template> = DynamicFormMarkdownDefinition<Template>\n> extends DynamicFormElementBase<Template, Definition> implements OnInit, DoCheck {\n\n  private _markdownSubject: BehaviorSubject<{ source: string; markdown: string }>;\n\n  markdown$: Observable<string>;\n\n  constructor(private markdownService: DynamicFormMarkdownService) {\n    super();\n  }\n\n  ngOnInit(): void {\n    this._markdownSubject = new BehaviorSubject({\n      source: this.template.source,\n      markdown: this.template.markdown,\n    });\n    this.markdown$ = this._markdownSubject.asObservable().pipe(\n      switchMap(value => value.source\n        ? this.markdownService.compileFromSource(value.source, this.definition.options)\n        : of(this.markdownService.compile(value.markdown, this.definition.options)),\n      ),\n    );\n  }\n\n  ngDoCheck(): void {\n    const source = this.template.source;\n    const markdown = this.template.markdown;\n    if (this._markdownSubject.value.source !== source || this._markdownSubject.value.markdown !== markdown) {\n      this._markdownSubject.next({ source, markdown });\n    }\n  }\n}\n","<div class=\"dynamic-form-markdown\" [ngClass]=\"template.className\" [hidden]=\"hidden\" [innerHTML]=\"markdown$ | async\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DynamicFormConfigModule, dynamicFormLibrary, DynamicFormElementType } from '@dynamic-forms/core';\nimport { DynamicFormMarkdownComponent } from './dynamic-form-markdown.component';\nimport { DynamicFormMarkdownService } from './dynamic-form-markdown.service';\n\nexport const dynamicFormMarkdownType: DynamicFormElementType = {\n  type: 'markdown',\n  component: DynamicFormMarkdownComponent,\n  libraryName: dynamicFormLibrary.name,\n};\n\n@NgModule({\n  imports: [\n    CommonModule,\n    DynamicFormConfigModule.withElement(dynamicFormMarkdownType),\n  ],\n  declarations: [\n    DynamicFormMarkdownComponent,\n  ],\n  exports: [\n    DynamicFormConfigModule,\n    DynamicFormMarkdownComponent,\n  ],\n  providers: [\n    DynamicFormMarkdownService,\n  ],\n})\nexport class DynamicFormMarkdownModule {}\n","/*\n * Public API Surface of markdown\n */\n\nexport * from './lib/dynamic-form-markdown-definition';\nexport * from './lib/dynamic-form-markdown-options';\nexport * from './lib/dynamic-form-markdown-template';\nexport * from './lib/dynamic-form-markdown.component';\nexport * from './lib/dynamic-form-markdown.module';\nexport * from './lib/dynamic-form-markdown.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n  return {\n    async: false,\n    baseUrl: null,\n    breaks: false,\n    extensions: null,\n    gfm: true,\n    headerIds: true,\n    headerPrefix: '',\n    highlight: null,\n    hooks: null,\n    langPrefix: 'language-',\n    mangle: true,\n    pedantic: false,\n    renderer: null,\n    sanitize: false,\n    sanitizer: null,\n    silent: false,\n    smartypants: false,\n    tokenizer: null,\n    walkTokens: null,\n    xhtml: false\n  };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n  defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n  if (encode) {\n    if (escapeTest.test(html)) {\n      return html.replace(escapeReplace, getEscapeReplacement);\n    }\n  } else {\n    if (escapeTestNoEncode.test(html)) {\n      return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n    }\n  }\n\n  return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n  // explicitly match decimal, hex, and named HTML entities\n  return html.replace(unescapeTest, (_, n) => {\n    n = n.toLowerCase();\n    if (n === 'colon') return ':';\n    if (n.charAt(0) === '#') {\n      return n.charAt(1) === 'x'\n        ? String.fromCharCode(parseInt(n.substring(2), 16))\n        : String.fromCharCode(+n.substring(1));\n    }\n    return '';\n  });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n  regex = typeof regex === 'string' ? regex : regex.source;\n  opt = opt || '';\n  const obj = {\n    replace: (name, val) => {\n      val = val.source || val;\n      val = val.replace(caret, '$1');\n      regex = regex.replace(name, val);\n      return obj;\n    },\n    getRegex: () => {\n      return new RegExp(regex, opt);\n    }\n  };\n  return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n  if (sanitize) {\n    let prot;\n    try {\n      prot = decodeURIComponent(unescape(href))\n        .replace(nonWordAndColonTest, '')\n        .toLowerCase();\n    } catch (e) {\n      return null;\n    }\n    if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n      return null;\n    }\n  }\n  if (base && !originIndependentUrl.test(href)) {\n    href = resolveUrl(base, href);\n  }\n  try {\n    href = encodeURI(href).replace(/%25/g, '%');\n  } catch (e) {\n    return null;\n  }\n  return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n  if (!baseUrls[' ' + base]) {\n    // we can ignore everything in base after the last slash of its path component,\n    // but we might need to add _that_\n    // https://tools.ietf.org/html/rfc3986#section-3\n    if (justDomain.test(base)) {\n      baseUrls[' ' + base] = base + '/';\n    } else {\n      baseUrls[' ' + base] = rtrim(base, '/', true);\n    }\n  }\n  base = baseUrls[' ' + base];\n  const relativeBase = base.indexOf(':') === -1;\n\n  if (href.substring(0, 2) === '//') {\n    if (relativeBase) {\n      return href;\n    }\n    return base.replace(protocol, '$1') + href;\n  } else if (href.charAt(0) === '/') {\n    if (relativeBase) {\n      return href;\n    }\n    return base.replace(domain, '$1') + href;\n  } else {\n    return base + href;\n  }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction splitCells(tableRow, count) {\n  // ensure that every cell-delimiting pipe has a space\n  // before it to distinguish it from an escaped pipe\n  const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n      let escaped = false,\n        curr = offset;\n      while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n      if (escaped) {\n        // odd number of slashes means | is escaped\n        // so we leave it alone\n        return '|';\n      } else {\n        // add space before unescaped |\n        return ' |';\n      }\n    }),\n    cells = row.split(/ \\|/);\n  let i = 0;\n\n  // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n  if (!cells[0].trim()) { cells.shift(); }\n  if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n  if (cells.length > count) {\n    cells.splice(count);\n  } else {\n    while (cells.length < count) cells.push('');\n  }\n\n  for (; i < cells.length; i++) {\n    // leading or trailing whitespace is ignored per the gfm spec\n    cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n  }\n  return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n  const l = str.length;\n  if (l === 0) {\n    return '';\n  }\n\n  // Length of suffix matching the invert condition.\n  let suffLen = 0;\n\n  // Step left until we fail to match the invert condition.\n  while (suffLen < l) {\n    const currChar = str.charAt(l - suffLen - 1);\n    if (currChar === c && !invert) {\n      suffLen++;\n    } else if (currChar !== c && invert) {\n      suffLen++;\n    } else {\n      break;\n    }\n  }\n\n  return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n  if (str.indexOf(b[1]) === -1) {\n    return -1;\n  }\n  const l = str.length;\n  let level = 0,\n    i = 0;\n  for (; i < l; i++) {\n    if (str[i] === '\\\\') {\n      i++;\n    } else if (str[i] === b[0]) {\n      level++;\n    } else if (str[i] === b[1]) {\n      level--;\n      if (level < 0) {\n        return i;\n      }\n    }\n  }\n  return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n  if (opt && opt.sanitize && !opt.silent) {\n    console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n  }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n  if (count < 1) {\n    return '';\n  }\n  let result = '';\n  while (count > 1) {\n    if (count & 1) {\n      result += pattern;\n    }\n    count >>= 1;\n    pattern += pattern;\n  }\n  return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n  const href = link.href;\n  const title = link.title ? escape(link.title) : null;\n  const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n  if (cap[0].charAt(0) !== '!') {\n    lexer.state.inLink = true;\n    const token = {\n      type: 'link',\n      raw,\n      href,\n      title,\n      text,\n      tokens: lexer.inlineTokens(text)\n    };\n    lexer.state.inLink = false;\n    return token;\n  }\n  return {\n    type: 'image',\n    raw,\n    href,\n    title,\n    text: escape(text)\n  };\n}\n\nfunction indentCodeCompensation(raw, text) {\n  const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n  if (matchIndentToCode === null) {\n    return text;\n  }\n\n  const indentToCode = matchIndentToCode[1];\n\n  return text\n    .split('\\n')\n    .map(node => {\n      const matchIndentInNode = node.match(/^\\s+/);\n      if (matchIndentInNode === null) {\n        return node;\n      }\n\n      const [indentInNode] = matchIndentInNode;\n\n      if (indentInNode.length >= indentToCode.length) {\n        return node.slice(indentToCode.length);\n      }\n\n      return node;\n    })\n    .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n  constructor(options) {\n    this.options = options || defaults;\n  }\n\n  space(src) {\n    const cap = this.rules.block.newline.exec(src);\n    if (cap && cap[0].length > 0) {\n      return {\n        type: 'space',\n        raw: cap[0]\n      };\n    }\n  }\n\n  code(src) {\n    const cap = this.rules.block.code.exec(src);\n    if (cap) {\n      const text = cap[0].replace(/^ {1,4}/gm, '');\n      return {\n        type: 'code',\n        raw: cap[0],\n        codeBlockStyle: 'indented',\n        text: !this.options.pedantic\n          ? rtrim(text, '\\n')\n          : text\n      };\n    }\n  }\n\n  fences(src) {\n    const cap = this.rules.block.fences.exec(src);\n    if (cap) {\n      const raw = cap[0];\n      const text = indentCodeCompensation(raw, cap[3] || '');\n\n      return {\n        type: 'code',\n        raw,\n        lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n        text\n      };\n    }\n  }\n\n  heading(src) {\n    const cap = this.rules.block.heading.exec(src);\n    if (cap) {\n      let text = cap[2].trim();\n\n      // remove trailing #s\n      if (/#$/.test(text)) {\n        const trimmed = rtrim(text, '#');\n        if (this.options.pedantic) {\n          text = trimmed.trim();\n        } else if (!trimmed || / $/.test(trimmed)) {\n          // CommonMark requires space before trailing #s\n          text = trimmed.trim();\n        }\n      }\n\n      return {\n        type: 'heading',\n        raw: cap[0],\n        depth: cap[1].length,\n        text,\n        tokens: this.lexer.inline(text)\n      };\n    }\n  }\n\n  hr(src) {\n    const cap = this.rules.block.hr.exec(src);\n    if (cap) {\n      return {\n        type: 'hr',\n        raw: cap[0]\n      };\n    }\n  }\n\n  blockquote(src) {\n    const cap = this.rules.block.blockquote.exec(src);\n    if (cap) {\n      const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n      const top = this.lexer.state.top;\n      this.lexer.state.top = true;\n      const tokens = this.lexer.blockTokens(text);\n      this.lexer.state.top = top;\n      return {\n        type: 'blockquote',\n        raw: cap[0],\n        tokens,\n        text\n      };\n    }\n  }\n\n  list(src) {\n    let cap = this.rules.block.list.exec(src);\n    if (cap) {\n      let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n        line, nextLine, rawLine, itemContents, endEarly;\n\n      let bull = cap[1].trim();\n      const isordered = bull.length > 1;\n\n      const list = {\n        type: 'list',\n        raw: '',\n        ordered: isordered,\n        start: isordered ? +bull.slice(0, -1) : '',\n        loose: false,\n        items: []\n      };\n\n      bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n      if (this.options.pedantic) {\n        bull = isordered ? bull : '[*+-]';\n      }\n\n      // Get next list item\n      const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n      // Check if current bullet point can start a new List Item\n      while (src) {\n        endEarly = false;\n        if (!(cap = itemRegex.exec(src))) {\n          break;\n        }\n\n        if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n          break;\n        }\n\n        raw = cap[0];\n        src = src.substring(raw.length);\n\n        line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n        nextLine = src.split('\\n', 1)[0];\n\n        if (this.options.pedantic) {\n          indent = 2;\n          itemContents = line.trimLeft();\n        } else {\n          indent = cap[2].search(/[^ ]/); // Find first non-space char\n          indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n          itemContents = line.slice(indent);\n          indent += cap[1].length;\n        }\n\n        blankLine = false;\n\n        if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n          raw += nextLine + '\\n';\n          src = src.substring(nextLine.length + 1);\n          endEarly = true;\n        }\n\n        if (!endEarly) {\n          const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n          const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n          const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n          const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n\n          // Check if following lines should be included in List Item\n          while (src) {\n            rawLine = src.split('\\n', 1)[0];\n            nextLine = rawLine;\n\n            // Re-align to follow commonmark nesting rules\n            if (this.options.pedantic) {\n              nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n            }\n\n            // End list item if found code fences\n            if (fencesBeginRegex.test(nextLine)) {\n              break;\n            }\n\n            // End list item if found start of new heading\n            if (headingBeginRegex.test(nextLine)) {\n              break;\n            }\n\n            // End list item if found start of new bullet\n            if (nextBulletRegex.test(nextLine)) {\n              break;\n            }\n\n            // Horizontal rule found\n            if (hrRegex.test(src)) {\n              break;\n            }\n\n            if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n              itemContents += '\\n' + nextLine.slice(indent);\n            } else {\n              // not enough indentation\n              if (blankLine) {\n                break;\n              }\n\n              // paragraph continuation unless last line was a different block level element\n              if (line.search(/[^ ]/) >= 4) { // indented code block\n                break;\n              }\n              if (fencesBeginRegex.test(line)) {\n                break;\n              }\n              if (headingBeginRegex.test(line)) {\n                break;\n              }\n              if (hrRegex.test(line)) {\n                break;\n              }\n\n              itemContents += '\\n' + nextLine;\n            }\n\n            if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n              blankLine = true;\n            }\n\n            raw += rawLine + '\\n';\n            src = src.substring(rawLine.length + 1);\n            line = nextLine.slice(indent);\n          }\n        }\n\n        if (!list.loose) {\n          // If the previous item ended with a blank line, the list is loose\n          if (endsWithBlankLine) {\n            list.loose = true;\n          } else if (/\\n *\\n *$/.test(raw)) {\n            endsWithBlankLine = true;\n          }\n        }\n\n        // Check for task list items\n        if (this.options.gfm) {\n          istask = /^\\[[ xX]\\] /.exec(itemContents);\n          if (istask) {\n            ischecked = istask[0] !== '[ ] ';\n            itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n          }\n        }\n\n        list.items.push({\n          type: 'list_item',\n          raw,\n          task: !!istask,\n          checked: ischecked,\n          loose: false,\n          text: itemContents\n        });\n\n        list.raw += raw;\n      }\n\n      // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n      list.items[list.items.length - 1].raw = raw.trimRight();\n      list.items[list.items.length - 1].text = itemContents.trimRight();\n      list.raw = list.raw.trimRight();\n\n      const l = list.items.length;\n\n      // Item child tokens handled here at end because we needed to have the final item to trim it first\n      for (i = 0; i < l; i++) {\n        this.lexer.state.top = false;\n        list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n        if (!list.loose) {\n          // Check if list should be loose\n          const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n          const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n\n          list.loose = hasMultipleLineBreaks;\n        }\n      }\n\n      // Set all items to loose if list is loose\n      if (list.loose) {\n        for (i = 0; i < l; i++) {\n          list.items[i].loose = true;\n        }\n      }\n\n      return list;\n    }\n  }\n\n  html(src) {\n    const cap = this.rules.block.html.exec(src);\n    if (cap) {\n      const token = {\n        type: 'html',\n        raw: cap[0],\n        pre: !this.options.sanitizer\n          && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n        text: cap[0]\n      };\n      if (this.options.sanitize) {\n        const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n        token.type = 'paragraph';\n        token.text = text;\n        token.tokens = this.lexer.inline(text);\n      }\n      return token;\n    }\n  }\n\n  def(src) {\n    const cap = this.rules.block.def.exec(src);\n    if (cap) {\n      const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n      const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n      const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n      return {\n        type: 'def',\n        tag,\n        raw: cap[0],\n        href,\n        title\n      };\n    }\n  }\n\n  table(src) {\n    const cap = this.rules.block.table.exec(src);\n    if (cap) {\n      const item = {\n        type: 'table',\n        header: splitCells(cap[1]).map(c => { return { text: c }; }),\n        align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n        rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n      };\n\n      if (item.header.length === item.align.length) {\n        item.raw = cap[0];\n\n        let l = item.align.length;\n        let i, j, k, row;\n        for (i = 0; i < l; i++) {\n          if (/^ *-+: *$/.test(item.align[i])) {\n            item.align[i] = 'right';\n          } else if (/^ *:-+: *$/.test(item.align[i])) {\n            item.align[i] = 'center';\n          } else if (/^ *:-+ *$/.test(item.align[i])) {\n            item.align[i] = 'left';\n          } else {\n            item.align[i] = null;\n          }\n        }\n\n        l = item.rows.length;\n        for (i = 0; i < l; i++) {\n          item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n        }\n\n        // parse child tokens inside headers and cells\n\n        // header child tokens\n        l = item.header.length;\n        for (j = 0; j < l; j++) {\n          item.header[j].tokens = this.lexer.inline(item.header[j].text);\n        }\n\n        // cell child tokens\n        l = item.rows.length;\n        for (j = 0; j < l; j++) {\n          row = item.rows[j];\n          for (k = 0; k < row.length; k++) {\n            row[k].tokens = this.lexer.inline(row[k].text);\n          }\n        }\n\n        return item;\n      }\n    }\n  }\n\n  lheading(src) {\n    const cap = this.rules.block.lheading.exec(src);\n    if (cap) {\n      return {\n        type: 'heading',\n        raw: cap[0],\n        depth: cap[2].charAt(0) === '=' ? 1 : 2,\n        text: cap[1],\n        tokens: this.lexer.inline(cap[1])\n      };\n    }\n  }\n\n  paragraph(src) {\n    const cap = this.rules.block.paragraph.exec(src);\n    if (cap) {\n      const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n        ? cap[1].slice(0, -1)\n        : cap[1];\n      return {\n        type: 'paragraph',\n        raw: cap[0],\n        text,\n        tokens: this.lexer.inline(text)\n      };\n    }\n  }\n\n  text(src) {\n    const cap = this.rules.block.text.exec(src);\n    if (cap) {\n      return {\n        type: 'text',\n        raw: cap[0],\n        text: cap[0],\n        tokens: this.lexer.inline(cap[0])\n      };\n    }\n  }\n\n  escape(src) {\n    const cap = this.rules.inline.escape.exec(src);\n    if (cap) {\n      return {\n        type: 'escape',\n        raw: cap[0],\n        text: escape(cap[1])\n      };\n    }\n  }\n\n  tag(src) {\n    const cap = this.rules.inline.tag.exec(src);\n    if (cap) {\n      if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n        this.lexer.state.inLink = true;\n      } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n        this.lexer.state.inLink = false;\n      }\n      if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n        this.lexer.state.inRawBlock = true;\n      } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n        this.lexer.state.inRawBlock = false;\n      }\n\n      return {\n        type: this.options.sanitize\n          ? 'text'\n          : 'html',\n        raw: cap[0],\n        inLink: this.lexer.state.inLink,\n        inRawBlock: this.lexer.state.inRawBlock,\n        text: this.options.sanitize\n          ? (this.options.sanitizer\n            ? this.options.sanitizer(cap[0])\n            : escape(cap[0]))\n          : cap[0]\n      };\n    }\n  }\n\n  link(src) {\n    const cap = this.rules.inline.link.exec(src);\n    if (cap) {\n      const trimmedUrl = cap[2].trim();\n      if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n        // commonmark requires matching angle brackets\n        if (!(/>$/.test(trimmedUrl))) {\n          return;\n        }\n\n        // ending angle bracket cannot be escaped\n        const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n        if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n          return;\n        }\n      } else {\n        // find closing parenthesis\n        const lastParenIndex = findClosingBracket(cap[2], '()');\n        if (lastParenIndex > -1) {\n          const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n          const linkLen = start + cap[1].length + lastParenIndex;\n          cap[2] = cap[2].substring(0, lastParenIndex);\n          cap[0] = cap[0].substring(0, linkLen).trim();\n          cap[3] = '';\n        }\n      }\n      let href = cap[2];\n      let title = '';\n      if (this.options.pedantic) {\n        // split pedantic href and title\n        const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n        if (link) {\n          href = link[1];\n          title = link[3];\n        }\n      } else {\n        title = cap[3] ? cap[3].slice(1, -1) : '';\n      }\n\n      href = href.trim();\n      if (/^</.test(href)) {\n        if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n          // pedantic allows starting angle bracket without ending angle bracket\n          href = href.slice(1);\n        } else {\n          href = href.slice(1, -1);\n        }\n      }\n      return outputLink(cap, {\n        href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n        title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n      }, cap[0], this.lexer);\n    }\n  }\n\n  reflink(src, links) {\n    let cap;\n    if ((cap = this.rules.inline.reflink.exec(src))\n        || (cap = this.rules.inline.nolink.exec(src))) {\n      let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n      link = links[link.toLowerCase()];\n      if (!link) {\n        const text = cap[0].charAt(0);\n        return {\n          type: 'text',\n          raw: text,\n          text\n        };\n      }\n      return outputLink(cap, link, cap[0], this.lexer);\n    }\n  }\n\n  emStrong(src, maskedSrc, prevChar = '') {\n    let match = this.rules.inline.emStrong.lDelim.exec(src);\n    if (!match) return;\n\n    // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n    if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n    const nextChar = match[1] || match[2] || '';\n\n    if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n      const lLength = match[0].length - 1;\n      let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n      const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n      endReg.lastIndex = 0;\n\n      // Clip maskedSrc to same section of string as src (move to lexer?)\n      maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n      while ((match = endReg.exec(maskedSrc)) != null) {\n        rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n        if (!rDelim) continue; // skip single * in __abc*abc__\n\n        rLength = rDelim.length;\n\n        if (match[3] || match[4]) { // found another Left Delim\n          delimTotal += rLength;\n          continue;\n        } else if (match[5] || match[6]) { // either Left or Right Delim\n          if (lLength % 3 && !((lLength + rLength) % 3)) {\n            midDelimTotal += rLength;\n            continue; // CommonMark Emphasis Rules 9-10\n          }\n        }\n\n        delimTotal -= rLength;\n\n        if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n        // Remove extra characters. *a*** -> *a*\n        rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n        const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n        // Create `em` if smallest delimiter has odd char count. *a***\n        if (Math.min(lLength, rLength) % 2) {\n          const text = raw.slice(1, -1);\n          return {\n            type: 'em',\n            raw,\n            text,\n            tokens: this.lexer.inlineTokens(text)\n          };\n        }\n\n        // Create 'strong' if smallest delimiter has even char count. **a***\n        const text = raw.slice(2, -2);\n        return {\n          type: 'strong',\n          raw,\n          text,\n          tokens: this.lexer.inlineTokens(text)\n        };\n      }\n    }\n  }\n\n  codespan(src) {\n    const cap = this.rules.inline.code.exec(src);\n    if (cap) {\n      let text = cap[2].replace(/\\n/g, ' ');\n      const hasNonSpaceChars = /[^ ]/.test(text);\n      const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n      if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n        text = text.substring(1, text.length - 1);\n      }\n      text = escape(text, true);\n      return {\n        type: 'codespan',\n        raw: cap[0],\n        text\n      };\n    }\n  }\n\n  br(src) {\n    const cap = this.rules.inline.br.exec(src);\n    if (cap) {\n      return {\n        type: 'br',\n        raw: cap[0]\n      };\n    }\n  }\n\n  del(src) {\n    const cap = this.rules.inline.del.exec(src);\n    if (cap) {\n      return {\n        type: 'del',\n        raw: cap[0],\n        text: cap[2],\n        tokens: this.lexer.inlineTokens(cap[2])\n      };\n    }\n  }\n\n  autolink(src, mangle) {\n    const cap = this.rules.inline.autolink.exec(src);\n    if (cap) {\n      let text, href;\n      if (cap[2] === '@') {\n        text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n        href = 'mailto:' + text;\n      } else {\n        text = escape(cap[1]);\n        href = text;\n      }\n\n      return {\n        type: 'link',\n        raw: cap[0],\n        text,\n        href,\n        tokens: [\n          {\n            type: 'text',\n            raw: text,\n            text\n          }\n        ]\n      };\n    }\n  }\n\n  url(src, mangle) {\n    let cap;\n    if (cap = this.rules.inline.url.exec(src)) {\n      let text, href;\n      if (cap[2] === '@') {\n        text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n        href = 'mailto:' + text;\n      } else {\n        // do extended autolink path validation\n        let prevCapZero;\n        do {\n          prevCapZero = cap[0];\n          cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n        } while (prevCapZero !== cap[0]);\n        text = escape(cap[0]);\n        if (cap[1] === 'www.') {\n          href = 'http://' + cap[0];\n        } else {\n          href = cap[0];\n        }\n      }\n      return {\n        type: 'link',\n        raw: cap[0],\n        text,\n        href,\n        tokens: [\n          {\n            type: 'text',\n            raw: text,\n            text\n          }\n        ]\n      };\n    }\n  }\n\n  inlineText(src, smartypants) {\n    const cap = this.rules.inline.text.exec(src);\n    if (cap) {\n      let text;\n      if (this.lexer.state.inRawBlock) {\n        text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n      } else {\n        text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n      }\n      return {\n        type: 'text',\n        raw: cap[0],\n        text\n      };\n    }\n  }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n  newline: /^(?: *(?:\\n|$))+/,\n  code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n  fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n  hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n  heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n  blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n  list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n  html: '^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n    + ')',\n  def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n  table: noopTest,\n  lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n  // regex template, placeholders will be replaced according to different paragraph\n  // interruption rules of commonmark and the original markdown spec:\n  _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n  text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n  .replace('label', block._label)\n  .replace('title', block._title)\n  .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n  .replace('bull', block.bullet)\n  .getRegex();\n\nblock.list = edit(block.list)\n  .replace(/bull/g, block.bullet)\n  .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n  .replace('def', '\\\\n+(?=' + block.def.source + ')')\n  .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n  + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n  + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n  + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n  + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n  + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n  .replace('comment', block._comment)\n  .replace('tag', block._tag)\n  .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n  .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n  .replace('hr', block.hr)\n  .replace('heading', ' {0,3}#{1,6} ')\n  .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n  .replace('|table', '')\n  .replace('blockquote', ' {0,3}>')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n  .replace('paragraph', block.paragraph)\n  .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = { ...block };\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = {\n  ...block.normal,\n  table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n    + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\n\nblock.gfm.table = edit(block.gfm.table)\n  .replace('hr', block.hr)\n  .replace('heading', ' {0,3}#{1,6} ')\n  .replace('blockquote', ' {0,3}>')\n  .replace('code', ' {4}[^\\\\n]')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n  .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n  .replace('hr', block.hr)\n  .replace('heading', ' {0,3}#{1,6} ')\n  .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n  .replace('table', block.gfm.table) // interrupt paragraphs with table\n  .replace('blockquote', ' {0,3}>')\n  .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n  .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = {\n  ...block.normal,\n  html: edit(\n    '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n    + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n    + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n    .replace('comment', block._comment)\n    .replace(/tag/g, '(?!(?:'\n      + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n      + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n      + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n    .getRegex(),\n  def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n  heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n  fences: noopTest, // fences not supported\n  lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n  paragraph: edit(block.normal._paragraph)\n    .replace('hr', block.hr)\n    .replace('heading', ' *#{1,6} *[^\\n]')\n    .replace('lheading', block.lheading)\n    .replace('blockquote', ' {0,3}>')\n    .replace('|fences', '')\n    .replace('|list', '')\n    .replace('|html', '')\n    .getRegex()\n};\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n  escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n  autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n  url: noopTest,\n  tag: '^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n  link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n  reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n  nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n  reflinkSearch: 'reflink|nolink(?!\\\\()',\n  emStrong: {\n    lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n    //        (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left.  (5) and (6) can be either Left or Right.\n    //          () Skip orphan inside strong                                      () Consume to delim     (1) #***                (2) a***#, a***                             (3) #***a, ***a                 (4) ***#              (5) #***#                 (6) a***a\n    rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n    rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n  },\n  code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n  br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n  del: noopTest,\n  text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n  punctuation: /^([\\spunctuation])/\n};\n\n// list of punctuation marks from CommonMark spec\n// without * and _ to handle the different emphasis markers * and _\ninline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n// lookbehind is not available on Safari as of version 16\n// inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\ninline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n  .replace(/punct/g, inline._punctuation)\n  .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n  .replace(/punct/g, inline._punctuation)\n  .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n  .replace(/punct/g, inline._punctuation)\n  .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n  .replace('scheme', inline._scheme)\n  .replace('email', inline._email)\n  .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n  .replace('comment', inline._comment)\n  .replace('attribute', inline._attribute)\n  .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n  .replace('label', inline._label)\n  .replace('href', inline._href)\n  .replace('title', inline._title)\n  .getRegex();\n\ninline.reflink = edit(inline.reflink)\n  .replace('label', inline._label)\n  .replace('ref', block._label)\n  .getRegex();\n\ninline.nolink = edit(inline.nolink)\n  .replace('ref', block._label)\n  .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n  .replace('reflink', inline.reflink)\n  .replace('nolink', inline.nolink)\n  .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = { ...inline };\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = {\n  ...inline.normal,\n  strong: {\n    start: /^__|\\*\\*/,\n    middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n    endAst: /\\*\\*(?!\\*)/g,\n    endUnd: /__(?!_)/g\n  },\n  em: {\n    start: /^_|\\*/,\n    middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n    endAst: /\\*(?!\\*)/g,\n    endUnd: /_(?!_)/g\n  },\n  link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n    .replace('label', inline._label)\n    .getRegex(),\n  reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n    .replace('label', inline._label)\n    .getRegex()\n};\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = {\n  ...inline.normal,\n  escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n  _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n  url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n  _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n  del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n  text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n  .replace('email', inline.gfm._extended_email)\n  .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = {\n  ...inline.gfm,\n  br: edit(inline.br).replace('{2,}', '*').getRegex(),\n  text: edit(inline.gfm.text)\n    .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n    .replace(/\\{2,\\}/g, '*')\n    .getRegex()\n};\n\n/**\n * smartypants text replacement\n * @param {string} text\n */\nfunction smartypants(text) {\n  return text\n    // em-dashes\n    .replace(/---/g, '\\u2014')\n    // en-dashes\n    .replace(/--/g, '\\u2013')\n    // opening singles\n    .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n    // closing singles & apostrophes\n    .replace(/'/g, '\\u2019')\n    // opening doubles\n    .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n    // closing doubles\n    .replace(/\"/g, '\\u201d')\n    // ellipses\n    .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n * @param {string} text\n */\nfunction mangle(text) {\n  let out = '',\n    i,\n    ch;\n\n  const l = text.length;\n  for (i = 0; i < l; i++) {\n    ch = text.charCodeAt(i);\n    if (Math.random() > 0.5) {\n      ch = 'x' + ch.toString(16);\n    }\n    out += '&#' + ch + ';';\n  }\n\n  return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n  constructor(options) {\n    this.tokens = [];\n    this.tokens.links = Object.create(null);\n    this.options = options || defaults;\n    this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n    this.tokenizer = this.options.tokenizer;\n    this.tokenizer.options = this.options;\n    this.tokenizer.lexer = this;\n    this.inlineQueue = [];\n    this.state = {\n      inLink: false,\n      inRawBlock: false,\n      top: true\n    };\n\n    const rules = {\n      block: block.normal,\n      inline: inline.normal\n    };\n\n    if (this.options.pedantic) {\n      rules.block = block.pedantic;\n      rules.inline = inline.pedantic;\n    } else if (this.options.gfm) {\n      rules.block = block.gfm;\n      if (this.options.breaks) {\n        rules.inline = inline.breaks;\n      } else {\n        rules.inline = inline.gfm;\n      }\n    }\n    this.tokenizer.rules = rules;\n  }\n\n  /**\n   * Expose Rules\n   */\n  static get rules() {\n    return {\n      block,\n      inline\n    };\n  }\n\n  /**\n   * Static Lex Method\n   */\n  static lex(src, options) {\n    const lexer = new Lexer(options);\n    return lexer.lex(src);\n  }\n\n  /**\n   * Static Lex Inline Method\n   */\n  static lexInline(src, options) {\n    const lexer = new Lexer(options);\n    return lexer.inlineTokens(src);\n  }\n\n  /**\n   * Preprocessing\n   */\n  lex(src) {\n    src = src\n      .replace(/\\r\\n|\\r/g, '\\n');\n\n    this.blockTokens(src, this.tokens);\n\n    let next;\n    while (next = this.inlineQueue.shift()) {\n      this.inlineTokens(next.src, next.tokens);\n    }\n\n    return this.tokens;\n  }\n\n  /**\n   * Lexing\n   */\n  blockTokens(src, tokens = []) {\n    if (this.options.pedantic) {\n      src = src.replace(/\\t/g, '    ').replace(/^ +$/gm, '');\n    } else {\n      src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n        return leading + '    '.repeat(tabs.length);\n      });\n    }\n\n    let token, lastToken, cutSrc, lastParagraphClipped;\n\n    while (src) {\n      if (this.options.extensions\n        && this.options.extensions.block\n        && this.options.extensions.block.some((extTokenizer) => {\n          if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n          return false;\n        })) {\n        continue;\n      }\n\n      // newline\n      if (token = this.tokenizer.space(src)) {\n        src = src.substring(token.raw.length);\n        if (token.raw.length === 1 && tokens.length > 0) {\n          // if there's a single \\n as a spacer, it's terminating the last line,\n          // so move it there so that we don't get unecessary paragraph tags\n          tokens[tokens.length - 1].raw += '\\n';\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // code\n      if (token = this.tokenizer.code(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        // An indented code block cannot interrupt a paragraph.\n        if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // fences\n      if (token = this.tokenizer.fences(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // heading\n      if (token = this.tokenizer.heading(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // hr\n      if (token = this.tokenizer.hr(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // blockquote\n      if (token = this.tokenizer.blockquote(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // list\n      if (token = this.tokenizer.list(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // html\n      if (token = this.tokenizer.html(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // def\n      if (token = this.tokenizer.def(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.raw;\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else if (!this.tokens.links[token.tag]) {\n          this.tokens.links[token.tag] = {\n            href: token.href,\n            title: token.title\n          };\n        }\n        continue;\n      }\n\n      // table (gfm)\n      if (token = this.tokenizer.table(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // lheading\n      if (token = this.tokenizer.lheading(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // top-level paragraph\n      // prevent paragraph consuming extensions by clipping 'src' to extension start\n      cutSrc = src;\n      if (this.options.extensions && this.options.extensions.startBlock) {\n        let startIndex = Infinity;\n        const tempSrc = src.slice(1);\n        let tempStart;\n        this.options.extensions.startBlock.forEach(function(getStartIndex) {\n          tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n          if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n        });\n        if (startIndex < Infinity && startIndex >= 0) {\n          cutSrc = src.substring(0, startIndex + 1);\n        }\n      }\n      if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n        lastToken = tokens[tokens.length - 1];\n        if (lastParagraphClipped && lastToken.type === 'paragraph') {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue.pop();\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        lastParagraphClipped = (cutSrc.length !== src.length);\n        src = src.substring(token.raw.length);\n        continue;\n      }\n\n      // text\n      if (token = this.tokenizer.text(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && lastToken.type === 'text') {\n          lastToken.raw += '\\n' + token.raw;\n          lastToken.text += '\\n' + token.text;\n          this.inlineQueue.pop();\n          this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      if (src) {\n        const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n        if (this.options.silent) {\n          console.error(errMsg);\n          break;\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n\n    this.state.top = true;\n    return tokens;\n  }\n\n  inline(src, tokens = []) {\n    this.inlineQueue.push({ src, tokens });\n    return tokens;\n  }\n\n  /**\n   * Lexing/Compiling\n   */\n  inlineTokens(src, tokens = []) {\n    let token, lastToken, cutSrc;\n\n    // String with links masked to avoid interference with em and strong\n    let maskedSrc = src;\n    let match;\n    let keepPrevChar, prevChar;\n\n    // Mask out reflinks\n    if (this.tokens.links) {\n      const links = Object.keys(this.tokens.links);\n      if (links.length > 0) {\n        while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n          if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n          }\n        }\n      }\n    }\n    // Mask out other blocks\n    while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n      maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n    }\n\n    // Mask out escaped em & strong delimiters\n    while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n      maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n      this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n    }\n\n    while (src) {\n      if (!keepPrevChar) {\n        prevChar = '';\n      }\n      keepPrevChar = false;\n\n      // extensions\n      if (this.options.extensions\n        && this.options.extensions.inline\n        && this.options.extensions.inline.some((extTokenizer) => {\n          if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n          return false;\n        })) {\n        continue;\n      }\n\n      // escape\n      if (token = this.tokenizer.escape(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // tag\n      if (token = this.tokenizer.tag(src)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // link\n      if (token = this.tokenizer.link(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // reflink, nolink\n      if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n        src = src.substring(token.raw.length);\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      // em & strong\n      if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // code\n      if (token = this.tokenizer.codespan(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // br\n      if (token = this.tokenizer.br(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // del (gfm)\n      if (token = this.tokenizer.del(src)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // autolink\n      if (token = this.tokenizer.autolink(src, mangle)) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // url (gfm)\n      if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n        src = src.substring(token.raw.length);\n        tokens.push(token);\n        continue;\n      }\n\n      // text\n      // prevent inlineText consuming extensions by clipping 'src' to extension start\n      cutSrc = src;\n      if (this.options.extensions && this.options.extensions.startInline) {\n        let startIndex = Infinity;\n        const tempSrc = src.slice(1);\n        let tempStart;\n        this.options.extensions.startInline.forEach(function(getStartIndex) {\n          tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n          if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n        });\n        if (startIndex < Infinity && startIndex >= 0) {\n          cutSrc = src.substring(0, startIndex + 1);\n        }\n      }\n      if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n        src = src.substring(token.raw.length);\n        if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n          prevChar = token.raw.slice(-1);\n        }\n        keepPrevChar = true;\n        lastToken = tokens[tokens.length - 1];\n        if (lastToken && lastToken.type === 'text') {\n          lastToken.raw += token.raw;\n          lastToken.text += token.text;\n        } else {\n          tokens.push(token);\n        }\n        continue;\n      }\n\n      if (src) {\n        const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n        if (this.options.silent) {\n          console.error(errMsg);\n          break;\n        } else {\n          throw new Error(errMsg);\n        }\n      }\n    }\n\n    return tokens;\n  }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n  constructor(options) {\n    this.options = options || defaults;\n  }\n\n  code(code, infostring, escaped) {\n    const lang = (infostring || '').match(/\\S*/)[0];\n    if (this.options.highlight) {\n      const out = this.options.highlight(code, lang);\n      if (out != null && out !== code) {\n        escaped = true;\n        code = out;\n      }\n    }\n\n    code = code.replace(/\\n$/, '') + '\\n';\n\n    if (!lang) {\n      return '<pre><code>'\n        + (escaped ? code : escape(code, true))\n        + '</code></pre>\\n';\n    }\n\n    return '<pre><code class=\"'\n      + this.options.langPrefix\n      + escape(lang)\n      + '\">'\n      + (escaped ? code : escape(code, true))\n      + '</code></pre>\\n';\n  }\n\n  /**\n   * @param {string} quote\n   */\n  blockquote(quote) {\n    return `<blockquote>\\n${quote}</blockquote>\\n`;\n  }\n\n  html(html) {\n    return html;\n  }\n\n  /**\n   * @param {string} text\n   * @param {string} level\n   * @param {string} raw\n   * @param {any} slugger\n   */\n  heading(text, level, raw, slugger) {\n    if (this.options.headerIds) {\n      const id = this.options.headerPrefix + slugger.slug(raw);\n      return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n    }\n\n    // ignore IDs\n    return `<h${level}>${text}</h${level}>\\n`;\n  }\n\n  hr() {\n    return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n  }\n\n  list(body, ordered, start) {\n    const type = ordered ? 'ol' : 'ul',\n      startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n    return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n  }\n\n  /**\n   * @param {string} text\n   */\n  listitem(text) {\n    return `<li>${text}</li>\\n`;\n  }\n\n  checkbox(checked) {\n    return '<input '\n      + (checked ? 'checked=\"\" ' : '')\n      + 'disabled=\"\" type=\"checkbox\"'\n      + (this.options.xhtml ? ' /' : '')\n      + '> ';\n  }\n\n  /**\n   * @param {string} text\n   */\n  paragraph(text) {\n    return `<p>${text}</p>\\n`;\n  }\n\n  /**\n   * @param {string} header\n   * @param {string} body\n   */\n  table(header, body) {\n    if (body) body = `<tbody>${body}</tbody>`;\n\n    return '<table>\\n'\n      + '<thead>\\n'\n      + header\n      + '</thead>\\n'\n      + body\n      + '</table>\\n';\n  }\n\n  /**\n   * @param {string} content\n   */\n  tablerow(content) {\n    return `<tr>\\n${content}</tr>\\n`;\n  }\n\n  tablecell(content, flags) {\n    const type = flags.header ? 'th' : 'td';\n    const tag = flags.align\n      ? `<${type} align=\"${flags.align}\">`\n      : `<${type}>`;\n    return tag + content + `</${type}>\\n`;\n  }\n\n  /**\n   * span level renderer\n   * @param {string} text\n   */\n  strong(text) {\n    return `<strong>${text}</strong>`;\n  }\n\n  /**\n   * @param {string} text\n   */\n  em(text) {\n    return `<em>${text}</em>`;\n  }\n\n  /**\n   * @param {string} text\n   */\n  codespan(text) {\n    return `<code>${text}</code>`;\n  }\n\n  br() {\n    return this.options.xhtml ? '<br/>' : '<br>';\n  }\n\n  /**\n   * @param {string} text\n   */\n  del(text) {\n    return `<del>${text}</del>`;\n  }\n\n  /**\n   * @param {string} href\n   * @param {string} title\n   * @param {string} text\n   */\n  link(href, title, text) {\n    href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n    if (href === null) {\n      return text;\n    }\n    let out = '<a href=\"' + href + '\"';\n    if (title) {\n      out += ' title=\"' + title + '\"';\n    }\n    out += '>' + text + '</a>';\n    return out;\n  }\n\n  /**\n   * @param {string} href\n   * @param {string} title\n   * @param {string} text\n   */\n  image(href, title, text) {\n    href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n    if (href === null) {\n      return text;\n    }\n\n    let out = `<img src=\"${href}\" alt=\"${text}\"`;\n    if (title) {\n      out += ` title=\"${title}\"`;\n    }\n    out += this.options.xhtml ? '/>' : '>';\n    return out;\n  }\n\n  text(text) {\n    return text;\n  }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n  // no need for block level renderers\n  strong(text) {\n    return text;\n  }\n\n  em(text) {\n    return text;\n  }\n\n  codespan(text) {\n    return text;\n  }\n\n  del(text) {\n    return text;\n  }\n\n  html(text) {\n    return text;\n  }\n\n  text(text) {\n    return text;\n  }\n\n  link(href, title, text) {\n    return '' + text;\n  }\n\n  image(href, title, text) {\n    return '' + text;\n  }\n\n  br() {\n    return '';\n  }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n  constructor() {\n    this.seen = {};\n  }\n\n  /**\n   * @param {string} value\n   */\n  serialize(value) {\n    return value\n      .toLowerCase()\n      .trim()\n      // remove html tags\n      .replace(/<[!\\/a-z].*?>/ig, '')\n      // remove unwanted chars\n      .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n      .replace(/\\s/g, '-');\n  }\n\n  /**\n   * Finds the next safe (unique) slug to use\n   * @param {string} originalSlug\n   * @param {boolean} isDryRun\n   */\n  getNextSafeSlug(originalSlug, isDryRun) {\n    let slug = originalSlug;\n    let occurenceAccumulator = 0;\n    if (this.seen.hasOwnProperty(slug)) {\n      occurenceAccumulator = this.seen[originalSlug];\n      do {\n        occurenceAccumulator++;\n        slug = originalSlug + '-' + occurenceAccumulator;\n      } while (this.seen.hasOwnProperty(slug));\n    }\n    if (!isDryRun) {\n      this.seen[originalSlug] = occurenceAccumulator;\n      this.seen[slug] = 0;\n    }\n    return slug;\n  }\n\n  /**\n   * Convert string to unique id\n   * @param {object} [options]\n   * @param {boolean} [options.dryrun] Generates the next unique slug without\n   * updating the internal accumulator.\n   */\n  slug(value, options = {}) {\n    const slug = this.serialize(value);\n    return this.getNextSafeSlug(slug, options.dryrun);\n  }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n  constructor(options) {\n    this.options = options || defaults;\n    this.options.renderer = this.options.renderer || new Renderer();\n    this.renderer = this.options.renderer;\n    this.renderer.options = this.options;\n    this.textRenderer = new TextRenderer();\n    this.slugger = new Slugger();\n  }\n\n  /**\n   * Static Parse Method\n   */\n  static parse(tokens, options) {\n    const parser = new Parser(options);\n    return parser.parse(tokens);\n  }\n\n  /**\n   * Static Parse Inline Method\n   */\n  static parseInline(tokens, options) {\n    const parser = new Parser(options);\n    return parser.parseInline(tokens);\n  }\n\n  /**\n   * Parse Loop\n   */\n  parse(tokens, top = true) {\n    let out = '',\n      i,\n      j,\n      k,\n      l2,\n      l3,\n      row,\n      cell,\n      header,\n      body,\n      token,\n      ordered,\n      start,\n      loose,\n      itemBody,\n      item,\n      checked,\n      task,\n      checkbox,\n      ret;\n\n    const l = tokens.length;\n    for (i = 0; i < l; i++) {\n      token = tokens[i];\n\n      // Run any renderer extensions\n      if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n        ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n        if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n          out += ret || '';\n          continue;\n        }\n      }\n\n      switch (token.type) {\n        case 'space': {\n          continue;\n        }\n        case 'hr': {\n          out += this.renderer.hr();\n          continue;\n        }\n        case 'heading': {\n          out += this.renderer.heading(\n            this.parseInline(token.tokens),\n            token.depth,\n            unescape(this.parseInline(token.tokens, this.textRenderer)),\n            this.slugger);\n          continue;\n        }\n        case 'code': {\n          out += this.renderer.code(token.text,\n            token.lang,\n            token.escaped);\n          continue;\n        }\n        case 'table': {\n          header = '';\n\n          // header\n          cell = '';\n          l2 = token.header.length;\n          for (j = 0; j < l2; j++) {\n            cell += this.renderer.tablecell(\n              this.parseInline(token.header[j].tokens),\n              { header: true, align: token.align[j] }\n            );\n          }\n          header += this.renderer.tablerow(cell);\n\n          body = '';\n          l2 = token.rows.length;\n          for (j = 0; j < l2; j++) {\n            row = token.rows[j];\n\n            cell = '';\n            l3 = row.length;\n            for (k = 0; k < l3; k++) {\n              cell += this.renderer.tablecell(\n                this.parseInline(row[k].tokens),\n                { header: false, align: token.align[k] }\n              );\n            }\n\n            body += this.renderer.tablerow(cell);\n          }\n          out += this.renderer.table(header, body);\n          continue;\n        }\n        case 'blockquote': {\n          body = this.parse(token.tokens);\n          out += this.renderer.blockquote(body);\n          continue;\n        }\n        case 'list': {\n          ordered = token.ordered;\n          start = token.start;\n          loose = token.loose;\n          l2 = token.items.length;\n\n          body = '';\n          for (j = 0; j < l2; j++) {\n            item = token.items[j];\n            checked = item.checked;\n            task = item.task;\n\n            itemBody = '';\n            if (item.task) {\n              checkbox = this.renderer.checkbox(checked);\n              if (loose) {\n                if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                  item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                  if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                    item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                  }\n                } else {\n                  item.tokens.unshift({\n                    type: 'text',\n                    text: checkbox\n                  });\n                }\n              } else {\n                itemBody += checkbox;\n              }\n            }\n\n            itemBody += this.parse(item.tokens, loose);\n            body += this.renderer.listitem(itemBody, task, checked);\n          }\n\n          out += this.renderer.list(body, ordered, start);\n          continue;\n        }\n        case 'html': {\n          // TODO parse inline content if parameter markdown=1\n          out += this.renderer.html(token.text);\n          continue;\n        }\n        case 'paragraph': {\n          out += this.renderer.paragraph(this.parseInline(token.tokens));\n          continue;\n        }\n        case 'text': {\n          body = token.tokens ? this.parseInline(token.tokens) : token.text;\n          while (i + 1 < l && tokens[i + 1].type === 'text') {\n            token = tokens[++i];\n            body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n          }\n          out += top ? this.renderer.paragraph(body) : body;\n          continue;\n        }\n\n        default: {\n          const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n          if (this.options.silent) {\n            console.error(errMsg);\n            return;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n    }\n\n    return out;\n  }\n\n  /**\n   * Parse Inline Tokens\n   */\n  parseInline(tokens, renderer) {\n    renderer = renderer || this.renderer;\n    let out = '',\n      i,\n      token,\n      ret;\n\n    const l = tokens.length;\n    for (i = 0; i < l; i++) {\n      token = tokens[i];\n\n      // Run any renderer extensions\n      if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n        ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n        if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n          out += ret || '';\n          continue;\n        }\n      }\n\n      switch (token.type) {\n        case 'escape': {\n          out += renderer.text(token.text);\n          break;\n        }\n        case 'html': {\n          out += renderer.html(token.text);\n          break;\n        }\n        case 'link': {\n          out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'image': {\n          out += renderer.image(token.href, token.title, token.text);\n          break;\n        }\n        case 'strong': {\n          out += renderer.strong(this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'em': {\n          out += renderer.em(this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'codespan': {\n          out += renderer.codespan(token.text);\n          break;\n        }\n        case 'br': {\n          out += renderer.br();\n          break;\n        }\n        case 'del': {\n          out += renderer.del(this.parseInline(token.tokens, renderer));\n          break;\n        }\n        case 'text': {\n          out += renderer.text(token.text);\n          break;\n        }\n        default: {\n          const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n          if (this.options.silent) {\n            console.error(errMsg);\n            return;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n    }\n    return out;\n  }\n}\n\nclass Hooks {\n  constructor(options) {\n    this.options = options || defaults;\n  }\n\n  static passThroughHooks = new Set([\n    'preprocess',\n    'postprocess'\n  ]);\n\n  /**\n   * Process markdown before marked\n   */\n  preprocess(markdown) {\n    return markdown;\n  }\n\n  /**\n   * Process HTML after marked is finished\n   */\n  postprocess(html) {\n    return html;\n  }\n}\n\nfunction onError(silent, async, callback) {\n  return (e) => {\n    e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n    if (silent) {\n      const msg = '<p>An error occurred:</p><pre>'\n        + escape(e.message + '', true)\n        + '</pre>';\n      if (async) {\n        return Promise.resolve(msg);\n      }\n      if (callback) {\n        callback(null, msg);\n        return;\n      }\n      return msg;\n    }\n\n    if (async) {\n      return Promise.reject(e);\n    }\n    if (callback) {\n      callback(e);\n      return;\n    }\n    throw e;\n  };\n}\n\nfunction parseMarkdown(lexer, parser) {\n  return (src, opt, callback) => {\n    if (typeof opt === 'function') {\n      callback = opt;\n      opt = null;\n    }\n\n    const origOpt = { ...opt };\n    opt = { ...marked.defaults, ...origOpt };\n    const throwError = onError(opt.silent, opt.async, callback);\n\n    // throw error in case of non string input\n    if (typeof src === 'undefined' || src === null) {\n      return throwError(new Error('marked(): input parameter is undefined or null'));\n    }\n    if (typeof src !== 'string') {\n      return throwError(new Error('marked(): input parameter is of type '\n        + Object.prototype.toString.call(src) + ', string expected'));\n    }\n\n    checkSanitizeDeprecation(opt);\n\n    if (opt.hooks) {\n      opt.hooks.options = opt;\n    }\n\n    if (callback) {\n      const highlight = opt.highlight;\n      let tokens;\n\n      try {\n        if (opt.hooks) {\n          src = opt.hooks.preprocess(src);\n        }\n        tokens = lexer(src, opt);\n      } catch (e) {\n        return throwError(e);\n      }\n\n      const done = function(err) {\n        let out;\n\n        if (!err) {\n          try {\n            if (opt.walkTokens) {\n              marked.walkTokens(tokens, opt.walkTokens);\n            }\n            out = parser(tokens, opt);\n            if (opt.hooks) {\n              out = opt.hooks.postprocess(out);\n            }\n          } catch (e) {\n            err = e;\n          }\n        }\n\n        opt.highlight = highlight;\n\n        return err\n          ? throwError(err)\n          : callback(null, out);\n      };\n\n      if (!highlight || highlight.length < 3) {\n        return done();\n      }\n\n      delete opt.highlight;\n\n      if (!tokens.length) return done();\n\n      let pending = 0;\n      marked.walkTokens(tokens, function(token) {\n        if (token.type === 'code') {\n          pending++;\n          setTimeout(() => {\n            highlight(token.text, token.lang, function(err, code) {\n              if (err) {\n                return done(err);\n              }\n              if (code != null && code !== token.text) {\n                token.text = code;\n                token.escaped = true;\n              }\n\n              pending--;\n              if (pending === 0) {\n                done();\n              }\n            });\n          }, 0);\n        }\n      });\n\n      if (pending === 0) {\n        done();\n      }\n\n      return;\n    }\n\n    if (opt.async) {\n      return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n        .then(src => lexer(src, opt))\n        .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n        .then(tokens => parser(tokens, opt))\n        .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n        .catch(throwError);\n    }\n\n    try {\n      if (opt.hooks) {\n        src = opt.hooks.preprocess(src);\n      }\n      const tokens = lexer(src, opt);\n      if (opt.walkTokens) {\n        marked.walkTokens(tokens, opt.walkTokens);\n      }\n      let html = parser(tokens, opt);\n      if (opt.hooks) {\n        html = opt.hooks.postprocess(html);\n      }\n      return html;\n    } catch (e) {\n      return throwError(e);\n    }\n  };\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n  return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n  marked.defaults = { ...marked.defaults, ...opt };\n  changeDefaults(marked.defaults);\n  return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n  const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n\n  args.forEach((pack) => {\n    // copy options to new object\n    const opts = { ...pack };\n\n    // set async to true if it was set to true before\n    opts.async = marked.defaults.async || opts.async || false;\n\n    // ==-- Parse \"addon\" extensions --== //\n    if (pack.extensions) {\n      pack.extensions.forEach((ext) => {\n        if (!ext.name) {\n          throw new Error('extension name required');\n        }\n        if (ext.renderer) { // Renderer extensions\n          const prevRenderer = extensions.renderers[ext.name];\n          if (prevRenderer) {\n            // Replace extension with func to run new extension but fall back if false\n            extensions.renderers[ext.name] = function(...args) {\n              let ret = ext.renderer.apply(this, args);\n              if (ret === false) {\n                ret = prevRenderer.apply(this, args);\n              }\n              return ret;\n            };\n          } else {\n            extensions.renderers[ext.name] = ext.renderer;\n          }\n        }\n        if (ext.tokenizer) { // Tokenizer Extensions\n          if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n            throw new Error(\"extension level must be 'block' or 'inline'\");\n          }\n          if (extensions[ext.level]) {\n            extensions[ext.level].unshift(ext.tokenizer);\n          } else {\n            extensions[ext.level] = [ext.tokenizer];\n          }\n          if (ext.start) { // Function to check for start of token\n            if (ext.level === 'block') {\n              if (extensions.startBlock) {\n                extensions.startBlock.push(ext.start);\n              } else {\n                extensions.startBlock = [ext.start];\n              }\n            } else if (ext.level === 'inline') {\n              if (extensions.startInline) {\n                extensions.startInline.push(ext.start);\n              } else {\n                extensions.startInline = [ext.start];\n              }\n            }\n          }\n        }\n        if (ext.childTokens) { // Child tokens to be visited by walkTokens\n          extensions.childTokens[ext.name] = ext.childTokens;\n        }\n      });\n      opts.extensions = extensions;\n    }\n\n    // ==-- Parse \"overwrite\" extensions --== //\n    if (pack.renderer) {\n      const renderer = marked.defaults.renderer || new Renderer();\n      for (const prop in pack.renderer) {\n        const prevRenderer = renderer[prop];\n        // Replace renderer with func to run extension, but fall back if false\n        renderer[prop] = (...args) => {\n          let ret = pack.renderer[prop].apply(renderer, args);\n          if (ret === false) {\n            ret = prevRenderer.apply(renderer, args);\n          }\n          return ret;\n        };\n      }\n      opts.renderer = renderer;\n    }\n    if (pack.tokenizer) {\n      const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n      for (const prop in pack.tokenizer) {\n        const prevTokenizer = tokenizer[prop];\n        // Replace tokenizer with func to run extension, but fall back if false\n        tokenizer[prop] = (...args) => {\n          let ret = pack.tokenizer[prop].apply(tokenizer, args);\n          if (ret === false) {\n            ret = prevTokenizer.apply(tokenizer, args);\n          }\n          return ret;\n        };\n      }\n      opts.tokenizer = tokenizer;\n    }\n\n    // ==-- Parse Hooks extensions --== //\n    if (pack.hooks) {\n      const hooks = marked.defaults.hooks || new Hooks();\n      for (const prop in pack.hooks) {\n        const prevHook = hooks[prop];\n        if (Hooks.passThroughHooks.has(prop)) {\n          hooks[prop] = (arg) => {\n            if (marked.defaults.async) {\n              return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {\n                return prevHook.call(hooks, ret);\n              });\n            }\n\n            const ret = pack.hooks[prop].call(hooks, arg);\n            return prevHook.call(hooks, ret);\n          };\n        } else {\n          hooks[prop] = (...args) => {\n            let ret = pack.hooks[prop].apply(hooks, args);\n            if (ret === false) {\n              ret = prevHook.apply(hooks, args);\n            }\n            return ret;\n          };\n        }\n      }\n      opts.hooks = hooks;\n    }\n\n    // ==-- Parse WalkTokens extensions --== //\n    if (pack.walkTokens) {\n      const walkTokens = marked.defaults.walkTokens;\n      opts.walkTokens = function(token) {\n        let values = [];\n        values.push(pack.walkTokens.call(this, token));\n        if (walkTokens) {\n          values = values.concat(walkTokens.call(this, token));\n        }\n        return values;\n      };\n    }\n\n    marked.setOptions(opts);\n  });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n  let values = [];\n  for (const token of tokens) {\n    values = values.concat(callback.call(marked, token));\n    switch (token.type) {\n      case 'table': {\n        for (const cell of token.header) {\n          values = values.concat(marked.walkTokens(cell.tokens, callback));\n        }\n        for (const row of token.rows) {\n          for (const cell of row) {\n            values = values.concat(marked.walkTokens(cell.tokens, callback));\n          }\n        }\n        break;\n      }\n      case 'list': {\n        values = values.concat(marked.walkTokens(token.items, callback));\n        break;\n      }\n      default: {\n        if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n          marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n            values = values.concat(marked.walkTokens(token[childTokens], callback));\n          });\n        } else if (token.tokens) {\n          values = values.concat(marked.walkTokens(token.tokens, callback));\n        }\n      }\n    }\n  }\n  return values;\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.Hooks = Hooks;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _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}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}"],"names":["DynamicFormMarkdownService","constructor","httpClient","sanitizer","marked","setOptions","renderer","createRenderer","headerIds","compile","markdown","options","securityContext","getSecurityContext","sanitize","parseMarkdown","compileFromSource","source","get","responseType","pipe","map","Renderer","link","href","title","text","prototype","call","replace","parse","SecurityContext","NONE","HTML","i1","HttpClient","i2","DomSanitizer","factory","ɵfac","Injectable","DynamicFormMarkdownComponent","DynamicFormElementBase","markdownService","ngOnInit","_markdownSubject","BehaviorSubject","template","markdown$","asObservable","switchMap","value","definition","of","ngDoCheck","next","ɵcmp","selectors","features","ctx","hidden","dependencies","i2$1","NgClass","AsyncPipe","encapsulation","Component","dynamicFormMarkdownType","type","component","libraryName","dynamicFormLibrary","name","DynamicFormMarkdownModule","ɵmod","declarations","imports","CommonModule","i1$1","DynamicFormConfigModule","exports","ɵinj","withElement","NgModule","args","providers","getDefaults","async","baseUrl","breaks","extensions","gfm","headerPrefix","highlight","hooks","langPrefix","mangle","pedantic","silent","smartypants","tokenizer","walkTokens","xhtml","defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","RegExp","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","test","unescapeTest","unescape","_","n","toLowerCase","charAt","String","fromCharCode","parseInt","substring","caret","edit","regex","opt","obj","val","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","prot","decodeURIComponent","e","indexOf","resolveUrl","encodeURI","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","exec","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","split","i","trim","shift","length","pop","splice","push","c","invert","l","suffLen","currChar","slice","findClosingBracket","b","level","checkSanitizeDeprecation","console","warn","repeatString","pattern","result","outputLink","cap","raw","lexer","state","inLink","token","tokens","inlineTokens","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","join","Tokenizer","space","src","rules","block","newline","code","codeBlockStyle","fences","lang","inline","_escapes","heading","trimmed","depth","hr","blockquote","top","blockTokens","list","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","items","itemRegex","t","repeat","trimLeft","search","nextBulletRegex","Math","min","hrRegex","fencesBeginRegex","headingBeginRegex","task","checked","trimRight","spacers","filter","hasMultipleLineBreaks","some","pre","def","tag","table","item","header","align","rows","j","k","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","out","charCodeAt","random","toString","Lexer","Object","create","inlineQueue","lex","lexInline","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","error","Error","keepPrevChar","keys","includes","lastIndexOf","startInline","infostring","quote","slugger","id","slug","body","startatt","listitem","checkbox","tablerow","content","tablecell","flags","image","TextRenderer","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","hasOwnProperty","dryrun","Parser","textRenderer","parser","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","Hooks","preprocess","postprocess","_defineProperty","Set","onError","callback","message","msg","Promise","resolve","reject","origOpt","throwError","done","err","pending","setTimeout","then","all","catch","use","childTokens","pack","opts","ext","prevRenderer","apply","prop","prevTokenizer","prevHook","passThroughHooks","has","arg","values","concat"],"sourceRoot":"webpack:///","x_google_ignoreList":[6,7,8,9,10]}