{"version":3,"file":"dep-7778d2e7.mjs","sources":["../../node_modules/markdown-it-emoji/lib/data/shortcuts.js","../../node_modules/markdown-it-emoji/lib/render.js","../../node_modules/markdown-it-emoji/lib/replace.js","../../node_modules/markdown-it-emoji/lib/normalize_opts.js","../../node_modules/markdown-it-emoji/bare.js","../../node_modules/markdown-it-emoji/index.js","../../node_modules/markdown-it-sub/index.js","../../node_modules/markdown-it-sup/index.js","../../node_modules/markdown-it-footnote/index.js","../../node_modules/markdown-it-deflist/index.js","../../node_modules/markdown-it-abbr/index.js","../../node_modules/markdown-it-ins/index.js","../../node_modules/markdown-it-mark/index.js","../../node_modules/markdown-it-task-lists/index.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/types/bmp.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/types/gif.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/types/jpg.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/types/png.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/readUInt.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/types/tiff.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/detector.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/imsize/index.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/helpers/parse_image_size.js","../../node_modules/@tlbs/markdown-it-imsize-static-require/lib/index.js","../../node_modules/markdown-it-attrs/utils.js","../../node_modules/markdown-it-attrs/patterns.js","../../node_modules/markdown-it-attrs/index.js","../../node_modules/markdown-it-multimd-table/lib/dfa.js","../../node_modules/markdown-it-multimd-table/index.js","../../node_modules/markdown-it-color/dist/index.js","../../src/utils/markdownPlugin/markdownPlugin.ts"],"sourcesContent":["// Emoticons -> Emoji mapping.\n//\n// (!) Some patterns skipped, to avoid collisions\n// without increase matcher complicity. Than can change in future.\n//\n// Places to look for more emoticons info:\n//\n// - http://en.wikipedia.org/wiki/List_of_emoticons#Western\n// - https://github.com/wooorm/emoticon/blob/master/Support.md\n// - http://factoryjoe.com/projects/emoticons/\n//\n'use strict';\n\nmodule.exports = {\n  angry:            [ '>:(', '>:-(' ],\n  blush:            [ ':\")', ':-\")' ],\n  broken_heart:     [ '</3', '<\\\\3' ],\n  // :\\ and :-\\ not used because of conflict with markdown escaping\n  confused:         [ ':/', ':-/' ], // twemoji shows question\n  cry:              [ \":'(\", \":'-(\", ':,(', ':,-(' ],\n  frowning:         [ ':(', ':-(' ],\n  heart:            [ '<3' ],\n  imp:              [ ']:(', ']:-(' ],\n  innocent:         [ 'o:)', 'O:)', 'o:-)', 'O:-)', '0:)', '0:-)' ],\n  joy:              [ \":')\", \":'-)\", ':,)', ':,-)', \":'D\", \":'-D\", ':,D', ':,-D' ],\n  kissing:          [ ':*', ':-*' ],\n  laughing:         [ 'x-)', 'X-)' ],\n  neutral_face:     [ ':|', ':-|' ],\n  open_mouth:       [ ':o', ':-o', ':O', ':-O' ],\n  rage:             [ ':@', ':-@' ],\n  smile:            [ ':D', ':-D' ],\n  smiley:           [ ':)', ':-)' ],\n  smiling_imp:      [ ']:)', ']:-)' ],\n  sob:              [ \":,'(\", \":,'-(\", ';(', ';-(' ],\n  stuck_out_tongue: [ ':P', ':-P' ],\n  sunglasses:       [ '8-)', 'B-)' ],\n  sweat:            [ ',:(', ',:-(' ],\n  sweat_smile:      [ ',:)', ',:-)' ],\n  unamused:         [ ':s', ':-S', ':z', ':-Z', ':$', ':-$' ],\n  wink:             [ ';)', ';-)' ]\n};\n","'use strict';\n\nmodule.exports = function emoji_html(tokens, idx /*, options, env */) {\n  return tokens[idx].content;\n};\n","// Emojies & shortcuts replacement logic.\n//\n// Note: In theory, it could be faster to parse :smile: in inline chain and\n// leave only shortcuts here. But, who care...\n//\n\n'use strict';\n\n\nmodule.exports = function create_rule(md, emojies, shortcuts, scanRE, replaceRE) {\n  var arrayReplaceAt = md.utils.arrayReplaceAt,\n      ucm = md.utils.lib.ucmicro,\n      ZPCc = new RegExp([ ucm.Z.source, ucm.P.source, ucm.Cc.source ].join('|'));\n\n  function splitTextToken(text, level, Token) {\n    var token, last_pos = 0, nodes = [];\n\n    text.replace(replaceRE, function (match, offset, src) {\n      var emoji_name;\n      // Validate emoji name\n      if (shortcuts.hasOwnProperty(match)) {\n        // replace shortcut with full name\n        emoji_name = shortcuts[match];\n\n        // Don't allow letters before any shortcut (as in no \":/\" in http://)\n        if (offset > 0 && !ZPCc.test(src[offset - 1])) {\n          return;\n        }\n\n        // Don't allow letters after any shortcut\n        if (offset + match.length < src.length && !ZPCc.test(src[offset + match.length])) {\n          return;\n        }\n      } else {\n        emoji_name = match.slice(1, -1);\n      }\n\n      // Add new tokens to pending list\n      if (offset > last_pos) {\n        token         = new Token('text', '', 0);\n        token.content = text.slice(last_pos, offset);\n        nodes.push(token);\n      }\n\n      token         = new Token('emoji', '', 0);\n      token.markup  = emoji_name;\n      token.content = emojies[emoji_name];\n      nodes.push(token);\n\n      last_pos = offset + match.length;\n    });\n\n    if (last_pos < text.length) {\n      token         = new Token('text', '', 0);\n      token.content = text.slice(last_pos);\n      nodes.push(token);\n    }\n\n    return nodes;\n  }\n\n  return function emoji_replace(state) {\n    var i, j, l, tokens, token,\n        blockTokens = state.tokens,\n        autolinkLevel = 0;\n\n    for (j = 0, l = blockTokens.length; j < l; j++) {\n      if (blockTokens[j].type !== 'inline') { continue; }\n      tokens = blockTokens[j].children;\n\n      // We scan from the end, to keep position when new tags added.\n      // Use reversed logic in links start/end match\n      for (i = tokens.length - 1; i >= 0; i--) {\n        token = tokens[i];\n\n        if (token.type === 'link_open' || token.type === 'link_close') {\n          if (token.info === 'auto') { autolinkLevel -= token.nesting; }\n        }\n\n        if (token.type === 'text' && autolinkLevel === 0 && scanRE.test(token.content)) {\n          // replace current node\n          blockTokens[j].children = tokens = arrayReplaceAt(\n            tokens, i, splitTextToken(token.content, token.level, state.Token)\n          );\n        }\n      }\n    }\n  };\n};\n","// Convert input options to more useable format\n// and compile search regexp\n\n'use strict';\n\n\nfunction quoteRE(str) {\n  return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n}\n\n\nmodule.exports = function normalize_opts(options) {\n  var emojies = options.defs,\n      shortcuts;\n\n  // Filter emojies by whitelist, if needed\n  if (options.enabled.length) {\n    emojies = Object.keys(emojies).reduce(function (acc, key) {\n      if (options.enabled.indexOf(key) >= 0) {\n        acc[key] = emojies[key];\n      }\n      return acc;\n    }, {});\n  }\n\n  // Flatten shortcuts to simple object: { alias: emoji_name }\n  shortcuts = Object.keys(options.shortcuts).reduce(function (acc, key) {\n    // Skip aliases for filtered emojies, to reduce regexp\n    if (!emojies[key]) { return acc; }\n\n    if (Array.isArray(options.shortcuts[key])) {\n      options.shortcuts[key].forEach(function (alias) {\n        acc[alias] = key;\n      });\n      return acc;\n    }\n\n    acc[options.shortcuts[key]] = key;\n    return acc;\n  }, {});\n\n  var keys = Object.keys(emojies),\n      names;\n\n  // If no definitions are given, return empty regex to avoid replacements with 'undefined'.\n  if (keys.length === 0) {\n    names = '^$';\n  } else {\n    // Compile regexp\n    names = keys\n      .map(function (name) { return ':' + name + ':'; })\n      .concat(Object.keys(shortcuts))\n      .sort()\n      .reverse()\n      .map(function (name) { return quoteRE(name); })\n      .join('|');\n  }\n  var scanRE = RegExp(names);\n  var replaceRE = RegExp(names, 'g');\n\n  return {\n    defs: emojies,\n    shortcuts: shortcuts,\n    scanRE: scanRE,\n    replaceRE: replaceRE\n  };\n};\n","'use strict';\n\n\nvar emoji_html        = require('./lib/render');\nvar emoji_replace     = require('./lib/replace');\nvar normalize_opts    = require('./lib/normalize_opts');\n\n\nmodule.exports = function emoji_plugin(md, options) {\n  var defaults = {\n    defs: {},\n    shortcuts: {},\n    enabled: []\n  };\n\n  var opts = normalize_opts(md.utils.assign({}, defaults, options || {}));\n\n  md.renderer.rules.emoji = emoji_html;\n\n  md.core.ruler.after(\n    'linkify',\n    'emoji',\n    emoji_replace(md, opts.defs, opts.shortcuts, opts.scanRE, opts.replaceRE)\n  );\n};\n","'use strict';\n\n\nvar emojies_defs      = require('./lib/data/full.json');\nvar emojies_shortcuts = require('./lib/data/shortcuts');\nvar bare_emoji_plugin = require('./bare');\n\n\nmodule.exports = function emoji_plugin(md, options) {\n  var defaults = {\n    defs: emojies_defs,\n    shortcuts: emojies_shortcuts,\n    enabled: []\n  };\n\n  var opts = md.utils.assign({}, defaults, options || {});\n\n  bare_emoji_plugin(md, opts);\n};\n","// Process ~subscript~\n\n'use strict';\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\n\nfunction subscript(state, silent) {\n  var found,\n      content,\n      token,\n      max = state.posMax,\n      start = state.pos;\n\n  if (state.src.charCodeAt(start) !== 0x7E/* ~ */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n  if (start + 2 >= max) { return false; }\n\n  state.pos = start + 1;\n\n  while (state.pos < max) {\n    if (state.src.charCodeAt(state.pos) === 0x7E/* ~ */) {\n      found = true;\n      break;\n    }\n\n    state.md.inline.skipToken(state);\n  }\n\n  if (!found || start + 1 === state.pos) {\n    state.pos = start;\n    return false;\n  }\n\n  content = state.src.slice(start + 1, state.pos);\n\n  // don't allow unescaped spaces/newlines inside\n  if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + 1;\n\n  // Earlier we checked !silent, but this implementation does not need it\n  token         = state.push('sub_open', 'sub', 1);\n  token.markup  = '~';\n\n  token         = state.push('text', '', 0);\n  token.content = content.replace(UNESCAPE_RE, '$1');\n\n  token         = state.push('sub_close', 'sub', -1);\n  token.markup  = '~';\n\n  state.pos = state.posMax + 1;\n  state.posMax = max;\n  return true;\n}\n\n\nmodule.exports = function sub_plugin(md) {\n  md.inline.ruler.after('emphasis', 'sub', subscript);\n};\n","// Process ^superscript^\n\n'use strict';\n\n// same as UNESCAPE_MD_RE plus a space\nvar UNESCAPE_RE = /\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;\n\nfunction superscript(state, silent) {\n  var found,\n      content,\n      token,\n      max = state.posMax,\n      start = state.pos;\n\n  if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n  if (silent) { return false; } // don't run any pairs in validation mode\n  if (start + 2 >= max) { return false; }\n\n  state.pos = start + 1;\n\n  while (state.pos < max) {\n    if (state.src.charCodeAt(state.pos) === 0x5E/* ^ */) {\n      found = true;\n      break;\n    }\n\n    state.md.inline.skipToken(state);\n  }\n\n  if (!found || start + 1 === state.pos) {\n    state.pos = start;\n    return false;\n  }\n\n  content = state.src.slice(start + 1, state.pos);\n\n  // don't allow unescaped spaces/newlines inside\n  if (content.match(/(^|[^\\\\])(\\\\\\\\)*\\s/)) {\n    state.pos = start;\n    return false;\n  }\n\n  // found!\n  state.posMax = state.pos;\n  state.pos = start + 1;\n\n  // Earlier we checked !silent, but this implementation does not need it\n  token         = state.push('sup_open', 'sup', 1);\n  token.markup  = '^';\n\n  token         = state.push('text', '', 0);\n  token.content = content.replace(UNESCAPE_RE, '$1');\n\n  token         = state.push('sup_close', 'sup', -1);\n  token.markup  = '^';\n\n  state.pos = state.posMax + 1;\n  state.posMax = max;\n  return true;\n}\n\n\nmodule.exports = function sup_plugin(md) {\n  md.inline.ruler.after('emphasis', 'sup', superscript);\n};\n","// Process footnotes\n//\n'use strict';\n\n////////////////////////////////////////////////////////////////////////////////\n// Renderer partials\n\nfunction render_footnote_anchor_name(tokens, idx, options, env/*, slf*/) {\n  var n = Number(tokens[idx].meta.id + 1).toString();\n  var prefix = '';\n\n  if (typeof env.docId === 'string') {\n    prefix = '-' + env.docId + '-';\n  }\n\n  return prefix + n;\n}\n\nfunction render_footnote_caption(tokens, idx/*, options, env, slf*/) {\n  var n = Number(tokens[idx].meta.id + 1).toString();\n\n  if (tokens[idx].meta.subId > 0) {\n    n += ':' + tokens[idx].meta.subId;\n  }\n\n  return '[' + n + ']';\n}\n\nfunction render_footnote_ref(tokens, idx, options, env, slf) {\n  var id      = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);\n  var caption = slf.rules.footnote_caption(tokens, idx, options, env, slf);\n  var refid   = id;\n\n  if (tokens[idx].meta.subId > 0) {\n    refid += ':' + tokens[idx].meta.subId;\n  }\n\n  return '<sup class=\"footnote-ref\"><a href=\"#fn' + id + '\" id=\"fnref' + refid + '\">' + caption + '</a></sup>';\n}\n\nfunction render_footnote_block_open(tokens, idx, options) {\n  return (options.xhtmlOut ? '<hr class=\"footnotes-sep\" />\\n' : '<hr class=\"footnotes-sep\">\\n') +\n         '<section class=\"footnotes\">\\n' +\n         '<ol class=\"footnotes-list\">\\n';\n}\n\nfunction render_footnote_block_close() {\n  return '</ol>\\n</section>\\n';\n}\n\nfunction render_footnote_open(tokens, idx, options, env, slf) {\n  var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);\n\n  if (tokens[idx].meta.subId > 0) {\n    id += ':' + tokens[idx].meta.subId;\n  }\n\n  return '<li id=\"fn' + id + '\" class=\"footnote-item\">';\n}\n\nfunction render_footnote_close() {\n  return '</li>\\n';\n}\n\nfunction render_footnote_anchor(tokens, idx, options, env, slf) {\n  var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);\n\n  if (tokens[idx].meta.subId > 0) {\n    id += ':' + tokens[idx].meta.subId;\n  }\n\n  /* ↩ with escape code to prevent display as Apple Emoji on iOS */\n  return ' <a href=\"#fnref' + id + '\" class=\"footnote-backref\">\\u21a9\\uFE0E</a>';\n}\n\n\nmodule.exports = function footnote_plugin(md) {\n  var parseLinkLabel = md.helpers.parseLinkLabel,\n      isSpace = md.utils.isSpace;\n\n  md.renderer.rules.footnote_ref          = render_footnote_ref;\n  md.renderer.rules.footnote_block_open   = render_footnote_block_open;\n  md.renderer.rules.footnote_block_close  = render_footnote_block_close;\n  md.renderer.rules.footnote_open         = render_footnote_open;\n  md.renderer.rules.footnote_close        = render_footnote_close;\n  md.renderer.rules.footnote_anchor       = render_footnote_anchor;\n\n  // helpers (only used in other rules, no tokens are attached to those)\n  md.renderer.rules.footnote_caption      = render_footnote_caption;\n  md.renderer.rules.footnote_anchor_name  = render_footnote_anchor_name;\n\n  // Process footnote block definition\n  function footnote_def(state, startLine, endLine, silent) {\n    var oldBMark, oldTShift, oldSCount, oldParentType, pos, label, token,\n        initial, offset, ch, posAfterColon,\n        start = state.bMarks[startLine] + state.tShift[startLine],\n        max = state.eMarks[startLine];\n\n    // line should be at least 5 chars - \"[^x]:\"\n    if (start + 4 > max) { return false; }\n\n    if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n    if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n\n    for (pos = start + 2; pos < max; pos++) {\n      if (state.src.charCodeAt(pos) === 0x20) { return false; }\n      if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n        break;\n      }\n    }\n\n    if (pos === start + 2) { return false; } // no empty footnote labels\n    if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 0x3A /* : */) { return false; }\n    if (silent) { return true; }\n    pos++;\n\n    if (!state.env.footnotes) { state.env.footnotes = {}; }\n    if (!state.env.footnotes.refs) { state.env.footnotes.refs = {}; }\n    label = state.src.slice(start + 2, pos - 2);\n    state.env.footnotes.refs[':' + label] = -1;\n\n    token       = new state.Token('footnote_reference_open', '', 1);\n    token.meta  = { label: label };\n    token.level = state.level++;\n    state.tokens.push(token);\n\n    oldBMark = state.bMarks[startLine];\n    oldTShift = state.tShift[startLine];\n    oldSCount = state.sCount[startLine];\n    oldParentType = state.parentType;\n\n    posAfterColon = pos;\n    initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);\n\n    while (pos < max) {\n      ch = state.src.charCodeAt(pos);\n\n      if (isSpace(ch)) {\n        if (ch === 0x09) {\n          offset += 4 - offset % 4;\n        } else {\n          offset++;\n        }\n      } else {\n        break;\n      }\n\n      pos++;\n    }\n\n    state.tShift[startLine] = pos - posAfterColon;\n    state.sCount[startLine] = offset - initial;\n\n    state.bMarks[startLine] = posAfterColon;\n    state.blkIndent += 4;\n    state.parentType = 'footnote';\n\n    if (state.sCount[startLine] < state.blkIndent) {\n      state.sCount[startLine] += state.blkIndent;\n    }\n\n    state.md.block.tokenize(state, startLine, endLine, true);\n\n    state.parentType = oldParentType;\n    state.blkIndent -= 4;\n    state.tShift[startLine] = oldTShift;\n    state.sCount[startLine] = oldSCount;\n    state.bMarks[startLine] = oldBMark;\n\n    token       = new state.Token('footnote_reference_close', '', -1);\n    token.level = --state.level;\n    state.tokens.push(token);\n\n    return true;\n  }\n\n  // Process inline footnotes (^[...])\n  function footnote_inline(state, silent) {\n    var labelStart,\n        labelEnd,\n        footnoteId,\n        token,\n        tokens,\n        max = state.posMax,\n        start = state.pos;\n\n    if (start + 2 >= max) { return false; }\n    if (state.src.charCodeAt(start) !== 0x5E/* ^ */) { return false; }\n    if (state.src.charCodeAt(start + 1) !== 0x5B/* [ */) { return false; }\n\n    labelStart = start + 2;\n    labelEnd = parseLinkLabel(state, start + 1);\n\n    // parser failed to find ']', so it's not a valid note\n    if (labelEnd < 0) { return false; }\n\n    // We found the end of the link, and know for a fact it's a valid link;\n    // so all that's left to do is to call tokenizer.\n    //\n    if (!silent) {\n      if (!state.env.footnotes) { state.env.footnotes = {}; }\n      if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n      footnoteId = state.env.footnotes.list.length;\n\n      state.md.inline.parse(\n        state.src.slice(labelStart, labelEnd),\n        state.md,\n        state.env,\n        tokens = []\n      );\n\n      token      = state.push('footnote_ref', '', 0);\n      token.meta = { id: footnoteId };\n\n      state.env.footnotes.list[footnoteId] = {\n        content: state.src.slice(labelStart, labelEnd),\n        tokens: tokens\n      };\n    }\n\n    state.pos = labelEnd + 1;\n    state.posMax = max;\n    return true;\n  }\n\n  // Process footnote references ([^...])\n  function footnote_ref(state, silent) {\n    var label,\n        pos,\n        footnoteId,\n        footnoteSubId,\n        token,\n        max = state.posMax,\n        start = state.pos;\n\n    // should be at least 4 chars - \"[^x]\"\n    if (start + 3 > max) { return false; }\n\n    if (!state.env.footnotes || !state.env.footnotes.refs) { return false; }\n    if (state.src.charCodeAt(start) !== 0x5B/* [ */) { return false; }\n    if (state.src.charCodeAt(start + 1) !== 0x5E/* ^ */) { return false; }\n\n    for (pos = start + 2; pos < max; pos++) {\n      if (state.src.charCodeAt(pos) === 0x20) { return false; }\n      if (state.src.charCodeAt(pos) === 0x0A) { return false; }\n      if (state.src.charCodeAt(pos) === 0x5D /* ] */) {\n        break;\n      }\n    }\n\n    if (pos === start + 2) { return false; } // no empty footnote labels\n    if (pos >= max) { return false; }\n    pos++;\n\n    label = state.src.slice(start + 2, pos - 1);\n    if (typeof state.env.footnotes.refs[':' + label] === 'undefined') { return false; }\n\n    if (!silent) {\n      if (!state.env.footnotes.list) { state.env.footnotes.list = []; }\n\n      if (state.env.footnotes.refs[':' + label] < 0) {\n        footnoteId = state.env.footnotes.list.length;\n        state.env.footnotes.list[footnoteId] = { label: label, count: 0 };\n        state.env.footnotes.refs[':' + label] = footnoteId;\n      } else {\n        footnoteId = state.env.footnotes.refs[':' + label];\n      }\n\n      footnoteSubId = state.env.footnotes.list[footnoteId].count;\n      state.env.footnotes.list[footnoteId].count++;\n\n      token      = state.push('footnote_ref', '', 0);\n      token.meta = { id: footnoteId, subId: footnoteSubId, label: label };\n    }\n\n    state.pos = pos;\n    state.posMax = max;\n    return true;\n  }\n\n  // Glue footnote tokens to end of token stream\n  function footnote_tail(state) {\n    var i, l, j, t, lastParagraph, list, token, tokens, current, currentLabel,\n        insideRef = false,\n        refTokens = {};\n\n    if (!state.env.footnotes) { return; }\n\n    state.tokens = state.tokens.filter(function (tok) {\n      if (tok.type === 'footnote_reference_open') {\n        insideRef = true;\n        current = [];\n        currentLabel = tok.meta.label;\n        return false;\n      }\n      if (tok.type === 'footnote_reference_close') {\n        insideRef = false;\n        // prepend ':' to avoid conflict with Object.prototype members\n        refTokens[':' + currentLabel] = current;\n        return false;\n      }\n      if (insideRef) { current.push(tok); }\n      return !insideRef;\n    });\n\n    if (!state.env.footnotes.list) { return; }\n    list = state.env.footnotes.list;\n\n    token = new state.Token('footnote_block_open', '', 1);\n    state.tokens.push(token);\n\n    for (i = 0, l = list.length; i < l; i++) {\n      token      = new state.Token('footnote_open', '', 1);\n      token.meta = { id: i, label: list[i].label };\n      state.tokens.push(token);\n\n      if (list[i].tokens) {\n        tokens = [];\n\n        token          = new state.Token('paragraph_open', 'p', 1);\n        token.block    = true;\n        tokens.push(token);\n\n        token          = new state.Token('inline', '', 0);\n        token.children = list[i].tokens;\n        token.content  = list[i].content;\n        tokens.push(token);\n\n        token          = new state.Token('paragraph_close', 'p', -1);\n        token.block    = true;\n        tokens.push(token);\n\n      } else if (list[i].label) {\n        tokens = refTokens[':' + list[i].label];\n      }\n\n      if (tokens) state.tokens = state.tokens.concat(tokens);\n      if (state.tokens[state.tokens.length - 1].type === 'paragraph_close') {\n        lastParagraph = state.tokens.pop();\n      } else {\n        lastParagraph = null;\n      }\n\n      t = list[i].count > 0 ? list[i].count : 1;\n      for (j = 0; j < t; j++) {\n        token      = new state.Token('footnote_anchor', '', 0);\n        token.meta = { id: i, subId: j, label: list[i].label };\n        state.tokens.push(token);\n      }\n\n      if (lastParagraph) {\n        state.tokens.push(lastParagraph);\n      }\n\n      token = new state.Token('footnote_close', '', -1);\n      state.tokens.push(token);\n    }\n\n    token = new state.Token('footnote_block_close', '', -1);\n    state.tokens.push(token);\n  }\n\n  md.block.ruler.before('reference', 'footnote_def', footnote_def, { alt: [ 'paragraph', 'reference' ] });\n  md.inline.ruler.after('image', 'footnote_inline', footnote_inline);\n  md.inline.ruler.after('footnote_inline', 'footnote_ref', footnote_ref);\n  md.core.ruler.after('inline', 'footnote_tail', footnote_tail);\n};\n","// Process definition lists\n//\n'use strict';\n\n\nmodule.exports = function deflist_plugin(md) {\n  var isSpace = md.utils.isSpace;\n\n  // Search `[:~][\\n ]`, returns next pos after marker on success\n  // or -1 on fail.\n  function skipMarker(state, line) {\n    var pos, marker,\n        start = state.bMarks[line] + state.tShift[line],\n        max = state.eMarks[line];\n\n    if (start >= max) { return -1; }\n\n    // Check bullet\n    marker = state.src.charCodeAt(start++);\n    if (marker !== 0x7E/* ~ */ && marker !== 0x3A/* : */) { return -1; }\n\n    pos = state.skipSpaces(start);\n\n    // require space after \":\"\n    if (start === pos) { return -1; }\n\n    // no empty definitions, e.g. \"  : \"\n    if (pos >= max) { return -1; }\n\n    return start;\n  }\n\n  function markTightParagraphs(state, idx) {\n    var i, l,\n        level = state.level + 2;\n\n    for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n      if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n        state.tokens[i + 2].hidden = true;\n        state.tokens[i].hidden = true;\n        i += 2;\n      }\n    }\n  }\n\n  function deflist(state, startLine, endLine, silent) {\n    var ch,\n        contentStart,\n        ddLine,\n        dtLine,\n        itemLines,\n        listLines,\n        listTokIdx,\n        max,\n        nextLine,\n        offset,\n        oldDDIndent,\n        oldIndent,\n        oldParentType,\n        oldSCount,\n        oldTShift,\n        oldTight,\n        pos,\n        prevEmptyEnd,\n        tight,\n        token;\n\n    if (silent) {\n      // quirk: validation mode validates a dd block only, not a whole deflist\n      if (state.ddIndent < 0) { return false; }\n      return skipMarker(state, startLine) >= 0;\n    }\n\n    nextLine = startLine + 1;\n    if (nextLine >= endLine) { return false; }\n\n    if (state.isEmpty(nextLine)) {\n      nextLine++;\n      if (nextLine >= endLine) { return false; }\n    }\n\n    if (state.sCount[nextLine] < state.blkIndent) { return false; }\n    contentStart = skipMarker(state, nextLine);\n    if (contentStart < 0) { return false; }\n\n    // Start list\n    listTokIdx = state.tokens.length;\n    tight = true;\n\n    token     = state.push('dl_open', 'dl', 1);\n    token.map = listLines = [ startLine, 0 ];\n\n    //\n    // Iterate list items\n    //\n\n    dtLine = startLine;\n    ddLine = nextLine;\n\n    // One definition list can contain multiple DTs,\n    // and one DT can be followed by multiple DDs.\n    //\n    // Thus, there is two loops here, and label is\n    // needed to break out of the second one\n    //\n    /*eslint no-labels:0,block-scoped-var:0*/\n    OUTER:\n    for (;;) {\n      prevEmptyEnd = false;\n\n      token          = state.push('dt_open', 'dt', 1);\n      token.map      = [ dtLine, dtLine ];\n\n      token          = state.push('inline', '', 0);\n      token.map      = [ dtLine, dtLine ];\n      token.content  = state.getLines(dtLine, dtLine + 1, state.blkIndent, false).trim();\n      token.children = [];\n\n      token          = state.push('dt_close', 'dt', -1);\n\n      for (;;) {\n        token     = state.push('dd_open', 'dd', 1);\n        token.map = itemLines = [ nextLine, 0 ];\n\n        pos = contentStart;\n        max = state.eMarks[ddLine];\n        offset = state.sCount[ddLine] + contentStart - (state.bMarks[ddLine] + state.tShift[ddLine]);\n\n        while (pos < max) {\n          ch = state.src.charCodeAt(pos);\n\n          if (isSpace(ch)) {\n            if (ch === 0x09) {\n              offset += 4 - offset % 4;\n            } else {\n              offset++;\n            }\n          } else {\n            break;\n          }\n\n          pos++;\n        }\n\n        contentStart = pos;\n\n        oldTight = state.tight;\n        oldDDIndent = state.ddIndent;\n        oldIndent = state.blkIndent;\n        oldTShift = state.tShift[ddLine];\n        oldSCount = state.sCount[ddLine];\n        oldParentType = state.parentType;\n        state.blkIndent = state.ddIndent = state.sCount[ddLine] + 2;\n        state.tShift[ddLine] = contentStart - state.bMarks[ddLine];\n        state.sCount[ddLine] = offset;\n        state.tight = true;\n        state.parentType = 'deflist';\n\n        state.md.block.tokenize(state, ddLine, endLine, true);\n\n        // If any of list item is tight, mark list as tight\n        if (!state.tight || prevEmptyEnd) {\n          tight = false;\n        }\n        // Item become loose if finish with empty line,\n        // but we should filter last element, because it means list finish\n        prevEmptyEnd = (state.line - ddLine) > 1 && state.isEmpty(state.line - 1);\n\n        state.tShift[ddLine] = oldTShift;\n        state.sCount[ddLine] = oldSCount;\n        state.tight = oldTight;\n        state.parentType = oldParentType;\n        state.blkIndent = oldIndent;\n        state.ddIndent = oldDDIndent;\n\n        token = state.push('dd_close', 'dd', -1);\n\n        itemLines[1] = nextLine = state.line;\n\n        if (nextLine >= endLine) { break OUTER; }\n\n        if (state.sCount[nextLine] < state.blkIndent) { break OUTER; }\n        contentStart = skipMarker(state, nextLine);\n        if (contentStart < 0) { break; }\n\n        ddLine = nextLine;\n\n        // go to the next loop iteration:\n        // insert DD tag and repeat checking\n      }\n\n      if (nextLine >= endLine) { break; }\n      dtLine = nextLine;\n\n      if (state.isEmpty(dtLine)) { break; }\n      if (state.sCount[dtLine] < state.blkIndent) { break; }\n\n      ddLine = dtLine + 1;\n      if (ddLine >= endLine) { break; }\n      if (state.isEmpty(ddLine)) { ddLine++; }\n      if (ddLine >= endLine) { break; }\n\n      if (state.sCount[ddLine] < state.blkIndent) { break; }\n      contentStart = skipMarker(state, ddLine);\n      if (contentStart < 0) { break; }\n\n      // go to the next loop iteration:\n      // insert DT and DD tags and repeat checking\n    }\n\n    // Finilize list\n    token = state.push('dl_close', 'dl', -1);\n\n    listLines[1] = nextLine;\n\n    state.line = nextLine;\n\n    // mark paragraphs tight if needed\n    if (tight) {\n      markTightParagraphs(state, listTokIdx);\n    }\n\n    return true;\n  }\n\n\n  md.block.ruler.before('paragraph', 'deflist', deflist, { alt: [ 'paragraph', 'reference', 'blockquote' ] });\n};\n","// Enclose abbreviations in <abbr> tags\n//\n'use strict';\n\n\nmodule.exports = function sub_plugin(md) {\n  var escapeRE        = md.utils.escapeRE,\n      arrayReplaceAt  = md.utils.arrayReplaceAt;\n\n  // ASCII characters in Cc, Sc, Sm, Sk categories we should terminate on;\n  // you can check character classes here:\n  // http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n  var OTHER_CHARS      = ' \\r\\n$+<=>^`|~';\n\n  var UNICODE_PUNCT_RE = md.utils.lib.ucmicro.P.source;\n  var UNICODE_SPACE_RE = md.utils.lib.ucmicro.Z.source;\n\n\n  function abbr_def(state, startLine, endLine, silent) {\n    var label, title, ch, labelStart, labelEnd,\n        pos = state.bMarks[startLine] + state.tShift[startLine],\n        max = state.eMarks[startLine];\n\n    if (pos + 2 >= max) { return false; }\n\n    if (state.src.charCodeAt(pos++) !== 0x2A/* * */) { return false; }\n    if (state.src.charCodeAt(pos++) !== 0x5B/* [ */) { return false; }\n\n    labelStart = pos;\n\n    for (; pos < max; pos++) {\n      ch = state.src.charCodeAt(pos);\n      if (ch === 0x5B /* [ */) {\n        return false;\n      } else if (ch === 0x5D /* ] */) {\n        labelEnd = pos;\n        break;\n      } else if (ch === 0x5C /* \\ */) {\n        pos++;\n      }\n    }\n\n    if (labelEnd < 0 || state.src.charCodeAt(labelEnd + 1) !== 0x3A/* : */) {\n      return false;\n    }\n\n    if (silent) { return true; }\n\n    label = state.src.slice(labelStart, labelEnd).replace(/\\\\(.)/g, '$1');\n    title = state.src.slice(labelEnd + 2, max).trim();\n    if (label.length === 0) { return false; }\n    if (title.length === 0) { return false; }\n    if (!state.env.abbreviations) { state.env.abbreviations = {}; }\n    // prepend ':' to avoid conflict with Object.prototype members\n    if (typeof state.env.abbreviations[':' + label] === 'undefined') {\n      state.env.abbreviations[':' + label] = title;\n    }\n\n    state.line = startLine + 1;\n    return true;\n  }\n\n\n  function abbr_replace(state) {\n    var i, j, l, tokens, token, text, nodes, pos, reg, m, regText, regSimple,\n        currentToken,\n        blockTokens = state.tokens;\n\n    if (!state.env.abbreviations) { return; }\n\n    regSimple = new RegExp('(?:' +\n      Object.keys(state.env.abbreviations).map(function (x) {\n        return x.substr(1);\n      }).sort(function (a, b) {\n        return b.length - a.length;\n      }).map(escapeRE).join('|') +\n    ')');\n\n    regText = '(^|' + UNICODE_PUNCT_RE + '|' + UNICODE_SPACE_RE +\n                    '|[' + OTHER_CHARS.split('').map(escapeRE).join('') + '])'\n            + '(' + Object.keys(state.env.abbreviations).map(function (x) {\n                      return x.substr(1);\n                    }).sort(function (a, b) {\n                      return b.length - a.length;\n                    }).map(escapeRE).join('|') + ')'\n            + '($|' + UNICODE_PUNCT_RE + '|' + UNICODE_SPACE_RE +\n                    '|[' + OTHER_CHARS.split('').map(escapeRE).join('') + '])';\n\n    reg = new RegExp(regText, 'g');\n\n    for (j = 0, l = blockTokens.length; j < l; j++) {\n      if (blockTokens[j].type !== 'inline') { continue; }\n      tokens = blockTokens[j].children;\n\n      // We scan from the end, to keep position when new tags added.\n      for (i = tokens.length - 1; i >= 0; i--) {\n        currentToken = tokens[i];\n        if (currentToken.type !== 'text') { continue; }\n\n        pos = 0;\n        text = currentToken.content;\n        reg.lastIndex = 0;\n        nodes = [];\n\n        // fast regexp run to determine whether there are any abbreviated words\n        // in the current token\n        if (!regSimple.test(text)) { continue; }\n\n        while ((m = reg.exec(text))) {\n          if (m.index > 0 || m[1].length > 0) {\n            token         = new state.Token('text', '', 0);\n            token.content = text.slice(pos, m.index + m[1].length);\n            nodes.push(token);\n          }\n\n          token         = new state.Token('abbr_open', 'abbr', 1);\n          token.attrs   = [ [ 'title', state.env.abbreviations[':' + m[2]] ] ];\n          nodes.push(token);\n\n          token         = new state.Token('text', '', 0);\n          token.content = m[2];\n          nodes.push(token);\n\n          token         = new state.Token('abbr_close', 'abbr', -1);\n          nodes.push(token);\n\n          reg.lastIndex -= m[3].length;\n          pos = reg.lastIndex;\n        }\n\n        if (!nodes.length) { continue; }\n\n        if (pos < text.length) {\n          token         = new state.Token('text', '', 0);\n          token.content = text.slice(pos);\n          nodes.push(token);\n        }\n\n        // replace current node\n        blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n      }\n    }\n  }\n\n  md.block.ruler.before('reference', 'abbr_def', abbr_def, { alt: [ 'paragraph', 'reference' ] });\n\n  md.core.ruler.after('linkify', 'abbr_replace', abbr_replace);\n};\n","'use strict';\n\n\nmodule.exports = function ins_plugin(md) {\n  // Insert each marker as a separate text token, and add it to delimiter list\n  //\n  function tokenize(state, silent) {\n    var i, scanned, token, len, ch,\n        start = state.pos,\n        marker = state.src.charCodeAt(start);\n\n    if (silent) { return false; }\n\n    if (marker !== 0x2B/* + */) { return false; }\n\n    scanned = state.scanDelims(state.pos, true);\n    len = scanned.length;\n    ch = String.fromCharCode(marker);\n\n    if (len < 2) { return false; }\n\n    if (len % 2) {\n      token         = state.push('text', '', 0);\n      token.content = ch;\n      len--;\n    }\n\n    for (i = 0; i < len; i += 2) {\n      token         = state.push('text', '', 0);\n      token.content = ch + ch;\n\n      if (!scanned.can_open && !scanned.can_close) { continue; }\n\n      state.delimiters.push({\n        marker: marker,\n        length: 0,     // disable \"rule of 3\" length checks meant for emphasis\n        jump:   i / 2, // 1 delimiter = 2 characters\n        token:  state.tokens.length - 1,\n        end:    -1,\n        open:   scanned.can_open,\n        close:  scanned.can_close\n      });\n    }\n\n    state.pos += scanned.length;\n\n    return true;\n  }\n\n\n  // Walk through delimiter list and replace text tokens with tags\n  //\n  function postProcess(state, delimiters) {\n    var i, j,\n        startDelim,\n        endDelim,\n        token,\n        loneMarkers = [],\n        max = delimiters.length;\n\n    for (i = 0; i < max; i++) {\n      startDelim = delimiters[i];\n\n      if (startDelim.marker !== 0x2B/* + */) {\n        continue;\n      }\n\n      if (startDelim.end === -1) {\n        continue;\n      }\n\n      endDelim = delimiters[startDelim.end];\n\n      token         = state.tokens[startDelim.token];\n      token.type    = 'ins_open';\n      token.tag     = 'ins';\n      token.nesting = 1;\n      token.markup  = '++';\n      token.content = '';\n\n      token         = state.tokens[endDelim.token];\n      token.type    = 'ins_close';\n      token.tag     = 'ins';\n      token.nesting = -1;\n      token.markup  = '++';\n      token.content = '';\n\n      if (state.tokens[endDelim.token - 1].type === 'text' &&\n          state.tokens[endDelim.token - 1].content === '+') {\n\n        loneMarkers.push(endDelim.token - 1);\n      }\n    }\n\n    // If a marker sequence has an odd number of characters, it's splitted\n    // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n    // start of the sequence.\n    //\n    // So, we have to move all those markers after subsequent s_close tags.\n    //\n    while (loneMarkers.length) {\n      i = loneMarkers.pop();\n      j = i + 1;\n\n      while (j < state.tokens.length && state.tokens[j].type === 'ins_close') {\n        j++;\n      }\n\n      j--;\n\n      if (i !== j) {\n        token = state.tokens[j];\n        state.tokens[j] = state.tokens[i];\n        state.tokens[i] = token;\n      }\n    }\n  }\n\n  md.inline.ruler.before('emphasis', 'ins', tokenize);\n  md.inline.ruler2.before('emphasis', 'ins', function (state) {\n    var curr,\n        tokens_meta = state.tokens_meta,\n        max = (state.tokens_meta || []).length;\n\n    postProcess(state, state.delimiters);\n\n    for (curr = 0; curr < max; curr++) {\n      if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n        postProcess(state, tokens_meta[curr].delimiters);\n      }\n    }\n  });\n};\n","'use strict';\n\n\nmodule.exports = function ins_plugin(md) {\n  // Insert each marker as a separate text token, and add it to delimiter list\n  //\n  function tokenize(state, silent) {\n    var i, scanned, token, len, ch,\n        start = state.pos,\n        marker = state.src.charCodeAt(start);\n\n    if (silent) { return false; }\n\n    if (marker !== 0x3D/* = */) { return false; }\n\n    scanned = state.scanDelims(state.pos, true);\n    len = scanned.length;\n    ch = String.fromCharCode(marker);\n\n    if (len < 2) { return false; }\n\n    if (len % 2) {\n      token         = state.push('text', '', 0);\n      token.content = ch;\n      len--;\n    }\n\n    for (i = 0; i < len; i += 2) {\n      token         = state.push('text', '', 0);\n      token.content = ch + ch;\n\n      if (!scanned.can_open && !scanned.can_close) { continue; }\n\n      state.delimiters.push({\n        marker: marker,\n        length: 0,     // disable \"rule of 3\" length checks meant for emphasis\n        jump:   i / 2, // 1 delimiter = 2 characters\n        token:  state.tokens.length - 1,\n        end:    -1,\n        open:   scanned.can_open,\n        close:  scanned.can_close\n      });\n    }\n\n    state.pos += scanned.length;\n\n    return true;\n  }\n\n\n  // Walk through delimiter list and replace text tokens with tags\n  //\n  function postProcess(state, delimiters) {\n    var i, j,\n        startDelim,\n        endDelim,\n        token,\n        loneMarkers = [],\n        max = delimiters.length;\n\n    for (i = 0; i < max; i++) {\n      startDelim = delimiters[i];\n\n      if (startDelim.marker !== 0x3D/* = */) {\n        continue;\n      }\n\n      if (startDelim.end === -1) {\n        continue;\n      }\n\n      endDelim = delimiters[startDelim.end];\n\n      token         = state.tokens[startDelim.token];\n      token.type    = 'mark_open';\n      token.tag     = 'mark';\n      token.nesting = 1;\n      token.markup  = '==';\n      token.content = '';\n\n      token         = state.tokens[endDelim.token];\n      token.type    = 'mark_close';\n      token.tag     = 'mark';\n      token.nesting = -1;\n      token.markup  = '==';\n      token.content = '';\n\n      if (state.tokens[endDelim.token - 1].type === 'text' &&\n          state.tokens[endDelim.token - 1].content === '=') {\n\n        loneMarkers.push(endDelim.token - 1);\n      }\n    }\n\n    // If a marker sequence has an odd number of characters, it's splitted\n    // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n    // start of the sequence.\n    //\n    // So, we have to move all those markers after subsequent s_close tags.\n    //\n    while (loneMarkers.length) {\n      i = loneMarkers.pop();\n      j = i + 1;\n\n      while (j < state.tokens.length && state.tokens[j].type === 'mark_close') {\n        j++;\n      }\n\n      j--;\n\n      if (i !== j) {\n        token = state.tokens[j];\n        state.tokens[j] = state.tokens[i];\n        state.tokens[i] = token;\n      }\n    }\n  }\n\n  md.inline.ruler.before('emphasis', 'mark', tokenize);\n  md.inline.ruler2.before('emphasis', 'mark', function (state) {\n    var curr,\n        tokens_meta = state.tokens_meta,\n        max = (state.tokens_meta || []).length;\n\n    postProcess(state, state.delimiters);\n\n    for (curr = 0; curr < max; curr++) {\n      if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n        postProcess(state, tokens_meta[curr].delimiters);\n      }\n    }\n  });\n};\n","// Markdown-it plugin to render GitHub-style task lists; see\n//\n// https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments\n// https://github.com/blog/1825-task-lists-in-all-markdown-documents\n\nvar disableCheckboxes = true;\nvar useLabelWrapper = false;\nvar useLabelAfter = false;\n\nmodule.exports = function(md, options) {\n\tif (options) {\n\t\tdisableCheckboxes = !options.enabled;\n\t\tuseLabelWrapper = !!options.label;\n\t\tuseLabelAfter = !!options.labelAfter;\n\t}\n\n\tmd.core.ruler.after('inline', 'github-task-lists', function(state) {\n\t\tvar tokens = state.tokens;\n\t\tfor (var i = 2; i < tokens.length; i++) {\n\t\t\tif (isTodoItem(tokens, i)) {\n\t\t\t\ttodoify(tokens[i], state.Token);\n\t\t\t\tattrSet(tokens[i-2], 'class', 'task-list-item' + (!disableCheckboxes ? ' enabled' : ''));\n\t\t\t\tattrSet(tokens[parentToken(tokens, i-2)], 'class', 'contains-task-list');\n\t\t\t}\n\t\t}\n\t});\n};\n\nfunction attrSet(token, name, value) {\n\tvar index = token.attrIndex(name);\n\tvar attr = [name, value];\n\n\tif (index < 0) {\n\t\ttoken.attrPush(attr);\n\t} else {\n\t\ttoken.attrs[index] = attr;\n\t}\n}\n\nfunction parentToken(tokens, index) {\n\tvar targetLevel = tokens[index].level - 1;\n\tfor (var i = index - 1; i >= 0; i--) {\n\t\tif (tokens[i].level === targetLevel) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction isTodoItem(tokens, index) {\n\treturn isInline(tokens[index]) &&\n\t       isParagraph(tokens[index - 1]) &&\n\t       isListItem(tokens[index - 2]) &&\n\t       startsWithTodoMarkdown(tokens[index]);\n}\n\nfunction todoify(token, TokenConstructor) {\n\ttoken.children.unshift(makeCheckbox(token, TokenConstructor));\n\ttoken.children[1].content = token.children[1].content.slice(3);\n\ttoken.content = token.content.slice(3);\n\n\tif (useLabelWrapper) {\n\t\tif (useLabelAfter) {\n\t\t\ttoken.children.pop();\n\n\t\t\t// Use large random number as id property of the checkbox.\n\t\t\tvar id = 'task-item-' + Math.ceil(Math.random() * (10000 * 1000) - 1000);\n\t\t\ttoken.children[0].content = token.children[0].content.slice(0, -1) + ' id=\"' + id + '\">';\n\t\t\ttoken.children.push(afterLabel(token.content, id, TokenConstructor));\n\t\t} else {\n\t\t\ttoken.children.unshift(beginLabel(TokenConstructor));\n\t\t\ttoken.children.push(endLabel(TokenConstructor));\n\t\t}\n\t}\n}\n\nfunction makeCheckbox(token, TokenConstructor) {\n\tvar checkbox = new TokenConstructor('html_inline', '', 0);\n\tvar disabledAttr = disableCheckboxes ? ' disabled=\"\" ' : '';\n\tif (token.content.indexOf('[ ] ') === 0) {\n\t\tcheckbox.content = '<input class=\"task-list-item-checkbox\"' + disabledAttr + 'type=\"checkbox\">';\n\t} else if (token.content.indexOf('[x] ') === 0 || token.content.indexOf('[X] ') === 0) {\n\t\tcheckbox.content = '<input class=\"task-list-item-checkbox\" checked=\"\"' + disabledAttr + 'type=\"checkbox\">';\n\t}\n\treturn checkbox;\n}\n\n// these next two functions are kind of hacky; probably should really be a\n// true block-level token with .tag=='label'\nfunction beginLabel(TokenConstructor) {\n\tvar token = new TokenConstructor('html_inline', '', 0);\n\ttoken.content = '<label>';\n\treturn token;\n}\n\nfunction endLabel(TokenConstructor) {\n\tvar token = new TokenConstructor('html_inline', '', 0);\n\ttoken.content = '</label>';\n\treturn token;\n}\n\nfunction afterLabel(content, id, TokenConstructor) {\n\tvar token = new TokenConstructor('html_inline', '', 0);\n\ttoken.content = '<label class=\"task-list-item-label\" for=\"' + id + '\">' + content + '</label>';\n\ttoken.attrs = [{for: id}];\n\treturn token;\n}\n\nfunction isInline(token) { return token.type === 'inline'; }\nfunction isParagraph(token) { return token.type === 'paragraph_open'; }\nfunction isListItem(token) { return token.type === 'list_item_open'; }\n\nfunction startsWithTodoMarkdown(token) {\n\t// leading whitespace in a list item is already trimmed off by markdown-it\n\treturn token.content.indexOf('[ ] ') === 0 || token.content.indexOf('[x] ') === 0 || token.content.indexOf('[X] ') === 0;\n}\n","'use strict';\n\nfunction isBMP (buffer) {\n  return ('BM' === buffer.toString('ascii', 0, 2));\n}\n\nfunction calculate (buffer) {\n  return {\n    'width': buffer.readUInt32LE(18),\n    'height': buffer.readUInt32LE(22)\n  };\n}\n\nmodule.exports = {\n  'detect': isBMP,\n  'calculate': calculate\n};\n","'use strict';\n\nvar gifRegexp = /^GIF8[7,9]a/;\nfunction isGIF (buffer) {\n  var signature = buffer.toString('ascii', 0, 6);\n  return (gifRegexp.test(signature));\n}\n\nfunction calculate(buffer) {\n  return {\n    'width': buffer.readUInt16LE(6),\n    'height': buffer.readUInt16LE(8)\n  };\n}\n\nmodule.exports = {\n  'detect': isGIF,\n  'calculate': calculate\n};","'use strict';\n\n// NOTE: we only support baseline and progressive JPGs here\n// due to the structure of the loader class, we only get a buffer\n// with a maximum size of 4096 bytes. so if the SOF marker is outside\n// if this range we can't detect the file size correctly.\n\n// TO-DO: handle all JFIFs\nvar validJFIFMarkers = {\n  'ffdb': '0001010101', // Samsung D807 JPEG\n  'ffe0': '4a46494600', // Standard JPEG\n  'ffe1': '4578696600', // Camera JPEG, with EXIF data\n  'ffe2': '4943435f50', // Canon EOS-1D JPEG\n  'ffe3': '',           // Samsung D500 JPEG\n  'ffe8': '5350494646', // SPIFF JPEG\n  'ffec': '4475636b79', // Photoshop JPEG\n  'ffed': '50686f746f', // Adobe JPEG, Photoshop CMYK buffer\n  'ffee': '41646f6265'  // Adobe JPEG, Unrecognised (Lightroom??)\n};\n\nvar red = ['\\x1B[31m', '\\x1B[39m'];\nfunction isJPG (buffer) { //, filepath\n  var SOIMarker = buffer.toString('hex', 0, 2);\n  var JFIFMarker = buffer.toString('hex', 2, 4);\n\n  // not a valid jpeg\n  if ('ffd8' !== SOIMarker) {\n    return false;\n  }\n\n  // TO-DO: validate the end-bytes of a jpeg file\n  // use filepath, get the last bytes, check for ffd9\n  var got = buffer.toString('hex', 6, 11);\n  var expected = JFIFMarker && validJFIFMarkers[JFIFMarker];\n  if (expected === '') {\n    console.warn(\n      red[0] +\n      'this looks like a unrecognised jpeg\\n' +\n      'please report the issue here\\n' +\n      red[1],\n      '\\thttps://github.com/netroy/image-size/issues/new\\n'\n    );\n    return false;\n  }\n  return (got === expected) || (JFIFMarker === 'ffdb');\n}\n\nfunction extractSize (buffer, i) {\n  return {\n    'height' : buffer.readUInt16BE(i),\n    'width' : buffer.readUInt16BE(i + 2)\n  };\n}\n\nfunction validateBuffer (buffer, i) {\n  // index should be within buffer limits\n  if (i > buffer.length) {\n    throw new TypeError('Corrupt JPG, exceeded buffer limits');\n  }\n  // Every JPEG block must begin with a 0xFF\n  if (buffer[i] !== 0xFF) {\n    throw new TypeError('Invalid JPG, marker table corrupted');\n  }\n}\n\nfunction calculate (buffer) {\n\n  // Skip 5 chars, they are for signature\n  buffer = buffer.slice(4);\n\n  var i, next;\n  while (buffer.length) {\n    // read length of the next block\n    i = buffer.readUInt16BE(0);\n\n    // ensure correct format\n    validateBuffer(buffer, i);\n\n    // 0xFFC0 is baseline(SOF)\n    // 0xFFC2 is progressive(SOF2)\n    next = buffer[i + 1];\n    if (next === 0xC0 || next === 0xC2) {\n      return extractSize(buffer, i + 5);\n    }\n\n    // move to the next block\n    buffer = buffer.slice(i + 2);\n  }\n\n  throw new TypeError('Invalid JPG, no size found');\n}\n\nmodule.exports = {\n  'detect': isJPG,\n  'calculate': calculate\n};\n","'use strict';\n\nvar pngSignature = 'PNG\\r\\n\\x1a\\n';\nfunction isPNG (buffer) {\n  if (pngSignature === buffer.toString('ascii', 1, 8)) {\n    if ('IHDR' !== buffer.toString('ascii', 12, 16)) {\n      throw new TypeError('invalid png');\n    }\n    return true;\n  }\n}\n\nfunction calculate (buffer) {\n  return {\n    'width': buffer.readUInt32BE(16),\n    'height': buffer.readUInt32BE(20)\n  };\n}\n\nmodule.exports = {\n  'detect': isPNG,\n  'calculate': calculate\n};\n","'use strict';\n\nmodule.exports = function(buffer, bits, offset, isBigEndian) {\n  offset = offset || 0;\n  var endian = !!isBigEndian ? 'BE' : 'LE';\n  var method = buffer['readUInt' + bits + endian];\n  return method.call(buffer, offset);\n}\n","'use strict';\n\n// based on http://www.compix.com/fileformattif.htm\n// TO-DO: support big-endian as well\n\nvar fs = require('fs');\nvar readUInt = require('../readUInt');\n\nfunction isTIFF (buffer) {\n  var hex4 = buffer.toString('hex', 0, 4);\n  return ('49492a00' === hex4 || '4d4d002a' === hex4);\n}\n\n// Read IFD (image-file-directory) into a buffer\nfunction readIFD (buffer, filepath, isBigEndian) {\n\n  var ifdOffset = readUInt(buffer, 32, 4, isBigEndian);\n\n  // read only till the end of the file\n  var bufferSize = 1024;\n  var fileSize = fs.statSync(filepath).size;\n  if (ifdOffset + bufferSize > fileSize) {\n    bufferSize = fileSize - ifdOffset - 10;\n  }\n\n  // populate the buffer\n  var endBuffer = new Buffer(bufferSize);\n  var descriptor = fs.openSync(filepath, 'r');\n  fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset);\n\n  // var ifdLength = readUInt(endBuffer, 16, 0, isBigEndian);\n  var ifdBuffer = endBuffer.slice(2); //, 2 + 12 * ifdLength);\n  return ifdBuffer;\n}\n\n// TIFF values seem to be messed up on Big-Endian, this helps\nfunction readValue (buffer, isBigEndian) {\n  var low = readUInt(buffer, 16, 8, isBigEndian);\n  var high = readUInt(buffer, 16, 10, isBigEndian);\n  return (high << 16) + low;\n}\n\n// move to the next tag\nfunction nextTag (buffer) {\n  if (buffer.length > 24) {\n    return buffer.slice(12);\n  }\n}\n\n// Extract IFD tags from TIFF metadata\nfunction extractTags (buffer, isBigEndian) {\n  var tags = {};\n  var code, type, length;\n\n  while (buffer && buffer.length) {\n    code = readUInt(buffer, 16, 0, isBigEndian);\n    type = readUInt(buffer, 16, 2, isBigEndian);\n    length = readUInt(buffer, 32, 4, isBigEndian);\n\n    // 0 means end of IFD\n    if (code === 0) {\n      break;\n    } else {\n      // 256 is width, 257 is height\n      // if (code === 256 || code === 257) {\n      if (length === 1 && type === 3) {\n        tags[code] = readValue(buffer, isBigEndian);\n      }\n\n      // move to the next tag\n      buffer = nextTag(buffer);\n    }\n  }\n  return tags;\n}\n\n// Test if the TIFF is Big Endian or Little Endian\nfunction determineEndianness (buffer) {\n  var signature = buffer.toString('ascii', 0, 2);\n  if ('II' === signature) {\n    return 'LE';\n  } else if ('MM' === signature) {\n    return 'BE';\n  }\n}\n\nfunction calculate (buffer, filepath) {\n\n  if (!filepath) {\n    throw new TypeError('Tiff doesn\\'t support buffer');\n  }\n\n  // Determine BE/LE\n  var isBigEndian = determineEndianness(buffer) === 'BE';\n\n  // read the IFD\n  var ifdBuffer = readIFD(buffer, filepath, isBigEndian);\n\n  // extract the tags from the IFD\n  var tags = extractTags(ifdBuffer, isBigEndian);\n\n  var width = tags[256];\n  var height = tags[257];\n\n  if (!width || !height) {\n    throw new TypeError('Invalid Tiff, missing tags');\n  }\n\n  return {\n    'width': width,\n    'height': height\n  };\n}\n\nmodule.exports = {\n  'detect': isTIFF,\n  'calculate': calculate\n};\n","'use strict';\n\nvar typeMap = {};\n\nvar bmp = require('./types/bmp').detect;\nvar gif = require('./types/gif').detect;\nvar jpg = require('./types/jpg').detect;\nvar png = require('./types/png').detect;\nvar tiff = require('./types/tiff').detect;\n\ntypeMap = {\n  bmp,\n  gif,\n  jpg,\n  png,\n  tiff,\n}\n\nmodule.exports = function(buffer, filepath) {\n  var type, result;\n  for (type in typeMap) {\n    if (type in typeMap) {\n      result = typeMap[type](buffer, filepath);\n      if (result) {\n        return type;\n      }\n    }\n  }\n  throw new TypeError('Unsupported type');\n};\n","'use strict';\n\nvar fs   = require('fs');\nvar path = require('path');\nvar detector = require('./detector');\nvar handlers = {};\n\nvar bmp = require('./types/bmp');\nvar gif = require('./types/gif');\nvar jpg = require('./types/jpg');\nvar png = require('./types/png');\nvar tiff = require('./types/tiff');\n\nhandlers = {\n  bmp,\n  gif,\n  jpg,\n  png,\n  tiff,\n}\n\nvar MaxBufferSize = 128 * 1024;\n\nfunction lookup(buffer, filepath) {\n  var type = detector(buffer, filepath);\n\n  if (type in handlers) {\n    var size = handlers[type].calculate(buffer, filepath);\n    if (size !== false) {\n      size.type = type;\n      return size;\n    }\n  }\n\n  throw new TypeError('Unsupported file type');\n}\n\nfunction asyncFileToBuffer(filepath, callback) {\n  fs.open(filepath, 'r', function(err0, descriptor) {\n    if (err0) {\n      return callback(err0);\n    }\n\n    var size = fs.fstatSync(descriptor).size;\n    var bufferSize = Math.min(size, MaxBufferSize);\n    var buffer = new Buffer(bufferSize);\n    fs.read(descriptor, buffer, 0, bufferSize, 0, function(err1) {\n      if (err1) {\n        return callback(err1);\n      }\n\n      fs.close(descriptor, function(err2) {\n        callback(err2, buffer);\n      });\n    });\n  });\n}\n\nfunction syncFileToBuffer(filepath) {\n  var descriptor = fs.openSync(filepath, 'r');\n  var size = fs.fstatSync(descriptor).size;\n  var bufferSize = Math.min(size, MaxBufferSize);\n  var buffer = new Buffer(bufferSize);\n  fs.readSync(descriptor, buffer, 0, bufferSize, 0);\n  fs.closeSync(descriptor);\n  return buffer;\n}\n\n/**\n * Returns the dimensions of the image file\n * @param[in] input: input image path\n * @param[in] callback(option): if specified, gets size async.\n */\nmodule.exports = function(input, callback) {\n  if (typeof input !== 'string') {\n    throw new TypeError('Input must be file name');\n  }\n\n  var filepath = path.resolve(input);\n\n  if (typeof callback === 'function') {\n    asyncFileToBuffer(filepath, function(err, buffer) {\n      if (err) {\n        return callback(err);\n      }\n\n      var dimensions;\n      try {\n        dimensions = lookup(buffer, filepath);\n      } catch (e) {\n        err = e;\n      }\n      callback(err, dimensions);\n    });\n  } else {\n    var buffer = syncFileToBuffer(filepath);\n    return lookup(buffer, filepath);\n  }\n};\n","// Parse image size\n//\n'use strict';\n\nfunction parseNextNumber(str, pos, max) {\n  var code,\n  start = pos,\n  result = {\n    ok: false,\n    pos: pos,\n    value: ''\n  };\n\n  code = str.charCodeAt(pos);\n\n  while (pos < max && (code >= 0x30 /* 0 */ && code <= 0x39 /* 9 */) || code === 0x25 /* % */) {\n    code = str.charCodeAt(++pos);\n  }\n\n  result.ok = true;\n  result.pos = pos;\n  result.value = str.slice(start, pos);\n\n  return result;\n}\n\nmodule.exports = function parseImageSize(str, pos, max) {\n  var code,\n  result = {\n    ok: false,\n    pos: 0,\n    width: '',\n    height: ''\n  };\n\n  if (pos >= max) { return result; }\n\n  code = str.charCodeAt(pos);\n\n  if (code !== 0x3d /* = */) { return result; }\n\n  pos++;\n\n  // size must follow = without any white spaces as follows\n  // (1) =300x200\n  // (2) =300x\n  // (3) =x200\n  code = str.charCodeAt(pos);\n  if (code !== 0x78 /* x */ && (code < 0x30 || code  > 0x39) /* [0-9] */) {\n    return result;\n  }\n\n  // parse width\n  var resultW = parseNextNumber(str, pos, max);\n  pos = resultW.pos;\n\n  // next charactor must be 'x'\n  code = str.charCodeAt(pos);\n  if (code !== 0x78 /* x */) { return result; }\n\n  pos++;\n\n  // parse height\n  var resultH = parseNextNumber(str, pos, max);\n  pos = resultH.pos;\n\n  result.width = resultW.value;\n  result.height = resultH.value;\n  result.pos = pos;\n  result.ok = true;\n  return result;\n};\n","// Process ![test]( x =100x200)\n//                    ^^^^^^^^ this size specification\n\n'use strict';\n\nvar sizeOf = require('./imsize');\nvar parseImageSize = require('./helpers/parse_image_size');\n\nfunction image_with_size(md, options) {\n  return function(state, silent) {\n    var attrs,\n        code,\n        label,\n        labelEnd,\n        labelStart,\n        pos,\n        ref,\n        res,\n        title,\n        width = '',\n        height = '',\n        token,\n        tokens,\n        start,\n        href = '',\n        oldPos = state.pos,\n        max = state.posMax;\n\n    if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; }\n    if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; }\n\n    labelStart = state.pos + 2;\n    labelEnd = md.helpers.parseLinkLabel(state, state.pos + 1, false);\n\n    // parser failed to find ']', so it's not a valid link\n    if (labelEnd < 0) { return false; }\n\n    pos = labelEnd + 1;\n    if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n\n      //\n      // Inline link\n      //\n\n      // [link](  <href>  \"title\"  )\n      //        ^^ skipping these spaces\n      pos++;\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (code !== 0x20 && code !== 0x0A) { break; }\n      }\n      if (pos >= max) { return false; }\n\n      // [link](  <href>  \"title\"  )\n      //          ^^^^^^ parsing link destination\n      start = pos;\n      res = md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n      if (res.ok) {\n        href = state.md.normalizeLink(res.str);\n        if (state.md.validateLink(href)) {\n          pos = res.pos;\n        } else {\n          href = '';\n        }\n      }\n\n      // [link](  <href>  \"title\"  )\n      //                ^^ skipping these spaces\n      start = pos;\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (code !== 0x20 && code !== 0x0A) { break; }\n      }\n\n      // [link](  <href>  \"title\"  )\n      //                  ^^^^^^^ parsing link title\n      res = md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n      if (pos < max && start !== pos && res.ok) {\n        title = res.str;\n        pos = res.pos;\n\n        // [link](  <href>  \"title\"  )\n        //                         ^^ skipping these spaces\n        for (; pos < max; pos++) {\n          code = state.src.charCodeAt(pos);\n          if (code !== 0x20 && code !== 0x0A) { break; }\n        }\n      } else {\n        title = '';\n      }\n\n      // [link](  <href>  \"title\" =WxH  )\n      //                          ^^^^ parsing image size\n      if (pos - 1 >= 0) {\n        code = state.src.charCodeAt(pos - 1);\n\n        // there must be at least one white spaces\n        // between previous field and the size\n        if (code === 0x20) {\n          res = parseImageSize(state.src, pos, state.posMax);\n          if (res.ok) {\n            width = res.width;\n            height = res.height;\n            pos = res.pos;\n\n            // [link](  <href>  \"title\" =WxH  )\n            //                              ^^ skipping these spaces\n            for (; pos < max; pos++) {\n              code = state.src.charCodeAt(pos);\n              if (code !== 0x20 && code !== 0x0A) { break; }\n            }\n          }\n        }\n      }\n\n      if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n        state.pos = oldPos;\n        return false;\n      }\n      pos++;\n\n    } else {\n      //\n      // Link reference\n      //\n      if (typeof state.env.references === 'undefined') { return false; }\n\n      // [foo]  [bar]\n      //      ^^ optional whitespace (can include newlines)\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos);\n        if (code !== 0x20 && code !== 0x0A) { break; }\n      }\n\n      if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n        start = pos + 1;\n        pos = md.helpers.parseLinkLabel(state, pos);\n        if (pos >= 0) {\n          label = state.src.slice(start, pos++);\n        } else {\n          pos = labelEnd + 1;\n        }\n      } else {\n        pos = labelEnd + 1;\n      }\n\n      // covers label === '' and label === undefined\n      // (collapsed reference link and shortcut reference link respectively)\n      if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n      ref = state.env.references[md.utils.normalizeReference(label)];\n      if (!ref) {\n        state.pos = oldPos;\n        return false;\n      }\n      href = ref.href;\n      title = ref.title;\n    }\n\n    //\n    // We found the end of the link, and know for a fact it's a valid link;\n    // so all that's left to do is to call tokenizer.\n    //\n    if (!silent) {\n      state.pos = labelStart;\n      state.posMax = labelEnd;\n\n      var newState = new state.md.inline.State(\n        state.src.slice(labelStart, labelEnd),\n        state.md,\n        state.env,\n        tokens = []\n      );\n      newState.md.inline.tokenize(newState);\n\n      // if 'autofill' option is specified\n      // and width/height are both blank,\n      // they are filled automatically\n      if (options) {\n        if (options.autofill && width === '' && height === '') {\n          try {\n            var dimensions = sizeOf(href);\n            width = dimensions.width;\n            height = dimensions.height;\n          } catch (e) { }\n        }\n      }\n\n      token          = state.push('image', 'img', 0);\n      token.attrs    = attrs = [ [ 'src', href ],\n                                 [ 'alt', '' ] ];\n      token.children = tokens;\n      if (title) {\n        attrs.push([ 'title', title ]);\n      }\n\n      if (width !== '') {\n        attrs.push([ 'width', width ]);\n      }\n\n      if (height !== '') {\n        attrs.push([ 'height', height ]);\n      }\n    }\n\n    state.pos = pos;\n    state.posMax = max;\n    return true;\n  };\n}\n\nmodule.exports = function imsize_plugin(md, options) {\n  md.inline.ruler.before('emphasis', 'image', image_with_size(md, options));\n};\n","/**\n * parse {.class #id key=val} strings\n * @param {string} str: string to parse\n * @param {int} start: where to start parsing (including {)\n * @returns {2d array}: [['key', 'val'], ['class', 'red']]\n */\nexports.getAttrs = function (str, start, options) {\n  // not tab, line feed, form feed, space, solidus, greater than sign, quotation mark, apostrophe and equals sign\n  const allowedKeyChars = /[^\\t\\n\\f />\"'=]/;\n  const pairSeparator = ' ';\n  const keySeparator = '=';\n  const classChar = '.';\n  const idChar = '#';\n\n  const attrs = [];\n  let key = '';\n  let value = '';\n  let parsingKey = true;\n  let valueInsideQuotes = false;\n\n  // read inside {}\n  // start + left delimiter length to avoid beginning {\n  // breaks when } is found or end of string\n  for (let i = start + options.leftDelimiter.length; i < str.length; i++) {\n    if (str.slice(i, i + options.rightDelimiter.length) === options.rightDelimiter) {\n      if (key !== '') { attrs.push([key, value]); }\n      break;\n    }\n    const char_ = str.charAt(i);\n\n    // switch to reading value if equal sign\n    if (char_ === keySeparator && parsingKey) {\n      parsingKey = false;\n      continue;\n    }\n\n    // {.class} {..css-module}\n    if (char_ === classChar && key === '') {\n      if (str.charAt(i + 1) === classChar) {\n        key = 'css-module';\n        i += 1;\n      } else {\n        key = 'class';\n      }\n      parsingKey = false;\n      continue;\n    }\n\n    // {#id}\n    if (char_ === idChar && key === '') {\n      key = 'id';\n      parsingKey = false;\n      continue;\n    }\n\n    // {value=\"inside quotes\"}\n    if (char_ === '\"' && value === '') {\n      valueInsideQuotes = true;\n      continue;\n    }\n    if (char_ === '\"' && valueInsideQuotes) {\n      valueInsideQuotes = false;\n      continue;\n    }\n\n    // read next key/value pair\n    if ((char_ === pairSeparator && !valueInsideQuotes)) {\n      if (key === '') {\n        // beginning or ending space: { .red } vs {.red}\n        continue;\n      }\n      attrs.push([key, value]);\n      key = '';\n      value = '';\n      parsingKey = true;\n      continue;\n    }\n\n    // continue if character not allowed\n    if (parsingKey && char_.search(allowedKeyChars) === -1) {\n      continue;\n    }\n\n    // no other conditions met; append to key/value\n    if (parsingKey) {\n      key += char_;\n      continue;\n    }\n    value += char_;\n  }\n\n  if (options.allowedAttributes && options.allowedAttributes.length) {\n    const allowedAttributes = options.allowedAttributes;\n\n    return attrs.filter(function (attrPair) {\n      const attr = attrPair[0];\n\n      function isAllowedAttribute (allowedAttribute) {\n        return (attr === allowedAttribute\n          || (allowedAttribute instanceof RegExp && allowedAttribute.test(attr))\n        );\n      }\n\n      return allowedAttributes.some(isAllowedAttribute);\n    });\n\n  }\n  return attrs;\n\n};\n\n/**\n * add attributes from [['key', 'val']] list\n * @param {array} attrs: [['key', 'val']]\n * @param {token} token: which token to add attributes\n * @returns token\n */\nexports.addAttrs = function (attrs, token) {\n  for (let j = 0, l = attrs.length; j < l; ++j) {\n    const key = attrs[j][0];\n    if (key === 'class') {\n      token.attrJoin('class', attrs[j][1]);\n    } else if (key === 'css-module') {\n      token.attrJoin('css-module', attrs[j][1]);\n    } else {\n      token.attrPush(attrs[j]);\n    }\n  }\n  return token;\n};\n\n/**\n * Does string have properly formatted curly?\n *\n * start: '{.a} asdf'\n * end: 'asdf {.a}'\n * only: '{.a}'\n *\n * @param {string} where to expect {} curly. start, end or only.\n * @return {function(string)} Function which testes if string has curly.\n */\nexports.hasDelimiters = function (where, options) {\n\n  if (!where) {\n    throw new Error('Parameter `where` not passed. Should be \"start\", \"end\" or \"only\".');\n  }\n\n  /**\n   * @param {string} str\n   * @return {boolean}\n   */\n  return function (str) {\n    // we need minimum three chars, for example {b}\n    const minCurlyLength = options.leftDelimiter.length + 1 + options.rightDelimiter.length;\n    if (!str || typeof str !== 'string' || str.length < minCurlyLength) {\n      return false;\n    }\n\n    function validCurlyLength (curly) {\n      const isClass = curly.charAt(options.leftDelimiter.length) === '.';\n      const isId = curly.charAt(options.leftDelimiter.length) === '#';\n      return (isClass || isId)\n        ? curly.length >= (minCurlyLength + 1)\n        : curly.length >= minCurlyLength;\n    }\n\n    let start, end, slice, nextChar;\n    const rightDelimiterMinimumShift = minCurlyLength - options.rightDelimiter.length;\n    switch (where) {\n    case 'start':\n      // first char should be {, } found in char 2 or more\n      slice = str.slice(0, options.leftDelimiter.length);\n      start = slice === options.leftDelimiter ? 0 : -1;\n      end = start === -1 ? -1 : str.indexOf(options.rightDelimiter, rightDelimiterMinimumShift);\n      // check if next character is not one of the delimiters\n      nextChar = str.charAt(end + options.rightDelimiter.length);\n      if (nextChar && options.rightDelimiter.indexOf(nextChar) !== -1) {\n        end = -1;\n      }\n      break;\n\n    case 'end':\n      // last char should be }\n      start = str.lastIndexOf(options.leftDelimiter);\n      end = start === -1 ? -1 : str.indexOf(options.rightDelimiter, start + rightDelimiterMinimumShift);\n      end = end === str.length - options.rightDelimiter.length ? end : -1;\n      break;\n\n    case 'only':\n      // '{.a}'\n      slice = str.slice(0, options.leftDelimiter.length);\n      start = slice === options.leftDelimiter ? 0 : -1;\n      slice = str.slice(str.length - options.rightDelimiter.length);\n      end = slice === options.rightDelimiter ? str.length - options.rightDelimiter.length : -1;\n      break;\n\n    default:\n      throw new Error(`Unexpected case ${where}, expected 'start', 'end' or 'only'`);\n    }\n\n    return start !== -1 && end !== -1 && validCurlyLength(str.substring(start, end + options.rightDelimiter.length));\n  };\n};\n\n/**\n * Removes last curly from string.\n */\nexports.removeDelimiter = function (str, options) {\n  const start = escapeRegExp(options.leftDelimiter);\n  const end = escapeRegExp(options.rightDelimiter);\n\n  const curly = new RegExp(\n    '[ \\\\n]?' + start + '[^' + start + end + ']+' + end + '$'\n  );\n  const pos = str.search(curly);\n\n  return pos !== -1 ? str.slice(0, pos) : str;\n};\n\n/**\n * Escapes special characters in string s such that the string\n * can be used in `new RegExp`. For example \"[\" becomes \"\\\\[\".\n *\n * @param {string} s Regex string.\n * @return {string} Escaped string.\n */\nfunction escapeRegExp (s) {\n  return s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\nexports.escapeRegExp = escapeRegExp;\n\n/**\n * find corresponding opening block\n */\nexports.getMatchingOpeningToken = function (tokens, i) {\n  if (tokens[i].type === 'softbreak') {\n    return false;\n  }\n  // non closing blocks, example img\n  if (tokens[i].nesting === 0) {\n    return tokens[i];\n  }\n\n  const level = tokens[i].level;\n  const type = tokens[i].type.replace('_close', '_open');\n\n  for (; i >= 0; --i) {\n    if (tokens[i].type === type && tokens[i].level === level) {\n      return tokens[i];\n    }\n  }\n\n  return false;\n};\n\n\n/**\n * from https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js\n */\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nconst HTML_REPLACEMENTS = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;'\n};\n\nfunction replaceUnsafeChar(ch) {\n  return HTML_REPLACEMENTS[ch];\n}\n\nexports.escapeHtml = function (str) {\n  if (HTML_ESCAPE_TEST_RE.test(str)) {\n    return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n  }\n  return str;\n};\n","'use strict';\n/**\n * If a pattern matches the token stream,\n * then run transform.\n */\n\nconst utils = require('./utils.js');\n\nmodule.exports = options => {\n  const __hr = new RegExp('^ {0,3}[-*_]{3,} ?'\n                          + utils.escapeRegExp(options.leftDelimiter)\n                          + '[^' + utils.escapeRegExp(options.rightDelimiter) + ']');\n\n  return ([\n    {\n      /**\n       * ```python {.cls}\n       * for i in range(10):\n       *     print(i)\n       * ```\n       */\n      name: 'fenced code blocks',\n      tests: [\n        {\n          shift: 0,\n          block: true,\n          info: utils.hasDelimiters('end', options)\n        }\n      ],\n      transform: (tokens, i) => {\n        const token = tokens[i];\n        const start = token.info.lastIndexOf(options.leftDelimiter);\n        const attrs = utils.getAttrs(token.info, start, options);\n        utils.addAttrs(attrs, token);\n        token.info = utils.removeDelimiter(token.info, options);\n      }\n    }, {\n      /**\n       * bla `click()`{.c} ![](img.png){.d}\n       *\n       * differs from 'inline attributes' as it does\n       * not have a closing tag (nesting: -1)\n       */\n      name: 'inline nesting 0',\n      tests: [\n        {\n          shift: 0,\n          type: 'inline',\n          children: [\n            {\n              shift: -1,\n              type: (str) => str === 'image' || str === 'code_inline'\n            }, {\n              shift: 0,\n              type: 'text',\n              content: utils.hasDelimiters('start', options)\n            }\n          ]\n        }\n      ],\n      transform: (tokens, i, j) => {\n        const token = tokens[i].children[j];\n        const endChar = token.content.indexOf(options.rightDelimiter);\n        const attrToken = tokens[i].children[j - 1];\n        const attrs = utils.getAttrs(token.content, 0, options);\n        utils.addAttrs(attrs, attrToken);\n        if (token.content.length === (endChar + options.rightDelimiter.length)) {\n          tokens[i].children.splice(j, 1);\n        } else {\n          token.content = token.content.slice(endChar + options.rightDelimiter.length);\n        }\n      }\n    }, {\n      /**\n       * | h1 |\n       * | -- |\n       * | c1 |\n       *\n       * {.c}\n       */\n      name: 'tables',\n      tests: [\n        {\n          // let this token be i, such that for-loop continues at\n          // next token after tokens.splice\n          shift: 0,\n          type: 'table_close'\n        }, {\n          shift: 1,\n          type: 'paragraph_open'\n        }, {\n          shift: 2,\n          type: 'inline',\n          content: utils.hasDelimiters('only', options)\n        }\n      ],\n      transform: (tokens, i) => {\n        const token = tokens[i + 2];\n        const tableOpen = utils.getMatchingOpeningToken(tokens, i);\n        const attrs = utils.getAttrs(token.content, 0, options);\n        // add attributes\n        utils.addAttrs(attrs, tableOpen);\n        // remove <p>{.c}</p>\n        tokens.splice(i + 1, 3);\n      }\n    }, {\n      /**\n       * *emphasis*{.with attrs=1}\n       */\n      name: 'inline attributes',\n      tests: [\n        {\n          shift: 0,\n          type: 'inline',\n          children: [\n            {\n              shift: -1,\n              nesting: -1  // closing inline tag, </em>{.a}\n            }, {\n              shift: 0,\n              type: 'text',\n              content: utils.hasDelimiters('start', options)\n            }\n          ]\n        }\n      ],\n      transform: (tokens, i, j) => {\n        const token = tokens[i].children[j];\n        const content = token.content;\n        const attrs = utils.getAttrs(content, 0, options);\n        const openingToken = utils.getMatchingOpeningToken(tokens[i].children, j - 1);\n        utils.addAttrs(attrs, openingToken);\n        token.content = content.slice(content.indexOf(options.rightDelimiter) + options.rightDelimiter.length);\n      }\n    }, {\n      /**\n       * - item\n       * {.a}\n       */\n      name: 'list softbreak',\n      tests: [\n        {\n          shift: -2,\n          type: 'list_item_open'\n        }, {\n          shift: 0,\n          type: 'inline',\n          children: [\n            {\n              position: -2,\n              type: 'softbreak'\n            }, {\n              position: -1,\n              type: 'text',\n              content: utils.hasDelimiters('only', options)\n            }\n          ]\n        }\n      ],\n      transform: (tokens, i, j) => {\n        const token = tokens[i].children[j];\n        const content = token.content;\n        const attrs = utils.getAttrs(content, 0, options);\n        let ii = i - 2;\n        while (tokens[ii - 1] &&\n          tokens[ii - 1].type !== 'ordered_list_open' &&\n          tokens[ii - 1].type !== 'bullet_list_open') { ii--; }\n        utils.addAttrs(attrs, tokens[ii - 1]);\n        tokens[i].children = tokens[i].children.slice(0, -2);\n      }\n    }, {\n      /**\n       * - nested list\n       *   - with double \\n\n       *   {.a} <-- apply to nested ul\n       *\n       * {.b} <-- apply to root <ul>\n       */\n      name: 'list double softbreak',\n      tests: [\n        {\n          // let this token be i = 0 so that we can erase\n          // the <p>{.a}</p> tokens below\n          shift: 0,\n          type: (str) =>\n            str === 'bullet_list_close' ||\n            str === 'ordered_list_close'\n        }, {\n          shift: 1,\n          type: 'paragraph_open'\n        }, {\n          shift: 2,\n          type: 'inline',\n          content: utils.hasDelimiters('only', options),\n          children: (arr) => arr.length === 1\n        }, {\n          shift: 3,\n          type: 'paragraph_close'\n        }\n      ],\n      transform: (tokens, i) => {\n        const token = tokens[i + 2];\n        const content = token.content;\n        const attrs = utils.getAttrs(content, 0, options);\n        const openingToken = utils.getMatchingOpeningToken(tokens, i);\n        utils.addAttrs(attrs, openingToken);\n        tokens.splice(i + 1, 3);\n      }\n    }, {\n      /**\n       * - end of {.list-item}\n       */\n      name: 'list item end',\n      tests: [\n        {\n          shift: -2,\n          type: 'list_item_open'\n        }, {\n          shift: 0,\n          type: 'inline',\n          children: [\n            {\n              position: -1,\n              type: 'text',\n              content: utils.hasDelimiters('end', options)\n            }\n          ]\n        }\n      ],\n      transform: (tokens, i, j) => {\n        const token = tokens[i].children[j];\n        const content = token.content;\n        const attrs = utils.getAttrs(content, content.lastIndexOf(options.leftDelimiter), options);\n        utils.addAttrs(attrs, tokens[i - 2]);\n        const trimmed = content.slice(0, content.lastIndexOf(options.leftDelimiter));\n        token.content = last(trimmed) !== ' ' ?\n          trimmed : trimmed.slice(0, -1);\n      }\n    }, {\n      /**\n       * something with softbreak\n       * {.cls}\n       */\n      name: '\\n{.a} softbreak then curly in start',\n      tests: [\n        {\n          shift: 0,\n          type: 'inline',\n          children: [\n            {\n              position: -2,\n              type: 'softbreak'\n            }, {\n              position: -1,\n              type: 'text',\n              content: utils.hasDelimiters('only', options)\n            }\n          ]\n        }\n      ],\n      transform: (tokens, i, j) => {\n        const token = tokens[i].children[j];\n        const attrs = utils.getAttrs(token.content, 0, options);\n        // find last closing tag\n        let ii = i + 1;\n        while (tokens[ii + 1] && tokens[ii + 1].nesting === -1) { ii++; }\n        const openingToken = utils.getMatchingOpeningToken(tokens, ii);\n        utils.addAttrs(attrs, openingToken);\n        tokens[i].children = tokens[i].children.slice(0, -2);\n      }\n    }, {\n      /**\n       * horizontal rule --- {#id}\n       */\n      name: 'horizontal rule',\n      tests: [\n        {\n          shift: 0,\n          type: 'paragraph_open'\n        },\n        {\n          shift: 1,\n          type: 'inline',\n          children: (arr) => arr.length === 1,\n          content: (str) => str.match(__hr) !== null,\n        },\n        {\n          shift: 2,\n          type: 'paragraph_close'\n        }\n      ],\n      transform: (tokens, i) => {\n        const token = tokens[i];\n        token.type = 'hr';\n        token.tag = 'hr';\n        token.nesting = 0;\n        const content = tokens[i + 1].content;\n        const start = content.lastIndexOf(options.leftDelimiter);\n        const attrs = utils.getAttrs(content, start, options);\n        utils.addAttrs(attrs, token);\n        token.markup = content;\n        tokens.splice(i + 1, 2);\n      }\n    }, {\n      /**\n       * end of {.block}\n       */\n      name: 'end of block',\n      tests: [\n        {\n          shift: 0,\n          type: 'inline',\n          children: [\n            {\n              position: -1,\n              content: utils.hasDelimiters('end', options),\n              type: (t) => t !== 'code_inline' && t !== 'math_inline'\n            }\n          ]\n        }\n      ],\n      transform: (tokens, i, j) => {\n        const token = tokens[i].children[j];\n        const content = token.content;\n        const attrs = utils.getAttrs(content, content.lastIndexOf(options.leftDelimiter), options);\n        let ii = i + 1;\n        while (tokens[ii + 1] && tokens[ii + 1].nesting === -1) { ii++; }\n        const openingToken = utils.getMatchingOpeningToken(tokens, ii);\n        utils.addAttrs(attrs, openingToken);\n        const trimmed = content.slice(0, content.lastIndexOf(options.leftDelimiter));\n        token.content = last(trimmed) !== ' ' ?\n          trimmed : trimmed.slice(0, -1);\n      }\n    }\n  ]);\n};\n\n// get last element of array or string\nfunction last(arr) {\n  return arr.slice(-1)[0];\n}\n","'use strict';\n\nconst patternsConfig = require('./patterns.js');\n\nconst defaultOptions = {\n  leftDelimiter: '{',\n  rightDelimiter: '}',\n  allowedAttributes: []\n};\n\nmodule.exports = function attributes(md, options_) {\n  let options = Object.assign({}, defaultOptions);\n  options = Object.assign(options, options_);\n\n  const patterns = patternsConfig(options);\n\n  function curlyAttrs(state) {\n    const tokens = state.tokens;\n\n    for (let i = 0; i < tokens.length; i++) {\n      for (let p = 0; p < patterns.length; p++) {\n        const pattern = patterns[p];\n        let j = null; // position of child with offset 0\n        const match = pattern.tests.every(t => {\n          const res = test(tokens, i, t);\n          if (res.j !== null) { j = res.j; }\n          return res.match;\n        });\n        if (match) {\n          pattern.transform(tokens, i, j);\n          if (pattern.name === 'inline attributes' || pattern.name === 'inline nesting 0') {\n            // retry, may be several inline attributes\n            p--;\n          }\n        }\n      }\n    }\n  }\n\n  md.core.ruler.before('linkify', 'curly_attributes', curlyAttrs);\n};\n\n/**\n * Test if t matches token stream.\n *\n * @param {array} tokens\n * @param {number} i\n * @param {object} t Test to match.\n * @return {object} { match: true|false, j: null|number }\n */\nfunction test(tokens, i, t) {\n  const res = {\n    match: false,\n    j: null  // position of child\n  };\n\n  const ii = t.shift !== undefined\n    ? i + t.shift\n    : t.position;\n\n  if (t.shift !== undefined && ii < 0) {\n    // we should never shift to negative indexes (rolling around to back of array)\n    return res;\n  }\n\n  const token = get(tokens, ii);  // supports negative ii\n\n\n  if (token === undefined) { return res; }\n\n  for (const key of Object.keys(t)) {\n    if (key === 'shift' || key === 'position') { continue; }\n\n    if (token[key] === undefined) { return res; }\n\n    if (key === 'children' && isArrayOfObjects(t.children)) {\n      if (token.children.length === 0) {\n        return res;\n      }\n      let match;\n      const childTests = t.children;\n      const children = token.children;\n      if (childTests.every(tt => tt.position !== undefined)) {\n        // positions instead of shifts, do not loop all children\n        match = childTests.every(tt => test(children, tt.position, tt).match);\n        if (match) {\n          // we may need position of child in transform\n          const j = last(childTests).position;\n          res.j = j >= 0 ? j : children.length + j;\n        }\n      } else {\n        for (let j = 0; j < children.length; j++) {\n          match = childTests.every(tt => test(children, j, tt).match);\n          if (match) {\n            res.j = j;\n            // all tests true, continue with next key of pattern t\n            break;\n          }\n        }\n      }\n\n      if (match === false) { return res; }\n\n      continue;\n    }\n\n    switch (typeof t[key]) {\n    case 'boolean':\n    case 'number':\n    case 'string':\n      if (token[key] !== t[key]) { return res; }\n      break;\n    case 'function':\n      if (!t[key](token[key])) { return res; }\n      break;\n    case 'object':\n      if (isArrayOfFunctions(t[key])) {\n        const r = t[key].every(tt => tt(token[key]));\n        if (r === false) { return res; }\n        break;\n      }\n    // fall through for objects !== arrays of functions\n    default:\n      throw new Error(`Unknown type of pattern test (key: ${key}). Test should be of type boolean, number, string, function or array of functions.`);\n    }\n  }\n\n  // no tests returned false -> all tests returns true\n  res.match = true;\n  return res;\n}\n\nfunction isArrayOfObjects(arr) {\n  return Array.isArray(arr) && arr.length && arr.every(i => typeof i === 'object');\n}\n\nfunction isArrayOfFunctions(arr) {\n  return Array.isArray(arr) && arr.length && arr.every(i => typeof i === 'function');\n}\n\n/**\n * Get n item of array. Supports negative n, where -1 is last\n * element in array.\n * @param {array} arr\n * @param {number} n\n */\nfunction get(arr, n) {\n  return n >= 0 ? arr[n] : arr[arr.length + n];\n}\n\n// get last element of array, safe - returns {} if not found\nfunction last(arr) {\n  return arr.slice(-1)[0] || {};\n}\n","'use strict';\n\n// constructor\n\nfunction DFA() {\n  // alphabets are encoded by numbers in 16^N form, presenting its precedence\n  this.__highest_alphabet__ = 0x0;\n  this.__match_alphabets__ = {};\n  // states are union (bitwise OR) of its accepted alphabets\n  this.__initial_state__ = 0x0;\n  this.__accept_states__ = {};\n  // transitions are in the form: {prev_state: {alphabet: next_state}}\n  this.__transitions__ = {};\n  // actions take two parameters: step (line number), prev_state and alphabet\n  this.__actions__ = {};\n}\n\n// setters\n\nDFA.prototype.set_highest_alphabet = function (alphabet) {\n  this.__highest_alphabet__ = alphabet;\n};\n\nDFA.prototype.set_match_alphabets = function (matches) {\n  this.__match_alphabets__ = matches;\n};\n\nDFA.prototype.set_initial_state = function (initial) {\n  this.__initial_state__ = initial;\n};\n\nDFA.prototype.set_accept_states = function (accepts) {\n  for (var i = 0; i < accepts.length; i++) {\n    this.__accept_states__[accepts[i]] = true;\n  }\n};\n\nDFA.prototype.set_transitions = function (transitions) {\n  this.__transitions__ = transitions;\n};\n\nDFA.prototype.set_actions = function (actions) {\n  this.__actions__ = actions;\n};\n\nDFA.prototype.update_transition = function (state, alphabets) {\n  this.__transitions__[state] = Object.assign(\n    this.__transitions__[state] || Object(), alphabets\n  );\n};\n\n// methods\n\nDFA.prototype.execute = function (start, end) {\n  var state, step, alphabet;\n  for (state = this.__initial_state__, step = start; state && step < end; step++) {\n    for (alphabet = this.__highest_alphabet__; alphabet > 0x0; alphabet >>= 4) {\n      if ((state & alphabet)\n          && this.__match_alphabets__[alphabet].call(this, step, state, alphabet)) { break; }\n    }\n\n    this.__actions__(step, state, alphabet);\n\n    if (alphabet === 0x0) { break; }\n    state = this.__transitions__[state][alphabet] || 0x0;\n  }\n  return !!this.__accept_states__[state];\n};\n\nmodule.exports = DFA;\n\n/* vim: set ts=2 sw=2 et: */\n","'use strict';\nvar DFA = require('./lib/dfa.js');\n\nmodule.exports = function multimd_table_plugin(md, options) {\n  var defaults = {\n    multiline:  false,\n    rowspan:    false,\n    headerless: false,\n    multibody:  true,\n    autolabel:  true\n  };\n  options = md.utils.assign({}, defaults, options || {});\n\n  function scan_bound_indices(state, line) {\n    /**\n     * Naming convention of positional variables\n     * - list-item\n     * ·········longtext······\\n\n     *   ^head  ^start  ^end  ^max\n     */\n    var start = state.bMarks[line] + state.sCount[line],\n        head = state.bMarks[line] + state.blkIndent,\n        end = state.skipSpacesBack(state.eMarks[line], head),\n        bounds = [], pos, posjump,\n        escape = false, code = false;\n\n    /* Scan for valid pipe character position */\n    for (pos = start; pos < end; pos++) {\n      switch (state.src.charCodeAt(pos)) {\n        case 0x5c /* \\ */:\n          escape = true; break;\n        case 0x60 /* ` */:\n          posjump = state.skipChars(pos, 0x60) - 1;\n          /* make \\` closes the code sequence, but not open it;\n             the reason is that `\\` is correct code block */\n          /* eslint-disable-next-line brace-style */\n          if (posjump > pos) { pos = posjump; }\n          else if (code || !escape) { code = !code; }\n          escape = false; break;\n        case 0x7c /* | */:\n          if (!code && !escape) { bounds.push(pos); }\n          escape = false; break;\n        default:\n          escape = false; break;\n      }\n    }\n    if (bounds.length === 0) return bounds;\n\n    /* Pad in newline characters on last and this line */\n    if (bounds[0] > head) { bounds.unshift(head - 1); }\n    if (bounds[bounds.length - 1] < end - 1) { bounds.push(end); }\n\n    return bounds;\n  }\n\n  function table_caption(state, silent, line) {\n    var meta = { text: null, label: null },\n        start = state.bMarks[line] + state.sCount[line],\n        max = state.eMarks[line],\n        /* A non-greedy qualifier allows the label to be matched */\n        capRE = /^\\[(.+?)\\](\\[([^\\[\\]]+)\\])?\\s*$/,\n        matches = state.src.slice(start, max).match(capRE);\n\n    if (!matches) { return false; }\n    if (silent)  { return true; }\n\n    meta.text  = matches[1];\n\n    if (!options.autolabel && !matches[2]) { return meta; }\n\n    meta.label = matches[2] || matches[1];\n    meta.label = meta.label.toLowerCase().replace(/\\W+/g, '');\n\n    return meta;\n  }\n\n  function table_row(state, silent, line) {\n    var meta = { bounds: null, multiline: null },\n        bounds = scan_bound_indices(state, line),\n        start, pos, oldMax;\n\n    if (bounds.length < 2) { return false; }\n    if (silent) { return true; }\n\n    meta.bounds = bounds;\n\n    /* Multiline. Scan boundaries again since it's very complicated */\n    if (options.multiline) {\n      start = state.bMarks[line] + state.sCount[line];\n      pos = state.eMarks[line] - 1; /* where backslash should be */\n      meta.multiline = (state.src.charCodeAt(pos) === 0x5C/* \\ */);\n      if (meta.multiline) {\n        oldMax = state.eMarks[line];\n        state.eMarks[line] = state.skipSpacesBack(pos, start);\n        meta.bounds = scan_bound_indices(state, line);\n        state.eMarks[line] = oldMax;\n      }\n    }\n\n    return meta;\n  }\n\n  function table_separator(state, silent, line) {\n    var meta = { aligns: [], wraps: [] },\n        bounds = scan_bound_indices(state, line),\n        sepRE = /^:?(-+|=+):?\\+?$/,\n        c, text, align;\n\n    /* Only separator needs to check indents */\n    if (state.sCount[line] - state.blkIndent >= 4) { return false; }\n    if (bounds.length === 0) { return false; }\n\n    for (c = 0; c < bounds.length - 1; c++) {\n      text = state.src.slice(bounds[c] + 1, bounds[c + 1]).trim();\n      if (!sepRE.test(text)) { return false; }\n\n      meta.wraps.push(text.charCodeAt(text.length - 1) === 0x2B/* + */);\n      align = ((text.charCodeAt(0) === 0x3A/* : */) << 4) |\n               (text.charCodeAt(text.length - 1 - meta.wraps[c]) === 0x3A);\n      switch (align) {\n        case 0x00: meta.aligns.push('');       break;\n        case 0x01: meta.aligns.push('right');  break;\n        case 0x10: meta.aligns.push('left');   break;\n        case 0x11: meta.aligns.push('center'); break;\n      }\n    }\n    if (silent) { return true; }\n    return meta;\n  }\n\n  function table_empty(state, silent, line) {\n    return state.isEmpty(line);\n  }\n\n  function table(state, startLine, endLine, silent) {\n    /**\n     * Regex pseudo code for table:\n     *     caption? header+ separator (data+ empty)* data+ caption?\n     *\n     * We use DFA to emulate this plugin. Types with lower precedence are\n     * set-minus from all the formers.  Noted that separator should have higher\n     * precedence than header or data.\n     *   |  state  | caption separator header data empty | --> lower precedence\n     *   | 0x10100 |    1        0       1     0     0   |\n     */\n    var tableDFA = new DFA(),\n        grp = 0x10, mtr = -1,\n        token, tableToken, trToken,\n        colspan, leftToken,\n        rowspan, upTokens = [],\n        tableLines, tgroupLines,\n        tag, text, range, r, c, b, t,\n        blockState;\n\n    if (startLine + 2 > endLine) { return false; }\n\n    /**\n     * First pass: validate and collect info into table token. IR is stored in\n     * markdown-it `token.meta` to be pushed later. table/tr open tokens are\n     * generated here.\n     */\n    tableToken       = new state.Token('table_open', 'table', 1);\n    tableToken.meta  = { sep: null, cap: null, tr: [] };\n\n    tableDFA.set_highest_alphabet(0x10000);\n    tableDFA.set_initial_state(0x10100);\n    tableDFA.set_accept_states([ 0x10010, 0x10011, 0x00000 ]);\n    tableDFA.set_match_alphabets({\n      0x10000: table_caption.bind(this, state, true),\n      0x01000: table_separator.bind(this, state, true),\n      0x00100: table_row.bind(this, state, true),\n      0x00010: table_row.bind(this, state, true),\n      0x00001: table_empty.bind(this, state, true)\n    });\n    tableDFA.set_transitions({\n      0x10100: { 0x10000: 0x00100, 0x00100: 0x01100 },\n      0x00100: { 0x00100: 0x01100 },\n      0x01100: { 0x01000: 0x10010, 0x00100: 0x01100 },\n      0x10010: { 0x10000: 0x00000, 0x00010: 0x10011 },\n      0x10011: { 0x10000: 0x00000, 0x00010: 0x10011, 0x00001: 0x10010 }\n    });\n    if (options.headerless) {\n      tableDFA.set_initial_state(0x11100);\n      tableDFA.update_transition(0x11100,\n        { 0x10000: 0x01100, 0x01000: 0x10010, 0x00100: 0x01100 }\n      );\n      trToken      = new state.Token('tr_placeholder', 'tr', 0);\n      trToken.meta = Object();  // avoid trToken.meta.grp throws exception\n    }\n    if (!options.multibody) {\n      tableDFA.update_transition(0x10010,\n        { 0x10000: 0x00000, 0x00010: 0x10010 }  // 0x10011 is never reached\n      );\n    }\n    /* Don't mix up DFA `_state` and markdown-it `state` */\n    tableDFA.set_actions(function (_line, _state, _type) {\n      // console.log(_line, _state.toString(16), _type.toString(16))  // for test\n      switch (_type) {\n        case 0x10000:\n          if (tableToken.meta.cap) { break; }\n          tableToken.meta.cap       = table_caption(state, false, _line);\n          tableToken.meta.cap.map   = [ _line, _line + 1 ];\n          tableToken.meta.cap.first = (_line === startLine);\n          break;\n        case 0x01000:\n          tableToken.meta.sep     = table_separator(state, false, _line);\n          tableToken.meta.sep.map = [ _line, _line + 1 ];\n          trToken.meta.grp |= 0x01;  // previously assigned at case 0x00110\n          grp               = 0x10;\n          break;\n        case 0x00100:\n        case 0x00010:\n          trToken           = new state.Token('tr_open', 'tr', 1);\n          trToken.map       = [ _line, _line + 1 ];\n          trToken.meta      = table_row(state, false, _line);\n          trToken.meta.type = _type;\n          trToken.meta.grp  = grp;\n          grp               = 0x00;\n          tableToken.meta.tr.push(trToken);\n          /* Multiline. Merge trTokens as an entire multiline trToken */\n          if (options.multiline) {\n            if (trToken.meta.multiline && mtr < 0) {\n              /* Start line of multiline row. mark this trToken */\n              mtr = tableToken.meta.tr.length - 1;\n            } else if (!trToken.meta.multiline && mtr >= 0) {\n              /* End line of multiline row. merge forward until the marked trToken */\n              token               = tableToken.meta.tr[mtr];\n              token.meta.mbounds  = tableToken.meta.tr\n                .slice(mtr).map(function (tk) { return tk.meta.bounds; });\n              token.map[1]        = trToken.map[1];\n              tableToken.meta.tr  = tableToken.meta.tr.slice(0, mtr + 1);\n              mtr = -1;\n            }\n          }\n          break;\n        case 0x00001:\n          trToken.meta.grp |= 0x01;\n          grp               = 0x10;\n          break;\n      }\n    });\n\n    if (tableDFA.execute(startLine, endLine) === false) { return false; }\n    // if (!tableToken.meta.sep) { return false; } // always evaluated true\n    if (!tableToken.meta.tr.length) { return false; } // false under headerless corner case\n    if (silent) { return true; }\n\n    /* Last data row cannot be detected. not stored to trToken outside? */\n    tableToken.meta.tr[tableToken.meta.tr.length - 1].meta.grp |= 0x01;\n\n\n    /**\n     * Second pass: actually push the tokens into `state.tokens`.\n     * thead/tbody/th/td open tokens and all closed tokens are generated here;\n     * thead/tbody are generally called tgroup; td/th are generally called tcol.\n     */\n    tableToken.map   = tableLines = [ startLine, 0 ];\n    tableToken.block = true;\n    tableToken.level = state.level++;\n    state.tokens.push(tableToken);\n\n    if (tableToken.meta.cap) {\n      token          = state.push('caption_open', 'caption', 1);\n      token.map      = tableToken.meta.cap.map;\n\n      /* Null is possible when disabled the option autolabel */\n      if (tableToken.meta.cap.label !== null) {\n        token.attrs    = [ [ 'id', tableToken.meta.cap.label ] ];\n      }\n\n      token          = state.push('inline', '', 0);\n      token.content  = tableToken.meta.cap.text;\n      token.map      = tableToken.meta.cap.map;\n      token.children = [];\n\n      token          = state.push('caption_close', 'caption', -1);\n    }\n\n    for (r = 0; r < tableToken.meta.tr.length; r++) {\n      leftToken = new state.Token('td_th_placeholder', '', 0);\n\n      /* Push in thead/tbody and tr open tokens */\n      trToken = tableToken.meta.tr[r];\n      // console.log(trToken.meta); // for test\n      if (trToken.meta.grp & 0x10) {\n        tag = (trToken.meta.type === 0x00100) ? 'thead' : 'tbody';\n        token     = state.push(tag + '_open', tag, 1);\n        token.map = tgroupLines = [ trToken.map[0], 0 ];  // array ref\n        upTokens  = [];\n      }\n      trToken.block = true;\n      trToken.level = state.level++;\n      state.tokens.push(trToken);\n\n      /* Push in th/td tokens */\n      for (c = 0; c < trToken.meta.bounds.length - 1; c++) {\n        range = [ trToken.meta.bounds[c] + 1, trToken.meta.bounds[c + 1] ];\n        text = state.src.slice.apply(state.src, range);\n\n        if (text === '') {\n          colspan = leftToken.attrGet('colspan');\n          leftToken.attrSet('colspan', colspan === null ? 2 : colspan + 1);\n          continue;\n        }\n        if (options.rowspan && upTokens[c] && text.trim() === '^^') {\n          rowspan = upTokens[c].attrGet('rowspan');\n          upTokens[c].attrSet('rowspan', rowspan === null ? 2 : rowspan + 1);\n          leftToken = new state.Token('td_th_placeholder', '', 0);\n          continue;\n        }\n\n        tag = (trToken.meta.type === 0x00100) ? 'th' : 'td';\n        token       = state.push(tag + '_open', tag, 1);\n        token.map   = trToken.map;\n        token.attrs = [];\n        if (tableToken.meta.sep.aligns[c]) {\n          token.attrs.push([ 'style', 'text-align:' + tableToken.meta.sep.aligns[c] ]);\n        }\n        if (tableToken.meta.sep.wraps[c]) {\n          token.attrs.push([ 'class', 'extend' ]);\n        }\n\n        leftToken = upTokens[c] = token;\n\n        /* Multiline. Join the text and feed into markdown-it blockParser. */\n        if (options.multiline && trToken.meta.multiline && trToken.meta.mbounds) {\n          // Pad the text with empty lines to ensure the line number mapping is correct\n          text = new Array(trToken.map[0]).fill('').concat([ text.trimRight() ]);\n          for (b = 1; b < trToken.meta.mbounds.length; b++) {\n            /* Line with N bounds has cells indexed from 0 to N-2 */\n            if (c > trToken.meta.mbounds[b].length - 2) { continue; }\n            range = [ trToken.meta.mbounds[b][c] + 1, trToken.meta.mbounds[b][c + 1] ];\n            text.push(state.src.slice.apply(state.src, range).trimRight());\n          }\n          blockState = new state.md.block.State(text.join('\\n'), state.md, state.env, []);\n          blockState.level = trToken.level + 1;\n          // Start tokenizing from the actual content (trToken.map[0])\n          state.md.block.tokenize(blockState, trToken.map[0], blockState.lineMax);\n          for (t = 0; t < blockState.tokens.length; t++) {\n            state.tokens.push(blockState.tokens[t]);\n          }\n        } else {\n          token          = state.push('inline', '', 0);\n          token.content  = text.trim();\n          token.map      = trToken.map;\n          token.level    = trToken.level + 1;\n          token.children = [];\n        }\n\n        token = state.push(tag + '_close', tag, -1);\n      }\n\n      /* Push in tr and thead/tbody closed tokens */\n      state.push('tr_close', 'tr', -1);\n      if (trToken.meta.grp & 0x01) {\n        tag = (trToken.meta.type === 0x00100) ? 'thead' : 'tbody';\n        token = state.push(tag + '_close', tag, -1);\n        tgroupLines[1] = trToken.map[1];\n      }\n    }\n\n    tableLines[1] = Math.max(\n      tgroupLines[1],\n      tableToken.meta.sep.map[1],\n      tableToken.meta.cap ? tableToken.meta.cap.map[1] : -1\n    );\n    token = state.push('table_close', 'table', -1);\n\n    state.line = tableLines[1];\n    return true;\n  }\n\n  md.block.ruler.at('table', table, { alt: [ 'paragraph', 'reference' ] });\n};\n\n/* vim: set ts=2 sw=2 et: */\n","var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", {value: true});\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, {get: all[name], enumerable: true});\n};\n\n// src/index.ts\n__markAsModule(exports);\n__export(exports, {\n  colorPlugin: () => colorPlugin,\n  default: () => src_default\n});\n\n// src/parseColorName.ts\nvar open = 123;\nvar close = 125;\nvar parseColorName = (state, start, disableNested) => {\n  let level = 1;\n  let found = false;\n  let prevPos;\n  let labelEnd = -1;\n  const max = state.posMax;\n  const oldPos = state.pos;\n  state.pos = start + 1;\n  while (state.pos < max) {\n    const marker = state.src.charCodeAt(state.pos);\n    if (marker === close) {\n      level--;\n      if (level === 0) {\n        found = true;\n        break;\n      }\n    }\n    prevPos = state.pos;\n    state.md.inline.skipToken(state);\n    if (marker === open) {\n      if (prevPos === state.pos - 1) {\n        level++;\n      } else if (disableNested) {\n        state.pos = oldPos;\n        return -1;\n      }\n    }\n  }\n  if (found) {\n    labelEnd = state.pos;\n  }\n  state.pos = oldPos;\n  return labelEnd;\n};\n\n// src/parseContent.ts\nvar open2 = 40;\nvar close2 = 41;\nvar parseContent = (state, start) => {\n  let pos = start;\n  const max = state.posMax;\n  if (pos < max && state.src.charCodeAt(pos) === open2) {\n    pos++;\n    let level = 1;\n    while (pos < max) {\n      const char = state.src.charCodeAt(pos);\n      if (char === close2) {\n        level--;\n        if (level === 0) {\n          return pos;\n        }\n      } else if (char === open2) {\n        level++;\n      }\n      pos++;\n    }\n    return -1;\n  } else {\n    return -1;\n  }\n};\n\n// src/index.ts\nvar colorPlugin = (md, {\n  defaultClassName = \"md-colorify\",\n  inline = false\n} = {}) => {\n  const tokenize = (state, silent) => {\n    const max = state.posMax;\n    if (state.src.charCodeAt(state.pos) !== 123) {\n      return false;\n    }\n    const labelStart = state.pos + 1;\n    const labelEnd = parseColorName(state, state.pos, true);\n    if (labelEnd < 0) {\n      return false;\n    }\n    const colorName = state.src.substring(labelStart, labelEnd);\n    const contentStart = labelEnd + 2;\n    const contentEnd = parseContent(state, labelEnd + 1);\n    if (contentEnd < 0) {\n      return false;\n    }\n    if (!silent) {\n      state.pos = contentStart;\n      state.posMax = contentEnd;\n      const openToken = state.push(\"color_open\", \"span\", 1);\n      openToken.attrs = [[\"class\", [`${defaultClassName}`, `${defaultClassName}--${colorName}`].join(\" \")]];\n      if (inline) {\n        openToken.attrs.push([\"style\", `color: ${colorName};`]);\n      }\n      openToken.info = colorName;\n      state.md.inline.tokenize(state);\n      const closeToken = state.push(\"color_close\", \"span\", -1);\n      closeToken.info = colorName;\n    }\n    state.pos = contentEnd + 1;\n    state.posMax = max;\n    return true;\n  };\n  md.inline.ruler.before(\"emphasis\", \"color\", tokenize);\n};\nvar src_default = colorPlugin;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  colorPlugin\n});\n","import emoji from 'markdown-it-emoji';\nimport subscript from 'markdown-it-sub';\nimport superscript from 'markdown-it-sup';\nimport footnote from 'markdown-it-footnote';\nimport deflist from 'markdown-it-deflist';\nimport abbreviation from 'markdown-it-abbr';\nimport insert from 'markdown-it-ins';\nimport mark from 'markdown-it-mark';\nimport tasklists from 'markdown-it-task-lists';\nimport imsize from '@tlbs/markdown-it-imsize-static-require';\nimport markdownItAttrs from 'markdown-it-attrs';\nimport multimdTable from 'markdown-it-multimd-table';\nimport mdColor from 'markdown-it-color';\nimport mila from './link';\n\nexport default function (md) {\n  md\n    .use(emoji)\n    .use(subscript)\n    .use(superscript)\n    .use(footnote)\n    .use(deflist)\n    .use(abbreviation)\n    .use(insert)\n    .use(mark)\n    .use(tasklists, { enabled: true })\n    .use(imsize, { autofill: true })\n    .use(markdownItAttrs, {\n      leftDelimiter: '{',\n      rightDelimiter: '}',\n      allowedAttributes: [],  // empty array = all attributes are allowed\n    })\n    .use(mila, {\n      pattern: /^https?:\\/\\//,\n      attrs: {\n        target: '_blank',\n      },\n    })\n    .use(mdColor, {\n      defaultClassName: '',\n      inline: true,\n    })\n    .use(multimdTable, { enableRowspan: true, enableMultilineRows: true });\n}\n"],"names":["module","angry","blush","broken_heart","confused","cry","frowning","heart","imp","innocent","joy","kissing","laughing","neutral_face","open_mouth","rage","smile","smiley","smiling_imp","sob","stuck_out_tongue","sunglasses","sweat","sweat_smile","unamused","wink","emoji_html","tokens","idx","content","create_rule","md","emojies","shortcuts","scanRE","replaceRE","arrayReplaceAt","utils","ucm","lib","ucmicro","ZPCc","RegExp","Z","source","P","Cc","join","splitTextToken","text","level","Token","token","last_pos","nodes","replace","match","offset","src","emoji_name","hasOwnProperty","test","length","slice","push","markup","emoji_replace","state","i","j","l","blockTokens","autolinkLevel","type","children","info","nesting","quoteRE","str","normalize_opts","options","defs","enabled","Object","keys","reduce","acc","key","indexOf","Array","isArray","forEach","alias","names","map","name","concat","sort","reverse","require","emoji_plugin","defaults","opts","assign","renderer","rules","emoji","core","ruler","after","emojies_defs","emojies_shortcuts","bare_emoji_plugin","UNESCAPE_RE","subscript","silent","found","max","posMax","start","pos","charCodeAt","inline","skipToken","sub_plugin","superscript","sup_plugin","render_footnote_anchor_name","env","n","Number","meta","id","toString","prefix","docId","render_footnote_caption","subId","render_footnote_ref","slf","footnote_anchor_name","caption","footnote_caption","refid","render_footnote_block_open","xhtmlOut","render_footnote_block_close","render_footnote_open","render_footnote_close","render_footnote_anchor","footnote_plugin","parseLinkLabel","helpers","isSpace","footnote_ref","footnote_block_open","footnote_block_close","footnote_open","footnote_close","footnote_anchor","footnote_def","startLine","endLine","oldBMark","oldTShift","oldSCount","oldParentType","label","initial","ch","posAfterColon","bMarks","tShift","eMarks","footnotes","refs","sCount","parentType","blkIndent","block","tokenize","footnote_inline","labelStart","labelEnd","footnoteId","list","parse","footnoteSubId","count","footnote_tail","t","lastParagraph","current","currentLabel","insideRef","refTokens","filter","tok","pop","before","alt","deflist_plugin","skipMarker","line","marker","skipSpaces","markTightParagraphs","hidden","deflist","contentStart","ddLine","dtLine","itemLines","listLines","listTokIdx","nextLine","oldDDIndent","oldIndent","oldTight","prevEmptyEnd","tight","ddIndent","isEmpty","OUTER","getLines","trim","escapeRE","OTHER_CHARS","UNICODE_PUNCT_RE","UNICODE_SPACE_RE","abbr_def","title","abbreviations","abbr_replace","reg","m","regText","regSimple","currentToken","x","substr","a","b","split","lastIndex","exec","index","attrs","ins_plugin","scanned","len","scanDelims","String","fromCharCode","can_open","can_close","delimiters","jump","end","open","close","postProcess","startDelim","endDelim","loneMarkers","tag","ruler2","curr","tokens_meta","disableCheckboxes","useLabelWrapper","useLabelAfter","labelAfter","isTodoItem","todoify","attrSet","parentToken","value","attrIndex","attr","attrPush","targetLevel","isInline","isParagraph","isListItem","startsWithTodoMarkdown","TokenConstructor","unshift","makeCheckbox","Math","ceil","random","afterLabel","beginLabel","endLabel","checkbox","disabledAttr","for","isBMP","buffer","calculate","readUInt32LE","gifRegexp","isGIF","signature","readUInt16LE","validJFIFMarkers","red","isJPG","SOIMarker","JFIFMarker","got","expected","console","warn","extractSize","readUInt16BE","validateBuffer","TypeError","next","pngSignature","isPNG","readUInt32BE","bits","isBigEndian","endian","method","call","fs","readUInt","isTIFF","hex4","readIFD","filepath","ifdOffset","bufferSize","fileSize","statSync","size","endBuffer","Buffer","descriptor","openSync","readSync","ifdBuffer","readValue","low","high","nextTag","extractTags","tags","code","determineEndianness","width","height","typeMap","bmp","detect","gif","jpg","png","tiff","result","path","detector","handlers","MaxBufferSize","lookup","asyncFileToBuffer","callback","err0","fstatSync","min","read","err1","err2","syncFileToBuffer","closeSync","input","resolve","err","dimensions","e","parseNextNumber","ok","parseImageSize","resultW","resultH","sizeOf","image_with_size","ref","res","href","oldPos","parseLinkDestination","normalizeLink","validateLink","parseLinkTitle","references","normalizeReference","newState","State","autofill","imsize_plugin","exports","allowedKeyChars","pairSeparator","keySeparator","classChar","idChar","parsingKey","valueInsideQuotes","leftDelimiter","rightDelimiter","char_","charAt","search","allowedAttributes","attrPair","isAllowedAttribute","allowedAttribute","some","attrJoin","where","Error","minCurlyLength","validCurlyLength","curly","isClass","isId","nextChar","rightDelimiterMinimumShift","lastIndexOf","substring","escapeRegExp","s","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","__hr","tests","shift","hasDelimiters","transform","getAttrs","addAttrs","removeDelimiter","endChar","attrToken","splice","tableOpen","getMatchingOpeningToken","openingToken","position","ii","arr","trimmed","last","patternsConfig","defaultOptions","attributes","options_","patterns","curlyAttrs","p","pattern","every","undefined","get","isArrayOfObjects","childTests","tt","isArrayOfFunctions","r","DFA","__highest_alphabet__","__match_alphabets__","__initial_state__","__accept_states__","__transitions__","__actions__","prototype","set_highest_alphabet","alphabet","set_match_alphabets","matches","set_initial_state","set_accept_states","accepts","set_transitions","transitions","set_actions","actions","update_transition","alphabets","execute","step","multimd_table_plugin","multiline","rowspan","headerless","multibody","autolabel","scan_bound_indices","head","skipSpacesBack","bounds","posjump","escape","skipChars","table_caption","capRE","toLowerCase","table_row","oldMax","table_separator","aligns","wraps","sepRE","c","align","table_empty","table","tableDFA","grp","mtr","tableToken","trToken","colspan","leftToken","upTokens","tableLines","tgroupLines","range","blockState","sep","cap","tr","bind","_line","_state","_type","first","mbounds","tk","apply","attrGet","fill","trimRight","lineMax","at","__defProp","defineProperty","__markAsModule","target","__export","all","enumerable","colorPlugin","default","src_default","parseColorName","disableNested","prevPos","open2","close2","parseContent","char","defaultClassName","colorName","contentEnd","openToken","closeToken","use","footnote","abbreviation","insert","mark","tasklists","imsize","markdownItAttrs","mila","mdColor","multimdTable","enableRowspan","enableMultilineRows"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}