function e(e) { var r = { omitExtraWLInCodeBlocks: { defaultValue: !1, describe: "Omit the default extra whiteline added to code blocks", type: "boolean" }, noHeaderId: { defaultValue: !1, describe: "Turn on/off generated header id", type: "boolean" }, prefixHeaderId: { defaultValue: !1, describe: "Specify a prefix to generated header ids", type: "string" }, headerLevelStart: { defaultValue: !1, describe: "The header blocks level start", type: "integer" }, parseImgDimensions: { defaultValue: !1, describe: "Turn on/off image dimension parsing", type: "boolean" }, simplifiedAutoLink: { defaultValue: !1, describe: "Turn on/off GFM autolink style", type: "boolean" }, literalMidWordUnderscores: { defaultValue: !1, describe: "Parse midword underscores as literal underscores", type: "boolean" }, strikethrough: { defaultValue: !1, describe: "Turn on/off strikethrough support", type: "boolean" }, tables: { defaultValue: !1, describe: "Turn on/off tables support", type: "boolean" }, tablesHeaderId: { defaultValue: !1, describe: "Add an id to table headers", type: "boolean" }, ghCodeBlocks: { defaultValue: !0, describe: "Turn on/off GFM fenced code blocks support", type: "boolean" }, tasklists: { defaultValue: !1, describe: "Turn on/off GFM tasklist support", type: "boolean" }, smoothLivePreview: { defaultValue: !1, describe: "Prevents weird effects in live previews due to incomplete input", type: "boolean" }, smartIndentationFix: { defaultValue: !1, description: "Tries to smartly fix identation in es6 strings", type: "boolean" } }; if (!1 === e) return JSON.parse(JSON.stringify(r)); var t = {}; for (var n in r) r.hasOwnProperty(n) && (t[n] = r[n].defaultValue); return t; } function r(e, r) { var t = r ? "Error in " + r + " extension->" : "Error in unnamed extension", a = { valid: !0, error: "" }; s.helper.isArray(e) || (e = [ e ]); for (var o = 0; o < e.length; ++o) { var i = t + " sub-extension " + o + ": ", l = e[o]; if ("object" !== (void 0 === l ? "undefined" : n(l))) return a.valid = !1, a.error = i + "must be an object, but " + (void 0 === l ? "undefined" : n(l)) + " given", a; if (!s.helper.isString(l.type)) return a.valid = !1, a.error = i + 'property "type" must be a string, but ' + n(l.type) + " given", a; var c = l.type = l.type.toLowerCase(); if ("language" === c && (c = l.type = "lang"), "html" === c && (c = l.type = "output"), "lang" !== c && "output" !== c && "listener" !== c) return a.valid = !1, a.error = i + "type " + c + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"', a; if ("listener" === c) { if (s.helper.isUndefined(l.listeners)) return a.valid = !1, a.error = i + '. Extensions of type "listener" must have a property called "listeners"', a; } else if (s.helper.isUndefined(l.filter) && s.helper.isUndefined(l.regex)) return a.valid = !1, a.error = i + c + ' extensions must define either a "regex" property or a "filter" method', a; if (l.listeners) { if ("object" !== n(l.listeners)) return a.valid = !1, a.error = i + '"listeners" property must be an object but ' + n(l.listeners) + " given", a; for (var u in l.listeners) if (l.listeners.hasOwnProperty(u) && "function" != typeof l.listeners[u]) return a.valid = !1, a.error = i + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + u + " must be a function but " + n(l.listeners[u]) + " given", a; } if (l.filter) { if ("function" != typeof l.filter) return a.valid = !1, a.error = i + '"filter" must be a function, but ' + n(l.filter) + " given", a; } else if (l.regex) { if (s.helper.isString(l.regex) && (l.regex = new RegExp(l.regex, "g")), !l.regex instanceof RegExp) return a.valid = !1, a.error = i + '"regex" property must either be a string or a RegExp object, but ' + n(l.regex) + " given", a; if (s.helper.isUndefined(l.replace)) return a.valid = !1, a.error = i + '"regex" extensions must implement a replace string or function', a; } } return a; } function t(e, r) { return "~E" + r.charCodeAt(0) + "E"; } var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e; } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e; }, s = {}, a = {}, o = {}, i = e(!0), l = { github: { omitExtraWLInCodeBlocks: !0, prefixHeaderId: "user-content-", simplifiedAutoLink: !0, literalMidWordUnderscores: !0, strikethrough: !0, tables: !0, tablesHeaderId: !0, ghCodeBlocks: !0, tasklists: !0 }, vanilla: e(!0) }; s.helper = {}, s.extensions = {}, s.setOption = function(e, r) { return i[e] = r, this; }, s.getOption = function(e) { return i[e]; }, s.getOptions = function() { return i; }, s.resetOptions = function() { i = e(!0); }, s.setFlavor = function(e) { if (l.hasOwnProperty(e)) { var r = l[e]; for (var t in r) r.hasOwnProperty(t) && (i[t] = r[t]); } }, s.getDefaultOptions = function(r) { return e(r); }, s.subParser = function(e, r) { if (s.helper.isString(e)) { if (void 0 === r) { if (a.hasOwnProperty(e)) return a[e]; throw Error("SubParser named " + e + " not registered!"); } a[e] = r; } }, s.extension = function(e, t) { if (!s.helper.isString(e)) throw Error("Extension 'name' must be a string"); if (e = s.helper.stdExtName(e), s.helper.isUndefined(t)) { if (!o.hasOwnProperty(e)) throw Error("Extension named " + e + " is not registered!"); return o[e]; } "function" == typeof t && (t = t()), s.helper.isArray(t) || (t = [ t ]); var n = r(t, e); if (!n.valid) throw Error(n.error); o[e] = t; }, s.getAllExtensions = function() { return o; }, s.removeExtension = function(e) { delete o[e]; }, s.resetExtensions = function() { o = {}; }, s.validateExtension = function(e) { var t = r(e, null); return !!t.valid || (console.warn(t.error), !1); }, s.hasOwnProperty("helper") || (s.helper = {}), s.helper.isString = function(e) { return "string" == typeof e || e instanceof String; }, s.helper.isFunction = function(e) { var r = {}; return e && "[object Function]" === r.toString.call(e); }, s.helper.forEach = function(e, r) { if ("function" == typeof e.forEach) e.forEach(r); else for (var t = 0; t < e.length; t++) r(e[t], t, e); }, s.helper.isArray = function(e) { return e.constructor === Array; }, s.helper.isUndefined = function(e) { return void 0 === e; }, s.helper.stdExtName = function(e) { return e.replace(/[_-]||\s/g, "").toLowerCase(); }, s.helper.escapeCharactersCallback = t, s.helper.escapeCharacters = function(e, r, n) { var s = "([" + r.replace(/([\[\]\\])/g, "\\$1") + "])"; n && (s = "\\\\" + s); var a = new RegExp(s, "g"); return e = e.replace(a, t); }; var c = function(e, r, t, n) { var s, a, o, i, l, c = n || "", u = c.indexOf("g") > -1, p = new RegExp(r + "|" + t, "g" + c.replace(/g/g, "")), h = new RegExp(r, c.replace(/g/g, "")), d = []; do { for (s = 0; o = p.exec(e); ) if (h.test(o[0])) s++ || (i = (a = p.lastIndex) - o[0].length); else if (s && !--s) { l = o.index + o[0].length; var f = { left: { start: i, end: a }, match: { start: a, end: o.index }, right: { start: o.index, end: l }, wholeMatch: { start: i, end: l } }; if (d.push(f), !u) return d; } } while (s && (p.lastIndex = a)); return d; }; s.helper.matchRecursiveRegExp = function(e, r, t, n) { for (var s = c(e, r, t, n), a = [], o = 0; o < s.length; ++o) a.push([ e.slice(s[o].wholeMatch.start, s[o].wholeMatch.end), e.slice(s[o].match.start, s[o].match.end), e.slice(s[o].left.start, s[o].left.end), e.slice(s[o].right.start, s[o].right.end) ]); return a; }, s.helper.replaceRecursiveRegExp = function(e, r, t, n, a) { if (!s.helper.isFunction(r)) { var o = r; r = function() { return o; }; } var i = c(e, t, n, a), l = e, u = i.length; if (u > 0) { var p = []; 0 !== i[0].wholeMatch.start && p.push(e.slice(0, i[0].wholeMatch.start)); for (var h = 0; h < u; ++h) p.push(r(e.slice(i[h].wholeMatch.start, i[h].wholeMatch.end), e.slice(i[h].match.start, i[h].match.end), e.slice(i[h].left.start, i[h].left.end), e.slice(i[h].right.start, i[h].right.end))), h < u - 1 && p.push(e.slice(i[h].wholeMatch.end, i[h + 1].wholeMatch.start)); i[u - 1].wholeMatch.end < e.length && p.push(e.slice(i[u - 1].wholeMatch.end)), l = p.join(""); } return l; }, s.helper.isUndefined(console) && (console = { warn: function(e) { alert(e); }, log: function(e) { alert(e); }, error: function(e) { throw e; } }), s.Converter = function(e) { function t(e, t) { if (t = t || null, s.helper.isString(e)) { if (e = s.helper.stdExtName(e), t = e, s.extensions[e]) return console.warn("DEPRECATION WARNING: " + e + " is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!"), void a(s.extensions[e], e); if (s.helper.isUndefined(o[e])) throw Error('Extension "' + e + '" could not be loaded. It was either not found or is not a valid extension.'); e = o[e]; } "function" == typeof e && (e = e()), s.helper.isArray(e) || (e = [ e ]); var n = r(e, t); if (!n.valid) throw Error(n.error); for (var i = 0; i < e.length; ++i) { switch (e[i].type) { case "lang": h.push(e[i]); break; case "output": d.push(e[i]); } if (e[i].hasOwnProperty(f)) for (var l in e[i].listeners) e[i].listeners.hasOwnProperty(l) && c(l, e[i].listeners[l]); } } function a(e, t) { "function" == typeof e && (e = e(new s.Converter())), s.helper.isArray(e) || (e = [ e ]); var n = r(e, t); if (!n.valid) throw Error(n.error); for (var a = 0; a < e.length; ++a) switch (e[a].type) { case "lang": h.push(e[a]); break; case "output": d.push(e[a]); break; default: throw Error("Extension loader error: Type unrecognized!!!"); } } function c(e, r) { if (!s.helper.isString(e)) throw Error("Invalid argument in converter.listen() method: name must be a string, but " + (void 0 === e ? "undefined" : n(e)) + " given"); if ("function" != typeof r) throw Error("Invalid argument in converter.listen() method: callback must be a function, but " + (void 0 === r ? "undefined" : n(r)) + " given"); f.hasOwnProperty(e) || (f[e] = []), f[e].push(r); } function u(e) { var r = e.match(/^\s*/)[0].length, t = new RegExp("^\\s{0," + r + "}", "gm"); return e.replace(t, ""); } var p = {}, h = [], d = [], f = {}; !function() { e = e || {}; for (var r in i) i.hasOwnProperty(r) && (p[r] = i[r]); if ("object" !== (void 0 === e ? "undefined" : n(e))) throw Error("Converter expects the passed parameter to be an object, but " + (void 0 === e ? "undefined" : n(e)) + " was passed instead."); for (var a in e) e.hasOwnProperty(a) && (p[a] = e[a]); p.extensions && s.helper.forEach(p.extensions, t); }(), this._dispatch = function(e, r, t, n) { if (f.hasOwnProperty(e)) for (var s = 0; s < f[e].length; ++s) { var a = f[e][s](e, r, this, t, n); a && void 0 !== a && (r = a); } return r; }, this.listen = function(e, r) { return c(e, r), this; }, this.makeHtml = function(e) { if (!e) return e; var r = { gHtmlBlocks: [], gHtmlMdBlocks: [], gHtmlSpans: [], gUrls: {}, gTitles: {}, gDimensions: {}, gListLevel: 0, hashLinkCounts: {}, langExtensions: h, outputModifiers: d, converter: this, ghCodeBlocks: [] }; return e = e.replace(/~/g, "~T"), e = e.replace(/\$/g, "~D"), e = e.replace(/\r\n/g, "\n"), e = e.replace(/\r/g, "\n"), p.smartIndentationFix && (e = u(e)), e = e, e = s.subParser("detab")(e, p, r), e = s.subParser("stripBlankLines")(e, p, r), s.helper.forEach(h, function(t) { e = s.subParser("runExtension")(t, e, p, r); }), e = s.subParser("hashPreCodeTags")(e, p, r), e = s.subParser("githubCodeBlocks")(e, p, r), e = s.subParser("hashHTMLBlocks")(e, p, r), e = s.subParser("hashHTMLSpans")(e, p, r), e = s.subParser("stripLinkDefinitions")(e, p, r), e = s.subParser("blockGamut")(e, p, r), e = s.subParser("unhashHTMLSpans")(e, p, r), e = s.subParser("unescapeSpecialChars")(e, p, r), e = e.replace(/~D/g, "$$"), e = e.replace(/~T/g, "~"), s.helper.forEach(d, function(t) { e = s.subParser("runExtension")(t, e, p, r); }), e; }, this.setOption = function(e, r) { p[e] = r; }, this.getOption = function(e) { return p[e]; }, this.getOptions = function() { return p; }, this.addExtension = function(e, r) { t(e, r = r || null); }, this.useExtension = function(e) { t(e); }, this.setFlavor = function(e) { if (l.hasOwnProperty(e)) { var r = l[e]; for (var t in r) r.hasOwnProperty(t) && (p[t] = r[t]); } }, this.removeExtension = function(e) { s.helper.isArray(e) || (e = [ e ]); for (var r = 0; r < e.length; ++r) { for (var t = e[r], n = 0; n < h.length; ++n) h[n] === t && h[n].splice(n, 1); for (;0 < d.length; ++n) d[0] === t && d[0].splice(n, 1); } }, this.getAllExtensions = function() { return { language: h, output: d }; }; }, s.subParser("anchors", function(e, r, t) { var n = function(e, r, n, a, o, i, l, c) { s.helper.isUndefined(c) && (c = ""), e = r; var u = n, p = a.toLowerCase(), h = o, d = c; if (!h) if (p || (p = u.toLowerCase().replace(/ ?\n/g, " ")), h = "#" + p, s.helper.isUndefined(t.gUrls[p])) { if (!(e.search(/\(\s*\)$/m) > -1)) return e; h = ""; } else h = t.gUrls[p], s.helper.isUndefined(t.gTitles[p]) || (d = t.gTitles[p]); var f = '" + u + ""; }; return e = (e = t.converter._dispatch("anchors.before", e, r, t)).replace(/(\[((?:\[[^\]]*]|[^\[\]])*)][ ]?(?:\n[ ]*)?\[(.*?)])()()()()/g, n), e = e.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)]\([ \t]*()(.*?(?:\(.*?\).*?)?)>?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, n), e = e.replace(/(\[([^\[\]]+)])()()()()()/g, n), e = t.converter._dispatch("anchors.after", e, r, t); }), s.subParser("autoLinks", function(e, r, t) { function n(e, r) { var t = r; return /^www\./i.test(r) && (r = r.replace(/^www\./i, "http://www.")), '' + t + ""; } function a(e, r) { var t = s.subParser("unescapeSpecialChars")(r); return s.subParser("encodeEmailAddress")(t); } var o = /\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+)(?=\s|$)(?!["<>])/gi, i = /<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)>/gi, l = /(?:^|[ \n\t])([A-Za-z0-9!#$%&'*+-/=?^_`\{|}~\.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?:$|[ \n\t])/gi, c = /<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi; return e = (e = t.converter._dispatch("autoLinks.before", e, r, t)).replace(i, n), e = e.replace(c, a), r.simplifiedAutoLink && (e = (e = e.replace(o, n)).replace(l, a)), e = t.converter._dispatch("autoLinks.after", e, r, t); }), s.subParser("blockGamut", function(e, r, t) { e = t.converter._dispatch("blockGamut.before", e, r, t), e = s.subParser("blockQuotes")(e, r, t), e = s.subParser("headers")(e, r, t); var n = s.subParser("hashBlock")("
[^\r]+?<\/pre>)/gm, function(e, r) { var t = r; return t = t.replace(/^ /gm, "~0"), t = t.replace(/~0/g, ""); }), s.subParser("hashBlock")("\n" + a + "\n", r, t); }), e = t.converter._dispatch("blockQuotes.after", e, r, t); }), s.subParser("codeBlocks", function(e, r, t) { e = t.converter._dispatch("codeBlocks.before", e, r, t); var n = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g; return e = (e += "~0").replace(n, function(e, n, a) { var o = n, i = a, l = "\n"; return o = s.subParser("outdent")(o), o = s.subParser("encodeCode")(o), o = s.subParser("detab")(o), o = o.replace(/^\n+/g, ""), o = o.replace(/\n+$/g, ""), r.omitExtraWLInCodeBlocks && (l = ""), o = "", s.subParser("hashBlock")(o, r, t) + i; }), e = e.replace(/~0/, ""), e = t.converter._dispatch("codeBlocks.after", e, r, t); }), s.subParser("codeSpans", function(e, r, t) { return void 0 === (e = t.converter._dispatch("codeSpans.before", e, r, t)) && (e = ""), e = e.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function(e, r, t, n) { var a = n; return a = a.replace(/^([ \t]*)/g, ""), a = a.replace(/[ \t]*$/g, ""), a = s.subParser("encodeCode")(a), r + "" + o + l + "
" + a + "
"; }), e = t.converter._dispatch("codeSpans.after", e, r, t); }), s.subParser("detab", function(e) { return e = e.replace(/\t(?=\t)/g, " "), e = e.replace(/\t/g, "~A~B"), e = e.replace(/~B(.+?)~A/g, function(e, r) { for (var t = r, n = 4 - t.length % 4, s = 0; s < n; s++) t += " "; return t; }), e = e.replace(/~A/g, " "), e = e.replace(/~B/g, ""); }), s.subParser("encodeAmpsAndAngles", function(e) { return e = e.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&"), e = e.replace(/<(?![a-z\/?\$!])/gi, "<"); }), s.subParser("encodeBackslashEscapes", function(e) { return e = e.replace(/\\(\\)/g, s.helper.escapeCharactersCallback), e = e.replace(/\\([`*_{}\[\]()>#+-.!])/g, s.helper.escapeCharactersCallback); }), s.subParser("encodeCode", function(e) { return e = e.replace(/&/g, "&"), e = e.replace(//g, ">"), e = s.helper.escapeCharacters(e, "*_{}[]\\", !1); }), s.subParser("encodeEmailAddress", function(e) { var r = [ function(e) { return "" + e.charCodeAt(0) + ";"; }, function(e) { return "" + e.charCodeAt(0).toString(16) + ";"; }, function(e) { return e; } ]; return e = "mailto:" + e, e = e.replace(/./g, function(e) { if ("@" === e) e = r[Math.floor(2 * Math.random())](e); else if (":" !== e) { var t = Math.random(); e = t > .9 ? r[2](e) : t > .45 ? r[1](e) : r[0](e); } return e; }), e = '' + e + "", e = e.replace(/">.+:/g, '">'); }), s.subParser("escapeSpecialCharsWithinTagAttributes", function(e) { var r = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; return e = e.replace(r, function(e) { var r = e.replace(/(.)<\/?code>(?=.)/g, "$1`"); return r = s.helper.escapeCharacters(r, "\\`*_", !1); }); }), s.subParser("githubCodeBlocks", function(e, r, t) { return r.ghCodeBlocks ? (e = t.converter._dispatch("githubCodeBlocks.before", e, r, t), e += "~0", e = e.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function(e, n, a) { var o = r.omitExtraWLInCodeBlocks ? "" : "\n"; return a = s.subParser("encodeCode")(a), a = s.subParser("detab")(a), a = a.replace(/^\n+/g, ""), a = a.replace(/\n+$/g, ""), a = "", a = s.subParser("hashBlock")(a, r, t), "\n\n~G" + (t.ghCodeBlocks.push({ text: e, codeblock: a }) - 1) + "G\n\n"; }), e = e.replace(/~0/, ""), t.converter._dispatch("githubCodeBlocks.after", e, r, t)) : e; }), s.subParser("hashBlock", function(e, r, t) { return e = e.replace(/(^\n+|\n+$)/g, ""), "\n\n~K" + (t.gHtmlBlocks.push(e) - 1) + "K\n\n"; }), s.subParser("hashElement", function(e, r, t) { return function(e, r) { var n = r; return n = n.replace(/\n\n/g, "\n"), n = n.replace(/^\n/, ""), n = n.replace(/\n+$/g, ""), n = "\n\n~K" + (t.gHtmlBlocks.push(n) - 1) + "K\n\n"; }; }), s.subParser("hashHTMLBlocks", function(e, r, t) { for (var n = [ "pre", "div", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "table", "dl", "ol", "ul", "script", "noscript", "form", "fieldset", "iframe", "math", "style", "section", "header", "footer", "nav", "article", "aside", "address", "audio", "canvas", "figure", "hgroup", "output", "video", "p" ], a = 0; a < n.length; ++a) e = s.helper.replaceRecursiveRegExp(e, function(e, r, n, s) { var a = e; return -1 !== n.search(/\bmarkdown\b/) && (a = n + t.converter.makeHtml(r) + s), "\n\n~K" + (t.gHtmlBlocks.push(a) - 1) + "K\n\n"; }, "^(?: |\\t){0,3}<" + n[a] + "\\b[^>]*>", "" + n[a] + ">", "gim"); return e = e.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, s.subParser("hashElement")(e, r, t)), e = e.replace(/()/g, s.subParser("hashElement")(e, r, t)), e = e.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, s.subParser("hashElement")(e, r, t)); }), s.subParser("hashHTMLSpans", function(e, r, t) { for (var n = s.helper.matchRecursiveRegExp(e, "" + a + o + "
]*>", "
", "gi"), a = 0; a < n.length; ++a) e = e.replace(n[a][0], "~L" + (t.gHtmlSpans.push(n[a][0]) - 1) + "L"); return e; }), s.subParser("unhashHTMLSpans", function(e, r, t) { for (var n = 0; n < t.gHtmlSpans.length; ++n) e = e.replace("~L" + n + "L", t.gHtmlSpans[n]); return e; }), s.subParser("hashPreCodeTags", function(e, r, t) { return e = s.helper.replaceRecursiveRegExp(e, function(e, r, n, a) { var o = n + s.subParser("encodeCode")(r) + a; return "\n\n~G" + (t.ghCodeBlocks.push({ text: e, codeblock: o }) - 1) + "G\n\n"; }, "^(?: |\\t){0,3}]*>\\s*", "gim"); }), s.subParser("headers", function(e, r, t) { function n(e) { var r, n = e.replace(/[^\w]/g, "").toLowerCase(); return t.hashLinkCounts[n] ? r = n + "-" + t.hashLinkCounts[n]++ : (r = n, t.hashLinkCounts[n] = 1), !0 === a && (a = "section"), s.helper.isString(a) ? a + r : r; } e = t.converter._dispatch("headers.before", e, r, t); var a = r.prefixHeaderId, o = isNaN(parseInt(r.headerLevelStart)) ? 1 : parseInt(r.headerLevelStart), i = r.smoothLivePreview ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm, l = r.smoothLivePreview ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm; return e = e.replace(i, function(e, a) { var i = s.subParser("spanGamut")(a, r, t), l = r.noHeaderId ? "" : ' id="' + n(a) + '"', c = o, u = "]*>", "^(?: |\\t){0,3}
\\s*" + i + " "; return s.subParser("hashBlock")(u, r, t); }), e = e.replace(l, function(e, a) { var i = s.subParser("spanGamut")(a, r, t), l = r.noHeaderId ? "" : ' id="' + n(a) + '"', c = o + 1, u = "" + i + " "; return s.subParser("hashBlock")(u, r, t); }), e = e.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm, function(e, a, i) { var l = s.subParser("spanGamut")(i, r, t), c = r.noHeaderId ? "" : ' id="' + n(i) + '"', u = o - 1 + a.length, p = "" + l + " "; return s.subParser("hashBlock")(p, r, t); }), e = t.converter._dispatch("headers.after", e, r, t); }), s.subParser("images", function(e, r, t) { function n(e, r, n, a, o, i, l, c) { var u = t.gUrls, p = t.gTitles, h = t.gDimensions; if (n = n.toLowerCase(), c || (c = ""), "" === a || null === a) { if ("" !== n && null !== n || (n = r.toLowerCase().replace(/ ?\n/g, " ")), a = "#" + n, s.helper.isUndefined(u[n])) return e; a = u[n], s.helper.isUndefined(p[n]) || (c = p[n]), s.helper.isUndefined(h[n]) || (o = h[n].width, i = h[n].height); } r = r.replace(/"/g, """), r = s.helper.escapeCharacters(r, "*_", !1); var d = '"; } var a = /!\[(.*?)]\s?\([ \t]*()(\S+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g, o = /!\[([^\]]*?)] ?(?:\n *)?\[(.*?)]()()()()()/g; return e = (e = t.converter._dispatch("images.before", e, r, t)).replace(o, n), e = e.replace(a, n), e = t.converter._dispatch("images.after", e, r, t); }), s.subParser("italicsAndBold", function(e, r, t) { return e = t.converter._dispatch("italicsAndBold.before", e, r, t), e = r.literalMidWordUnderscores ? (e = (e = (e = e.replace(/(^|\s|>|\b)__(?=\S)([\s\S]+?)__(?=\b|<|\s|$)/gm, "$1$2")).replace(/(^|\s|>|\b)_(?=\S)([\s\S]+?)_(?=\b|<|\s|$)/gm, "$1$2")).replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g, "$2")).replace(/(\*)(?=\S)([^\r]*?\S)\1/g, "$2") : (e = e.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, "$2")).replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, "$2"), e = t.converter._dispatch("italicsAndBold.after", e, r, t); }), s.subParser("lists", function(e, r, t) { function n(e, n) { t.gListLevel++, e = e.replace(/\n{2,}$/, "\n"), e += "~0"; var a = /(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, o = /\n[ \t]*\n(?!~0)/.test(e); return e = e.replace(a, function(e, n, a, i, l, c, u) { u = u && "" !== u.trim(); var p = s.subParser("outdent")(l, r, t), h = ""; return c && r.tasklists && (h = ' class="task-list-item" style="list-style-type: none;"', p = p.replace(/^[ \t]*\[(x|X| )?]/m, function() { var e = '"; })), n || p.search(/\n{2,}/) > -1 ? (p = s.subParser("githubCodeBlocks")(p, r, t), p = s.subParser("blockGamut")(p, r, t)) : (p = (p = s.subParser("lists")(p, r, t)).replace(/\n$/, ""), p = o ? s.subParser("paragraphs")(p, r, t) : s.subParser("spanGamut")(p, r, t)), p = "\n
"), l += "
", a.push(l)); } for (o = a.length, i = 0; i < o; i++) { for (var c = "", u = a[i], p = !1; u.search(/~(K|G)(\d+)\1/) >= 0; ) { var h = RegExp.$1, d = RegExp.$2; c = (c = "K" === h ? t.gHtmlBlocks[d] : p ? s.subParser("encodeCode")(t.ghCodeBlocks[d].text) : t.ghCodeBlocks[d].codeblock).replace(/\$/g, "$$$$"), u = u.replace(/(\n\n)?~(K|G)\d+\2(\n\n)?/, c), /^]*>\s*]*>/.test(u) && (p = !0);
}
a[i] = u;
}
return e = a.join("\n\n"), e = e.replace(/^\n+/g, ""), e = e.replace(/\n+$/g, ""),
t.converter._dispatch("paragraphs.after", e, r, t);
}), s.subParser("runExtension", function(e, r, t, n) {
if (e.filter) r = e.filter(r, n.converter, t); else if (e.regex) {
var s = e.regex;
!s instanceof RegExp && (s = new RegExp(s, "g")), r = r.replace(s, e.replace);
}
return r;
}), s.subParser("spanGamut", function(e, r, t) {
return e = t.converter._dispatch("spanGamut.before", e, r, t), e = s.subParser("codeSpans")(e, r, t),
e = s.subParser("escapeSpecialCharsWithinTagAttributes")(e, r, t), e = s.subParser("encodeBackslashEscapes")(e, r, t),
e = s.subParser("images")(e, r, t), e = s.subParser("anchors")(e, r, t), e = s.subParser("autoLinks")(e, r, t),
e = s.subParser("encodeAmpsAndAngles")(e, r, t), e = s.subParser("italicsAndBold")(e, r, t),
e = s.subParser("strikethrough")(e, r, t), e = e.replace(/ +\n/g, "
\n"),
e = t.converter._dispatch("spanGamut.after", e, r, t);
}), s.subParser("strikethrough", function(e, r, t) {
return r.strikethrough && (e = (e = t.converter._dispatch("strikethrough.before", e, r, t)).replace(/(?:~T){2}([\s\S]+?)(?:~T){2}/g, "$1"),
e = t.converter._dispatch("strikethrough.after", e, r, t)), e;
}), s.subParser("stripBlankLines", function(e) {
return e.replace(/^[ \t]+$/gm, "");
}), s.subParser("stripLinkDefinitions", function(e, r, t) {
var n = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*(\S+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm;
return e += "~0", e = e.replace(n, function(e, n, a, o, i, l, c) {
return n = n.toLowerCase(), t.gUrls[n] = s.subParser("encodeAmpsAndAngles")(a),
l ? l + c : (c && (t.gTitles[n] = c.replace(/"|'/g, """)), r.parseImgDimensions && o && i && (t.gDimensions[n] = {
width: o,
height: i
}), "");
}), e = e.replace(/~0/, "");
}), s.subParser("tables", function(e, r, t) {
function n(e) {
return /^:[ \t]*--*$/.test(e) ? ' style="text-align:left;"' : /^--*[ \t]*:[ \t]*$/.test(e) ? ' style="text-align:right;"' : /^:[ \t]*--*[ \t]*:$/.test(e) ? ' style="text-align:center;"' : "";
}
function a(e, n) {
var a = "";
return e = e.trim(), r.tableHeaderId && (a = ' id="' + e.replace(/ /g, "_").toLowerCase() + '"'),
e = s.subParser("spanGamut")(e, r, t), "" + e + " \n";
}
function o(e, n) {
return "" + s.subParser("spanGamut")(e, r, t) + " \n";
}
function i(e, r) {
for (var t = "\n\n\n", n = e.length, s = 0; s < n; ++s) t += e[s];
for (t += " \n\n\n", s = 0; s < r.length; ++s) {
t += "\n";
for (var a = 0; a < n; ++a) t += r[s][a];
t += " \n";
}
return t += "\n
\n";
}
if (!r.tables) return e;
var l = /^[ \t]{0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm;
return e = t.converter._dispatch("tables.before", e, r, t), e = e.replace(l, function(e) {
var r, t = e.split("\n");
for (r = 0; r < t.length; ++r) /^[ \t]{0,3}\|/.test(t[r]) && (t[r] = t[r].replace(/^[ \t]{0,3}\|/, "")),
/\|[ \t]*$/.test(t[r]) && (t[r] = t[r].replace(/\|[ \t]*$/, ""));
var l = t[0].split("|").map(function(e) {
return e.trim();
}), c = t[1].split("|").map(function(e) {
return e.trim();
}), u = [], p = [], h = [], d = [];
for (t.shift(), t.shift(), r = 0; r < t.length; ++r) "" !== t[r].trim() && u.push(t[r].split("|").map(function(e) {
return e.trim();
}));
if (l.length < c.length) return e;
for (r = 0; r < c.length; ++r) h.push(n(c[r]));
for (r = 0; r < l.length; ++r) s.helper.isUndefined(h[r]) && (h[r] = ""), p.push(a(l[r], h[r]));
for (r = 0; r < u.length; ++r) {
for (var f = [], g = 0; g < p.length; ++g) s.helper.isUndefined(u[r][g]), f.push(o(u[r][g], h[g]));
d.push(f);
}
return i(p, d);
}), e = t.converter._dispatch("tables.after", e, r, t);
}), s.subParser("unescapeSpecialChars", function(e) {
return e = e.replace(/~E(\d+)E/g, function(e, r) {
var t = parseInt(r);
return String.fromCharCode(t);
});
}), module.exports = s;