{"version":3,"file":"vendors-059be3de.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./node_modules/lz-string/libs/lz-string.js","webpack://iadviser/./node_modules/markdown-it/lib/common/utils.mjs","webpack://iadviser/./node_modules/markdown-it/lib/helpers/parse_link_label.mjs","webpack://iadviser/./node_modules/markdown-it/lib/helpers/parse_link_destination.mjs","webpack://iadviser/./node_modules/markdown-it/lib/helpers/parse_link_title.mjs","webpack://iadviser/./node_modules/markdown-it/lib/renderer.mjs","webpack://iadviser/./node_modules/markdown-it/lib/ruler.mjs","webpack://iadviser/./node_modules/markdown-it/lib/token.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/state_core.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/normalize.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/linkify.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/replacements.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/smartquotes.mjs","webpack://iadviser/./node_modules/markdown-it/lib/parser_core.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/block.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/inline.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_core/text_join.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/state_block.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/table.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/list.mjs","webpack://iadviser/./node_modules/markdown-it/lib/common/html_re.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/html_block.mjs","webpack://iadviser/./node_modules/markdown-it/lib/common/html_blocks.mjs","webpack://iadviser/./node_modules/markdown-it/lib/parser_block.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/code.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/fence.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/blockquote.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/hr.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/reference.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/heading.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/lheading.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_block/paragraph.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/state_inline.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/text.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/linkify.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/escape.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/strikethrough.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/emphasis.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/autolink.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/entity.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs","webpack://iadviser/./node_modules/markdown-it/lib/parser_inline.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/newline.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/backticks.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/link.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/image.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/html_inline.mjs","webpack://iadviser/./node_modules/markdown-it/lib/rules_inline/fragments_join.mjs","webpack://iadviser/./node_modules/markdown-it/lib/index.mjs","webpack://iadviser/./node_modules/markdown-it/lib/presets/default.mjs","webpack://iadviser/./node_modules/markdown-it/lib/presets/zero.mjs","webpack://iadviser/./node_modules/markdown-it/lib/presets/commonmark.mjs"],"sourcesContent":["// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n","// Utilities\n//\n\nimport * as mdurl from 'mdurl'\nimport * as ucmicro from 'uc.micro'\nimport { decodeHTML } from 'entities'\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isString (obj) { return _class(obj) === '[object String]' }\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction has (object, key) {\n return _hasOwnProperty.call(object, key)\n}\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object')\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt (src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1))\n}\n\nfunction isValidEntityCode (c) {\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false }\n if (c === 0x0B) { return false }\n if (c >= 0x0E && c <= 0x1F) { return false }\n if (c >= 0x7F && c <= 0x9F) { return false }\n // out of range\n if (c > 0x10FFFF) { return false }\n return true\n}\n\nfunction fromCodePoint (c) {\n /* eslint no-bitwise:0 */\n if (c > 0xffff) {\n c -= 0x10000\n const surrogate1 = 0xd800 + (c >> 10)\n const surrogate2 = 0xdc00 + (c & 0x3ff)\n\n return String.fromCharCode(surrogate1, surrogate2)\n }\n return String.fromCharCode(c)\n}\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i\n\nfunction replaceEntityPattern (match, name) {\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n const code = name[1].toLowerCase() === 'x'\n ? parseInt(name.slice(2), 16)\n : parseInt(name.slice(1), 10)\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code)\n }\n\n return match\n }\n\n const decoded = decodeHTML(match)\n if (decoded !== match) {\n return decoded\n }\n\n return match\n}\n\nfunction unescapeMd (str) {\n if (str.indexOf('\\\\') < 0) { return str }\n return str.replace(UNESCAPE_MD_RE, '$1')\n}\n\nfunction unescapeAll (str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped }\n return replaceEntityPattern(match, entity)\n })\n}\n\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g\nconst HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n}\n\nfunction replaceUnsafeChar (ch) {\n return HTML_REPLACEMENTS[ch]\n}\n\nfunction escapeHtml (str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar)\n }\n return str\n}\n\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g\n\nfunction escapeRE (str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&')\n}\n\nfunction isSpace (code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true\n }\n return false\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace (code) {\n if (code >= 0x2000 && code <= 0x200A) { return true }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true\n }\n return false\n}\n\n// Currently without astral characters support.\nfunction isPunctChar (ch) {\n return ucmicro.P.test(ch) || ucmicro.S.test(ch)\n}\n\nfunction isPunctCharCode (code) {\n return isPunctChar(fromCodePoint(code))\n}\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct (ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference (str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' ')\n\n // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n /* c8 ignore next 2 */\n str = str.replace(/ẞ/g, 'ß')\n }\n\n // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n return str.toLowerCase().toUpperCase()\n}\n\nfunction isAsciiTrimmable (c) {\n return c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d\n}\n\n// \"Light\" .trim() for blocks (headers, paragraphs), where unicode spaces\n// should be preserved.\nfunction asciiTrim (str) {\n let start = 0\n for (; start < str.length; start++) {\n if (!isAsciiTrimmable(str.charCodeAt(start))) {\n break\n }\n }\n let end = str.length - 1\n for (; end >= start; end--) {\n if (!isAsciiTrimmable(str.charCodeAt(end))) {\n break\n }\n }\n return str.slice(start, end + 1)\n}\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nconst lib = { mdurl, ucmicro }\n\nexport {\n lib,\n assign,\n isString,\n has,\n unescapeMd,\n unescapeAll,\n isValidEntityCode,\n fromCodePoint,\n escapeHtml,\n arrayReplaceAt,\n isSpace,\n isWhiteSpace,\n isMdAsciiPunct,\n isPunctChar,\n isPunctCharCode,\n escapeRE,\n normalizeReference,\n asciiTrim\n}\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n\nexport default function parseLinkLabel (state, start, disableNested) {\n let level, found, marker, prevPos\n\n const max = state.posMax\n const oldPos = state.pos\n\n state.pos = start + 1\n level = 1\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos)\n if (marker === 0x5D /* ] */) {\n level--\n if (level === 0) {\n found = true\n break\n }\n }\n\n prevPos = state.pos\n state.md.inline.skipToken(state)\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++\n } else if (disableNested) {\n state.pos = oldPos\n return -1\n }\n }\n }\n\n let labelEnd = -1\n\n if (found) {\n labelEnd = state.pos\n }\n\n // restore old state\n state.pos = oldPos\n\n return labelEnd\n}\n","// Parse link destination\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\nexport default function parseLinkDestination (str, start, max) {\n let code\n let pos = start\n\n const result = {\n ok: false,\n pos: 0,\n str: ''\n }\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === 0x0A /* \\n */) { return result }\n if (code === 0x3C /* < */) { return result }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1\n result.str = unescapeAll(str.slice(start + 1, pos))\n result.ok = true\n return result\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2\n continue\n }\n\n pos++\n }\n\n // no closing '>'\n return result\n }\n\n // this should be ... } else { ... branch\n\n let level = 0\n while (pos < max) {\n code = str.charCodeAt(pos)\n\n if (code === 0x20) { break }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) { break }\n pos += 2\n continue\n }\n\n if (code === 0x28 /* ( */) {\n level++\n if (level > 32) { return result }\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break }\n level--\n }\n\n pos++\n }\n\n if (start === pos) { return result }\n if (level !== 0) { return result }\n\n result.str = unescapeAll(str.slice(start, pos))\n result.pos = pos\n result.ok = true\n return result\n}\n","// Parse link title\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\n// Parse link title within `str` in [start, max] range,\n// or continue previous parsing if `prev_state` is defined (equal to result of last execution).\n//\nexport default function parseLinkTitle (str, start, max, prev_state) {\n let code\n let pos = start\n\n const state = {\n // if `true`, this is a valid link title\n ok: false,\n // if `true`, this link can be continued on the next line\n can_continue: false,\n // if `ok`, it's the position of the first character after the closing marker\n pos: 0,\n // if `ok`, it's the unescaped title\n str: '',\n // expected closing marker character code\n marker: 0\n }\n\n if (prev_state) {\n // this is a continuation of a previous parseLinkTitle call on the next line,\n // used in reference links only\n state.str = prev_state.str\n state.marker = prev_state.marker\n } else {\n if (pos >= max) { return state }\n\n let marker = str.charCodeAt(pos)\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return state }\n\n start++\n pos++\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29 }\n\n state.marker = marker\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === state.marker) {\n state.pos = pos + 1\n state.str += unescapeAll(str.slice(start, pos))\n state.ok = true\n return state\n } else if (code === 0x28 /* ( */ && state.marker === 0x29 /* ) */) {\n return state\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++\n }\n\n pos++\n }\n\n // no closing marker found, but this link title may continue on the next line (for references)\n state.can_continue = true\n state.str += unescapeAll(str.slice(start, pos))\n return state\n}\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n\nimport { assign, unescapeAll, escapeHtml } from './common/utils.mjs'\n\nconst default_rules = {}\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '' +\n escapeHtml(token.content) +\n ''\n}\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '\\n'\n}\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n const info = token.info ? unescapeAll(token.info).trim() : ''\n let langName = ''\n let langAttrs = ''\n\n if (info) {\n const arr = info.split(/(\\s+)/g)\n langName = arr[0]\n langAttrs = arr.slice(2).join('')\n }\n\n let highlighted\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content)\n } else {\n highlighted = escapeHtml(token.content)\n }\n\n if (highlighted.indexOf('${highlighted}\\n`\n }\n\n return `
${highlighted}
\\n`\n}\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env)\n\n return slf.renderToken(tokens, idx, options)\n}\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
\\n' : '
\\n'\n}\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
\\n' : '
\\n') : '\\n'\n}\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content)\n}\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content\n}\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer () {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules)\n}\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs (token) {\n let i, l, result\n\n if (!token.attrs) { return '' }\n\n result = ''\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"'\n }\n\n return result\n}\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken (tokens, idx, options) {\n const token = tokens[idx]\n let result = ''\n\n // Tight list paragraphs\n if (token.hidden) {\n return ''\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n'\n }\n\n // Add token name, e.g. ``.\n //\n needLf = false\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>'\n\n return result\n}\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options)\n }\n }\n\n return result\n}\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n let result = ''\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n switch (tokens[i].type) {\n case 'text':\n result += tokens[i].content\n break\n case 'image':\n result += this.renderInlineAsText(tokens[i].children, options, env)\n break\n case 'html_inline':\n case 'html_block':\n result += tokens[i].content\n break\n case 'softbreak':\n case 'hardbreak':\n result += '\\n'\n break\n default:\n // all other tokens are skipped\n }\n }\n\n return result\n}\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n let result = ''\n const rules = this.rules\n\n for (let i = 0, len = tokens.length; i < len; i++) {\n const type = tokens[i].type\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env)\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this)\n } else {\n result += this.renderToken(tokens, i, options, env)\n }\n }\n\n return result\n}\n\nexport default Renderer\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n\n/**\n * new Ruler()\n **/\nfunction Ruler () {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = []\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null\n}\n\n// Helper methods, should not be used directly\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (let i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i\n }\n }\n return -1\n}\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n const self = this\n const chains = ['']\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName)\n }\n })\n })\n\n self.__cache__ = {}\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = []\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return }\n\n self.__cache__[chain].push(rule.fn)\n })\n })\n}\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n const index = this.__find__(name)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name) }\n\n this.__rules__[index].fn = fn\n this.__rules__[index].alt = opt.alt || []\n this.__cache__ = null\n}\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n const index = this.__find__(beforeName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName) }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n const index = this.__find__(afterName)\n const opt = options || {}\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName) }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n const opt = options || {}\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn,\n alt: opt.alt || []\n })\n\n this.__cache__ = null\n}\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and enable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = true\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false })\n\n this.enable(list, ignoreInvalid)\n}\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [list] }\n\n const result = []\n\n // Search by name and disable\n list.forEach(function (name) {\n const idx = this.__find__(name)\n\n if (idx < 0) {\n if (ignoreInvalid) { return }\n throw new Error('Rules manager: invalid rule name ' + name)\n }\n this.__rules__[idx].enabled = false\n result.push(name)\n }, this)\n\n this.__cache__ = null\n return result\n}\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__()\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || []\n}\n\nexport default Ruler\n","// Token class\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token (type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = ''\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = ''\n\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n this.info = ''\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false\n}\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex (name) {\n if (!this.attrs) { return -1 }\n\n const attrs = this.attrs\n\n for (let i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i }\n }\n return -1\n}\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush (attrData) {\n if (this.attrs) {\n this.attrs.push(attrData)\n } else {\n this.attrs = [attrData]\n }\n}\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet (name, value) {\n const idx = this.attrIndex(name)\n const attrData = [name, value]\n\n if (idx < 0) {\n this.attrPush(attrData)\n } else {\n this.attrs[idx] = attrData\n }\n}\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet (name) {\n const idx = this.attrIndex(name)\n let value = null\n if (idx >= 0) {\n value = this.attrs[idx][1]\n }\n return value\n}\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin (name, value) {\n const idx = this.attrIndex(name)\n\n if (idx < 0) {\n this.attrPush([name, value])\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value\n }\n}\n\nexport default Token\n","// Core state object\n//\n\nimport Token from '../token.mjs'\n\nfunction StateCore (src, md, env) {\n this.src = src\n this.env = env\n this.tokens = []\n this.inlineMode = false\n this.md = md // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token\n\nexport default StateCore\n","// Normalize input string\n\n// https://spec.commonmark.org/0.29/#line-ending\nconst NEWLINES_RE = /\\r\\n?|\\n/g\nconst NULL_RE = /\\0/g\n\nexport default function normalize (state) {\n let str\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n')\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD')\n\n state.src = str\n}\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n\nimport { arrayReplaceAt } from '../common/utils.mjs'\n\nfunction isLinkOpen (str) {\n return /^\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n return /^<\\/a\\s*>/i.test(str)\n}\n\nexport default function linkify (state) {\n const blockTokens = state.tokens\n\n if (!state.md.options.linkify) { return }\n\n for (let j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue\n }\n\n let tokens = blockTokens[j].children\n\n let htmlLinkLevel = 0\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 (let i = tokens.length - 1; i >= 0; i--) {\n const currentToken = tokens[i]\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--\n }\n continue\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++\n }\n }\n if (htmlLinkLevel > 0) { continue }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n const text = currentToken.content\n let links = state.md.linkify.match(text)\n\n // Now split string to nodes\n const nodes = []\n let level = currentToken.level\n let lastPos = 0\n\n // forbid escape sequence at the start of the string,\n // this avoids http\\://example.com/ from being linkified as\n // http://example.com/\n if (links.length > 0 &&\n links[0].index === 0 &&\n i > 0 &&\n tokens[i - 1].type === 'text_special') {\n links = links.slice(1)\n }\n\n for (let ln = 0; ln < links.length; ln++) {\n const url = links[ln].url\n const fullUrl = state.md.normalizeLink(url)\n if (!state.md.validateLink(fullUrl)) { continue }\n\n let urlText = links[ln].text\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '')\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '')\n } else {\n urlText = state.md.normalizeLinkText(urlText)\n }\n\n const pos = links[ln].index\n\n if (pos > lastPos) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos, pos)\n token.level = level\n nodes.push(token)\n }\n\n const token_o = new state.Token('link_open', 'a', 1)\n token_o.attrs = [['href', fullUrl]]\n token_o.level = level++\n token_o.markup = 'linkify'\n token_o.info = 'auto'\n nodes.push(token_o)\n\n const token_t = new state.Token('text', '', 0)\n token_t.content = urlText\n token_t.level = level\n nodes.push(token_t)\n\n const token_c = new state.Token('link_close', 'a', -1)\n token_c.level = --level\n token_c.markup = 'linkify'\n token_c.info = 'auto'\n nodes.push(token_c)\n\n lastPos = links[ln].lastIndex\n }\n if (lastPos < text.length) {\n const token = new state.Token('text', '', 0)\n token.content = text.slice(lastPos)\n token.level = level\n nodes.push(token)\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes)\n }\n }\n }\n}\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i\n\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig\nconst SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n}\n\nfunction replaceFn (match, name) {\n return SCOPED_ABBR[name.toLowerCase()]\n}\n\nfunction replace_scoped (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn)\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nfunction replace_rare (inlineTokens) {\n let inside_autolink = 0\n\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i]\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013')\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++\n }\n }\n}\n\nexport default function replace (state) {\n let blkIdx\n\n if (!state.md.options.typographer) { return }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') { continue }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children)\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children)\n }\n }\n}\n","// Convert straight quotation marks to typographic ones\n//\n\nimport { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.mjs'\n\nconst QUOTE_TEST_RE = /['\"]/\nconst QUOTE_RE = /['\"]/g\nconst APOSTROPHE = '\\u2019' /* ’ */\n\nfunction addReplacement (replacements, tokenIdx, pos, ch) {\n if (!replacements[tokenIdx]) {\n replacements[tokenIdx] = []\n }\n\n replacements[tokenIdx].push({ pos, ch })\n}\n\nfunction applyReplacements (str, replacements) {\n let result = ''\n let lastPos = 0\n\n replacements.sort((a, b) => a.pos - b.pos)\n\n for (let i = 0; i < replacements.length; i++) {\n const replacement = replacements[i]\n\n result += str.slice(lastPos, replacement.pos) + replacement.ch\n lastPos = replacement.pos + 1\n }\n\n return result + str.slice(lastPos)\n}\n\nfunction process_inlines (tokens, state) {\n let j\n\n const stack = []\n // token index -> list of replacements in the original token content\n const replacements = {}\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]\n\n const thisLevel = tokens[i].level\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break }\n }\n stack.length = j + 1\n\n if (token.type !== 'text') { continue }\n\n const text = token.content\n let pos = 0\n const max = text.length\n\n /* eslint no-labels:0,block-scoped-var:0 */\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos\n const t = QUOTE_RE.exec(text)\n if (!t) { break }\n\n let canOpen = true\n let canClose = true\n pos = t.index + 1\n const isSingle = (t[0] === \"'\")\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n let lastChar = 0x20\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1)\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // lastChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1)\n break\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n let nextChar = 0x20\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos)\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // nextChar defaults to 0x20\n if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0)\n break\n }\n }\n\n const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar)\n const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar)\n\n const isLastWhiteSpace = isWhiteSpace(lastChar)\n const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n if (isNextWhiteSpace) {\n canOpen = false\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar\n canClose = isNextPunctChar\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n addReplacement(replacements, i, t.index, APOSTROPHE)\n }\n continue\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n let item = stack[j]\n if (stack[j].level < thisLevel) { break }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j]\n\n let openQuote\n let closeQuote\n if (isSingle) {\n openQuote = state.md.options.quotes[2]\n closeQuote = state.md.options.quotes[3]\n } else {\n openQuote = state.md.options.quotes[0]\n closeQuote = state.md.options.quotes[1]\n }\n\n addReplacement(replacements, i, t.index, closeQuote)\n addReplacement(replacements, item.token, item.pos, openQuote)\n\n stack.length = j\n continue OUTER\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n })\n } else if (canClose && isSingle) {\n addReplacement(replacements, i, t.index, APOSTROPHE)\n }\n }\n }\n\n Object.keys(replacements).forEach(function (tokenIdx) {\n tokens[tokenIdx].content = applyReplacements(tokens[tokenIdx].content, replacements[tokenIdx])\n })\n}\n\nexport default function smartquotes (state) {\n /* eslint max-depth:0 */\n if (!state.md.options.typographer) { return }\n\n for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue\n }\n\n process_inlines(state.tokens[blkIdx].children, state)\n }\n}\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateCore from './rules_core/state_core.mjs'\n\nimport r_normalize from './rules_core/normalize.mjs'\nimport r_block from './rules_core/block.mjs'\nimport r_inline from './rules_core/inline.mjs'\nimport r_linkify from './rules_core/linkify.mjs'\nimport r_replacements from './rules_core/replacements.mjs'\nimport r_smartquotes from './rules_core/smartquotes.mjs'\nimport r_text_join from './rules_core/text_join.mjs'\n\nconst _rules = [\n ['normalize', r_normalize],\n ['block', r_block],\n ['inline', r_inline],\n ['linkify', r_linkify],\n ['replacements', r_replacements],\n ['smartquotes', r_smartquotes],\n // `text_join` finds `text_special` tokens (for escape sequences)\n // and joins them with the rest of the text\n ['text_join', r_text_join]\n]\n\n/**\n * new Core()\n **/\nfunction Core () {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n}\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n const rules = this.ruler.getRules('')\n\n for (let i = 0, l = rules.length; i < l; i++) {\n rules[i](state)\n }\n}\n\nCore.prototype.State = StateCore\n\nexport default Core\n","export default function block (state) {\n let token\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0)\n token.content = state.src\n token.map = [0, 1]\n token.children = []\n state.tokens.push(token)\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens)\n }\n}\n","export default function inline (state) {\n const tokens = state.tokens\n\n // Parse inlines\n for (let i = 0, l = tokens.length; i < l; i++) {\n const tok = tokens[i]\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children)\n }\n }\n}\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n\nexport default function text_join (state) {\n let curr, last\n const blockTokens = state.tokens\n const l = blockTokens.length\n\n for (let j = 0; j < l; j++) {\n if (blockTokens[j].type !== 'inline') continue\n\n const tokens = blockTokens[j].children\n const max = tokens.length\n\n for (curr = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text_special') {\n tokens[curr].type = 'text'\n }\n }\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n } else {\n if (curr !== last) { tokens[last] = tokens[curr] }\n\n last++\n }\n }\n\n if (curr !== last) {\n tokens.length = last\n }\n }\n}\n","// Parser state class\n\nimport Token from '../token.mjs'\nimport { isSpace } from '../common/utils.mjs'\n\nfunction StateBlock (src, md, env, tokens) {\n this.src = src\n\n // link to parser instance\n this.md = md\n\n this.env = env\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens\n\n this.bMarks = [] // line begin offsets for fast jumps\n this.eMarks = [] // line end offsets for fast jumps\n this.tShift = [] // offsets of the first non-space characters (tabs not expanded)\n this.sCount = [] // indents for each line (tabs expanded)\n\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n this.bsCount = []\n\n // block parser variables\n\n // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n this.blkIndent = 0\n this.line = 0 // line index in src\n this.lineMax = 0 // lines count\n this.tight = false // loose/tight mode for lists\n this.ddIndent = -1 // indent of the current dd block (-1 if there isn't any)\n this.listIndent = -1 // indent of the current list block (-1 if there isn't any)\n\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n this.parentType = 'root'\n\n this.level = 0\n\n // Create caches\n // Generate markers.\n const s = this.src\n\n for (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) {\n const ch = s.charCodeAt(pos)\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++\n\n if (ch === 0x09) {\n offset += 4 - offset % 4\n } else {\n offset++\n }\n continue\n } else {\n indent_found = true\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++ }\n this.bMarks.push(start)\n this.eMarks.push(pos)\n this.tShift.push(indent)\n this.sCount.push(offset)\n this.bsCount.push(0)\n\n indent_found = false\n indent = 0\n offset = 0\n start = pos + 1\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length)\n this.eMarks.push(s.length)\n this.tShift.push(0)\n this.sCount.push(0)\n this.bsCount.push(0)\n\n this.lineMax = this.bMarks.length - 1 // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n const token = new Token(type, tag, nesting)\n token.block = true\n\n if (nesting < 0) this.level-- // closing tag\n token.level = this.level\n if (nesting > 0) this.level++ // opening tag\n\n this.tokens.push(token)\n return token\n}\n\nStateBlock.prototype.isEmpty = function isEmpty (line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]\n}\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines (from) {\n for (let max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break\n }\n }\n return from\n}\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces (pos) {\n for (let max = this.src.length; pos < max; pos++) {\n const ch = this.src.charCodeAt(pos)\n if (!isSpace(ch)) { break }\n }\n return pos\n}\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack (pos, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1 }\n }\n return pos\n}\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars (pos, code) {\n for (let max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break }\n }\n return pos\n}\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack (pos, code, min) {\n if (pos <= min) { return pos }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1 }\n }\n return pos\n}\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines (begin, end, indent, keepLastLF) {\n if (begin >= end) {\n return ''\n }\n\n const queue = new Array(end - begin)\n\n for (let i = 0, line = begin; line < end; line++, i++) {\n let lineIndent = 0\n const lineStart = this.bMarks[line]\n let first = lineStart\n let last\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1\n } else {\n last = this.eMarks[line]\n }\n\n while (first < last && lineIndent < indent) {\n const ch = this.src.charCodeAt(first)\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4\n } else {\n lineIndent++\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++\n } else {\n break\n }\n\n first++\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last)\n } else {\n queue[i] = this.src.slice(first, last)\n }\n }\n\n return queue.join('')\n}\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token\n\nexport default StateBlock\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Limit the amount of empty autocompleted cells in a table,\n// see https://github.com/markdown-it/markdown-it/issues/1000,\n//\n// Both pulldown-cmark and commonmark-hs limit the number of cells this way to ~200k.\n// We set it to 65k, which can expand user input by a factor of x370\n// (256x256 square is 1.8kB expanded into 650kB).\nconst MAX_AUTOCOMPLETED_CELLS = 0x10000\n\nfunction getLine (state, line) {\n const pos = state.bMarks[line] + state.tShift[line]\n const max = state.eMarks[line]\n\n return state.src.slice(pos, max)\n}\n\nfunction escapedSplit (str) {\n const result = []\n const max = str.length\n\n let pos = 0\n let ch = str.charCodeAt(pos)\n let isEscaped = false\n let lastPos = 0\n let current = ''\n\n while (pos < max) {\n if (ch === 0x7c/* | */) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos))\n current = ''\n lastPos = pos + 1\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1)\n lastPos = pos\n }\n }\n\n isEscaped = (ch === 0x5c/* \\ */)\n pos++\n\n ch = str.charCodeAt(pos)\n }\n\n result.push(current + str.substring(lastPos))\n\n return result\n}\n\nexport default function table (state, startLine, endLine, silent) {\n // should have at least two lines\n if (startLine + 2 > endLine) { return false }\n\n let nextLine = startLine + 1\n\n if (state.sCount[nextLine] < state.blkIndent) { return false }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const firstCh = state.src.charCodeAt(pos++)\n if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false }\n\n if (pos >= state.eMarks[nextLine]) { return false }\n\n const secondCh = state.src.charCodeAt(pos++)\n if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n return false\n }\n\n // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false }\n\n while (pos < state.eMarks[nextLine]) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false }\n\n pos++\n }\n\n let lineText = getLine(state, startLine + 1)\n let columns = lineText.split('|')\n const aligns = []\n for (let i = 0; i < columns.length; i++) {\n const t = columns[i].trim()\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue\n } else {\n return false\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right')\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left')\n } else {\n aligns.push('')\n }\n }\n\n lineText = getLine(state, startLine).trim()\n if (lineText.indexOf('|') === -1) { return false }\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n const columnCount = columns.length\n if (columnCount === 0 || columnCount !== aligns.length) { return false }\n\n if (silent) { return true }\n\n const oldParentType = state.parentType\n state.parentType = 'table'\n\n // use 'blockquote' lists for termination because it's\n // the most similar to tables\n const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n const token_to = state.push('table_open', 'table', 1)\n const tableLines = [startLine, 0]\n token_to.map = tableLines\n\n const token_tho = state.push('thead_open', 'thead', 1)\n token_tho.map = [startLine, startLine + 1]\n\n const token_htro = state.push('tr_open', 'tr', 1)\n token_htro.map = [startLine, startLine + 1]\n\n for (let i = 0; i < columns.length; i++) {\n const token_ho = state.push('th_open', 'th', 1)\n if (aligns[i]) {\n token_ho.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i].trim()\n token_il.children = []\n\n state.push('th_close', 'th', -1)\n }\n\n state.push('tr_close', 'tr', -1)\n state.push('thead_close', 'thead', -1)\n\n let tbodyLines\n let autocompletedCells = 0\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n\n if (terminate) { break }\n lineText = getLine(state, nextLine).trim()\n if (!lineText) { break }\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n columns = escapedSplit(lineText)\n if (columns.length && columns[0] === '') columns.shift()\n if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n // note: autocomplete count can be negative if user specifies more columns than header,\n // but that does not affect intended use (which is limiting expansion)\n autocompletedCells += columnCount - columns.length\n if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) { break }\n\n if (nextLine === startLine + 2) {\n const token_tbo = state.push('tbody_open', 'tbody', 1)\n token_tbo.map = tbodyLines = [startLine + 2, 0]\n }\n\n const token_tro = state.push('tr_open', 'tr', 1)\n token_tro.map = [nextLine, nextLine + 1]\n\n for (let i = 0; i < columnCount; i++) {\n const token_tdo = state.push('td_open', 'td', 1)\n if (aligns[i]) {\n token_tdo.attrs = [['style', 'text-align:' + aligns[i]]]\n }\n\n const token_il = state.push('inline', '', 0)\n token_il.content = columns[i] ? columns[i].trim() : ''\n token_il.children = []\n\n state.push('td_close', 'td', -1)\n }\n state.push('tr_close', 'tr', -1)\n }\n\n if (tbodyLines) {\n state.push('tbody_close', 'tbody', -1)\n tbodyLines[1] = nextLine\n }\n\n state.push('table_close', 'table', -1)\n tableLines[1] = nextLine\n\n state.parentType = oldParentType\n state.line = nextLine\n return true\n}\n","// Lists\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker (state, startLine) {\n const max = state.eMarks[startLine]\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n\n const marker = state.src.charCodeAt(pos++)\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1\n }\n\n if (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1\n }\n }\n\n return pos\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker (state, startLine) {\n const start = state.bMarks[startLine] + state.tShift[startLine]\n const max = state.eMarks[startLine]\n let pos = start\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1 }\n\n let ch = state.src.charCodeAt(pos++)\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1 }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1 }\n\n ch = state.src.charCodeAt(pos++)\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1 }\n\n continue\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break\n }\n\n return -1\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos)\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1\n }\n }\n return pos\n}\n\nfunction markTightParagraphs (state, idx) {\n const level = state.level + 2\n\n for (let 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\nexport default function list (state, startLine, endLine, silent) {\n let max, pos, start, token\n let nextLine = startLine\n let tight = true\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n if (state.listIndent >= 0 &&\n state.sCount[nextLine] - state.listIndent >= 4 &&\n state.sCount[nextLine] < state.blkIndent) {\n return false\n }\n\n let isTerminatingParagraph = false\n\n // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n isTerminatingParagraph = true\n }\n }\n\n // Detect list type and position after marker\n let isOrdered\n let markerValue\n let posAfterMarker\n if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n isOrdered = true\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n markerValue = Number(state.src.slice(start, posAfterMarker - 1))\n\n // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n if (isTerminatingParagraph && markerValue !== 1) return false\n } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n isOrdered = false\n } else {\n return false\n }\n\n // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false\n }\n\n // For validation mode we can terminate immediately\n if (silent) { return true }\n\n // We should terminate list on style change. Remember first one to compare.\n const markerCharCode = state.src.charCodeAt(posAfterMarker - 1)\n\n // Start list\n const listTokIdx = state.tokens.length\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1)\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]]\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1)\n }\n\n const listLines = [nextLine, 0]\n token.map = listLines\n token.markup = String.fromCharCode(markerCharCode)\n\n //\n // Iterate list items\n //\n\n let prevEmptyEnd = false\n const terminatorRules = state.md.block.ruler.getRules('list')\n\n const oldParentType = state.parentType\n state.parentType = 'list'\n\n while (nextLine < endLine) {\n pos = posAfterMarker\n max = state.eMarks[nextLine]\n\n const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine])\n let offset = initial\n\n while (pos < max) {\n const ch = state.src.charCodeAt(pos)\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4\n } else if (ch === 0x20) {\n offset++\n } else {\n break\n }\n\n pos++\n }\n\n const contentStart = pos\n let indentAfterMarker\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1\n } else {\n indentAfterMarker = offset - initial\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1 }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n const indent = initial + indentAfterMarker\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1)\n token.markup = String.fromCharCode(markerCharCode)\n const itemLines = [nextLine, 0]\n token.map = itemLines\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1)\n }\n\n // change current state, then restore it after parser subcall\n const oldTight = state.tight\n const oldTShift = state.tShift[nextLine]\n const oldSCount = state.sCount[nextLine]\n\n // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n const oldListIndent = state.listIndent\n state.listIndent = state.blkIndent\n state.blkIndent = indent\n\n state.tight = true\n state.tShift[nextLine] = contentStart - state.bMarks[nextLine]\n state.sCount[nextLine] = offset\n\n if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine)\n } else {\n state.md.block.tokenize(state, nextLine, endLine, true)\n }\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 - nextLine) > 1 && state.isEmpty(state.line - 1)\n\n state.blkIndent = state.listIndent\n state.listIndent = oldListIndent\n state.tShift[nextLine] = oldTShift\n state.sCount[nextLine] = oldSCount\n state.tight = oldTight\n\n token = state.push('list_item_close', 'li', -1)\n token.markup = String.fromCharCode(markerCharCode)\n\n nextLine = state.line\n itemLines[1] = nextLine\n\n if (nextLine >= endLine) { break }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n\n // fail if terminating block found\n let terminate = false\n for (let i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true\n break\n }\n }\n if (terminate) { break }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n start = state.bMarks[nextLine] + state.tShift[nextLine]\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine)\n if (posAfterMarker < 0) { break }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break }\n }\n\n // Finalize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1)\n } else {\n token = state.push('bullet_list_close', 'ul', -1)\n }\n token.markup = String.fromCharCode(markerCharCode)\n\n listLines[1] = nextLine\n state.line = nextLine\n\n state.parentType = oldParentType\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx)\n }\n\n return true\n}\n","// Regexps to match html elements\n\nconst attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*'\n\nconst unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+'\nconst single_quoted = \"'[^']*'\"\nconst double_quoted = '\"[^\"]*\"'\n\nconst attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'\n\nconst attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)'\n\nconst open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>'\n\nconst close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>'\nconst comment = ''\nconst processing = '<[?][\\\\s\\\\S]*?[?]>'\nconst declaration = ']*>'\nconst cdata = ''\n\nconst HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')')\nconst HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')')\n\nexport { HTML_TAG_RE, HTML_OPEN_CLOSE_TAG_RE }\n","// HTML block\n\nimport block_names from '../common/html_blocks.mjs'\nimport { HTML_OPEN_CLOSE_TAG_RE } from '../common/html_re.mjs'\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nconst HTML_SEQUENCES = [\n [/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true],\n [/^/, true],\n [/^<\\?/, /\\?>/, true],\n [/^/, true],\n [/^/, true],\n [new RegExp('^|$))', 'i'), /^$/, true],\n [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]\n]\n\nexport default function html_block (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (!state.md.options.html) { return false }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n let lineText = state.src.slice(pos, max)\n\n let i = 0\n for (; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break }\n }\n if (i === HTML_SEQUENCES.length) { return false }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2]\n }\n\n let nextLine = startLine + 1\n\n // Block types 6 and 7 (the only ones whose end condition is a blank line)\n // have `/^$/` as their closing regexp. For all other types (1-5, e.g.\n // `