@elementspanel/panel 0.0.0-stage → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +6 -2
- package/app.js +6400 -0
- package/app.js.map +1 -0
- package/bin/panel.cjs +2 -0
- package/package.json +107 -4
- package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js +2 -0
- package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js.map +1 -0
- package/public/assets/CardPanel-59b7da2e.js +2 -0
- package/public/assets/CardPanel-59b7da2e.js.map +1 -0
- package/public/assets/DesktopDialog-e4041e4e.js +2 -0
- package/public/assets/DesktopDialog-e4041e4e.js.map +1 -0
- package/public/assets/Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js +2 -0
- package/public/assets/Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js.map +1 -0
- package/public/assets/PageToolbar-7130e13d.js +2 -0
- package/public/assets/PageToolbar-7130e13d.js.map +1 -0
- package/public/assets/_elements-sdk_cordis-b0b88a2c.js +2 -0
- package/public/assets/_elements-sdk_cordis-b0b88a2c.js.map +1 -0
- package/public/assets/_elements-sdk_cordis-e3bebc89.js +9 -0
- package/public/assets/_elements-sdk_cordis-e3bebc89.js.map +1 -0
- package/public/assets/_elements-sdk_cosmokit-e4842f5c.js +2 -0
- package/public/assets/_elements-sdk_cosmokit-e4842f5c.js.map +1 -0
- package/public/assets/_elements-sdk_pinia-2c56d2c1.js +6 -0
- package/public/assets/_elements-sdk_pinia-2c56d2c1.js.map +1 -0
- package/public/assets/_elements-sdk_vue-80f42d87.js +2 -0
- package/public/assets/_elements-sdk_vue-80f42d87.js.map +1 -0
- package/public/assets/_elements-sdk_vue-i18n-4b8a106a.js +2 -0
- package/public/assets/_elements-sdk_vue-i18n-4b8a106a.js.map +1 -0
- package/public/assets/_elements-sdk_vue-router-a171591a.js +2 -0
- package/public/assets/_elements-sdk_vue-router-a171591a.js.map +1 -0
- package/public/assets/_plugin-vue_export-helper-c27b6911.js +2 -0
- package/public/assets/_plugin-vue_export-helper-c27b6911.js.map +1 -0
- package/public/assets/chartjs-1e331dfb.js +19 -0
- package/public/assets/chartjs-1e331dfb.js.map +1 -0
- package/public/assets/codemirror-1b74112a.js +29 -0
- package/public/assets/codemirror-1b74112a.js.map +1 -0
- package/public/assets/const-93b324c0.js +2 -0
- package/public/assets/const-93b324c0.js.map +1 -0
- package/public/assets/const-ea30795c.js +38 -0
- package/public/assets/const-ea30795c.js.map +1 -0
- package/public/assets/context-cc90576e.js +2 -0
- package/public/assets/context-cc90576e.js.map +1 -0
- package/public/assets/copy-b106bb10.js +2 -0
- package/public/assets/copy-b106bb10.js.map +1 -0
- package/public/assets/core-d3bfdede.js +2 -0
- package/public/assets/core-d3bfdede.js.map +1 -0
- package/public/assets/daemon_connection_error-9eb654cc.png +0 -0
- package/public/assets/dayjs.min-25183c0a.js +2 -0
- package/public/assets/dayjs.min-25183c0a.js.map +1 -0
- package/public/assets/desktopNotice-5ca3448c.js +2 -0
- package/public/assets/desktopNotice-5ca3448c.js.map +1 -0
- package/public/assets/dom-ff483262.js +2 -0
- package/public/assets/dom-ff483262.js.map +1 -0
- package/public/assets/htmlparser2-bcb8f9db.js +3 -0
- package/public/assets/htmlparser2-bcb8f9db.js.map +1 -0
- package/public/assets/i18n-e810b9fa.js +2 -0
- package/public/assets/i18n-e810b9fa.js.map +1 -0
- package/public/assets/index-6e8d74f8.js +2 -0
- package/public/assets/index-6e8d74f8.js.map +1 -0
- package/public/assets/index-c684efbd.js +2 -0
- package/public/assets/index-c684efbd.js.map +1 -0
- package/public/assets/index-e3f35709.js +2 -0
- package/public/assets/index-e3f35709.js.map +1 -0
- package/public/assets/instance-cc59e210.js +2 -0
- package/public/assets/instance-cc59e210.js.map +1 -0
- package/public/assets/instance_contract-0115efe5.js +2 -0
- package/public/assets/instance_contract-0115efe5.js.map +1 -0
- package/public/assets/lodash-001e4f93.js +28 -0
- package/public/assets/lodash-001e4f93.js.map +1 -0
- package/public/assets/logo-9e2a668b.svg +15 -0
- package/public/assets/logo_b-35ccadda.svg +8 -0
- package/public/assets/materialdesignicons-webfont-0b183104.eot +0 -0
- package/public/assets/materialdesignicons-webfont-61e8aba5.ttf +0 -0
- package/public/assets/materialdesignicons-webfont-662fefa8.woff2 +0 -0
- package/public/assets/materialdesignicons-webfont-a5928a0d.woff +0 -0
- package/public/assets/msl-logo-699c8076.png +0 -0
- package/public/assets/nodes-a56b1b35.js +2 -0
- package/public/assets/nodes-a56b1b35.js.map +1 -0
- package/public/assets/plugin_contract-691cd37a.js +2 -0
- package/public/assets/plugin_contract-691cd37a.js.map +1 -0
- package/public/assets/preload-helper-a4192956.js +2 -0
- package/public/assets/preload-helper-a4192956.js.map +1 -0
- package/public/assets/protocol-97f7bab7.js +2 -0
- package/public/assets/protocol-97f7bab7.js.map +1 -0
- package/public/assets/randId-56f93901.js +2 -0
- package/public/assets/randId-56f93901.js.map +1 -0
- package/public/assets/router-eff205cc.js +3 -0
- package/public/assets/router-eff205cc.js.map +1 -0
- package/public/assets/safe-87846d89.js +89 -0
- package/public/assets/safe-87846d89.js.map +1 -0
- package/public/assets/sdk-3f2277ab.js +2 -0
- package/public/assets/sdk-3f2277ab.js.map +1 -0
- package/public/assets/shared-597ef52b.js +2 -0
- package/public/assets/shared-597ef52b.js.map +1 -0
- package/public/assets/useAppConfigStore-352fe033.js +2 -0
- package/public/assets/useAppConfigStore-352fe033.js.map +1 -0
- package/public/assets/useAppRouters-747b627a.js +2 -0
- package/public/assets/useAppRouters-747b627a.js.map +1 -0
- package/public/assets/useAppStateStore-a438b9a6.js +2 -0
- package/public/assets/useAppStateStore-a438b9a6.js.map +1 -0
- package/public/assets/useAppToolsStore-288c4fe8.js +2 -0
- package/public/assets/useAppToolsStore-288c4fe8.js.map +1 -0
- package/public/assets/useDefineApi-b726db1e.js +7 -0
- package/public/assets/useDefineApi-b726db1e.js.map +1 -0
- package/public/assets/useInstanceActionAvailability-16de3001.js +2 -0
- package/public/assets/useInstanceActionAvailability-16de3001.js.map +1 -0
- package/public/assets/useKeyboardEvents-6f7f845c.js +2 -0
- package/public/assets/useKeyboardEvents-6f7f845c.js.map +1 -0
- package/public/assets/useMountComponent-4043cb4c.js +2 -0
- package/public/assets/useMountComponent-4043cb4c.js.map +1 -0
- package/public/assets/useOverviewChart-7d758bc4.js +2 -0
- package/public/assets/useOverviewChart-7d758bc4.js.map +1 -0
- package/public/assets/useOverviewInfo-9ca25ab9.js +2 -0
- package/public/assets/useOverviewInfo-9ca25ab9.js.map +1 -0
- package/public/assets/usePolling-1bc2009b.js +2 -0
- package/public/assets/usePolling-1bc2009b.js.map +1 -0
- package/public/assets/useScreen-fad29b7c.js +2 -0
- package/public/assets/useScreen-fad29b7c.js.map +1 -0
- package/public/assets/useSocketIo-ea3c9a61.js +2 -0
- package/public/assets/useSocketIo-ea3c9a61.js.map +1 -0
- package/public/assets/useThemeSwitch-dc70883c.js +2 -0
- package/public/assets/useThemeSwitch-dc70883c.js.map +1 -0
- package/public/assets/vue-4c6a2976.css +1 -0
- package/public/assets/vue-6b52a630.js +64 -0
- package/public/assets/vue-6b52a630.js.map +1 -0
- package/public/assets/vuetifyModal-8382b175.js +2 -0
- package/public/assets/vuetifyModal-8382b175.js.map +1 -0
- package/public/assets/xterm-62ba073f.js +67 -0
- package/public/assets/xterm-62ba073f.js.map +1 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +207 -0
- package/public/robots.txt +2 -0
- package/public/stats.html +4950 -0
- package/runtime/cli.cjs +305 -0
- package/runtime/daemon-tools.cjs +113 -0
- package/runtime/npm-plugins.cjs +207 -0
- package/runtime/plugin-resolution.cjs +141 -0
- package/runtime/shared-dependencies.cjs +35 -0
- package/runtime/worker.cjs +25 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-87846d89.js","sources":["../../node_modules/marked/lib/marked.esm.js","../../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js","../../node_modules/sanitize-html/node_modules/is-plain-object/dist/is-plain-object.js","../../node_modules/deepmerge/dist/cjs.js","../../node_modules/parse-srcset/src/parse-srcset.js","../../node_modules/picocolors/picocolors.browser.js","../../node_modules/postcss/lib/css-syntax-error.js","../../node_modules/postcss/lib/stringifier.js","../../node_modules/postcss/lib/stringify.js","../../node_modules/postcss/lib/symbols.js","../../node_modules/postcss/lib/node.js","../../node_modules/postcss/lib/comment.js","../../node_modules/postcss/lib/declaration.js","../../node_modules/postcss/lib/container.js","../../node_modules/postcss/lib/at-rule.js","../../node_modules/postcss/lib/document.js","../../node_modules/nanoid/non-secure/index.cjs","../../node_modules/postcss/lib/previous-map.js","../../node_modules/postcss/lib/input.js","../../node_modules/postcss/lib/root.js","../../node_modules/postcss/lib/list.js","../../node_modules/postcss/lib/rule.js","../../node_modules/postcss/lib/fromJSON.js","../../node_modules/postcss/lib/map-generator.js","../../node_modules/postcss/lib/tokenize.js","../../node_modules/postcss/lib/parser.js","../../node_modules/postcss/lib/parse.js","../../node_modules/postcss/lib/warning.js","../../node_modules/postcss/lib/result.js","../../node_modules/postcss/lib/lazy-result.js","../../node_modules/postcss/lib/no-work-result.js","../../node_modules/postcss/lib/processor.js","../../node_modules/postcss/lib/postcss.js","../../node_modules/sanitize-html/index.js","../../../../plugins/console/panel/src/tools/safe.ts"],"sourcesContent":["/**\n * marked v7.0.3 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: false,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: false,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n }\n catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n }\n else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n }\n else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n }\n else {\n return base + href;\n }\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false, curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0, i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\nfunction checkDeprecations(opt, callback) {\n if (!opt || opt.silent) {\n return;\n }\n if (callback) {\n console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');\n }\n if (opt.sanitize || opt.sanitizer) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n if (opt.highlight || opt.langPrefix !== 'language-') {\n console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');\n }\n if (opt.mangle) {\n console.warn('marked(): mangle parameter is enabled by default, but is deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-mangle, or disable by setting `{mangle: false}`.');\n }\n if (opt.baseUrl) {\n console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');\n }\n if (opt.smartypants) {\n console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');\n }\n if (opt.xhtml) {\n console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');\n }\n if (opt.headerIds || opt.headerPrefix) {\n console.warn('marked(): headerIds and headerPrefix parameters enabled by default, but are deprecated since version 5.0.0, and will be removed in the future. To clear this warning, install https://www.npmjs.com/package/marked-gfm-heading-id, or disable by setting `{headerIds: false}`.');\n }\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules;\n lexer;\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n nextLine = src.split('\\n', 1)[0];\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n const l = list.items.length;\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n const paragraph = token;\n paragraph.type = 'paragraph';\n paragraph.text = text;\n paragraph.tokens = this.lexer.inline(text);\n }\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const raw = [...src].slice(0, lLength + match.index + rLength + 1).join('');\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n }\n else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:(?!^bull ).|\\n(?!\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * smartypants text replacement\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n/**\n * mangle email addresses\n */\nfunction mangle(text) {\n let out = '', i, ch;\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n return out;\n}\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul', startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass _Slugger {\n seen;\n constructor() {\n this.seen = {};\n }\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n /**\n * Convert string to unique id\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n slugger;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n this.slugger = new _Slugger();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '', i, j, k, l2, l3, row, cell, header, body, token, ordered, start, loose, itemBody, item, checked, task, checkbox, ret;\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text, token.lang, !!token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), { header: true, align: token.align[j] });\n }\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: token.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n }\n else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token.text, token.block);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '', i, token, ret;\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Slugger = _Slugger;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of token.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n values = values.concat(this.walkTokens(token.items, callback));\n break;\n }\n default: {\n if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {\n // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure\n values = values.concat(this.walkTokens(token[childTokens], callback));\n });\n }\n else if (token.tokens) {\n values = values.concat(this.walkTokens(token.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(pack.walkTokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n #parseMarkdown(lexer, parser) {\n return (src, optOrCallback, callback) => {\n if (typeof optOrCallback === 'function') {\n callback = optOrCallback;\n optOrCallback = null;\n }\n const origOpt = { ...optOrCallback };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.#onError(!!opt.silent, !!opt.async, callback);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkDeprecations(opt, callback);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n }\n catch (e) {\n return throwError(e);\n }\n const done = (err) => {\n let out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n }\n catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err\n ? throwError(err)\n : callback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length)\n return done();\n let pending = 0;\n this.walkTokens(tokens, (token) => {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, (err, code) => {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async, callback) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt, callback) {\n return markedInstance.parse(src, opt, callback);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Slugger = _Slugger;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _Slugger as Slugger, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\n * Srcset Parser\n *\n * By Alex Bell | MIT License\n *\n * JS Parser for the string value that appears in markup <img srcset=\"here\">\n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.parseSrcset = factory();\n\t}\n}(this, function () {\n\n\t// 1. Let input be the value passed to this algorithm.\n\treturn function (input) {\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// Manual is faster than RegEx\n\t\t// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n\t\t// http://jsperf.com/whitespace-character/5\n\t\tfunction isSpace(c) {\n\t\t\treturn (c === \"\\u0020\" || // space\n\t\t\tc === \"\\u0009\" || // horizontal tab\n\t\t\tc === \"\\u000A\" || // new line\n\t\t\tc === \"\\u000C\" || // form feed\n\t\t\tc === \"\\u000D\"); // carriage return\n\t\t}\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t\tmatch = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\n\t\t\t// (Don't use \\s, to avoid matching non-breaking space)\n\t\t\tregexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t\t\tregexTrailingCommas = /[,]+$/,\n\t\t\tregexNonNegativeInteger = /^\\d+$/,\n\n\t\t\t// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t\t\t// Must include at least one digit.\n\t\t\t// According to spec tests any decimal point must be followed by a digit.\n\t\t\t// No leading plus sign is allowed.)\n\t\t\t// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t\t\tregexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,\n\n\t\t\turl,\n\t\t\tdescriptors,\n\t\t\tcurrentDescriptor,\n\t\t\tstate,\n\t\t\tc,\n\n\t\t\t// 2. Let position be a pointer into input, initially pointing at the start\n\t\t\t// of the string.\n\t\t\tpos = 0,\n\n\t\t\t// 3. Let candidates be an initially empty source set.\n\t\t\tcandidates = [];\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\n\t\t/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t\t// Space character\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors and let current descriptor be the empty string.\n\t\t\t\t\t// Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */\n\t\t// Declared outside of the while loop so that it's only created once.\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t\t// 10. Let width be absent.\n\t\t\t\t// 11. Let density be absent.\n\t\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t\tw, d, h, i,\n\t\t\t\tcandidate = {},\n\t\t\t\tdesc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tcandidates.push(candidate);\n\t\t\t} else if (console && console.log) {\n\t\t\t\tconsole.log(\"Invalid srcset descriptor found in '\" +\n\t\t\t\t\tinput + \"' at '\" + desc + \"'.\");\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t}\n}));\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : '<css input>'\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n\n let aside = text => text\n let mark = text => text\n let highlight = text => text\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n if (terminalHighlight) {\n highlight = text => terminalHighlight(text)\n }\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n let maxWidth = String(end).length\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20\n let subLineStart = Math.max(0, this.column - padding)\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n )\n let subLine = line.slice(subLineStart, subLineEnd)\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line\n .slice(0, Math.min(this.column - 1, padding - 1))\n .replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(subLine) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(line) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n return ' ' + aside(gutter) + highlight(line)\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\n// Escapes sequences that could break out of an HTML <style> context.\n// Uses CSS unicode escaping (\\3c = '<') which is valid CSS and parsed\n// correctly by all compliant CSS consumers.\nconst STYLE_TAG = /(<)(\\/?style\\b)/gi\nconst COMMENT_OPEN = /(<)(!--)/g\n\n// Characters that end an at-rule name, mirroring RE_AT_END in the tokenizer.\n// Params starting with anything else need a space to stay separate tokens.\nconst AT_NAME_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/\n\nfunction escapeHTMLInCSS(str) {\n if (typeof str !== 'string') return str\n if (!str.includes('<')) return str\n return str.replace(STYLE_TAG, '\\\\3c $2').replace(COMMENT_OPEN, '\\\\3c $2')\n}\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nfunction atruleStart(str, node) {\n let name = '@' + node.name\n let params = node.params ? str.rawValue(node, 'params') : ''\n let afterName = node.raws.afterName\n\n if (typeof afterName === 'undefined') {\n afterName = params ? ' ' : ''\n } else if (afterName === '' && params && !AT_NAME_END.test(params[0])) {\n afterName = ' '\n }\n\n return name + afterName + params\n}\n\n// `*--x` is not a custom property: the parser checks the first token, and the\n// `*`/`_` hack prefix moves from `prop` into `before` only after that.\nfunction isCustomProperty(node) {\n if (!node.prop.startsWith('--')) return false\n let before = node.raws.before\n return typeof before === 'undefined' || !/\\S$/.test(before)\n}\n\nfunction pushBody(str, stack, node) {\n let nodes = node.nodes\n let last = nodes.length - 1\n while (last > 0) {\n if (nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = str.raw(node, 'semicolon')\n let isDocument = node.type === 'document'\n for (let i = nodes.length - 1; i >= 0; i--) {\n let child = nodes[i]\n let childSemicolon = last !== i || semicolon\n // A childless at-rule or a custom property declaration that still has\n // following siblings must be terminated. Without the semicolon those\n // trailing comments are folded into the at-rule's prelude or the custom\n // property's value and disappear when the output is re-parsed.\n if (\n !childSemicolon &&\n i < nodes.length - 1 &&\n ((child.type === 'atrule' && !child.nodes) ||\n (child.type === 'decl' && isCustomProperty(child)))\n ) {\n childSemicolon = true\n }\n stack.push({\n document: isDocument,\n node: child,\n semicolon: childSemicolon\n })\n }\n}\n\nfunction pushBlock(str, stack, node, start) {\n let between = str.raw(node, 'between', 'beforeOpen')\n str.builder(escapeHTMLInCSS(start + between) + '{', node, 'start')\n\n let hasNodes = node.nodes && node.nodes.length\n let close = () => {\n let after = hasNodes\n ? str.raw(node, 'after')\n : str.raw(node, 'after', 'emptyBody')\n if (after) str.builder(escapeHTMLInCSS(after))\n str.builder('}', node, 'end')\n if (node.type === 'rule' && node.raws.ownSemicolon) {\n str.builder(escapeHTMLInCSS(node.raws.ownSemicolon), node, 'end')\n }\n }\n\n if (hasNodes) {\n stack.push(close)\n pushBody(str, stack, node)\n } else {\n close()\n }\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let start = atruleStart(this, node)\n if (node.nodes) {\n this.block(node, start)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(escapeHTMLInCSS(start + end), node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(escapeHTMLInCSS(start + between) + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(escapeHTMLInCSS(after))\n this.builder('}', node, 'end')\n }\n\n body(node) {\n // Rules and at-rules are expanded into an explicit stack instead of\n // recursive `stringify()` calls to survive deeply nested trees.\n // If a subclass changes the traversal methods, its children go\n // through `stringify()` to keep the override in charge.\n let proto = Stringifier.prototype\n let expandable = ['atrule', 'block', 'body', 'rule', 'stringify'].every(\n method => this[method] === proto[method]\n )\n\n let stack = []\n pushBody(this, stack, node)\n\n while (stack.length > 0) {\n let entry = stack.pop()\n if (typeof entry === 'function') {\n entry()\n continue\n }\n\n let child = entry.node\n let before = this.raw(child, 'before')\n if (before) {\n this.builder(entry.document ? before : escapeHTMLInCSS(before))\n }\n\n if (expandable && child.type === 'rule') {\n pushBlock(this, stack, child, this.rawValue(child, 'selector'))\n } else if (expandable && child.type === 'atrule' && child.nodes) {\n pushBlock(this, stack, child, atruleStart(this, child))\n } else {\n this.stringify(child, entry.semicolon)\n }\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder(escapeHTMLInCSS('/*' + left + node.text + right + '*/'), node)\n }\n\n decl(node, semicolon) {\n let raws = node.raws\n let between = this.raw(node, 'between', 'colon')\n\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(escapeHTMLInCSS(string), node)\n }\n\n document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n let cache = root.rawCache || (root.rawCache = {})\n if (typeof cache[detect] !== 'undefined') {\n return cache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n cache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n if (node.source && node.source.input.hasBOM) {\n this.builder('\\uFEFF', node, 'start')\n }\n this.body(node)\n if (node.raws.after) {\n let after = node.raws.after\n let isDocument = node.parent && node.parent.type === 'document'\n this.builder(isDocument ? after : escapeHTMLInCSS(after))\n }\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(escapeHTMLInCSS(node.raws.ownSemicolon), node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n // An explicit stack instead of recursive calls to survive deeply\n // nested trees. Each entry is [source, its clone, clone's parent].\n let stack = [[obj, cloned, parent]]\n\n while (stack.length > 0) {\n let [source, target, targetParent] = stack.pop()\n for (let i in source) {\n if (!Object.prototype.hasOwnProperty.call(source, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = source[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (targetParent) target[i] = targetParent\n } else if (i === 'source') {\n target[i] = value\n } else if (Array.isArray(value)) {\n let children = []\n target[i] = children\n for (let j of value) {\n let childClone = new j.constructor()\n children.push(childClone)\n stack.push([j, childClone, target])\n }\n } else {\n if (type === 'object' && value !== null) {\n let valueClone = new value.constructor()\n stack.push([value, valueClone, undefined])\n value = valueClone\n }\n target[i] = value\n }\n }\n }\n\n return cloned\n}\n\nfunction sourceOffset(inputCSS, position) {\n // Not all custom syntaxes support `offset` in `source.start` and `source.end`\n if (position && typeof position.offset !== 'undefined') {\n return position.offset\n }\n\n let column = 1\n let line = 1\n let offset = 0\n\n for (let i = 0; i < inputCSS.length; i++) {\n if (line === position.line && column === position.column) {\n offset = i\n break\n }\n\n if (inputCSS[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return offset\n}\n\nclass Node {\n get proxyOf() {\n return this\n }\n\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name of Object.keys(defaults)) {\n if (name === '__proto__') continue\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n // Clone only nodes that already belong to another tree, so passing a\n // freshly created (parent-less) node adopts that instance instead of\n // a copy and keeps the caller's reference usable. See #1987.\n if (typeof node.clone === 'function' && node.parent) {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts = {}) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let pos = {\n column: this.source.start.column,\n line: this.source.start.line,\n offset: sourceOffset(inputString, this.source.start)\n }\n if (opts.index) {\n pos = this.positionInside(opts.index)\n } else if (opts.word) {\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index)\n }\n return pos\n }\n\n positionInside(index) {\n let column = this.source.start.column\n let line = this.source.start.line\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let offset = sourceOffset(inputString, this.source.start)\n let end = offset + index\n\n for (let i = offset; i < end; i++) {\n if (inputString[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line, offset: end }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts = {}) {\n let inputString =\n 'document' in this.source.input\n ? this.source.input.document\n : this.source.input.css\n let start = {\n column: this.source.start.column,\n line: this.source.start.line,\n offset: sourceOffset(inputString, this.source.start)\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line,\n offset:\n typeof this.source.end.offset === 'number'\n ? // `source.end.offset` is exclusive, so we don't need to add 1\n this.source.end.offset\n : // Since line/column in this.source.end is inclusive,\n // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n // So, we add 1 to convert it to exclusive.\n sourceOffset(inputString, this.source.end) + 1\n }\n : {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n\n if (opts.word) {\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index)\n end = this.positionInside(index + opts.word.length)\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line,\n offset: sourceOffset(inputString, opts.start)\n }\n } else if (typeof opts.index === 'number') {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line,\n offset: sourceOffset(inputString, opts.end)\n }\n } else if (typeof opts.endIndex === 'number') {\n end = this.positionInside(opts.endIndex)\n } else if (typeof opts.index === 'number') {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = {\n column: start.column + 1,\n line: start.line,\n offset: start.offset + 1\n }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n\n // A worklist instead of recursive `toJSON()` calls to survive deeply\n // nested trees. Each entry converts one node and writes the result\n // into the already converted parent by [holder, key].\n let holderOfRoot = []\n let queue = [[this, holderOfRoot, 0]]\n\n for (let step = 0; step < queue.length; step++) {\n let [node, holder, key] = queue[step]\n let fixed = {}\n holder[key] = fixed\n\n for (let name in node) {\n if (!Object.prototype.hasOwnProperty.call(node, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = node[name]\n\n if (Array.isArray(value)) {\n let fixedArray = []\n fixed[name] = fixedArray\n for (let i = 0; i < value.length; i++) {\n let item = value[i]\n if (typeof item === 'object' && item.toJSON) {\n if (item.toJSON === Node.prototype.toJSON) {\n queue.push([item, fixedArray, i])\n } else {\n fixedArray[i] = item.toJSON(null, inputs)\n }\n } else {\n fixedArray[i] = item\n }\n }\n } else if (typeof value === 'object' && value.toJSON) {\n if (value.toJSON === Node.prototype.toJSON) {\n queue.push([value, fixed, name])\n } else {\n fixed[name] = value.toJSON(null, inputs)\n }\n } else if (name === 'source') {\n if (value == null) continue\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputs.size\n inputs.set(value.input, inputId)\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n }\n\n let fixed = holderOfRoot[0]\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts = {}) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Node = require('./node')\nlet { isClean, my } = require('./symbols')\n\nlet AtRule, parse, Root, Rule\n\nfunction cleanSource(nodes) {\n let stack = nodes.slice()\n while (stack.length > 0) {\n let node = stack.pop()\n delete node.source\n if (node.nodes) {\n node.nodes = node.nodes.slice()\n for (let i of node.nodes) stack.push(i)\n }\n }\n return nodes.slice()\n}\n\nfunction markTreeDirty(node) {\n let stack = [node]\n while (stack.length > 0) {\n let next = stack.pop()\n next[isClean] = false\n if (next.proxyOf.nodes) {\n for (let i of next.proxyOf.nodes) stack.push(i)\n }\n }\n}\n\nclass Container extends Node {\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n let stack = [this]\n while (stack.length > 0) {\n let node = stack.pop()\n if (node !== this && node.cleanRaws !== Container.prototype.cleanRaws) {\n // Subclass with own logic; let it handle its subtree\n node.cleanRaws(keepBetween)\n continue\n }\n Node.prototype.cleanRaws.call(node, keepBetween)\n if (node.nodes) {\n for (let child of node.nodes) stack.push(child)\n }\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (typeof nodes === 'undefined') {\n nodes = []\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector || nodes.selectors) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markTreeDirty(i)\n\n if (!i.raws) i.raws = {}\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n if (!this.proxyOf.nodes) return undefined\n\n // An explicit stack instead of recursive `each()` calls to survive\n // deeply nested trees. Each frame keeps a live `indexes` slot, so\n // insertion and removal during the walk behave like `each()`: the\n // slot stays at the current child until its subtree is finished.\n let stack = [{ iterator: this.getIterator(), node: this.proxyOf }]\n\n while (stack.length > 0) {\n let { iterator, node } = stack[stack.length - 1]\n let index = node.indexes[iterator]\n\n if (index >= node.proxyOf.nodes.length) {\n delete node.indexes[iterator]\n stack.pop()\n let parent = stack[stack.length - 1]\n // Finish the parent’s step for the child subtree we just left\n if (parent) parent.node.indexes[parent.iterator] += 1\n continue\n }\n\n let child = node.proxyOf.nodes[index]\n let result\n try {\n result = callback(child, index)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result === false) {\n for (let opened of stack) {\n delete opened.node.indexes[opened.iterator]\n }\n return false\n }\n if (child.walk && child.proxyOf.nodes) {\n stack.push({ iterator: child.getIterator(), node: child })\n } else {\n node.indexes[iterator] += 1\n }\n }\n\n return undefined\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n let stack = [node]\n while (stack.length > 0) {\n let next = stack.pop()\n if (next.type === 'atrule') {\n Object.setPrototypeOf(next, AtRule.prototype)\n } else if (next.type === 'rule') {\n Object.setPrototypeOf(next, Rule.prototype)\n } else if (next.type === 'decl') {\n Object.setPrototypeOf(next, Declaration.prototype)\n } else if (next.type === 'comment') {\n Object.setPrototypeOf(next, Comment.prototype)\n } else if (next.type === 'root') {\n Object.setPrototypeOf(next, Root.prototype)\n }\n\n next[my] = true\n\n if (next.nodes) {\n for (let child of next.nodes) stack.push(child)\n }\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\n\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i-- > 0) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\n","'use strict'\n\nlet { existsSync, readFileSync, realpathSync } = require('fs')\nlet { dirname, isAbsolute, join, relative, sep } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\n\nfunction realPath(path) {\n try {\n return realpathSync(path)\n } catch {\n // Missing or dangling: keep the literal path. The existsSync() check below\n // still gates the read, and a path that does not exist cannot escape.\n return path\n }\n}\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n if (opts.unsafeMap) this.unsafeMap = true\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.json || this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n let uriMatch = text.match(charsetUri) || text.match(uri)\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length))\n }\n\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length))\n }\n\n let encoding = text.slice('data:application/json;'.length)\n encoding = encoding.slice(0, encoding.indexOf(','))\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path, cssFile, trusted) {\n if (!trusted && !this.unsafeMap) {\n if (!/\\.map$/i.test(path)) return undefined\n if (!cssFile) return undefined\n\n // Compare *resolved* paths: relative() is textual, so without this a\n // symlink at or below the CSS file's directory points the map outside it.\n let rel = relative(realPath(dirname(cssFile)), realPath(path))\n if (rel === '..' || rel.startsWith('..' + sep) || isAbsolute(rel)) {\n return undefined\n }\n }\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath, file, true)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n let unknown = this.loadFile(map, file, false)\n if (unknown) {\n try {\n /* c8 ignore next 4 */\n this.json = JSON.parse(unknown.replace(/^\\)]}'[^\\n]*\\n/, ''))\n } catch {\n return undefined\n }\n }\n return unknown\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet { nanoid } = require('nanoid/non-secure')\nlet { isAbsolute, resolve } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\nlet terminalHighlight = require('./terminal-highlight')\n\nlet lineToIndexCache = Symbol('lineToIndexCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nfunction getLineToIndex(input) {\n if (input[lineToIndexCache]) return input[lineToIndexCache]\n let lines = input.css.split('\\n')\n let lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n input[lineToIndexCache] = lineToIndex\n return lineToIndex\n}\n\nclass Input {\n get from() {\n return this.file || this.id\n }\n\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n this.document = this.css\n if (opts.document) this.document = opts.document.toString()\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = '<input css ' + nanoid(6) + '>'\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let endColumn, endLine, endOffset, offset, result\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n offset = start.offset\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n offset = this.fromLineAndColumn(line, column)\n }\n if (typeof end.offset === 'number') {\n endOffset = end.offset\n let pos = this.fromOffset(endOffset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n endOffset = this.fromLineAndColumn(end.line, end.column)\n }\n } else if (!column) {\n offset = line\n let pos = this.fromOffset(offset)\n line = pos.line\n column = pos.col\n } else {\n offset = this.fromLineAndColumn(line, column)\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = {\n column,\n endColumn,\n endLine,\n endOffset,\n line,\n offset,\n source: this.css\n }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromLineAndColumn(line, column) {\n let lineToIndex = getLineToIndex(this)\n let index = lineToIndex[line - 1]\n return index + column - 1\n }\n\n fromOffset(offset) {\n let lineToIndex = getLineToIndex(this)\n let lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column: column - 1, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n let toPosition = consumer.originalPositionFor({\n column: endColumn - 1,\n line: endLine\n })\n // The source map may not have a mapping that covers the end position\n // (`originalPositionFor()` then returns `null` for `line`/`column`\n // instead of omitting them). Treat that the same as not requesting\n // an end position at all, so `endLine`/`endColumn` stay a consistent\n // `undefined` pair instead of a mix of `null` and a bogus number.\n if (toPosition.source) to = toPosition\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column + 1,\n endColumn: to && to.column + 1,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let keepBefore = new Set()\n for (let node of Array.isArray(child) ? child : [child]) {\n if (\n node &&\n typeof node === 'object' &&\n !node.parent &&\n node.raws &&\n typeof node.raws.before !== 'undefined'\n ) {\n keepBefore.add(node.raws)\n }\n }\n\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n if (!keepBefore.has(node.raws)) {\n node.raws.before = sample.raws.before\n }\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n if (typeof string !== 'string') return []\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n let value = current.trim()\n if (last || value !== '') array.push(value)\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n let value = current.trim()\n if (last || value !== '') array.push(value)\n return array\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Input = require('./input')\nlet PreviousMap = require('./previous-map')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction hydrateInputs(json, inputs) {\n if (!json.inputs) return inputs\n return json.inputs.map(input => {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n return inputHydrated\n })\n}\n\nfunction constructNode(json, inputs, children) {\n let defaults = { ...json }\n delete defaults.inputs\n delete defaults.nodes\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n\n let node\n if (defaults.type === 'root') {\n node = new Root(defaults)\n } else if (defaults.type === 'decl') {\n node = new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n node = new Rule(defaults)\n } else if (defaults.type === 'comment') {\n node = new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n node = new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n\n // Rehydrated children are attached after construction. Passing them\n // through the container constructor would re-run insertion spacing\n // normalization and overwrite each child's own `raws.before`.\n if (children) {\n node.nodes = children\n for (let child of children) child.parent = node\n }\n\n return node\n}\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n // An explicit stack instead of recursive calls to survive deeply\n // nested trees. Children are rehydrated before their parent node\n // is constructed.\n let result\n let stack = [\n { childIndex: 0, children: [], inputs: hydrateInputs(json, inputs), json }\n ]\n\n while (stack.length > 0) {\n let frame = stack[stack.length - 1]\n let jsonNodes = frame.json.nodes\n\n if (jsonNodes && frame.childIndex < jsonNodes.length) {\n let childJson = jsonNodes[frame.childIndex]\n frame.childIndex += 1\n stack.push({\n childIndex: 0,\n children: [],\n inputs: hydrateInputs(childJson, frame.inputs),\n json: childJson\n })\n continue\n }\n\n stack.pop()\n let node = constructNode(\n frame.json,\n frame.inputs,\n jsonNodes ? frame.children : undefined\n )\n if (stack.length > 0) {\n stack[stack.length - 1].children.push(node)\n } else {\n result = node\n }\n }\n\n return result\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { dirname, relative, resolve, sep } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.originalCSS = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = null\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.startsWith('# sourceMappingURL=')) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n let annotation = '/*# sourceMappingURL='\n let startIndex\n while ((startIndex = this.css.lastIndexOf(annotation)) !== -1) {\n let endIndex = this.css.indexOf('*/', startIndex + annotation.length)\n if (endIndex === -1) break\n while (startIndex > 0 && this.css[startIndex - 1] === '\\n') {\n startIndex--\n }\n this.css = this.css.slice(0, startIndex) + this.css.slice(endIndex + 2)\n }\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n })\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n\n let line = 1\n let column = 1\n\n let noSource = '<no source>'\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let last, lines\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.originalCSS, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, content, escape, next, quote\n let currentToken, escaped, escapePos, n, prev\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n let lastBadParen = -1\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else if (pos <= lastBadParen) {\n currentToken = ['(', '(', pos]\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n lastBadParen = next === -1 ? length : next\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet tokenizer = require('./tokenize')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nfunction tokensToString(tokens, from, to) {\n let result = ''\n for (let i = from; i < to; i++) result += tokens[i][1]\n return result\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid\n // property's value. Then we need to return the colon after that word\n // token. [3] is the \"end\" colon of that word. And because we need it\n // after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let prev, token, type\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (!text.trim()) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n let start = 0\n while (tokens[start][0] !== 'word') {\n if (start === tokens.length - 1) this.unknownWord([tokens[start]])\n start++\n }\n node.raws.before += tokensToString(tokens, 0, start)\n node.source.start = this.getPosition(tokens[start][2])\n\n let propStart = start\n while (start < tokens.length) {\n let type = tokens[start][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n start++\n }\n node.prop = tokensToString(tokens, propStart, start)\n\n let betweenStart = start\n let token\n while (start < tokens.length) {\n token = tokens[start]\n start++\n if (token[0] === ':') break\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n }\n node.raws.between = tokensToString(tokens, betweenStart, start)\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpacesStart = start\n while (start < tokens.length) {\n let next = tokens[start][0]\n if (next !== 'space' && next !== 'comment') break\n start++\n }\n let firstSpaces = tokens.slice(firstSpacesStart, start)\n\n tokens = tokens.slice(start)\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().startsWith('!') && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().startsWith('!')) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n // `ownSemicolon` also holds the spaces before the semicolon, but\n // the position above is the semicolon itself, so the node ends\n // right after it.\n prev.source.end = this.getPosition(token[2])\n prev.source.end.offset++\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word ' + tokens[0][1],\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet Container = require('./container')\nlet Input = require('./input')\nlet Parser = require('./parser')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nlet Container = require('./container')\nlet { my } = require('./symbols')\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n if (!opts.node[my]) {\n // The node comes from another PostCSS copy in node_modules, so it does\n // not have this copy’s methods. Container#normalize() rebuilds such\n // nodes on insert, but a node passed straight to Result#warn() never\n // goes through it.\n Container.rebuild(opts.node)\n }\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n get content() {\n return this.css\n }\n\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = ''\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","'use strict'\n\nlet Container = require('./container')\nlet Document = require('./document')\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nlet Result = require('./result')\nlet Root = require('./root')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\nlet warnOnce = require('./warn-once')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n let stack = [node]\n while (stack.length > 0) {\n let next = stack.pop()\n next[isClean] = false\n if (next.nodes) {\n for (let i of next.nodes) stack.push(i)\n }\n }\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let rootSource = this.result.root.source\n if (\n opts.map === undefined &&\n !(rootSource && rootSource.input && rootSource.input.map)\n ) {\n let result = ''\n str(this.result.root, i => {\n result += i\n })\n this.result.css = result\n return this.result\n }\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n // Advance past the child we just finished visiting. Like\n // `Container#each`, the index is incremented only after a child has\n // been fully processed, so a node inserted right after the current\n // child is not skipped by the `existIndex < index` adjustment in\n // `Container#insertAfter()` (which would fire exit events too early).\n if (visit.descending) {\n visit.descending = false\n node.indexes[iterator] += 1\n }\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n if (!child[isClean]) {\n child[isClean] = true\n visit.descending = true\n stack.push(toStack(child))\n return\n }\n node.indexes[iterator] += 1\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n // An explicit stack like in async `visitTick()` to survive deeply\n // nested trees. Unlike `visitTick()`, nodes are marked clean only\n // on entering, so a node dirtied by its own visitors is revisited\n // on the next pass.\n node[isClean] = true\n let stack = [{ eventIndex: 0, events: getEvents(node), iterator: 0, node }]\n\n while (stack.length > 0) {\n let visit = stack[stack.length - 1]\n let visitNode = visit.node\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n // Advance past the child we just finished visiting. Like\n // `Container#each`, the index is incremented only after a child has\n // been fully processed. Incrementing before (as this loop used to)\n // makes a node inserted right after the current child get skipped by\n // the `existIndex < index` adjustment in `Container#insertAfter()`,\n // which fires exit events before those new siblings are visited.\n if (visit.descending) {\n visit.descending = false\n visitNode.indexes[iterator] += 1\n }\n let child\n let descended = false\n while ((child = visitNode.nodes[visitNode.indexes[iterator]])) {\n if (!child[isClean]) {\n child[isClean] = true\n visit.descending = true\n stack.push({\n eventIndex: 0,\n events: getEvents(child),\n iterator: 0,\n node: child\n })\n descended = true\n break\n }\n visitNode.indexes[iterator] += 1\n }\n if (descended) continue\n visit.iterator = 0\n delete visitNode.indexes[iterator]\n }\n\n if (visit.eventIndex < visit.events.length) {\n let event = visit.events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (visitNode.nodes && visitNode.nodes.length) {\n visit.iterator = visitNode.getIterator()\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, visitNode.toProxy())) stack.pop()\n }\n }\n continue\n }\n\n stack.pop()\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nlet Result = require('./result')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\n\nclass NoWorkResult {\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n\n let str = stringify\n this.result = new Result(this._processor, undefined, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, undefined, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n } else {\n map.clearAnnotation()\n this.result.css = map.css\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet Document = require('./document')\nlet LazyResult = require('./lazy-result')\nlet NoWorkResult = require('./no-work-result')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.5.28'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n !this.plugins.length &&\n !opts.parser &&\n !opts.stringifier &&\n !opts.syntax\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Container = require('./container')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet Document = require('./document')\nlet fromJSON = require('./fromJSON')\nlet Input = require('./input')\nlet LazyResult = require('./lazy-result')\nlet list = require('./list')\nlet Node = require('./node')\nlet parse = require('./parse')\nlet Processor = require('./processor')\nlet Result = require('./result.js')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet stringify = require('./stringify')\nlet Warning = require('./warning')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('zh')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","const htmlparser = require('htmlparser2');\nconst escapeStringRegexp = require('escape-string-regexp');\nconst { isPlainObject } = require('is-plain-object');\nconst deepmerge = require('deepmerge');\nconst parseSrcset = require('parse-srcset');\nconst { parse: postcssParse } = require('postcss');\n// Tags that can conceivably represent stand-alone media.\nconst mediaTags = [\n 'img', 'audio', 'video', 'picture', 'svg',\n 'object', 'map', 'iframe', 'embed'\n];\n// Tags that are inherently vulnerable to being used in XSS attacks.\nconst vulnerableTags = [ 'script', 'style' ];\n\nfunction each(obj, cb) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n cb(obj[key], key);\n });\n }\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n return ({}).hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n const n = [];\n each(a, function(v) {\n if (cb(v)) {\n n.push(v);\n }\n });\n return n;\n}\n\nfunction isEmptyObject(obj) {\n for (const key in obj) {\n if (has(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction stringifySrcset(parsedSrcset) {\n return parsedSrcset.map(function(part) {\n if (!part.url) {\n throw new Error('URL missing');\n }\n\n return (\n part.url +\n (part.w ? ` ${part.w}w` : '') +\n (part.h ? ` ${part.h}h` : '') +\n (part.d ? ` ${part.d}x` : '')\n );\n }).join(', ');\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n// * unexpected-equals-sign-before-attribute-name\n// * unexpected-null-character\n// * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nconst VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n if (html == null) {\n return '';\n }\n if (typeof html === 'number') {\n html = html.toString();\n }\n\n let result = '';\n // Used for hot swapping the result variable with an empty string in order to \"capture\" the text written to it.\n let tempResult = '';\n\n function Frame(tag, attribs) {\n const that = this;\n this.tag = tag;\n this.attribs = attribs || {};\n this.tagPosition = result.length;\n this.text = ''; // Node inner text\n this.mediaChildren = [];\n\n this.updateParentNodeText = function() {\n if (stack.length) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.text += that.text;\n }\n };\n\n this.updateParentNodeMediaChildren = function() {\n if (stack.length && mediaTags.includes(this.tag)) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.mediaChildren.push(this.tag);\n }\n };\n }\n\n options = Object.assign({}, sanitizeHtml.defaults, options);\n options.parser = Object.assign({}, htmlParserDefaults, options.parser);\n\n const tagAllowed = function (name) {\n return options.allowedTags === false || (options.allowedTags || []).indexOf(name) > -1;\n };\n\n // vulnerableTags\n vulnerableTags.forEach(function (tag) {\n if (tagAllowed(tag) && !options.allowVulnerableTags) {\n console.warn(`\\n\\n⚠️ Your \\`allowedTags\\` option includes, \\`${tag}\\`, which is inherently\\nvulnerable to XSS attacks. Please remove it from \\`allowedTags\\`.\\nOr, to disable this warning, add the \\`allowVulnerableTags\\` option\\nand ensure you are accounting for this risk.\\n\\n`);\n }\n });\n\n // Tags that contain something other than HTML, or where discarding\n // the text when the tag is disallowed makes sense for other reasons.\n // If we are not allowing these tags, we should drop their content too.\n // For other tags you would drop the tag but keep its content.\n const nonTextTagsArray = options.nonTextTags || [\n 'script',\n 'style',\n 'textarea',\n 'option'\n ];\n let allowedAttributesMap;\n let allowedAttributesGlobMap;\n if (options.allowedAttributes) {\n allowedAttributesMap = {};\n allowedAttributesGlobMap = {};\n each(options.allowedAttributes, function(attributes, tag) {\n allowedAttributesMap[tag] = [];\n const globRegex = [];\n attributes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else {\n allowedAttributesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n });\n }\n const allowedClassesMap = {};\n const allowedClassesGlobMap = {};\n const allowedClassesRegexMap = {};\n each(options.allowedClasses, function(classes, tag) {\n // Implicitly allows the class attribute\n if (allowedAttributesMap) {\n if (!has(allowedAttributesMap, tag)) {\n allowedAttributesMap[tag] = [];\n }\n allowedAttributesMap[tag].push('class');\n }\n\n allowedClassesMap[tag] = classes;\n\n if (Array.isArray(classes)) {\n const globRegex = [];\n allowedClassesMap[tag] = [];\n allowedClassesRegexMap[tag] = [];\n classes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else if (obj instanceof RegExp) {\n allowedClassesRegexMap[tag].push(obj);\n } else {\n allowedClassesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedClassesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n }\n });\n\n const transformTagsMap = {};\n let transformTagsAll;\n each(options.transformTags, function(transform, tag) {\n let transFun;\n if (typeof transform === 'function') {\n transFun = transform;\n } else if (typeof transform === 'string') {\n transFun = sanitizeHtml.simpleTransform(transform);\n }\n if (tag === '*') {\n transformTagsAll = transFun;\n } else {\n transformTagsMap[tag] = transFun;\n }\n });\n\n let depth;\n let stack;\n let skipMap;\n let transformMap;\n let skipText;\n let skipTextDepth;\n let addedText = false;\n\n initializeState();\n\n const parser = new htmlparser.Parser({\n onopentag: function(name, attribs) {\n // If `enforceHtmlBoundary` is `true` and this has found the opening\n // `html` tag, reset the state.\n if (options.enforceHtmlBoundary && name === 'html') {\n initializeState();\n }\n\n if (skipText) {\n skipTextDepth++;\n return;\n }\n const frame = new Frame(name, attribs);\n stack.push(frame);\n\n let skip = false;\n const hasText = !!frame.text;\n let transformedTag;\n if (has(transformTagsMap, name)) {\n transformedTag = transformTagsMap[name](name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n\n if (transformedTag.text !== undefined) {\n frame.innerText = transformedTag.text;\n }\n\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n if (transformTagsAll) {\n transformedTag = transformTagsAll(name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n\n if (!tagAllowed(name) || (options.disallowedTagsMode === 'recursiveEscape' && !isEmptyObject(skipMap)) || (options.nestingLimit != null && depth >= options.nestingLimit)) {\n skip = true;\n skipMap[depth] = true;\n if (options.disallowedTagsMode === 'discard') {\n if (nonTextTagsArray.indexOf(name) !== -1) {\n skipText = true;\n skipTextDepth = 1;\n }\n }\n skipMap[depth] = true;\n }\n depth++;\n if (skip) {\n if (options.disallowedTagsMode === 'discard') {\n // We want the contents but not this tag\n return;\n }\n tempResult = result;\n result = '';\n }\n result += '<' + name;\n\n if (name === 'script') {\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n frame.innerText = '';\n }\n }\n\n if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n each(attribs, function(value, a) {\n if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n // This prevents part of an attribute name in the output from being\n // interpreted as the end of an attribute, or end of a tag.\n delete frame.attribs[a];\n return;\n }\n // If the value is empty, check if the attribute is in the allowedEmptyAttributes array.\n // If it is not in the allowedEmptyAttributes array, and it is a known non-boolean attribute, delete it\n // List taken from https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n if (value === '' && (!options.allowedEmptyAttributes.includes(a)) &&\n (options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes('*'))) {\n delete frame.attribs[a];\n return;\n }\n // check allowedAttributesMap for the element and attribute and modify the value\n // as necessary if there are specific values defined.\n let passedAllowedAttributesMapCheck = false;\n if (!allowedAttributesMap ||\n (has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1) ||\n (allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||\n (has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a)) ||\n (allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {\n passedAllowedAttributesMapCheck = true;\n } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n for (const o of allowedAttributesMap[name]) {\n if (isPlainObject(o) && o.name && (o.name === a)) {\n passedAllowedAttributesMapCheck = true;\n let newValue = '';\n if (o.multiple === true) {\n // verify the values that are allowed\n const splitStrArray = value.split(' ');\n for (const s of splitStrArray) {\n if (o.values.indexOf(s) !== -1) {\n if (newValue === '') {\n newValue = s;\n } else {\n newValue += ' ' + s;\n }\n }\n }\n } else if (o.values.indexOf(value) >= 0) {\n // verified an allowed value matches the entire attribute value\n newValue = value;\n }\n value = newValue;\n }\n }\n }\n if (passedAllowedAttributesMapCheck) {\n if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n if (naughtyHref(name, value)) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'script' && a === 'src') {\n\n let allowed = true;\n\n try {\n const parsed = parseUrl(value);\n\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n const allowedHostname = (options.allowedScriptHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedScriptDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n allowed = false;\n }\n\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'iframe' && a === 'src') {\n let allowed = true;\n try {\n const parsed = parseUrl(value);\n\n if (parsed.isRelativeUrl) {\n // default value of allowIframeRelativeUrls is true\n // unless allowedIframeHostnames or allowedIframeDomains specified\n allowed = has(options, 'allowIframeRelativeUrls')\n ? options.allowIframeRelativeUrls\n : (!options.allowedIframeHostnames && !options.allowedIframeDomains);\n } else if (options.allowedIframeHostnames || options.allowedIframeDomains) {\n const allowedHostname = (options.allowedIframeHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n // Unparseable iframe src\n allowed = false;\n }\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'srcset') {\n try {\n let parsed = parseSrcset(value);\n parsed.forEach(function(value) {\n if (naughtyHref('srcset', value.url)) {\n value.evil = true;\n }\n });\n parsed = filter(parsed, function(v) {\n return !v.evil;\n });\n if (!parsed.length) {\n delete frame.attribs[a];\n return;\n } else {\n value = stringifySrcset(filter(parsed, function(v) {\n return !v.evil;\n }));\n frame.attribs[a] = value;\n }\n } catch (e) {\n // Unparseable srcset\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'class') {\n const allowedSpecificClasses = allowedClassesMap[name];\n const allowedWildcardClasses = allowedClassesMap['*'];\n const allowedSpecificClassesGlob = allowedClassesGlobMap[name];\n const allowedSpecificClassesRegex = allowedClassesRegexMap[name];\n const allowedWildcardClassesGlob = allowedClassesGlobMap['*'];\n const allowedClassesGlobs = [\n allowedSpecificClassesGlob,\n allowedWildcardClassesGlob\n ]\n .concat(allowedSpecificClassesRegex)\n .filter(function (t) {\n return t;\n });\n if (allowedSpecificClasses && allowedWildcardClasses) {\n value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses), allowedClassesGlobs);\n } else {\n value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses, allowedClassesGlobs);\n }\n if (!value.length) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'style') {\n if (options.parseStyleAttributes) {\n try {\n const abstractSyntaxTree = postcssParse(name + ' {' + value + '}', { map: false });\n const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n value = stringifyStyleAttributes(filteredAST);\n\n if (value.length === 0) {\n delete frame.attribs[a];\n return;\n }\n } catch (e) {\n if (typeof window !== 'undefined') {\n console.warn('Failed to parse \"' + name + ' {' + value + '}' + '\", If you\\'re running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547');\n }\n delete frame.attribs[a];\n return;\n }\n } else if (options.allowedStyles) {\n throw new Error('allowedStyles option cannot be used together with parseStyleAttributes: false.');\n }\n }\n result += ' ' + a;\n if (value && value.length) {\n result += '=\"' + escapeHtml(value, true) + '\"';\n } else if (options.allowedEmptyAttributes.includes(a)) {\n result += '=\"\"';\n }\n } else {\n delete frame.attribs[a];\n }\n });\n }\n if (options.selfClosing.indexOf(name) !== -1) {\n result += ' />';\n } else {\n result += '>';\n if (frame.innerText && !hasText && !options.textFilter) {\n result += escapeHtml(frame.innerText);\n addedText = true;\n }\n }\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n },\n ontext: function(text) {\n if (skipText) {\n return;\n }\n const lastFrame = stack[stack.length - 1];\n let tag;\n\n if (lastFrame) {\n tag = lastFrame.tag;\n // If inner text was set by transform function then let's use it\n text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n }\n\n if (options.disallowedTagsMode === 'discard' && ((tag === 'script') || (tag === 'style'))) {\n // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n // script tags is, by definition, game over for XSS protection, so if that's\n // your concern, don't allow them. The same is essentially true for style tags\n // which have their own collection of XSS vectors.\n result += text;\n } else {\n const escaped = escapeHtml(text, false);\n if (options.textFilter && !addedText) {\n result += options.textFilter(escaped, tag);\n } else if (!addedText) {\n result += escaped;\n }\n }\n if (stack.length) {\n const frame = stack[stack.length - 1];\n frame.text += text;\n }\n },\n onclosetag: function(name, isImplied) {\n\n if (skipText) {\n skipTextDepth--;\n if (!skipTextDepth) {\n skipText = false;\n } else {\n return;\n }\n }\n\n const frame = stack.pop();\n if (!frame) {\n // Do not crash on bad markup\n return;\n }\n\n if (frame.tag !== name) {\n // Another case of bad markup.\n // Push to stack, so that it will be used in future closing tags.\n stack.push(frame);\n return;\n }\n\n skipText = options.enforceHtmlBoundary ? name === 'html' : false;\n depth--;\n const skip = skipMap[depth];\n if (skip) {\n delete skipMap[depth];\n if (options.disallowedTagsMode === 'discard') {\n frame.updateParentNodeText();\n return;\n }\n tempResult = result;\n result = '';\n }\n\n if (transformMap[depth]) {\n name = transformMap[depth];\n delete transformMap[depth];\n }\n\n if (options.exclusiveFilter && options.exclusiveFilter(frame)) {\n result = result.substr(0, frame.tagPosition);\n return;\n }\n\n frame.updateParentNodeMediaChildren();\n frame.updateParentNodeText();\n\n if (\n // Already output />\n options.selfClosing.indexOf(name) !== -1 ||\n // Escaped tag, closing tag is implied\n (isImplied && !tagAllowed(name) && [ 'escape', 'recursiveEscape' ].indexOf(options.disallowedTagsMode) >= 0)\n ) {\n if (skip) {\n result = tempResult;\n tempResult = '';\n }\n return;\n }\n\n result += '</' + name + '>';\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n addedText = false;\n }\n }, options.parser);\n parser.write(html);\n parser.end();\n\n return result;\n\n function initializeState() {\n result = '';\n depth = 0;\n stack = [];\n skipMap = {};\n transformMap = {};\n skipText = false;\n skipTextDepth = 0;\n }\n\n function escapeHtml(s, quote) {\n if (typeof (s) !== 'string') {\n s = s + '';\n }\n if (options.parser.decodeEntities) {\n s = s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n if (quote) {\n s = s.replace(/\"/g, '"');\n }\n }\n // TODO: this is inadequate because it will pass `&0;`. This approach\n // will not work, each & must be considered with regard to whether it\n // is followed by a 100% syntactically valid entity or not, and escaped\n // if it is not. If this bothers you, don't set parser.decodeEntities\n // to false. (The default is true.)\n s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&') // Match ampersands not part of existing HTML entity\n .replace(/</g, '<')\n .replace(/>/g, '>');\n if (quote) {\n s = s.replace(/\"/g, '"');\n }\n return s;\n }\n\n function naughtyHref(name, href) {\n // Browsers ignore character codes of 32 (space) and below in a surprising\n // number of situations. Start reading here:\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n // eslint-disable-next-line no-control-regex\n href = href.replace(/[\\x00-\\x20]+/g, '');\n // Clobber any comments in URLs, which the browser might\n // interpret inside an XML data island, allowing\n // a javascript: URL to be snuck through\n while (true) {\n const firstIndex = href.indexOf('<!--');\n if (firstIndex === -1) {\n break;\n }\n const lastIndex = href.indexOf('-->', firstIndex + 4);\n if (lastIndex === -1) {\n break;\n }\n href = href.substring(0, firstIndex) + href.substring(lastIndex + 3);\n }\n // Case insensitive so we don't get faked out by JAVASCRIPT #1\n // Allow more characters after the first so we don't get faked\n // out by certain schemes browsers accept\n const matches = href.match(/^([a-zA-Z][a-zA-Z0-9.\\-+]*):/);\n if (!matches) {\n // Protocol-relative URL starting with any combination of '/' and '\\'\n if (href.match(/^[/\\\\]{2}/)) {\n return !options.allowProtocolRelative;\n }\n\n // No scheme\n return false;\n }\n const scheme = matches[1].toLowerCase();\n\n if (has(options.allowedSchemesByTag, name)) {\n return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n }\n\n return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n }\n\n function parseUrl(value) {\n value = value.replace(/^(\\w+:)?\\s*[\\\\/]\\s*[\\\\/]/, '$1//');\n if (value.startsWith('relative:')) {\n // An attempt to exploit our workaround for base URLs being\n // mandatory for relative URL validation in the WHATWG\n // URL parser, reject it\n throw new Error('relative: exploit attempt');\n }\n // naughtyHref is in charge of whether protocol relative URLs\n // are cool. Here we are concerned just with allowed hostnames and\n // whether to allow relative URLs.\n //\n // Build a placeholder \"base URL\" against which any reasonable\n // relative URL may be parsed successfully\n let base = 'relative://relative-site';\n for (let i = 0; (i < 100); i++) {\n base += `/${i}`;\n }\n\n const parsed = new URL(value, base);\n\n const isRelativeUrl = parsed && parsed.hostname === 'relative-site' && parsed.protocol === 'relative:';\n return {\n isRelativeUrl,\n url: parsed\n };\n }\n /**\n * Filters user input css properties by allowlisted regex attributes.\n * Modifies the abstractSyntaxTree object.\n *\n * @param {object} abstractSyntaxTree - Object representation of CSS attributes.\n * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n * @param {object} allowedStyles - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n * @return {object} - The modified tree.\n */\n function filterCss(abstractSyntaxTree, allowedStyles) {\n if (!allowedStyles) {\n return abstractSyntaxTree;\n }\n\n const astRules = abstractSyntaxTree.nodes[0];\n let selectedRule;\n\n // Merge global and tag-specific styles into new AST.\n if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n selectedRule = deepmerge(\n allowedStyles[astRules.selector],\n allowedStyles['*']\n );\n } else {\n selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n }\n\n if (selectedRule) {\n abstractSyntaxTree.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n }\n\n return abstractSyntaxTree;\n }\n\n /**\n * Extracts the style attributes from an AbstractSyntaxTree and formats those\n * values in the inline style attribute format.\n *\n * @param {AbstractSyntaxTree} filteredAST\n * @return {string} - Example: \"color:yellow;text-align:center !important;font-family:helvetica;\"\n */\n function stringifyStyleAttributes(filteredAST) {\n return filteredAST.nodes[0].nodes\n .reduce(function(extractedAttributes, attrObject) {\n extractedAttributes.push(\n `${attrObject.prop}:${attrObject.value}${attrObject.important ? ' !important' : ''}`\n );\n return extractedAttributes;\n }, [])\n .join(';');\n }\n\n /**\n * Filters the existing attributes for the given property. Discards any attributes\n * which don't match the allowlist.\n *\n * @param {object} selectedRule - Example: { color: red, font-family: helvetica }\n * @param {array} allowedDeclarationsList - List of declarations which pass the allowlist.\n * @param {object} attributeObject - Object representing the current css property.\n * @property {string} attributeObject.type - Typically 'declaration'.\n * @property {string} attributeObject.prop - The CSS property, i.e 'color'.\n * @property {string} attributeObject.value - The corresponding value to the css property, i.e 'red'.\n * @return {function} - When used in Array.reduce, will return an array of Declaration objects\n */\n function filterDeclarations(selectedRule) {\n return function (allowedDeclarationsList, attributeObject) {\n // If this property is allowlisted...\n if (has(selectedRule, attributeObject.prop)) {\n const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {\n return regularExpression.test(attributeObject.value);\n });\n\n if (matchesRegex) {\n allowedDeclarationsList.push(attributeObject);\n }\n }\n return allowedDeclarationsList;\n };\n }\n\n function filterClasses(classes, allowed, allowedGlobs) {\n if (!allowed) {\n // The class attribute is allowed without filtering on this tag\n return classes;\n }\n classes = classes.split(/\\s+/);\n return classes.filter(function(clss) {\n return allowed.indexOf(clss) !== -1 || allowedGlobs.some(function(glob) {\n return glob.test(clss);\n });\n }).join(' ');\n }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nconst htmlParserDefaults = {\n decodeEntities: true\n};\nsanitizeHtml.defaults = {\n allowedTags: [\n // Sections derived from MDN element categories and limited to the more\n // benign categories.\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n // Content sectioning\n 'address', 'article', 'aside', 'footer', 'header',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup',\n 'main', 'nav', 'section',\n // Text content\n 'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure',\n 'hr', 'li', 'main', 'ol', 'p', 'pre', 'ul',\n // Inline text semantics\n 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn',\n 'em', 'i', 'kbd', 'mark', 'q',\n 'rb', 'rp', 'rt', 'rtc', 'ruby',\n 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr',\n // Table content\n 'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'\n ],\n // Tags that cannot be boolean\n nonBooleanAttributes: [\n 'abbr', 'accept', 'accept-charset', 'accesskey', 'action',\n 'allow', 'alt', 'as', 'autocapitalize', 'autocomplete',\n 'blocking', 'charset', 'cite', 'class', 'color', 'cols',\n 'colspan', 'content', 'contenteditable', 'coords', 'crossorigin',\n 'data', 'datetime', 'decoding', 'dir', 'dirname', 'download',\n 'draggable', 'enctype', 'enterkeyhint', 'fetchpriority', 'for',\n 'form', 'formaction', 'formenctype', 'formmethod', 'formtarget',\n 'headers', 'height', 'hidden', 'high', 'href', 'hreflang',\n 'http-equiv', 'id', 'imagesizes', 'imagesrcset', 'inputmode',\n 'integrity', 'is', 'itemid', 'itemprop', 'itemref', 'itemtype',\n 'kind', 'label', 'lang', 'list', 'loading', 'low', 'max',\n 'maxlength', 'media', 'method', 'min', 'minlength', 'name',\n 'nonce', 'optimum', 'pattern', 'ping', 'placeholder', 'popover',\n 'popovertarget', 'popovertargetaction', 'poster', 'preload',\n 'referrerpolicy', 'rel', 'rows', 'rowspan', 'sandbox', 'scope',\n 'shape', 'size', 'sizes', 'slot', 'span', 'spellcheck', 'src',\n 'srcdoc', 'srclang', 'srcset', 'start', 'step', 'style',\n 'tabindex', 'target', 'title', 'translate', 'type', 'usemap',\n 'value', 'width', 'wrap',\n // Event handlers\n 'onauxclick', 'onafterprint', 'onbeforematch', 'onbeforeprint',\n 'onbeforeunload', 'onbeforetoggle', 'onblur', 'oncancel',\n 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick', 'onclose',\n 'oncontextlost', 'oncontextmenu', 'oncontextrestored', 'oncopy',\n 'oncuechange', 'oncut', 'ondblclick', 'ondrag', 'ondragend',\n 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart',\n 'ondrop', 'ondurationchange', 'onemptied', 'onended',\n 'onerror', 'onfocus', 'onformdata', 'onhashchange', 'oninput',\n 'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup',\n 'onlanguagechange', 'onload', 'onloadeddata', 'onloadedmetadata',\n 'onloadstart', 'onmessage', 'onmessageerror', 'onmousedown',\n 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout',\n 'onmouseover', 'onmouseup', 'onoffline', 'ononline', 'onpagehide',\n 'onpageshow', 'onpaste', 'onpause', 'onplay', 'onplaying',\n 'onpopstate', 'onprogress', 'onratechange', 'onreset', 'onresize',\n 'onrejectionhandled', 'onscroll', 'onscrollend',\n 'onsecuritypolicyviolation', 'onseeked', 'onseeking', 'onselect',\n 'onslotchange', 'onstalled', 'onstorage', 'onsubmit', 'onsuspend',\n 'ontimeupdate', 'ontoggle', 'onunhandledrejection', 'onunload',\n 'onvolumechange', 'onwaiting', 'onwheel'\n ],\n disallowedTagsMode: 'discard',\n allowedAttributes: {\n a: [ 'href', 'name', 'target' ],\n // We don't currently allow img itself by default, but\n // these attributes would make sense if we did.\n img: [ 'src', 'srcset', 'alt', 'title', 'width', 'height', 'loading' ]\n },\n allowedEmptyAttributes: [\n 'alt'\n ],\n // Lots of these won't come up by default because we don't allow them\n selfClosing: [ 'img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta' ],\n // URL schemes we permit\n allowedSchemes: [ 'http', 'https', 'ftp', 'mailto', 'tel' ],\n allowedSchemesByTag: {},\n allowedSchemesAppliedToAttributes: [ 'href', 'src', 'cite' ],\n allowProtocolRelative: true,\n enforceHtmlBoundary: false,\n parseStyleAttributes: true\n};\n\nsanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {\n merge = (merge === undefined) ? true : merge;\n newAttribs = newAttribs || {};\n\n return function(tagName, attribs) {\n let attrib;\n if (merge) {\n for (attrib in newAttribs) {\n attribs[attrib] = newAttribs[attrib];\n }\n } else {\n attribs = newAttribs;\n }\n\n return {\n tagName: newTagName,\n attribs: attribs\n };\n };\n};\n","import { parse } from \"marked\";\nimport sanitizeHtml from \"sanitize-html\";\n\nexport function markdownToHTML(markdown: string) {\n const html = parse(markdown);\n // Allow only a super restricted set of tags and attributes. The plugin market\n // renders plugin READMEs with the same list (EPanel_Market server/utils/markdown.ts);\n // change both together.\n const safeHtml = sanitizeHtml(html, {\n allowedTags: [\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"b\",\n \"i\",\n \"em\",\n \"strong\",\n \"a\",\n \"p\",\n \"table\",\n \"thead\",\n \"ul\",\n \"ol\",\n \"li\",\n \"img\",\n \"pre\",\n \"blockquote\",\n \"tbody\",\n \"tr\",\n \"th\",\n \"td\",\n \"hr\",\n \"br\",\n \"code\",\n \"font\"\n ],\n allowedAttributes: {\n a: [\"href\", \"target\"],\n img: [\"height\", \"width\", \"src\", \"alt\"]\n }\n });\n return safeHtml;\n}\n"],"names":["_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","unescapeTest","unescape","_","n","caret","edit","regex","opt","obj","name","val","nonWordAndColonTest","originIndependentUrl","cleanUrl","sanitize","base","href","prot","resolveUrl","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","i","c","invert","l","suffLen","currChar","findClosingBracket","b","level","checkDeprecations","callback","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","options","__publicField","src","trimmed","top","tokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","list","itemRegex","t","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","spacers","hasMultipleLineBreaks","paragraph","tag","item","j","k","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","hasNonSpaceChars","hasSpaceCharsOnBothEnds","mangle","prevCapZero","smartypants","block","inline","out","_Lexer","rules","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","code","infostring","lang","quote","slugger","id","body","ordered","start","type","startatt","task","checked","header","content","flags","_TextRenderer","_Slugger","value","originalSlug","isDryRun","slug","occurenceAccumulator","_Parser","l2","l3","cell","loose","itemBody","checkbox","ret","renderer","_Hooks","markdown","Marked","args","__privateAdd","_parseMarkdown","_onError","__privateMethod","parseMarkdown_fn","values","childTokens","extensions","pack","opts","ext","prevRenderer","prop","rendererFunc","rendererKey","tokenizer","tokenizerFunc","tokenizerKey","prevTokenizer","hooks","hooksFunc","hooksKey","prevHook","arg","walkTokens","parser","optOrCallback","origOpt","throwError","onError_fn","highlight","e","done","err","pending","silent","async","msg","markedInstance","marked","parse","escapeStringRegexp","string","isPlainObject_1","isObject","o","isPlainObject","ctor","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","target","source","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","deepmerge_1","cjs","root","factory","module","this","input","isSpace","collectCharacters","regEx","chars","pos","inputLength","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","url","descriptors","currentDescriptor","state","candidates","parseDescriptors","tokenize","pError","w","d","h","candidate","desc","lastChar","intVal","floatVal","x","create","picocolors_browserModule","pico","require$$0","terminalHighlight","require$$1","CssSyntaxError","message","column","file","plugin","color","css","aside","mark","bold","gray","red","lines","end","maxWidth","index","number","gutter","padding","subLineStart","subLineEnd","subLine","spacing","cssSyntaxError","STYLE_TAG","COMMENT_OPEN","AT_NAME_END","escapeHTMLInCSS","DEFAULT_RAW","capitalize","atruleStart","params","afterName","isCustomProperty","before","pushBody","stack","nodes","last","semicolon","isDocument","child","childSemicolon","pushBlock","between","hasNodes","close","after","Stringifier$2","Stringifier","builder","detect","buf","depth","step","proto","expandable","method","entry","left","right","raws","own","parent","cache","p","parts","stringifier","stringify","stringify_1","symbols","require$$2","isClean","my","require$$3","cloneNode","cloned","targetParent","children","childClone","valueClone","sourceOffset","inputCSS","position","Node$4","Node","defaults","error","s","add","overrides","keepBetween","inputString","defaultType","bookmark","foundSelf","result","inputs","emitInputs","holderOfRoot","queue","holder","fixed","fixedArray","inputId","data","comment","Comment","declaration","Declaration","AtRule","Root","Rule","cleanSource","markTreeDirty","Container","iterator","condition","cb","other","exist","existIndex","sample","pattern","decl","opened","selector","dependant","container","atRule","LazyResult","Processor","Document","document","urlAlphabet","customAlphabet","alphabet","defaultSize","size","nanoid","nonSecure","existsSync","readFileSync","realpathSync","dirname","isAbsolute","join","relative","sep","SourceMapConsumer","SourceMapGenerator","realPath","path","fromBase64","PreviousMap$2","baseCharsetUri","baseUri","charsetUri","uri","uriMatch","baseUriMatch","encoding","sourceMapString","map","comments","cssFile","trusted","rel","prevPath","unknown","previousMap","PreviousMap","resolve","fileURLToPath","pathToFileURL","require$$4","require$$5","require$$6","lineToIndexCache","sourceMapAvailable","pathAvailable","getLineToIndex","lineToIndex","prevIndex","Input$4","endColumn","endLine","endOffset","origin","lastLine","min","max","mid","consumer","from","to","toPosition","fromUrl","json","Input","keepBefore","ignore","spaces","separators","current","split","func","inQuote","prevQuote","letter","list_1","rule","hydrateInputs","inputHydrated","constructNode","fromJSON","frame","jsonNodes","childJson","fromJSON_1","MapGenerator$2","cssString","eol","annotation","endIndex","noSource","mapping","cached","already","fileURL","mapGenerator","MapGenerator","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","currentToken","escapePos","length","buffer","returned","lastBadParen","unclosed","what","endOfFile","nextToken","ignoreUnclosed","controlChar","back","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","tokensToString","Parser$1","shift","open","brackets","colon","founded","customProperty","propStart","betweenStart","firstSpacesStart","firstSpaces","bracket","clean","all","lastTokenType","Parser","parse_1","Warning$2","range","warning","Warning","Result$3","processor","Result","require$$7","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","events","cleanMarks","postcss","LazyResult$2","onRejected","onFinally","event","filter","promise","visitor","roots","subRoot","rootSource","onFulfilled","visitors","visit","visitNode","descended","lazyResult","NoWorkResult$1","self","generatedCSS","generatedMap","noWorkResult","NoWorkResult","Processor$1","plugins","normalized","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","initializer","warningPrinted","creator","transformer","processOpts","pluginOpts","postcss_1","htmlparser","parseSrcset","postcssParse","mediaTags","vulnerableTags","each","has","a","v","isEmptyObject","stringifySrcset","parsedSrcset","part","sanitizeHtml_1","sanitizeHtml","VALID_HTML_ATTRIBUTE_NAME","_recursing","tempResult","Frame","attribs","that","parentFrame","htmlParserDefaults","tagAllowed","nonTextTagsArray","allowedAttributesMap","allowedAttributesGlobMap","attributes","globRegex","allowedClassesMap","allowedClassesGlobMap","allowedClassesRegexMap","classes","transformTagsMap","transformTagsAll","transform","transFun","skipMap","transformMap","skipText","skipTextDepth","addedText","initializeState","skip","hasText","transformedTag","passedAllowedAttributesMapCheck","newValue","splitStrArray","naughtyHref","allowed","parsed","parseUrl","allowedHostname","hostname","allowedDomain","allowedSpecificClasses","allowedWildcardClasses","allowedSpecificClassesGlob","allowedSpecificClassesRegex","allowedWildcardClassesGlob","allowedClassesGlobs","filterClasses","abstractSyntaxTree","filteredAST","filterCss","stringifyStyleAttributes","escapeHtml","lastFrame","isImplied","firstIndex","lastIndex","matches","scheme","allowedStyles","astRules","selectedRule","filterDeclarations","extractedAttributes","attrObject","allowedDeclarationsList","attributeObject","regularExpression","allowedGlobs","clss","glob","newTagName","newAttribs","merge","tagName","attrib","markdownToHTML"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]}
|