OpenAI Playground (ChatGPT) - Continue Button

press the [Continue] button instead of 'Add message > type continue > Ctrl+Enter', configure panel optionally saves 'Temperature', 'Maximum Length' and 'Instructions'

目前为 2023-07-29 提交的版本。查看 最新版本

// ==UserScript==
// @name         OpenAI Playground (ChatGPT) - Continue Button
// @namespace    https://greasyfork.org/en/users/10118-drhouse
// @version      2.2
// @description  press the [Continue] button instead of 'Add message > type continue > Ctrl+Enter', configure panel optionally saves 'Temperature', 'Maximum Length' and 'Instructions'
// @include      https://platform.openai.com/playground*
// @match        https://platform.openai.com/playground*
// @require      https://code.jquery.com/jquery-3.7.0.min.js
// @require      https://greasyfork.org/scripts/439099-monkeyconfig-modern-reloaded/code/MonkeyConfig%20Modern%20Reloaded.js?version=1012538
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_addStyle
// @grant        GM_setClipboard
// @grant        GM_registerMenuCommand
// @author       drhouse
// @license      CC-BY-NC-SA-4.0
// @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com
// ==/UserScript==
/* global jQuery, $ */
this.$ = this.jQuery = jQuery.noConflict(true);
(function($){

!function () {
    function t(e) {
        "use strict";
        var a = {
            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: "Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic 'section-' prefix", type: "string" },
            rawPrefixHeaderId: {
                defaultValue: !1,
                describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)',
                type: "boolean",
            },
            ghCompatibleHeaderId: { defaultValue: !1, describe: "Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)", type: "boolean" },
            rawHeaderId: { defaultValue: !1, describe: "Remove only spaces, ' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids", type: "boolean" },
            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" },
            literalMidWordAsterisks: { defaultValue: !1, describe: "Parse midword asterisks as literal asterisks", 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, describe: "Tries to smartly fix indentation in es6 strings", type: "boolean" },
            disableForced4SpacesIndentedSublists: { defaultValue: !1, describe: "Disables the requirement of indenting nested sublists by 4 spaces", type: "boolean" },
            simpleLineBreaks: { defaultValue: !1, describe: "Parses simple line breaks as <br> (GFM Style)", type: "boolean" },
            requireSpaceBeforeHeadingText: { defaultValue: !1, describe: "Makes adding a space between `#` and the header text mandatory (GFM Style)", type: "boolean" },
            ghMentions: { defaultValue: !1, describe: "Enables github @mentions", type: "boolean" },
            ghMentionsLink: { defaultValue: "https://github.com/{u}", describe: "Changes the link generated by @mentions. Only applies if ghMentions option is enabled.", type: "string" },
            encodeEmails: { defaultValue: !0, describe: "Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities", type: "boolean" },
            openLinksInNewWindow: { defaultValue: !1, describe: "Open all links in new windows", type: "boolean" },
            backslashEscapesHTMLTags: { defaultValue: !1, describe: "Support for HTML Tag escaping. ex: <div>foo</div>", type: "boolean" },
            emoji: { defaultValue: !1, describe: "Enable emoji support. Ex: `this is a :smile: emoji`", type: "boolean" },
            underline: {
                defaultValue: !1,
                describe: "Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`",
                type: "boolean",
            },
            ellipsis: { defaultValue: !0, describe: "Replaces three dots with the ellipsis unicode character", type: "boolean" },
            completeHTMLDocument: { defaultValue: !1, describe: "Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags", type: "boolean" },
            metadata: { defaultValue: !1, describe: "Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).", type: "boolean" },
            splitAdjacentBlockquotes: { defaultValue: !1, describe: "Split adjacent blockquote blocks", type: "boolean" },
            moreStyling: { defaultValue: !1, describe: "Adds some useful styling css classes in the generated html", type: "boolean" },
            relativePathBaseUrl: { defaultValue: !1, describe: "Prepends a base URL to relative paths", type: "string" },
        };
        if (!1 === e) return JSON.parse(JSON.stringify(a));
        var r,
            t = {};
        for (r in a) a.hasOwnProperty(r) && (t[r] = a[r].defaultValue);
        return t;
    }
    var e,
        P = {},
        r = {},
        h = {},
        m = t(!0),
        d = "vanilla",
        g = {
            github: {
                omitExtraWLInCodeBlocks: !0,
                simplifiedAutoLink: !0,
                literalMidWordUnderscores: !0,
                strikethrough: !0,
                tables: !0,
                tablesHeaderId: !0,
                ghCodeBlocks: !0,
                tasklists: !0,
                disableForced4SpacesIndentedSublists: !0,
                simpleLineBreaks: !0,
                requireSpaceBeforeHeadingText: !0,
                ghCompatibleHeaderId: !0,
                ghMentions: !0,
                backslashEscapesHTMLTags: !0,
                emoji: !0,
                splitAdjacentBlockquotes: !0,
            },
            original: { noHeaderId: !0, ghCodeBlocks: !1 },
            ghost: {
                omitExtraWLInCodeBlocks: !0,
                parseImgDimensions: !0,
                simplifiedAutoLink: !0,
                literalMidWordUnderscores: !0,
                strikethrough: !0,
                tables: !0,
                tablesHeaderId: !0,
                ghCodeBlocks: !0,
                tasklists: !0,
                smoothLivePreview: !0,
                simpleLineBreaks: !0,
                requireSpaceBeforeHeadingText: !0,
                ghMentions: !1,
                encodeEmails: !0,
            },
            vanilla: t(!0),
            allOn: (function () {
                "use strict";
                var e,
                    a = t(!0),
                    r = {};
                for (e in a) a.hasOwnProperty(e) && (r[e] = !0);
                return r;
            })(),
        };
    function p(e, a) {
        "use strict";
        var r = a ? "Error in " + a + " extension->" : "Error in unnamed extension",
            t = { valid: !0, error: "" };
        P.helper.isArray(e) || (e = [e]);
        for (var n = 0; n < e.length; ++n) {
            var s = r + " sub-extension " + n + ": ",
                i = e[n];
            if ("object" != typeof i) return (t.valid = !1), (t.error = s + "must be an object, but " + typeof i + " given"), t;
            if (!P.helper.isString(i.type)) return (t.valid = !1), (t.error = s + 'property "type" must be a string, but ' + typeof i.type + " given"), t;
            var o = (i.type = i.type.toLowerCase());
            if ("lang" !== (o = "html" === (o = "language" === o ? (i.type = "lang") : o) ? (i.type = "output") : o) && "output" !== o && "listener" !== o)
                return (t.valid = !1), (t.error = s + "type " + o + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"'), t;
            if ("listener" === o) {
                if (P.helper.isUndefined(i.listeners)) return (t.valid = !1), (t.error = s + '. Extensions of type "listener" must have a property called "listeners"'), t;
            } else if (P.helper.isUndefined(i.filter) && P.helper.isUndefined(i.regex)) return (t.valid = !1), (t.error = s + o + ' extensions must define either a "regex" property or a "filter" method'), t;
            if (i.listeners) {
                if ("object" != typeof i.listeners) return (t.valid = !1), (t.error = s + '"listeners" property must be an object but ' + typeof i.listeners + " given"), t;
                for (var l in i.listeners)
                    if (i.listeners.hasOwnProperty(l) && "function" != typeof i.listeners[l])
                        return (t.valid = !1), (t.error = s + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + l + " must be a function but " + typeof i.listeners[l] + " given"), t;
            }
            if (i.filter) {
                if ("function" != typeof i.filter) return (t.valid = !1), (t.error = s + '"filter" must be a function, but ' + typeof i.filter + " given"), t;
            } else if (i.regex) {
                if ((P.helper.isString(i.regex) && (i.regex = new RegExp(i.regex, "g")), !(i.regex instanceof RegExp)))
                    return (t.valid = !1), (t.error = s + '"regex" property must either be a string or a RegExp object, but ' + typeof i.regex + " given"), t;
                if (P.helper.isUndefined(i.replace)) return (t.valid = !1), (t.error = s + '"regex" extensions must implement a replace string or function'), t;
            }
        }
        return t;
    }
    function n(e, a) {
        "use strict";
        return "¨E" + a.charCodeAt(0) + "E";
    }
    (P.helper = {}),
        (P.extensions = {}),
        (P.setOption = function (e, a) {
            "use strict";
            return (m[e] = a), this;
        }),
        (P.getOption = function (e) {
            "use strict";
            return m[e];
        }),
        (P.getOptions = function () {
            "use strict";
            return m;
        }),
        (P.resetOptions = function () {
            "use strict";
            m = t(!0);
        }),
        (P.setFlavor = function (e) {
            "use strict";
            if (!g.hasOwnProperty(e)) throw Error(e + " flavor was not found");
            P.resetOptions();
            var a,
                r = g[e];
            for (a in ((d = e), r)) r.hasOwnProperty(a) && (m[a] = r[a]);
        }),
        (P.getFlavor = function () {
            "use strict";
            return d;
        }),
        (P.getFlavorOptions = function (e) {
            "use strict";
            if (g.hasOwnProperty(e)) return g[e];
        }),
        (P.getDefaultOptions = t),
        (P.subParser = function (e, a) {
            "use strict";
            if (!P.helper.isString(e)) throw Error("showdown.subParser function first argument must be a string (the name of the subparser)");
            if (void 0 === a) {
                if (r.hasOwnProperty(e)) return r[e];
                throw Error("SubParser named " + e + " not registered!");
            }
            r[e] = a;
        }),
        (P.extension = function (e, a) {
            "use strict";
            if (!P.helper.isString(e)) throw Error("Extension 'name' must be a string");
            if (((e = P.helper.stdExtName(e)), P.helper.isUndefined(a))) {
                if (h.hasOwnProperty(e)) return h[e];
                throw Error("Extension named " + e + " is not registered!");
            }
            "function" == typeof a && (a = a());
            var r = p((a = P.helper.isArray(a) ? a : [a]), e);
            if (!r.valid) throw Error(r.error);
            h[e] = a;
        }),
        (P.getAllExtensions = function () {
            "use strict";
            return h;
        }),
        (P.removeExtension = function (e) {
            "use strict";
            delete h[e];
        }),
        (P.resetExtensions = function () {
            "use strict";
            h = {};
        }),
        (P.validateExtension = function (e) {
            "use strict";
            e = p(e, null);
            return !!e.valid || (console.warn(e.error), !1);
        }),
        P.hasOwnProperty("helper") || (P.helper = {}),
        void 0 === this && "undefined" != typeof window
            ? (P.helper.document = window.document)
            : (void 0 === this.document && void 0 === this.window && ((e = require("jsdom")), (this.window = new e.JSDOM("", {}).window)), (P.helper.document = this.window.document)),
        (P.helper.isString = function (e) {
            "use strict";
            return "string" == typeof e || e instanceof String;
        }),
        (P.helper.isFunction = function (e) {
            "use strict";
            return e && "[object Function]" === {}.toString.call(e);
        }),
        (P.helper.isArray = function (e) {
            "use strict";
            return Array.isArray(e);
        }),
        (P.helper.isUndefined = function (e) {
            "use strict";
            return void 0 === e;
        }),
        (P.helper.forEach = function (e, a) {
            "use strict";
            if (P.helper.isUndefined(e)) throw new Error("obj param is required");
            if (P.helper.isUndefined(a)) throw new Error("callback param is required");
            if (!P.helper.isFunction(a)) throw new Error("callback param must be a function/closure");
            if ("function" == typeof e.forEach) e.forEach(a);
            else if (P.helper.isArray(e)) for (var r = 0; r < e.length; r++) a(e[r], r, e);
            else {
                if ("object" != typeof e) throw new Error("obj does not seem to be an array or an iterable object");
                for (var t in e) e.hasOwnProperty(t) && a(e[t], t, e);
            }
        }),
        (P.helper.stdExtName = function (e) {
            "use strict";
            return e
                .replace(/[_?*+\/\\.^-]/g, "")
                .replace(/\s/g, "")
                .toLowerCase();
        }),
        (P.helper.escapeCharactersCallback = n),
        (P.helper.escapeCharacters = function (e, a, r) {
            "use strict";
            (a = "([" + a.replace(/([\[\]\\])/g, "\\$1") + "])"), r && (a = "\\\\" + a), (r = new RegExp(a, "g"));
            return (e = e.replace(r, n));
        });
    function u(e, a, r, t) {
        "use strict";
        var n,
            s,
            i,
            o = -1 < (t = t || "").indexOf("g"),
            l = new RegExp(a + "|" + r, "g" + t.replace(/g/g, "")),
            c = new RegExp(a, t.replace(/g/g, "")),
            u = [];
        do {
            for (n = 0; (m = l.exec(e)); )
                if (c.test(m[0])) n++ || (i = (s = l.lastIndex) - m[0].length);
                else if (n && !--n) {
                    var h = m.index + m[0].length,
                        m = { left: { start: i, end: s }, match: { start: s, end: m.index }, right: { start: m.index, end: h }, wholeMatch: { start: i, end: h } };
                    if ((u.push(m), !o)) return u;
                }
        } while (n && (l.lastIndex = s));
        return u;
    }
    var s;
    function i(o, l, c, u, h) {
        return (
            (h = !!h),
            function (e, a, r, t, n, s, i) {
                return /\n\n/.test(e) ? e : b(_(o, l + ".captureStart", e, a, r, t, i, c, u), c, u, h);
            }
        );
    }
    function l(o, l, c, u, h) {
        return function (e, a, r, t, n, s, i) {
            return (t = P.helper.applyBaseUrl(c.relativePathBaseUrl, t)), b(_(o, l + ".captureStart", e, a, r, t, i, c, u), c, u, h);
        };
    }
    function _(e, a, r, t, n, s, i, o, l) {
        return l.converter._dispatch(a, r, o, l, { regexp: e, matches: { wholeMatch: r, text: t, id: n, url: s, title: i } });
    }
    function b(e, a, r, t) {
        var n = e.getMatches().wholeMatch,
            s = e.getMatches().text,
            i = e.getMatches().id,
            o = e.getMatches().url,
            l = "",
            e = (e = e.getMatches().title) || "",
            i = i ? i.toLowerCase() : "";
        if (t) o = "";
        else if (!o) {
            if (((o = "#" + (i = i || s.toLowerCase().replace(/ ?\n/g, " "))), P.helper.isUndefined(r.gUrls[i]))) return n;
            (o = r.gUrls[i]), P.helper.isUndefined(r.gTitles[i]) || (e = r.gTitles[i]);
        }
        (o = o.replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)),
            "" !== e && null !== e && (e = ' title="' + (e = (e = e.replace(/"/g, "&quot;")).replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)) + '"'),
            a.openLinksInNewWindow && !/^#/.test(o) && (l = ' rel="noopener noreferrer" target="¨E95Eblank"'),
            (s = P.subParser("makehtml.codeSpans")(s, a, r)),
            (s = P.subParser("makehtml.emoji")(s, a, r)),
            (s = P.subParser("makehtml.underline")(s, a, r)),
            (s = P.subParser("makehtml.italicsAndBold")(s, a, r)),
            (s = P.subParser("makehtml.strikethrough")(s, a, r)),
            (s = P.subParser("makehtml.ellipsis")(s, a, r));
        t = '<a href="' + o + '"' + e + l + ">" + (s = P.subParser("makehtml.hashHTMLSpans")(s, a, r)) + "</a>";
        return P.subParser("makehtml.hashHTMLSpans")(t, a, r);
    }
    (P.helper.matchRecursiveRegExp = function (e, a, r, t) {
        "use strict";
        for (var n = u(e, a, r, t), s = [], i = 0; i < n.length; ++i)
            s.push([e.slice(n[i].wholeMatch.start, n[i].wholeMatch.end), e.slice(n[i].match.start, n[i].match.end), e.slice(n[i].left.start, n[i].left.end), e.slice(n[i].right.start, n[i].right.end)]);
        return s;
    }),
        (P.helper.replaceRecursiveRegExp = function (e, a, r, t, n) {
            "use strict";
            P.helper.isFunction(a) ||
                ((s = a),
                (a = function () {
                    return s;
                }));
            var s,
                i = u(e, r, t, n),
                r = e,
                o = i.length;
            if (0 < o) {
                var l = [];
                0 !== i[0].wholeMatch.start && l.push(e.slice(0, i[0].wholeMatch.start));
                for (var c = 0; c < o; ++c)
                    l.push(a(e.slice(i[c].wholeMatch.start, i[c].wholeMatch.end), e.slice(i[c].match.start, i[c].match.end), e.slice(i[c].left.start, i[c].left.end), e.slice(i[c].right.start, i[c].right.end))),
                        c < o - 1 && l.push(e.slice(i[c].wholeMatch.end, i[c + 1].wholeMatch.start));
                i[o - 1].wholeMatch.end < e.length && l.push(e.slice(i[o - 1].wholeMatch.end)), (r = l.join(""));
            }
            return r;
        }),
        (P.helper.regexIndexOf = function (e, a, r) {
            "use strict";
            if (!P.helper.isString(e)) throw "InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string";
            if (!(a instanceof RegExp)) throw "InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp";
            e = e.substring(r || 0).search(a);
            return 0 <= e ? e + (r || 0) : e;
        }),
        (P.helper.splitAtIndex = function (e, a) {
            "use strict";
            if (P.helper.isString(e)) return [e.substring(0, a), e.substring(a)];
            throw "InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string";
        }),
        (P.helper.encodeEmailAddress = function (e) {
            "use strict";
            var r = [
                function (e) {
                    return "&#" + e.charCodeAt(0) + ";";
                },
                function (e) {
                    return "&#x" + e.charCodeAt(0).toString(16) + ";";
                },
                function (e) {
                    return e;
                },
            ];
            return (e = e.replace(/./g, function (e) {
                var a;
                return (e = "@" === e ? r[Math.floor(2 * Math.random())](e) : 0.9 < (a = Math.random()) ? r[2](e) : 0.45 < a ? r[1](e) : r[0](e));
            }));
        }),
        (P.helper.repeat = function (e, a) {
            "use strict";
            if (!P.helper.isUndefined(String.prototype.repeat)) return e.repeat(a);
            if (((e = "" + e), a < 0)) throw new RangeError("repeat count must be non-negative");
            if (a === 1 / 0) throw new RangeError("repeat count must be less than infinity");
            if (((a = Math.floor(a)), 0 === e.length || 0 === a)) return "";
            if (e.length * a >= 1 << 28) throw new RangeError("repeat count must not overflow maximum string size");
            var r = e.length * a;
            for (a = Math.floor(Math.log(a) / Math.log(2)); a; ) (e += e), a--;
            return (e += e.substring(0, r - e.length));
        }),
        (P.helper.padEnd = function (e, a, r) {
            "use strict";
            return (a >>= 0), (r = String(r || " ")), e.length > a ? String(e) : ((a -= e.length) > r.length && (r += P.helper.repeat(r, a / r.length)), String(e) + r.slice(0, a));
        }),
        (P.helper.unescapeHTMLEntities = function (e) {
            "use strict";
            return e
                .replace(/&quot;/g, '"')
                .replace(/&lt;/g, "<")
                .replace(/&gt;/g, ">")
                .replace(/&amp;/g, "&");
        }),
        (P.helper._hashHTMLSpan = function (e, a) {
            return "¨C" + (a.gHtmlSpans.push(e) - 1) + "C";
        }),
        (P.helper.applyBaseUrl = function (e, a) {
            return (a = e && !this.isAbsolutePath(a) ? (0, require("url").resolve)(e, a) : a);
        }),
        (P.helper.isAbsolutePath = function (e) {
            return /(^([a-z]+:)?\/\/)|(^#)/i.test(e);
        }),
        (P.helper.Event = function (e, a, r) {
            "use strict";
            var t = r.regexp || null,
                n = r.matches || {},
                s = r.options || {},
                i = r.converter || null,
                o = r.globals || {};
            (this.getName = function () {
                return e;
            }),
                (this.getEventName = function () {
                    return e;
                }),
                (this._stopExecution = !1),
                (this.parsedText = r.parsedText || null),
                (this.getRegexp = function () {
                    return t;
                }),
                (this.getOptions = function () {
                    return s;
                }),
                (this.getConverter = function () {
                    return i;
                }),
                (this.getGlobals = function () {
                    return o;
                }),
                (this.getCapturedText = function () {
                    return a;
                }),
                (this.getText = function () {
                    return a;
                }),
                (this.setText = function (e) {
                    a = e;
                }),
                (this.getMatches = function () {
                    return n;
                }),
                (this.setMatches = function (e) {
                    n = e;
                }),
                (this.preventDefault = function (e) {
                    this._stopExecution = !e;
                });
        }),
        "undefined" == typeof console &&
            (console = {
                warn: function (e) {
                    "use strict";
                    alert(e);
                },
                log: function (e) {
                    "use strict";
                    alert(e);
                },
                error: function (e) {
                    "use strict";
                    throw e;
                },
            }),
        (P.helper.regexes = { asteriskDashTildeAndColon: /([*_:~])/g, asteriskDashAndTilde: /([*_~])/g }),
        (P.helper.emojis = {
            100: "💯",
            1234: "🔢",
            "+1": "👍",
            "-1": "👎",
            "1st_place_medal": "🥇",
            "2nd_place_medal": "🥈",
            "3rd_place_medal": "🥉",
            "8ball": "🎱",
            a: "🅰️",
            ab: "🆎",
            abacus: "🧮",
            abc: "🔤",
            abcd: "🔡",
            accept: "🉑",
            adhesive_bandage: "🩹",
            adult: "🧑",
            aerial_tramway: "🚡",
            afghanistan: "🇦🇫",
            airplane: "✈️",
            aland_islands: "🇦🇽",
            alarm_clock: "⏰",
            albania: "🇦🇱",
            alembic: "⚗️",
            algeria: "🇩🇿",
            alien: "👽",
            ambulance: "🚑",
            american_samoa: "🇦🇸",
            amphora: "🏺",
            anchor: "⚓",
            andorra: "🇦🇩",
            angel: "👼",
            anger: "💢",
            angola: "🇦🇴",
            angry: "😠",
            anguilla: "🇦🇮",
            anguished: "😧",
            ant: "🐜",
            antarctica: "🇦🇶",
            antigua_barbuda: "🇦🇬",
            apple: "🍎",
            aquarius: "♒",
            argentina: "🇦🇷",
            aries: "♈",
            armenia: "🇦🇲",
            arrow_backward: "◀️",
            arrow_double_down: "⏬",
            arrow_double_up: "⏫",
            arrow_down: "⬇️",
            arrow_down_small: "🔽",
            arrow_forward: "▶️",
            arrow_heading_down: "⤵️",
            arrow_heading_up: "⤴️",
            arrow_left: "⬅️",
            arrow_lower_left: "↙️",
            arrow_lower_right: "↘️",
            arrow_right: "➡️",
            arrow_right_hook: "↪️",
            arrow_up: "⬆️",
            arrow_up_down: "↕️",
            arrow_up_small: "🔼",
            arrow_upper_left: "↖️",
            arrow_upper_right: "↗️",
            arrows_clockwise: "🔃",
            arrows_counterclockwise: "🔄",
            art: "🎨",
            articulated_lorry: "🚛",
            artificial_satellite: "🛰️",
            artist: "🧑‍🎨",
            aruba: "🇦🇼",
            ascension_island: "🇦🇨",
            asterisk: "*️⃣",
            astonished: "😲",
            astronaut: "🧑‍🚀",
            athletic_shoe: "👟",
            atm: "🏧",
            atom_symbol: "⚛️",
            australia: "🇦🇺",
            austria: "🇦🇹",
            auto_rickshaw: "🛺",
            avocado: "🥑",
            axe: "🪓",
            azerbaijan: "🇦🇿",
            b: "🅱️",
            baby: "👶",
            baby_bottle: "🍼",
            baby_chick: "🐤",
            baby_symbol: "🚼",
            back: "🔙",
            bacon: "🥓",
            badger: "🦡",
            badminton: "🏸",
            bagel: "🥯",
            baggage_claim: "🛄",
            baguette_bread: "🥖",
            bahamas: "🇧🇸",
            bahrain: "🇧🇭",
            balance_scale: "⚖️",
            bald_man: "👨‍🦲",
            bald_woman: "👩‍🦲",
            ballet_shoes: "🩰",
            balloon: "🎈",
            ballot_box: "🗳️",
            ballot_box_with_check: "☑️",
            bamboo: "🎍",
            banana: "🍌",
            bangbang: "‼️",
            bangladesh: "🇧🇩",
            banjo: "🪕",
            bank: "🏦",
            bar_chart: "📊",
            barbados: "🇧🇧",
            barber: "💈",
            baseball: "⚾",
            basket: "🧺",
            basketball: "🏀",
            basketball_man: "⛹️‍♂️",
            basketball_woman: "⛹️‍♀️",
            bat: "🦇",
            bath: "🛀",
            bathtub: "🛁",
            battery: "🔋",
            beach_umbrella: "🏖️",
            bear: "🐻",
            bearded_person: "🧔",
            bed: "🛏️",
            bee: "🐝",
            beer: "🍺",
            beers: "🍻",
            beetle: "🐞",
            beginner: "🔰",
            belarus: "🇧🇾",
            belgium: "🇧🇪",
            belize: "🇧🇿",
            bell: "🔔",
            bellhop_bell: "🛎️",
            benin: "🇧🇯",
            bento: "🍱",
            bermuda: "🇧🇲",
            beverage_box: "🧃",
            bhutan: "🇧🇹",
            bicyclist: "🚴",
            bike: "🚲",
            biking_man: "🚴‍♂️",
            biking_woman: "🚴‍♀️",
            bikini: "👙",
            billed_cap: "🧢",
            biohazard: "☣️",
            bird: "🐦",
            birthday: "🎂",
            black_circle: "⚫",
            black_flag: "🏴",
            black_heart: "🖤",
            black_joker: "🃏",
            black_large_square: "⬛",
            black_medium_small_square: "◾",
            black_medium_square: "◼️",
            black_nib: "✒️",
            black_small_square: "▪️",
            black_square_button: "🔲",
            blond_haired_man: "👱‍♂️",
            blond_haired_person: "👱",
            blond_haired_woman: "👱‍♀️",
            blonde_woman: "👱‍♀️",
            blossom: "🌼",
            blowfish: "🐡",
            blue_book: "📘",
            blue_car: "🚙",
            blue_heart: "💙",
            blue_square: "🟦",
            blush: "😊",
            boar: "🐗",
            boat: "⛵",
            bolivia: "🇧🇴",
            bomb: "💣",
            bone: "🦴",
            book: "📖",
            bookmark: "🔖",
            bookmark_tabs: "📑",
            books: "📚",
            boom: "💥",
            boot: "👢",
            bosnia_herzegovina: "🇧🇦",
            botswana: "🇧🇼",
            bouncing_ball_man: "⛹️‍♂️",
            bouncing_ball_person: "⛹️",
            bouncing_ball_woman: "⛹️‍♀️",
            bouquet: "💐",
            bouvet_island: "🇧🇻",
            bow: "🙇",
            bow_and_arrow: "🏹",
            bowing_man: "🙇‍♂️",
            bowing_woman: "🙇‍♀️",
            bowl_with_spoon: "🥣",
            bowling: "🎳",
            boxing_glove: "🥊",
            boy: "👦",
            brain: "🧠",
            brazil: "🇧🇷",
            bread: "🍞",
            breast_feeding: "🤱",
            bricks: "🧱",
            bride_with_veil: "👰",
            bridge_at_night: "🌉",
            briefcase: "💼",
            british_indian_ocean_territory: "🇮🇴",
            british_virgin_islands: "🇻🇬",
            broccoli: "🥦",
            broken_heart: "💔",
            broom: "🧹",
            brown_circle: "🟤",
            brown_heart: "🤎",
            brown_square: "🟫",
            brunei: "🇧🇳",
            bug: "🐛",
            building_construction: "🏗️",
            bulb: "💡",
            bulgaria: "🇧🇬",
            bullettrain_front: "🚅",
            bullettrain_side: "🚄",
            burkina_faso: "🇧🇫",
            burrito: "🌯",
            burundi: "🇧🇮",
            bus: "🚌",
            business_suit_levitating: "🕴️",
            busstop: "🚏",
            bust_in_silhouette: "👤",
            busts_in_silhouette: "👥",
            butter: "🧈",
            butterfly: "🦋",
            cactus: "🌵",
            cake: "🍰",
            calendar: "📆",
            call_me_hand: "🤙",
            calling: "📲",
            cambodia: "🇰🇭",
            camel: "🐫",
            camera: "📷",
            camera_flash: "📸",
            cameroon: "🇨🇲",
            camping: "🏕️",
            canada: "🇨🇦",
            canary_islands: "🇮🇨",
            cancer: "♋",
            candle: "🕯️",
            candy: "🍬",
            canned_food: "🥫",
            canoe: "🛶",
            cape_verde: "🇨🇻",
            capital_abcd: "🔠",
            capricorn: "♑",
            car: "🚗",
            card_file_box: "🗃️",
            card_index: "📇",
            card_index_dividers: "🗂️",
            caribbean_netherlands: "🇧🇶",
            carousel_horse: "🎠",
            carrot: "🥕",
            cartwheeling: "🤸",
            cat: "🐱",
            cat2: "🐈",
            cayman_islands: "🇰🇾",
            cd: "💿",
            central_african_republic: "🇨🇫",
            ceuta_melilla: "🇪🇦",
            chad: "🇹🇩",
            chains: "⛓️",
            chair: "🪑",
            champagne: "🍾",
            chart: "💹",
            chart_with_downwards_trend: "📉",
            chart_with_upwards_trend: "📈",
            checkered_flag: "🏁",
            cheese: "🧀",
            cherries: "🍒",
            cherry_blossom: "🌸",
            chess_pawn: "♟️",
            chestnut: "🌰",
            chicken: "🐔",
            child: "🧒",
            children_crossing: "🚸",
            chile: "🇨🇱",
            chipmunk: "🐿️",
            chocolate_bar: "🍫",
            chopsticks: "🥢",
            christmas_island: "🇨🇽",
            christmas_tree: "🎄",
            church: "⛪",
            cinema: "🎦",
            circus_tent: "🎪",
            city_sunrise: "🌇",
            city_sunset: "🌆",
            cityscape: "🏙️",
            cl: "🆑",
            clamp: "🗜️",
            clap: "👏",
            clapper: "🎬",
            classical_building: "🏛️",
            climbing: "🧗",
            climbing_man: "🧗‍♂️",
            climbing_woman: "🧗‍♀️",
            clinking_glasses: "🥂",
            clipboard: "📋",
            clipperton_island: "🇨🇵",
            clock1: "🕐",
            clock10: "🕙",
            clock1030: "🕥",
            clock11: "🕚",
            clock1130: "🕦",
            clock12: "🕛",
            clock1230: "🕧",
            clock130: "🕜",
            clock2: "🕑",
            clock230: "🕝",
            clock3: "🕒",
            clock330: "🕞",
            clock4: "🕓",
            clock430: "🕟",
            clock5: "🕔",
            clock530: "🕠",
            clock6: "🕕",
            clock630: "🕡",
            clock7: "🕖",
            clock730: "🕢",
            clock8: "🕗",
            clock830: "🕣",
            clock9: "🕘",
            clock930: "🕤",
            closed_book: "📕",
            closed_lock_with_key: "🔐",
            closed_umbrella: "🌂",
            cloud: "☁️",
            cloud_with_lightning: "🌩️",
            cloud_with_lightning_and_rain: "⛈️",
            cloud_with_rain: "🌧️",
            cloud_with_snow: "🌨️",
            clown_face: "🤡",
            clubs: "♣️",
            cn: "🇨🇳",
            coat: "🧥",
            cocktail: "🍸",
            coconut: "🥥",
            cocos_islands: "🇨🇨",
            coffee: "☕",
            coffin: "⚰️",
            cold_face: "🥶",
            cold_sweat: "😰",
            collision: "💥",
            colombia: "🇨🇴",
            comet: "☄️",
            comoros: "🇰🇲",
            compass: "🧭",
            computer: "💻",
            computer_mouse: "🖱️",
            confetti_ball: "🎊",
            confounded: "😖",
            confused: "😕",
            congo_brazzaville: "🇨🇬",
            congo_kinshasa: "🇨🇩",
            congratulations: "㊗️",
            construction: "🚧",
            construction_worker: "👷",
            construction_worker_man: "👷‍♂️",
            construction_worker_woman: "👷‍♀️",
            control_knobs: "🎛️",
            convenience_store: "🏪",
            cook: "🧑‍🍳",
            cook_islands: "🇨🇰",
            cookie: "🍪",
            cool: "🆒",
            cop: "👮",
            copyright: "©️",
            corn: "🌽",
            costa_rica: "🇨🇷",
            cote_divoire: "🇨🇮",
            couch_and_lamp: "🛋️",
            couple: "👫",
            couple_with_heart: "💑",
            couple_with_heart_man_man: "👨‍❤️‍👨",
            couple_with_heart_woman_man: "👩‍❤️‍👨",
            couple_with_heart_woman_woman: "👩‍❤️‍👩",
            couplekiss: "💏",
            couplekiss_man_man: "👨‍❤️‍💋‍👨",
            couplekiss_man_woman: "👩‍❤️‍💋‍👨",
            couplekiss_woman_woman: "👩‍❤️‍💋‍👩",
            cow: "🐮",
            cow2: "🐄",
            cowboy_hat_face: "🤠",
            crab: "🦀",
            crayon: "🖍️",
            credit_card: "💳",
            crescent_moon: "🌙",
            cricket: "🦗",
            cricket_game: "🏏",
            croatia: "🇭🇷",
            crocodile: "🐊",
            croissant: "🥐",
            crossed_fingers: "🤞",
            crossed_flags: "🎌",
            crossed_swords: "⚔️",
            crown: "👑",
            cry: "😢",
            crying_cat_face: "😿",
            crystal_ball: "🔮",
            cuba: "🇨🇺",
            cucumber: "🥒",
            cup_with_straw: "🥤",
            cupcake: "🧁",
            cupid: "💘",
            curacao: "🇨🇼",
            curling_stone: "🥌",
            curly_haired_man: "👨‍🦱",
            curly_haired_woman: "👩‍🦱",
            curly_loop: "➰",
            currency_exchange: "💱",
            curry: "🍛",
            cursing_face: "🤬",
            custard: "🍮",
            customs: "🛃",
            cut_of_meat: "🥩",
            cyclone: "🌀",
            cyprus: "🇨🇾",
            czech_republic: "🇨🇿",
            dagger: "🗡️",
            dancer: "💃",
            dancers: "👯",
            dancing_men: "👯‍♂️",
            dancing_women: "👯‍♀️",
            dango: "🍡",
            dark_sunglasses: "🕶️",
            dart: "🎯",
            dash: "💨",
            date: "📅",
            de: "🇩🇪",
            deaf_man: "🧏‍♂️",
            deaf_person: "🧏",
            deaf_woman: "🧏‍♀️",
            deciduous_tree: "🌳",
            deer: "🦌",
            denmark: "🇩🇰",
            department_store: "🏬",
            derelict_house: "🏚️",
            desert: "🏜️",
            desert_island: "🏝️",
            desktop_computer: "🖥️",
            detective: "🕵️",
            diamond_shape_with_a_dot_inside: "💠",
            diamonds: "♦️",
            diego_garcia: "🇩🇬",
            disappointed: "😞",
            disappointed_relieved: "😥",
            diving_mask: "🤿",
            diya_lamp: "🪔",
            dizzy: "💫",
            dizzy_face: "😵",
            djibouti: "🇩🇯",
            dna: "🧬",
            do_not_litter: "🚯",
            dog: "🐶",
            dog2: "🐕",
            dollar: "💵",
            dolls: "🎎",
            dolphin: "🐬",
            dominica: "🇩🇲",
            dominican_republic: "🇩🇴",
            door: "🚪",
            doughnut: "🍩",
            dove: "🕊️",
            dragon: "🐉",
            dragon_face: "🐲",
            dress: "👗",
            dromedary_camel: "🐪",
            drooling_face: "🤤",
            drop_of_blood: "🩸",
            droplet: "💧",
            drum: "🥁",
            duck: "🦆",
            dumpling: "🥟",
            dvd: "📀",
            "e-mail": "📧",
            eagle: "🦅",
            ear: "👂",
            ear_of_rice: "🌾",
            ear_with_hearing_aid: "🦻",
            earth_africa: "🌍",
            earth_americas: "🌎",
            earth_asia: "🌏",
            ecuador: "🇪🇨",
            egg: "🥚",
            eggplant: "🍆",
            egypt: "🇪🇬",
            eight: "8️⃣",
            eight_pointed_black_star: "✴️",
            eight_spoked_asterisk: "✳️",
            eject_button: "⏏️",
            el_salvador: "🇸🇻",
            electric_plug: "🔌",
            elephant: "🐘",
            elf: "🧝",
            elf_man: "🧝‍♂️",
            elf_woman: "🧝‍♀️",
            email: "✉️",
            end: "🔚",
            england: "🏴󠁧󠁢󠁥󠁮󠁧󠁿",
            envelope: "✉️",
            envelope_with_arrow: "📩",
            equatorial_guinea: "🇬🇶",
            eritrea: "🇪🇷",
            es: "🇪🇸",
            estonia: "🇪🇪",
            ethiopia: "🇪🇹",
            eu: "🇪🇺",
            euro: "💶",
            european_castle: "🏰",
            european_post_office: "🏤",
            european_union: "🇪🇺",
            evergreen_tree: "🌲",
            exclamation: "❗",
            exploding_head: "🤯",
            expressionless: "😑",
            eye: "👁️",
            eye_speech_bubble: "👁️‍🗨️",
            eyeglasses: "👓",
            eyes: "👀",
            face_with_head_bandage: "🤕",
            face_with_thermometer: "🤒",
            facepalm: "🤦",
            facepunch: "👊",
            factory: "🏭",
            factory_worker: "🧑‍🏭",
            fairy: "🧚",
            fairy_man: "🧚‍♂️",
            fairy_woman: "🧚‍♀️",
            falafel: "🧆",
            falkland_islands: "🇫🇰",
            fallen_leaf: "🍂",
            family: "👪",
            family_man_boy: "👨‍👦",
            family_man_boy_boy: "👨‍👦‍👦",
            family_man_girl: "👨‍👧",
            family_man_girl_boy: "👨‍👧‍👦",
            family_man_girl_girl: "👨‍👧‍👧",
            family_man_man_boy: "👨‍👨‍👦",
            family_man_man_boy_boy: "👨‍👨‍👦‍👦",
            family_man_man_girl: "👨‍👨‍👧",
            family_man_man_girl_boy: "👨‍👨‍👧‍👦",
            family_man_man_girl_girl: "👨‍👨‍👧‍👧",
            family_man_woman_boy: "👨‍👩‍👦",
            family_man_woman_boy_boy: "👨‍👩‍👦‍👦",
            family_man_woman_girl: "👨‍👩‍👧",
            family_man_woman_girl_boy: "👨‍👩‍👧‍👦",
            family_man_woman_girl_girl: "👨‍👩‍👧‍👧",
            family_woman_boy: "👩‍👦",
            family_woman_boy_boy: "👩‍👦‍👦",
            family_woman_girl: "👩‍👧",
            family_woman_girl_boy: "👩‍👧‍👦",
            family_woman_girl_girl: "👩‍👧‍👧",
            family_woman_woman_boy: "👩‍👩‍👦",
            family_woman_woman_boy_boy: "👩‍👩‍👦‍👦",
            family_woman_woman_girl: "👩‍👩‍👧",
            family_woman_woman_girl_boy: "👩‍👩‍👧‍👦",
            family_woman_woman_girl_girl: "👩‍👩‍👧‍👧",
            farmer: "🧑‍🌾",
            faroe_islands: "🇫🇴",
            fast_forward: "⏩",
            fax: "📠",
            fearful: "😨",
            feet: "🐾",
            female_detective: "🕵️‍♀️",
            female_sign: "♀️",
            ferris_wheel: "🎡",
            ferry: "⛴️",
            field_hockey: "🏑",
            fiji: "🇫🇯",
            file_cabinet: "🗄️",
            file_folder: "📁",
            film_projector: "📽️",
            film_strip: "🎞️",
            finland: "🇫🇮",
            fire: "🔥",
            fire_engine: "🚒",
            fire_extinguisher: "🧯",
            firecracker: "🧨",
            firefighter: "🧑‍🚒",
            fireworks: "🎆",
            first_quarter_moon: "🌓",
            first_quarter_moon_with_face: "🌛",
            fish: "🐟",
            fish_cake: "🍥",
            fishing_pole_and_fish: "🎣",
            fist: "✊",
            fist_left: "🤛",
            fist_oncoming: "👊",
            fist_raised: "✊",
            fist_right: "🤜",
            five: "5️⃣",
            flags: "🎏",
            flamingo: "🦩",
            flashlight: "🔦",
            flat_shoe: "🥿",
            fleur_de_lis: "⚜️",
            flight_arrival: "🛬",
            flight_departure: "🛫",
            flipper: "🐬",
            floppy_disk: "💾",
            flower_playing_cards: "🎴",
            flushed: "😳",
            flying_disc: "🥏",
            flying_saucer: "🛸",
            fog: "🌫️",
            foggy: "🌁",
            foot: "🦶",
            football: "🏈",
            footprints: "👣",
            fork_and_knife: "🍴",
            fortune_cookie: "🥠",
            fountain: "⛲",
            fountain_pen: "🖋️",
            four: "4️⃣",
            four_leaf_clover: "🍀",
            fox_face: "🦊",
            fr: "🇫🇷",
            framed_picture: "🖼️",
            free: "🆓",
            french_guiana: "🇬🇫",
            french_polynesia: "🇵🇫",
            french_southern_territories: "🇹🇫",
            fried_egg: "🍳",
            fried_shrimp: "🍤",
            fries: "🍟",
            frog: "🐸",
            frowning: "😦",
            frowning_face: "☹️",
            frowning_man: "🙍‍♂️",
            frowning_person: "🙍",
            frowning_woman: "🙍‍♀️",
            fu: "🖕",
            fuelpump: "⛽",
            full_moon: "🌕",
            full_moon_with_face: "🌝",
            funeral_urn: "⚱️",
            gabon: "🇬🇦",
            gambia: "🇬🇲",
            game_die: "🎲",
            garlic: "🧄",
            gb: "🇬🇧",
            gear: "⚙️",
            gem: "💎",
            gemini: "♊",
            genie: "🧞",
            genie_man: "🧞‍♂️",
            genie_woman: "🧞‍♀️",
            georgia: "🇬🇪",
            ghana: "🇬🇭",
            ghost: "👻",
            gibraltar: "🇬🇮",
            gift: "🎁",
            gift_heart: "💝",
            giraffe: "🦒",
            girl: "👧",
            globe_with_meridians: "🌐",
            gloves: "🧤",
            goal_net: "🥅",
            goat: "🐐",
            goggles: "🥽",
            golf: "⛳",
            golfing: "🏌️",
            golfing_man: "🏌️‍♂️",
            golfing_woman: "🏌️‍♀️",
            gorilla: "🦍",
            grapes: "🍇",
            greece: "🇬🇷",
            green_apple: "🍏",
            green_book: "📗",
            green_circle: "🟢",
            green_heart: "💚",
            green_salad: "🥗",
            green_square: "🟩",
            greenland: "🇬🇱",
            grenada: "🇬🇩",
            grey_exclamation: "❕",
            grey_question: "❔",
            grimacing: "😬",
            grin: "😁",
            grinning: "😀",
            guadeloupe: "🇬🇵",
            guam: "🇬🇺",
            guard: "💂",
            guardsman: "💂‍♂️",
            guardswoman: "💂‍♀️",
            guatemala: "🇬🇹",
            guernsey: "🇬🇬",
            guide_dog: "🦮",
            guinea: "🇬🇳",
            guinea_bissau: "🇬🇼",
            guitar: "🎸",
            gun: "🔫",
            guyana: "🇬🇾",
            haircut: "💇",
            haircut_man: "💇‍♂️",
            haircut_woman: "💇‍♀️",
            haiti: "🇭🇹",
            hamburger: "🍔",
            hammer: "🔨",
            hammer_and_pick: "⚒️",
            hammer_and_wrench: "🛠️",
            hamster: "🐹",
            hand: "✋",
            hand_over_mouth: "🤭",
            handbag: "👜",
            handball_person: "🤾",
            handshake: "🤝",
            hankey: "💩",
            hash: "#️⃣",
            hatched_chick: "🐥",
            hatching_chick: "🐣",
            headphones: "🎧",
            health_worker: "🧑‍⚕️",
            hear_no_evil: "🙉",
            heard_mcdonald_islands: "🇭🇲",
            heart: "❤️",
            heart_decoration: "💟",
            heart_eyes: "😍",
            heart_eyes_cat: "😻",
            heartbeat: "💓",
            heartpulse: "💗",
            hearts: "♥️",
            heavy_check_mark: "✔️",
            heavy_division_sign: "➗",
            heavy_dollar_sign: "💲",
            heavy_exclamation_mark: "❗",
            heavy_heart_exclamation: "❣️",
            heavy_minus_sign: "➖",
            heavy_multiplication_x: "✖️",
            heavy_plus_sign: "➕",
            hedgehog: "🦔",
            helicopter: "🚁",
            herb: "🌿",
            hibiscus: "🌺",
            high_brightness: "🔆",
            high_heel: "👠",
            hiking_boot: "🥾",
            hindu_temple: "🛕",
            hippopotamus: "🦛",
            hocho: "🔪",
            hole: "🕳️",
            honduras: "🇭🇳",
            honey_pot: "🍯",
            honeybee: "🐝",
            hong_kong: "🇭🇰",
            horse: "🐴",
            horse_racing: "🏇",
            hospital: "🏥",
            hot_face: "🥵",
            hot_pepper: "🌶️",
            hotdog: "🌭",
            hotel: "🏨",
            hotsprings: "♨️",
            hourglass: "⌛",
            hourglass_flowing_sand: "⏳",
            house: "🏠",
            house_with_garden: "🏡",
            houses: "🏘️",
            hugs: "🤗",
            hungary: "🇭🇺",
            hushed: "😯",
            ice_cream: "🍨",
            ice_cube: "🧊",
            ice_hockey: "🏒",
            ice_skate: "⛸️",
            icecream: "🍦",
            iceland: "🇮🇸",
            id: "🆔",
            ideograph_advantage: "🉐",
            imp: "👿",
            inbox_tray: "📥",
            incoming_envelope: "📨",
            india: "🇮🇳",
            indonesia: "🇮🇩",
            infinity: "♾️",
            information_desk_person: "💁",
            information_source: "ℹ️",
            innocent: "😇",
            interrobang: "⁉️",
            iphone: "📱",
            iran: "🇮🇷",
            iraq: "🇮🇶",
            ireland: "🇮🇪",
            isle_of_man: "🇮🇲",
            israel: "🇮🇱",
            it: "🇮🇹",
            izakaya_lantern: "🏮",
            jack_o_lantern: "🎃",
            jamaica: "🇯🇲",
            japan: "🗾",
            japanese_castle: "🏯",
            japanese_goblin: "👺",
            japanese_ogre: "👹",
            jeans: "👖",
            jersey: "🇯🇪",
            jigsaw: "🧩",
            jordan: "🇯🇴",
            joy: "😂",
            joy_cat: "😹",
            joystick: "🕹️",
            jp: "🇯🇵",
            judge: "🧑‍⚖️",
            juggling_person: "🤹",
            kaaba: "🕋",
            kangaroo: "🦘",
            kazakhstan: "🇰🇿",
            kenya: "🇰🇪",
            key: "🔑",
            keyboard: "⌨️",
            keycap_ten: "🔟",
            kick_scooter: "🛴",
            kimono: "👘",
            kiribati: "🇰🇮",
            kiss: "💋",
            kissing: "😗",
            kissing_cat: "😽",
            kissing_closed_eyes: "😚",
            kissing_heart: "😘",
            kissing_smiling_eyes: "😙",
            kite: "🪁",
            kiwi_fruit: "🥝",
            kneeling_man: "🧎‍♂️",
            kneeling_person: "🧎",
            kneeling_woman: "🧎‍♀️",
            knife: "🔪",
            koala: "🐨",
            koko: "🈁",
            kosovo: "🇽🇰",
            kr: "🇰🇷",
            kuwait: "🇰🇼",
            kyrgyzstan: "🇰🇬",
            lab_coat: "🥼",
            label: "🏷️",
            lacrosse: "🥍",
            lantern: "🏮",
            laos: "🇱🇦",
            large_blue_circle: "🔵",
            large_blue_diamond: "🔷",
            large_orange_diamond: "🔶",
            last_quarter_moon: "🌗",
            last_quarter_moon_with_face: "🌜",
            latin_cross: "✝️",
            latvia: "🇱🇻",
            laughing: "😆",
            leafy_green: "🥬",
            leaves: "🍃",
            lebanon: "🇱🇧",
            ledger: "📒",
            left_luggage: "🛅",
            left_right_arrow: "↔️",
            left_speech_bubble: "🗨️",
            leftwards_arrow_with_hook: "↩️",
            leg: "🦵",
            lemon: "🍋",
            leo: "♌",
            leopard: "🐆",
            lesotho: "🇱🇸",
            level_slider: "🎚️",
            liberia: "🇱🇷",
            libra: "♎",
            libya: "🇱🇾",
            liechtenstein: "🇱🇮",
            light_rail: "🚈",
            link: "🔗",
            lion: "🦁",
            lips: "👄",
            lipstick: "💄",
            lithuania: "🇱🇹",
            lizard: "🦎",
            llama: "🦙",
            lobster: "🦞",
            lock: "🔒",
            lock_with_ink_pen: "🔏",
            lollipop: "🍭",
            loop: "➿",
            lotion_bottle: "🧴",
            lotus_position: "🧘",
            lotus_position_man: "🧘‍♂️",
            lotus_position_woman: "🧘‍♀️",
            loud_sound: "🔊",
            loudspeaker: "📢",
            love_hotel: "🏩",
            love_letter: "💌",
            love_you_gesture: "🤟",
            low_brightness: "🔅",
            luggage: "🧳",
            luxembourg: "🇱🇺",
            lying_face: "🤥",
            m: "Ⓜ️",
            macau: "🇲🇴",
            macedonia: "🇲🇰",
            madagascar: "🇲🇬",
            mag: "🔍",
            mag_right: "🔎",
            mage: "🧙",
            mage_man: "🧙‍♂️",
            mage_woman: "🧙‍♀️",
            magnet: "🧲",
            mahjong: "🀄",
            mailbox: "📫",
            mailbox_closed: "📪",
            mailbox_with_mail: "📬",
            mailbox_with_no_mail: "📭",
            malawi: "🇲🇼",
            malaysia: "🇲🇾",
            maldives: "🇲🇻",
            male_detective: "🕵️‍♂️",
            male_sign: "♂️",
            mali: "🇲🇱",
            malta: "🇲🇹",
            man: "👨",
            man_artist: "👨‍🎨",
            man_astronaut: "👨‍🚀",
            man_cartwheeling: "🤸‍♂️",
            man_cook: "👨‍🍳",
            man_dancing: "🕺",
            man_facepalming: "🤦‍♂️",
            man_factory_worker: "👨‍🏭",
            man_farmer: "👨‍🌾",
            man_firefighter: "👨‍🚒",
            man_health_worker: "👨‍⚕️",
            man_in_manual_wheelchair: "👨‍🦽",
            man_in_motorized_wheelchair: "👨‍🦼",
            man_in_tuxedo: "🤵",
            man_judge: "👨‍⚖️",
            man_juggling: "🤹‍♂️",
            man_mechanic: "👨‍🔧",
            man_office_worker: "👨‍💼",
            man_pilot: "👨‍✈️",
            man_playing_handball: "🤾‍♂️",
            man_playing_water_polo: "🤽‍♂️",
            man_scientist: "👨‍🔬",
            man_shrugging: "🤷‍♂️",
            man_singer: "👨‍🎤",
            man_student: "👨‍🎓",
            man_teacher: "👨‍🏫",
            man_technologist: "👨‍💻",
            man_with_gua_pi_mao: "👲",
            man_with_probing_cane: "👨‍🦯",
            man_with_turban: "👳‍♂️",
            mandarin: "🍊",
            mango: "🥭",
            mans_shoe: "👞",
            mantelpiece_clock: "🕰️",
            manual_wheelchair: "🦽",
            maple_leaf: "🍁",
            marshall_islands: "🇲🇭",
            martial_arts_uniform: "🥋",
            martinique: "🇲🇶",
            mask: "😷",
            massage: "💆",
            massage_man: "💆‍♂️",
            massage_woman: "💆‍♀️",
            mate: "🧉",
            mauritania: "🇲🇷",
            mauritius: "🇲🇺",
            mayotte: "🇾🇹",
            meat_on_bone: "🍖",
            mechanic: "🧑‍🔧",
            mechanical_arm: "🦾",
            mechanical_leg: "🦿",
            medal_military: "🎖️",
            medal_sports: "🏅",
            medical_symbol: "⚕️",
            mega: "📣",
            melon: "🍈",
            memo: "📝",
            men_wrestling: "🤼‍♂️",
            menorah: "🕎",
            mens: "🚹",
            mermaid: "🧜‍♀️",
            merman: "🧜‍♂️",
            merperson: "🧜",
            metal: "🤘",
            metro: "🚇",
            mexico: "🇲🇽",
            microbe: "🦠",
            micronesia: "🇫🇲",
            microphone: "🎤",
            microscope: "🔬",
            middle_finger: "🖕",
            milk_glass: "🥛",
            milky_way: "🌌",
            minibus: "🚐",
            minidisc: "💽",
            mobile_phone_off: "📴",
            moldova: "🇲🇩",
            monaco: "🇲🇨",
            money_mouth_face: "🤑",
            money_with_wings: "💸",
            moneybag: "💰",
            mongolia: "🇲🇳",
            monkey: "🐒",
            monkey_face: "🐵",
            monocle_face: "🧐",
            monorail: "🚝",
            montenegro: "🇲🇪",
            montserrat: "🇲🇸",
            moon: "🌔",
            moon_cake: "🥮",
            morocco: "🇲🇦",
            mortar_board: "🎓",
            mosque: "🕌",
            mosquito: "🦟",
            motor_boat: "🛥️",
            motor_scooter: "🛵",
            motorcycle: "🏍️",
            motorized_wheelchair: "🦼",
            motorway: "🛣️",
            mount_fuji: "🗻",
            mountain: "⛰️",
            mountain_bicyclist: "🚵",
            mountain_biking_man: "🚵‍♂️",
            mountain_biking_woman: "🚵‍♀️",
            mountain_cableway: "🚠",
            mountain_railway: "🚞",
            mountain_snow: "🏔️",
            mouse: "🐭",
            mouse2: "🐁",
            movie_camera: "🎥",
            moyai: "🗿",
            mozambique: "🇲🇿",
            mrs_claus: "🤶",
            muscle: "💪",
            mushroom: "🍄",
            musical_keyboard: "🎹",
            musical_note: "🎵",
            musical_score: "🎼",
            mute: "🔇",
            myanmar: "🇲🇲",
            nail_care: "💅",
            name_badge: "📛",
            namibia: "🇳🇦",
            national_park: "🏞️",
            nauru: "🇳🇷",
            nauseated_face: "🤢",
            nazar_amulet: "🧿",
            necktie: "👔",
            negative_squared_cross_mark: "❎",
            nepal: "🇳🇵",
            nerd_face: "🤓",
            netherlands: "🇳🇱",
            neutral_face: "😐",
            new: "🆕",
            new_caledonia: "🇳🇨",
            new_moon: "🌑",
            new_moon_with_face: "🌚",
            new_zealand: "🇳🇿",
            newspaper: "📰",
            newspaper_roll: "🗞️",
            next_track_button: "⏭️",
            ng: "🆖",
            ng_man: "🙅‍♂️",
            ng_woman: "🙅‍♀️",
            nicaragua: "🇳🇮",
            niger: "🇳🇪",
            nigeria: "🇳🇬",
            night_with_stars: "🌃",
            nine: "9️⃣",
            niue: "🇳🇺",
            no_bell: "🔕",
            no_bicycles: "🚳",
            no_entry: "⛔",
            no_entry_sign: "🚫",
            no_good: "🙅",
            no_good_man: "🙅‍♂️",
            no_good_woman: "🙅‍♀️",
            no_mobile_phones: "📵",
            no_mouth: "😶",
            no_pedestrians: "🚷",
            no_smoking: "🚭",
            "non-potable_water": "🚱",
            norfolk_island: "🇳🇫",
            north_korea: "🇰🇵",
            northern_mariana_islands: "🇲🇵",
            norway: "🇳🇴",
            nose: "👃",
            notebook: "📓",
            notebook_with_decorative_cover: "📔",
            notes: "🎶",
            nut_and_bolt: "🔩",
            o: "⭕",
            o2: "🅾️",
            ocean: "🌊",
            octopus: "🐙",
            oden: "🍢",
            office: "🏢",
            office_worker: "🧑‍💼",
            oil_drum: "🛢️",
            ok: "🆗",
            ok_hand: "👌",
            ok_man: "🙆‍♂️",
            ok_person: "🙆",
            ok_woman: "🙆‍♀️",
            old_key: "🗝️",
            older_adult: "🧓",
            older_man: "👴",
            older_woman: "👵",
            om: "🕉️",
            oman: "🇴🇲",
            on: "🔛",
            oncoming_automobile: "🚘",
            oncoming_bus: "🚍",
            oncoming_police_car: "🚔",
            oncoming_taxi: "🚖",
            one: "1️⃣",
            one_piece_swimsuit: "🩱",
            onion: "🧅",
            open_book: "📖",
            open_file_folder: "📂",
            open_hands: "👐",
            open_mouth: "😮",
            open_umbrella: "☂️",
            ophiuchus: "⛎",
            orange: "🍊",
            orange_book: "📙",
            orange_circle: "🟠",
            orange_heart: "🧡",
            orange_square: "🟧",
            orangutan: "🦧",
            orthodox_cross: "☦️",
            otter: "🦦",
            outbox_tray: "📤",
            owl: "🦉",
            ox: "🐂",
            oyster: "🦪",
            package: "📦",
            page_facing_up: "📄",
            page_with_curl: "📃",
            pager: "📟",
            paintbrush: "🖌️",
            pakistan: "🇵🇰",
            palau: "🇵🇼",
            palestinian_territories: "🇵🇸",
            palm_tree: "🌴",
            palms_up_together: "🤲",
            panama: "🇵🇦",
            pancakes: "🥞",
            panda_face: "🐼",
            paperclip: "📎",
            paperclips: "🖇️",
            papua_new_guinea: "🇵🇬",
            parachute: "🪂",
            paraguay: "🇵🇾",
            parasol_on_ground: "⛱️",
            parking: "🅿️",
            parrot: "🦜",
            part_alternation_mark: "〽️",
            partly_sunny: "⛅",
            partying_face: "🥳",
            passenger_ship: "🛳️",
            passport_control: "🛂",
            pause_button: "⏸️",
            paw_prints: "🐾",
            peace_symbol: "☮️",
            peach: "🍑",
            peacock: "🦚",
            peanuts: "🥜",
            pear: "🍐",
            pen: "🖊️",
            pencil: "📝",
            pencil2: "✏️",
            penguin: "🐧",
            pensive: "😔",
            people_holding_hands: "🧑‍🤝‍🧑",
            performing_arts: "🎭",
            persevere: "😣",
            person_bald: "🧑‍🦲",
            person_curly_hair: "🧑‍🦱",
            person_fencing: "🤺",
            person_in_manual_wheelchair: "🧑‍🦽",
            person_in_motorized_wheelchair: "🧑‍🦼",
            person_red_hair: "🧑‍🦰",
            person_white_hair: "🧑‍🦳",
            person_with_probing_cane: "🧑‍🦯",
            person_with_turban: "👳",
            peru: "🇵🇪",
            petri_dish: "🧫",
            philippines: "🇵🇭",
            phone: "☎️",
            pick: "⛏️",
            pie: "🥧",
            pig: "🐷",
            pig2: "🐖",
            pig_nose: "🐽",
            pill: "💊",
            pilot: "🧑‍✈️",
            pinching_hand: "🤏",
            pineapple: "🍍",
            ping_pong: "🏓",
            pirate_flag: "🏴‍☠️",
            pisces: "♓",
            pitcairn_islands: "🇵🇳",
            pizza: "🍕",
            place_of_worship: "🛐",
            plate_with_cutlery: "🍽️",
            play_or_pause_button: "⏯️",
            pleading_face: "🥺",
            point_down: "👇",
            point_left: "👈",
            point_right: "👉",
            point_up: "☝️",
            point_up_2: "👆",
            poland: "🇵🇱",
            police_car: "🚓",
            police_officer: "👮",
            policeman: "👮‍♂️",
            policewoman: "👮‍♀️",
            poodle: "🐩",
            poop: "💩",
            popcorn: "🍿",
            portugal: "🇵🇹",
            post_office: "🏣",
            postal_horn: "📯",
            postbox: "📮",
            potable_water: "🚰",
            potato: "🥔",
            pouch: "👝",
            poultry_leg: "🍗",
            pound: "💷",
            pout: "😡",
            pouting_cat: "😾",
            pouting_face: "🙎",
            pouting_man: "🙎‍♂️",
            pouting_woman: "🙎‍♀️",
            pray: "🙏",
            prayer_beads: "📿",
            pregnant_woman: "🤰",
            pretzel: "🥨",
            previous_track_button: "⏮️",
            prince: "🤴",
            princess: "👸",
            printer: "🖨️",
            probing_cane: "🦯",
            puerto_rico: "🇵🇷",
            punch: "👊",
            purple_circle: "🟣",
            purple_heart: "💜",
            purple_square: "🟪",
            purse: "👛",
            pushpin: "📌",
            put_litter_in_its_place: "🚮",
            qatar: "🇶🇦",
            question: "❓",
            rabbit: "🐰",
            rabbit2: "🐇",
            raccoon: "🦝",
            racehorse: "🐎",
            racing_car: "🏎️",
            radio: "📻",
            radio_button: "🔘",
            radioactive: "☢️",
            rage: "😡",
            railway_car: "🚃",
            railway_track: "🛤️",
            rainbow: "🌈",
            rainbow_flag: "🏳️‍🌈",
            raised_back_of_hand: "🤚",
            raised_eyebrow: "🤨",
            raised_hand: "✋",
            raised_hand_with_fingers_splayed: "🖐️",
            raised_hands: "🙌",
            raising_hand: "🙋",
            raising_hand_man: "🙋‍♂️",
            raising_hand_woman: "🙋‍♀️",
            ram: "🐏",
            ramen: "🍜",
            rat: "🐀",
            razor: "🪒",
            receipt: "🧾",
            record_button: "⏺️",
            recycle: "♻️",
            red_car: "🚗",
            red_circle: "🔴",
            red_envelope: "🧧",
            red_haired_man: "👨‍🦰",
            red_haired_woman: "👩‍🦰",
            red_square: "🟥",
            registered: "®️",
            relaxed: "☺️",
            relieved: "😌",
            reminder_ribbon: "🎗️",
            repeat: "🔁",
            repeat_one: "🔂",
            rescue_worker_helmet: "⛑️",
            restroom: "🚻",
            reunion: "🇷🇪",
            revolving_hearts: "💞",
            rewind: "⏪",
            rhinoceros: "🦏",
            ribbon: "🎀",
            rice: "🍚",
            rice_ball: "🍙",
            rice_cracker: "🍘",
            rice_scene: "🎑",
            right_anger_bubble: "🗯️",
            ring: "💍",
            ringed_planet: "🪐",
            robot: "🤖",
            rocket: "🚀",
            rofl: "🤣",
            roll_eyes: "🙄",
            roll_of_paper: "🧻",
            roller_coaster: "🎢",
            romania: "🇷🇴",
            rooster: "🐓",
            rose: "🌹",
            rosette: "🏵️",
            rotating_light: "🚨",
            round_pushpin: "📍",
            rowboat: "🚣",
            rowing_man: "🚣‍♂️",
            rowing_woman: "🚣‍♀️",
            ru: "🇷🇺",
            rugby_football: "🏉",
            runner: "🏃",
            running: "🏃",
            running_man: "🏃‍♂️",
            running_shirt_with_sash: "🎽",
            running_woman: "🏃‍♀️",
            rwanda: "🇷🇼",
            sa: "🈂️",
            safety_pin: "🧷",
            safety_vest: "🦺",
            sagittarius: "♐",
            sailboat: "⛵",
            sake: "🍶",
            salt: "🧂",
            samoa: "🇼🇸",
            san_marino: "🇸🇲",
            sandal: "👡",
            sandwich: "🥪",
            santa: "🎅",
            sao_tome_principe: "🇸🇹",
            sari: "🥻",
            sassy_man: "💁‍♂️",
            sassy_woman: "💁‍♀️",
            satellite: "📡",
            satisfied: "😆",
            saudi_arabia: "🇸🇦",
            sauna_man: "🧖‍♂️",
            sauna_person: "🧖",
            sauna_woman: "🧖‍♀️",
            sauropod: "🦕",
            saxophone: "🎷",
            scarf: "🧣",
            school: "🏫",
            school_satchel: "🎒",
            scientist: "🧑‍🔬",
            scissors: "✂️",
            scorpion: "🦂",
            scorpius: "♏",
            scotland: "🏴󠁧󠁢󠁳󠁣󠁴󠁿",
            scream: "😱",
            scream_cat: "🙀",
            scroll: "📜",
            seat: "💺",
            secret: "㊙️",
            see_no_evil: "🙈",
            seedling: "🌱",
            selfie: "🤳",
            senegal: "🇸🇳",
            serbia: "🇷🇸",
            service_dog: "🐕‍🦺",
            seven: "7️⃣",
            seychelles: "🇸🇨",
            shallow_pan_of_food: "🥘",
            shamrock: "☘️",
            shark: "🦈",
            shaved_ice: "🍧",
            sheep: "🐑",
            shell: "🐚",
            shield: "🛡️",
            shinto_shrine: "⛩️",
            ship: "🚢",
            shirt: "👕",
            shit: "💩",
            shoe: "👞",
            shopping: "🛍️",
            shopping_cart: "🛒",
            shorts: "🩳",
            shower: "🚿",
            shrimp: "🦐",
            shrug: "🤷",
            shushing_face: "🤫",
            sierra_leone: "🇸🇱",
            signal_strength: "📶",
            singapore: "🇸🇬",
            singer: "🧑‍🎤",
            sint_maarten: "🇸🇽",
            six: "6️⃣",
            six_pointed_star: "🔯",
            skateboard: "🛹",
            ski: "🎿",
            skier: "⛷️",
            skull: "💀",
            skull_and_crossbones: "☠️",
            skunk: "🦨",
            sled: "🛷",
            sleeping: "😴",
            sleeping_bed: "🛌",
            sleepy: "😪",
            slightly_frowning_face: "🙁",
            slightly_smiling_face: "🙂",
            slot_machine: "🎰",
            sloth: "🦥",
            slovakia: "🇸🇰",
            slovenia: "🇸🇮",
            small_airplane: "🛩️",
            small_blue_diamond: "🔹",
            small_orange_diamond: "🔸",
            small_red_triangle: "🔺",
            small_red_triangle_down: "🔻",
            smile: "😄",
            smile_cat: "😸",
            smiley: "😃",
            smiley_cat: "😺",
            smiling_face_with_three_hearts: "🥰",
            smiling_imp: "😈",
            smirk: "😏",
            smirk_cat: "😼",
            smoking: "🚬",
            snail: "🐌",
            snake: "🐍",
            sneezing_face: "🤧",
            snowboarder: "🏂",
            snowflake: "❄️",
            snowman: "⛄",
            snowman_with_snow: "☃️",
            soap: "🧼",
            sob: "😭",
            soccer: "⚽",
            socks: "🧦",
            softball: "🥎",
            solomon_islands: "🇸🇧",
            somalia: "🇸🇴",
            soon: "🔜",
            sos: "🆘",
            sound: "🔉",
            south_africa: "🇿🇦",
            south_georgia_south_sandwich_islands: "🇬🇸",
            south_sudan: "🇸🇸",
            space_invader: "👾",
            spades: "♠️",
            spaghetti: "🍝",
            sparkle: "❇️",
            sparkler: "🎇",
            sparkles: "✨",
            sparkling_heart: "💖",
            speak_no_evil: "🙊",
            speaker: "🔈",
            speaking_head: "🗣️",
            speech_balloon: "💬",
            speedboat: "🚤",
            spider: "🕷️",
            spider_web: "🕸️",
            spiral_calendar: "🗓️",
            spiral_notepad: "🗒️",
            sponge: "🧽",
            spoon: "🥄",
            squid: "🦑",
            sri_lanka: "🇱🇰",
            st_barthelemy: "🇧🇱",
            st_helena: "🇸🇭",
            st_kitts_nevis: "🇰🇳",
            st_lucia: "🇱🇨",
            st_martin: "🇲🇫",
            st_pierre_miquelon: "🇵🇲",
            st_vincent_grenadines: "🇻🇨",
            stadium: "🏟️",
            standing_man: "🧍‍♂️",
            standing_person: "🧍",
            standing_woman: "🧍‍♀️",
            star: "⭐",
            star2: "🌟",
            star_and_crescent: "☪️",
            star_of_david: "✡️",
            star_struck: "🤩",
            stars: "🌠",
            station: "🚉",
            statue_of_liberty: "🗽",
            steam_locomotive: "🚂",
            stethoscope: "🩺",
            stew: "🍲",
            stop_button: "⏹️",
            stop_sign: "🛑",
            stopwatch: "⏱️",
            straight_ruler: "📏",
            strawberry: "🍓",
            stuck_out_tongue: "😛",
            stuck_out_tongue_closed_eyes: "😝",
            stuck_out_tongue_winking_eye: "😜",
            student: "🧑‍🎓",
            studio_microphone: "🎙️",
            stuffed_flatbread: "🥙",
            sudan: "🇸🇩",
            sun_behind_large_cloud: "🌥️",
            sun_behind_rain_cloud: "🌦️",
            sun_behind_small_cloud: "🌤️",
            sun_with_face: "🌞",
            sunflower: "🌻",
            sunglasses: "😎",
            sunny: "☀️",
            sunrise: "🌅",
            sunrise_over_mountains: "🌄",
            superhero: "🦸",
            superhero_man: "🦸‍♂️",
            superhero_woman: "🦸‍♀️",
            supervillain: "🦹",
            supervillain_man: "🦹‍♂️",
            supervillain_woman: "🦹‍♀️",
            surfer: "🏄",
            surfing_man: "🏄‍♂️",
            surfing_woman: "🏄‍♀️",
            suriname: "🇸🇷",
            sushi: "🍣",
            suspension_railway: "🚟",
            svalbard_jan_mayen: "🇸🇯",
            swan: "🦢",
            swaziland: "🇸🇿",
            sweat: "😓",
            sweat_drops: "💦",
            sweat_smile: "😅",
            sweden: "🇸🇪",
            sweet_potato: "🍠",
            swim_brief: "🩲",
            swimmer: "🏊",
            swimming_man: "🏊‍♂️",
            swimming_woman: "🏊‍♀️",
            switzerland: "🇨🇭",
            symbols: "🔣",
            synagogue: "🕍",
            syria: "🇸🇾",
            syringe: "💉",
            "t-rex": "🦖",
            taco: "🌮",
            tada: "🎉",
            taiwan: "🇹🇼",
            tajikistan: "🇹🇯",
            takeout_box: "🥡",
            tanabata_tree: "🎋",
            tangerine: "🍊",
            tanzania: "🇹🇿",
            taurus: "♉",
            taxi: "🚕",
            tea: "🍵",
            teacher: "🧑‍🏫",
            technologist: "🧑‍💻",
            teddy_bear: "🧸",
            telephone: "☎️",
            telephone_receiver: "📞",
            telescope: "🔭",
            tennis: "🎾",
            tent: "⛺",
            test_tube: "🧪",
            thailand: "🇹🇭",
            thermometer: "🌡️",
            thinking: "🤔",
            thought_balloon: "💭",
            thread: "🧵",
            three: "3️⃣",
            thumbsdown: "👎",
            thumbsup: "👍",
            ticket: "🎫",
            tickets: "🎟️",
            tiger: "🐯",
            tiger2: "🐅",
            timer_clock: "⏲️",
            timor_leste: "🇹🇱",
            tipping_hand_man: "💁‍♂️",
            tipping_hand_person: "💁",
            tipping_hand_woman: "💁‍♀️",
            tired_face: "😫",
            tm: "™️",
            togo: "🇹🇬",
            toilet: "🚽",
            tokelau: "🇹🇰",
            tokyo_tower: "🗼",
            tomato: "🍅",
            tonga: "🇹🇴",
            tongue: "👅",
            toolbox: "🧰",
            tooth: "🦷",
            top: "🔝",
            tophat: "🎩",
            tornado: "🌪️",
            tr: "🇹🇷",
            trackball: "🖲️",
            tractor: "🚜",
            traffic_light: "🚥",
            train: "🚋",
            train2: "🚆",
            tram: "🚊",
            triangular_flag_on_post: "🚩",
            triangular_ruler: "📐",
            trident: "🔱",
            trinidad_tobago: "🇹🇹",
            tristan_da_cunha: "🇹🇦",
            triumph: "😤",
            trolleybus: "🚎",
            trophy: "🏆",
            tropical_drink: "🍹",
            tropical_fish: "🐠",
            truck: "🚚",
            trumpet: "🎺",
            tshirt: "👕",
            tulip: "🌷",
            tumbler_glass: "🥃",
            tunisia: "🇹🇳",
            turkey: "🦃",
            turkmenistan: "🇹🇲",
            turks_caicos_islands: "🇹🇨",
            turtle: "🐢",
            tuvalu: "🇹🇻",
            tv: "📺",
            twisted_rightwards_arrows: "🔀",
            two: "2️⃣",
            two_hearts: "💕",
            two_men_holding_hands: "👬",
            two_women_holding_hands: "👭",
            u5272: "🈹",
            u5408: "🈴",
            u55b6: "🈺",
            u6307: "🈯",
            u6708: "🈷️",
            u6709: "🈶",
            u6e80: "🈵",
            u7121: "🈚",
            u7533: "🈸",
            u7981: "🈲",
            u7a7a: "🈳",
            uganda: "🇺🇬",
            uk: "🇬🇧",
            ukraine: "🇺🇦",
            umbrella: "☔",
            unamused: "😒",
            underage: "🔞",
            unicorn: "🦄",
            united_arab_emirates: "🇦🇪",
            united_nations: "🇺🇳",
            unlock: "🔓",
            up: "🆙",
            upside_down_face: "🙃",
            uruguay: "🇺🇾",
            us: "🇺🇸",
            us_outlying_islands: "🇺🇲",
            us_virgin_islands: "🇻🇮",
            uzbekistan: "🇺🇿",
            v: "✌️",
            vampire: "🧛",
            vampire_man: "🧛‍♂️",
            vampire_woman: "🧛‍♀️",
            vanuatu: "🇻🇺",
            vatican_city: "🇻🇦",
            venezuela: "🇻🇪",
            vertical_traffic_light: "🚦",
            vhs: "📼",
            vibration_mode: "📳",
            video_camera: "📹",
            video_game: "🎮",
            vietnam: "🇻🇳",
            violin: "🎻",
            virgo: "♍",
            volcano: "🌋",
            volleyball: "🏐",
            vomiting_face: "🤮",
            vs: "🆚",
            vulcan_salute: "🖖",
            waffle: "🧇",
            wales: "🏴󠁧󠁢󠁷󠁬󠁳󠁿",
            walking: "🚶",
            walking_man: "🚶‍♂️",
            walking_woman: "🚶‍♀️",
            wallis_futuna: "🇼🇫",
            waning_crescent_moon: "🌘",
            waning_gibbous_moon: "🌖",
            warning: "⚠️",
            wastebasket: "🗑️",
            watch: "⌚",
            water_buffalo: "🐃",
            water_polo: "🤽",
            watermelon: "🍉",
            wave: "👋",
            wavy_dash: "〰️",
            waxing_crescent_moon: "🌒",
            waxing_gibbous_moon: "🌔",
            wc: "🚾",
            weary: "😩",
            wedding: "💒",
            weight_lifting: "🏋️",
            weight_lifting_man: "🏋️‍♂️",
            weight_lifting_woman: "🏋️‍♀️",
            western_sahara: "🇪🇭",
            whale: "🐳",
            whale2: "🐋",
            wheel_of_dharma: "☸️",
            wheelchair: "♿",
            white_check_mark: "✅",
            white_circle: "⚪",
            white_flag: "🏳️",
            white_flower: "💮",
            white_haired_man: "👨‍🦳",
            white_haired_woman: "👩‍🦳",
            white_heart: "🤍",
            white_large_square: "⬜",
            white_medium_small_square: "◽",
            white_medium_square: "◻️",
            white_small_square: "▫️",
            white_square_button: "🔳",
            wilted_flower: "🥀",
            wind_chime: "🎐",
            wind_face: "🌬️",
            wine_glass: "🍷",
            wink: "😉",
            wolf: "🐺",
            woman: "👩",
            woman_artist: "👩‍🎨",
            woman_astronaut: "👩‍🚀",
            woman_cartwheeling: "🤸‍♀️",
            woman_cook: "👩‍🍳",
            woman_dancing: "💃",
            woman_facepalming: "🤦‍♀️",
            woman_factory_worker: "👩‍🏭",
            woman_farmer: "👩‍🌾",
            woman_firefighter: "👩‍🚒",
            woman_health_worker: "👩‍⚕️",
            woman_in_manual_wheelchair: "👩‍🦽",
            woman_in_motorized_wheelchair: "👩‍🦼",
            woman_judge: "👩‍⚖️",
            woman_juggling: "🤹‍♀️",
            woman_mechanic: "👩‍🔧",
            woman_office_worker: "👩‍💼",
            woman_pilot: "👩‍✈️",
            woman_playing_handball: "🤾‍♀️",
            woman_playing_water_polo: "🤽‍♀️",
            woman_scientist: "👩‍🔬",
            woman_shrugging: "🤷‍♀️",
            woman_singer: "👩‍🎤",
            woman_student: "👩‍🎓",
            woman_teacher: "👩‍🏫",
            woman_technologist: "👩‍💻",
            woman_with_headscarf: "🧕",
            woman_with_probing_cane: "👩‍🦯",
            woman_with_turban: "👳‍♀️",
            womans_clothes: "👚",
            womans_hat: "👒",
            women_wrestling: "🤼‍♀️",
            womens: "🚺",
            woozy_face: "🥴",
            world_map: "🗺️",
            worried: "😟",
            wrench: "🔧",
            wrestling: "🤼",
            writing_hand: "✍️",
            x: "❌",
            yarn: "🧶",
            yawning_face: "🥱",
            yellow_circle: "🟡",
            yellow_heart: "💛",
            yellow_square: "🟨",
            yemen: "🇾🇪",
            yen: "💴",
            yin_yang: "☯️",
            yo_yo: "🪀",
            yum: "😋",
            zambia: "🇿🇲",
            zany_face: "🤪",
            zap: "⚡",
            zebra: "🦓",
            zero: "0️⃣",
            zimbabwe: "🇿🇼",
            zipper_mouth_face: "🤐",
            zombie: "🧟",
            zombie_man: "🧟‍♂️",
            zombie_woman: "🧟‍♀️",
            zzz: "💤",
            atom: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/atom.png?v8">',
            basecamp: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/basecamp.png?v8">',
            basecampy: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/basecampy.png?v8">',
            bowtie: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/bowtie.png?v8">',
            electron: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/electron.png?v8">',
            feelsgood: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/feelsgood.png?v8">',
            finnadie: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/finnadie.png?v8">',
            goberserk: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/goberserk.png?v8">',
            godmode: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/godmode.png?v8">',
            hurtrealbad: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/hurtrealbad.png?v8">',
            neckbeard: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/neckbeard.png?v8">',
            octocat: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/octocat.png?v8">',
            rage1: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage1.png?v8">',
            rage2: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage2.png?v8">',
            rage3: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage3.png?v8">',
            rage4: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/rage4.png?v8">',
            shipit: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/shipit.png?v8">',
            suspect: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/suspect.png?v8">',
            trollface: '<img width="20" height="20" align="absmiddle" src="https://github.githubassets.com/images/icons/emoji/trollface.png?v8">',
            showdown:
                '<img width="20" height="20" align="absmiddle" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAS1BMVEX///8jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS0jJS3b1q3b1q3b1q3b1q3b1q3b1q3b1q3b1q0565CIAAAAGXRSTlMAQHCAYCCw/+DQwPCQUBAwoHCAEP+wwFBgS2fvBgAAAUZJREFUeAHs1cGy7BAUheFFsEDw/k97VTq3T6ge2EmdM+pvrP6Iwd74XV9Kb52xuMU4/uc1YNgZLFOeV8FGdhGrNk5SEgUyPxAEdj4LlMRDyhVAMVEa2M7TBSeVZAFPdqHgzSZJwPKgcLFLAooHDJo4EDCw4gAtBoJA5UFj4Ng5LOGLwVXZuoIlji/jeQHFk7+baHxrCjeUwB9+s88KndvlhcyBN5BSkYNQIVVb4pV+Npm7hhuKDs/uMP5KxT3WzSNNLIuuoDpMmuAVMruMSeDyQBi24DTr43LAY7ILA1QYaWkgfHzFthYYzg67SQsCbB8GhJUEGCtO9n0rSaCLxgJQjS/JSgMTg2eBDEHAJ+H350AsjYNYscrErgI2e/l+mdR967TCX/v6N0EhPECYCP0i+IAoYQOE8BogNhQMEMdrgAQWHaMAAGi5I5euoY9NAAAAAElFTkSuQmCC">',
        }),
        P.subParser("makehtml.blockGamut", function (e, a, r) {
            "use strict";
            return (
                (e = r.converter._dispatch("makehtml.blockGamut.before", e, a, r).getText()),
                (e = P.subParser("makehtml.blockQuotes")(e, a, r)),
                (e = P.subParser("makehtml.headers")(e, a, r)),
                (e = P.subParser("makehtml.horizontalRule")(e, a, r)),
                (e = P.subParser("makehtml.lists")(e, a, r)),
                (e = P.subParser("makehtml.codeBlocks")(e, a, r)),
                (e = P.subParser("makehtml.tables")(e, a, r)),
                (e = P.subParser("makehtml.hashHTMLBlocks")(e, a, r)),
                (e = P.subParser("makehtml.paragraphs")(e, a, r)),
                (e = r.converter._dispatch("makehtml.blockGamut.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.blockQuotes", function (e, a, r) {
            "use strict";
            e = r.converter._dispatch("makehtml.blockQuotes.before", e, a, r).getText();
            var t = /(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm;
            return (
                a.splitAdjacentBlockquotes && (t = /^ {0,3}>[\s\S]*?(?:\n\n)/gm),
                (e = (e += "\n\n").replace(t, function (e) {
                    return (
                        (e = (e = (e = e.replace(/^[ \t]*>[ \t]?/gm, "")).replace(/¨0/g, "")).replace(/^[ \t]+$/gm, "")),
                        (e = P.subParser("makehtml.githubCodeBlocks")(e, a, r)),
                        (e = (e = (e = P.subParser("makehtml.blockGamut")(e, a, r)).replace(/(^|\n)/g, "$1  ")).replace(/(\s*<pre>[^\r]+?<\/pre>)/gm, function (e, a) {
                            return a.replace(/^  /gm, "¨0").replace(/¨0/g, "");
                        })),
                        P.subParser("makehtml.hashBlock")("<blockquote>\n" + e + "\n</blockquote>", a, r)
                    );
                })),
                (e = r.converter._dispatch("makehtml.blockQuotes.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.codeBlocks", function (e, n, s) {
            "use strict";
            e = s.converter._dispatch("makehtml.codeBlocks.before", e, n, s).getText();
            return (
                (e = (e = (e += "¨0").replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g, function (e, a, r) {
                    var t = "\n",
                        a = P.subParser("makehtml.outdent")(a, n, s);
                    return (
                        (a = P.subParser("makehtml.encodeCode")(a, n, s)),
                        (a = "<pre><code>" + (a = (a = (a = P.subParser("makehtml.detab")(a, n, s)).replace(/^\n+/g, "")).replace(/\n+$/g, "")) + (t = n.omitExtraWLInCodeBlocks ? "" : t) + "</code></pre>"),
                        P.subParser("makehtml.hashBlock")(a, n, s) + r
                    );
                })).replace(/¨0/, "")),
                (e = s.converter._dispatch("makehtml.codeBlocks.after", e, n, s).getText())
            );
        }),
        P.subParser("makehtml.codeSpans", function (e, n, s) {
            "use strict";
            return (
                (e = (e = void 0 === (e = s.converter._dispatch("makehtml.codeSpans.before", e, n, s).getText()) ? "" : e).replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function (e, a, r, t) {
                    return (t = (t = t.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")), (t = a + "<code>" + (t = P.subParser("makehtml.encodeCode")(t, n, s)) + "</code>"), (t = P.subParser("makehtml.hashHTMLSpans")(t, n, s));
                })),
                (e = s.converter._dispatch("makehtml.codeSpans.after", e, n, s).getText())
            );
        }),
        P.subParser("makehtml.completeHTMLDocument", function (e, a, r) {
            "use strict";
            if (!a.completeHTMLDocument) return e;
            e = r.converter._dispatch("makehtml.completeHTMLDocument.before", e, a, r).getText();
            var t,
                n = "html",
                s = "<!DOCTYPE HTML>\n",
                i = "",
                o = '<meta charset="utf-8">\n',
                l = "",
                c = "";
            for (t in (void 0 !== r.metadata.parsed.doctype &&
                ((s = "<!DOCTYPE " + r.metadata.parsed.doctype + ">\n"), ("html" !== (n = r.metadata.parsed.doctype.toString().toLowerCase()) && "html5" !== n) || (o = '<meta charset="utf-8">')),
            r.metadata.parsed))
                if (r.metadata.parsed.hasOwnProperty(t))
                    switch (t.toLowerCase()) {
                        case "doctype":
                            break;
                        case "title":
                            i = "<title>" + r.metadata.parsed.title + "</title>\n";
                            break;
                        case "charset":
                            o = "html" === n || "html5" === n ? '<meta charset="' + r.metadata.parsed.charset + '">\n' : '<meta name="charset" content="' + r.metadata.parsed.charset + '">\n';
                            break;
                        case "language":
                        case "lang":
                            (l = ' lang="' + r.metadata.parsed[t] + '"'), (c += '<meta name="' + t + '" content="' + r.metadata.parsed[t] + '">\n');
                            break;
                        default:
                            c += '<meta name="' + t + '" content="' + r.metadata.parsed[t] + '">\n';
                    }
            return (e = s + "<html" + l + ">\n<head>\n" + i + o + c + "</head>\n<body>\n" + e.trim() + "\n</body>\n</html>"), (e = r.converter._dispatch("makehtml.completeHTMLDocument.after", e, a, r).getText());
        }),
        P.subParser("makehtml.detab", function (e, a, r) {
            "use strict";
            return (
                (e = (e = (e = (e = (e = (e = r.converter._dispatch("makehtml.detab.before", e, a, r).getText()).replace(/\t(?=\t)/g, "    ")).replace(/\t/g, "¨A¨B")).replace(/¨B(.+?)¨A/g, function (e, a) {
                    for (var r = a, t = 4 - (r.length % 4), n = 0; n < t; n++) r += " ";
                    return r;
                })).replace(/¨A/g, "    ")).replace(/¨B/g, "")),
                (e = r.converter._dispatch("makehtml.detab.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.ellipsis", function (e, a, r) {
            "use strict";
            return a.ellipsis ? ((e = (e = r.converter._dispatch("makehtml.ellipsis.before", e, a, r).getText()).replace(/\.\.\./g, "…")), r.converter._dispatch("makehtml.ellipsis.after", e, a, r).getText()) : e;
        }),
        P.subParser("makehtml.emoji", function (e, a, r) {
            "use strict";
            if (!a.emoji) return e;
            return (
                (e = (e = r.converter._dispatch("makehtml.emoji.before", e, a, r).getText()).replace(/:([\S]+?):/g, function (e, a) {
                    return P.helper.emojis.hasOwnProperty(a) ? P.helper.emojis[a] : e;
                })),
                (e = r.converter._dispatch("makehtml.emoji.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.encodeAmpsAndAngles", function (e, a, r) {
            "use strict";
            return (
                (e = (e = (e = (e = (e = r.converter._dispatch("makehtml.encodeAmpsAndAngles.before", e, a, r).getText()).replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&amp;")).replace(/<(?![a-z\/?$!])/gi, "&lt;")).replace(
                    /</g,
                    "&lt;"
                )).replace(/>/g, "&gt;")),
                (e = r.converter._dispatch("makehtml.encodeAmpsAndAngles.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.encodeBackslashEscapes", function (e, a, r) {
            "use strict";
            return (
                (e = (e = (e = r.converter._dispatch("makehtml.encodeBackslashEscapes.before", e, a, r).getText()).replace(/\\(\\)/g, P.helper.escapeCharactersCallback)).replace(
                    /\\([`*_{}\[\]()>#+.!~=|:-])/g,
                    P.helper.escapeCharactersCallback
                )),
                (e = r.converter._dispatch("makehtml.encodeBackslashEscapes.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.encodeCode", function (e, a, r) {
            "use strict";
            return (
                (e = (e = r.converter._dispatch("makehtml.encodeCode.before", e, a, r).getText())
                    .replace(/&/g, "&amp;")
                    .replace(/</g, "&lt;")
                    .replace(/>/g, "&gt;")
                    .replace(/([*_{}\[\]\\=~-])/g, P.helper.escapeCharactersCallback)),
                (e = r.converter._dispatch("makehtml.encodeCode.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.escapeSpecialCharsWithinTagAttributes", function (e, a, r) {
            "use strict";
            return (
                (e = (e = (e = r.converter._dispatch("makehtml.escapeSpecialCharsWithinTagAttributes.before", e, a, r).getText()).replace(/<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi, function (e) {
                    return e.replace(/(.)<\/?code>(?=.)/g, "$1`").replace(/([\\`*_~=|])/g, P.helper.escapeCharactersCallback);
                })).replace(/<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi, function (e) {
                    return e.replace(/([\\`*_~=|])/g, P.helper.escapeCharactersCallback);
                })),
                (e = r.converter._dispatch("makehtml.escapeSpecialCharsWithinTagAttributes.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.githubCodeBlocks", function (e, s, i) {
            "use strict";
            return s.ghCodeBlocks
                ? ((e = i.converter._dispatch("makehtml.githubCodeBlocks.before", e, s, i).getText()),
                  (e = (e = (e += "¨0").replace(/(?:^|\n) {0,3}(```+|~~~+) *([^\n\t`~]*)\n([\s\S]*?)\n {0,3}\1/g, function (e, a, r, t) {
                      var n = s.omitExtraWLInCodeBlocks ? "" : "\n";
                      return (
                          (r = r.trim().split(" ")[0]),
                          (t = P.subParser("makehtml.encodeCode")(t, s, i)),
                          (t = "<pre><code" + (r ? ' class="' + r + " language-" + r + '"' : "") + ">" + (t = (t = (t = P.subParser("makehtml.detab")(t, s, i)).replace(/^\n+/g, "")).replace(/\n+$/g, "")) + n + "</code></pre>"),
                          (t = P.subParser("makehtml.hashBlock")(t, s, i)),
                          "\n\n¨G" + (i.ghCodeBlocks.push({ text: e, codeblock: t }) - 1) + "G\n\n"
                      );
                  })).replace(/¨0/, "")),
                  i.converter._dispatch("makehtml.githubCodeBlocks.after", e, s, i).getText())
                : e;
        }),
        P.subParser("makehtml.hashBlock", function (e, a, r) {
            "use strict";
            return (
                (e = (e = r.converter._dispatch("makehtml.hashBlock.before", e, a, r).getText()).replace(/(^\n+|\n+$)/g, "")),
                (e = "\n\n¨K" + (r.gHtmlBlocks.push(e) - 1) + "K\n\n"),
                (e = r.converter._dispatch("makehtml.hashBlock.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.hashCodeTags", function (e, n, s) {
            "use strict";
            e = s.converter._dispatch("makehtml.hashCodeTags.before", e, n, s).getText();
            return (
                (e = P.helper.replaceRecursiveRegExp(
                    e,
                    function (e, a, r, t) {
                        r = r + P.subParser("makehtml.encodeCode")(a, n, s) + t;
                        return "¨C" + (s.gHtmlSpans.push(r) - 1) + "C";
                    },
                    "<code\\b[^>]*>",
                    "</code>",
                    "gim"
                )),
                (e = s.converter._dispatch("makehtml.hashCodeTags.after", e, n, s).getText())
            );
        }),
        P.subParser("makehtml.hashElement", function (e, a, r) {
            "use strict";
            return function (e, a) {
                return (a = (a = (a = a.replace(/\n\n/g, "\n")).replace(/^\n/, "")).replace(/\n+$/g, "")), (a = "\n\n¨K" + (r.gHtmlBlocks.push(a) - 1) + "K\n\n");
            };
        }),
        P.subParser("makehtml.hashHTMLBlocks", function (e, a, n) {
            "use strict";
            e = n.converter._dispatch("makehtml.hashHTMLBlocks.before", e, a, n).getText();
            function r(e, a, r, t) {
                return -1 !== r.search(/\bmarkdown\b/) && (e = r + n.converter.makeHtml(a) + t), "\n\n¨K" + (n.gHtmlBlocks.push(e) - 1) + "K\n\n";
            }
            var t = [
                "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",
                "details",
                "p",
            ];
            a.backslashEscapesHTMLTags &&
                (e = e.replace(/\\<(\/?[^>]+?)>/g, function (e, a) {
                    return "&lt;" + a + "&gt;";
                }));
            for (var s = 0; s < t.length; ++s)
                for (var i = new RegExp("^ {0,3}(<" + t[s] + "\\b[^>]*>)", "im"), o = "<" + t[s] + "\\b[^>]*>", l = "</" + t[s] + ">"; -1 !== (c = P.helper.regexIndexOf(e, i)); ) {
                    var c = P.helper.splitAtIndex(e, c),
                        u = P.helper.replaceRecursiveRegExp(c[1], r, o, l, "im");
                    if (u === c[1]) break;
                    e = c[0].concat(u);
                }
            return (
                (e = e.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, P.subParser("makehtml.hashElement")(e, a, n))),
                (e = (e = P.helper.replaceRecursiveRegExp(
                    e,
                    function (e) {
                        return "\n\n¨K" + (n.gHtmlBlocks.push(e) - 1) + "K\n\n";
                    },
                    "^ {0,3}\x3c!--",
                    "--\x3e",
                    "gm"
                )).replace(/\n\n( {0,3}<([?%])[^\r]*?\2>[ \t]*(?=\n{2,}))/g, P.subParser("makehtml.hashElement")(e, a, n))),
                (e = n.converter._dispatch("makehtml.hashHTMLBlocks.after", e, a, n).getText())
            );
        }),
        P.subParser("makehtml.hashHTMLSpans", function (e, a, r) {
            "use strict";
            return (
                (e = (e = (e = (e = (e = r.converter._dispatch("makehtml.hashHTMLSpans.before", e, a, r).getText()).replace(/<[^>]+?\/>/gi, function (e) {
                    return P.helper._hashHTMLSpan(e, r);
                })).replace(/<([^>]+?)>[\s\S]*?<\/\1>/g, function (e) {
                    return P.helper._hashHTMLSpan(e, r);
                })).replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g, function (e) {
                    return P.helper._hashHTMLSpan(e, r);
                })).replace(/<[^>]+?>/gi, function (e) {
                    return P.helper._hashHTMLSpan(e, r);
                })),
                (e = r.converter._dispatch("makehtml.hashHTMLSpans.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.unhashHTMLSpans", function (e, a, r) {
            "use strict";
            e = r.converter._dispatch("makehtml.unhashHTMLSpans.before", e, a, r).getText();
            for (var t = 0; t < r.gHtmlSpans.length; ++t) {
                for (var n = r.gHtmlSpans[t], s = 0; /¨C(\d+)C/.test(n); ) {
                    var i = RegExp.$1,
                        n = n.replace("¨C" + i + "C", r.gHtmlSpans[i]);
                    if (10 === s) {
                        console.error("maximum nesting of 10 spans reached!!!");
                        break;
                    }
                    ++s;
                }
                e = e.replace("¨C" + t + "C", n);
            }
            return (e = r.converter._dispatch("makehtml.unhashHTMLSpans.after", e, a, r).getText());
        }),
        P.subParser("makehtml.hashPreCodeTags", function (e, n, s) {
            "use strict";
            e = s.converter._dispatch("makehtml.hashPreCodeTags.before", e, n, s).getText();
            return (
                (e = P.helper.replaceRecursiveRegExp(
                    e,
                    function (e, a, r, t) {
                        r = r + P.subParser("makehtml.encodeCode")(a, n, s) + t;
                        return "\n\n¨G" + (s.ghCodeBlocks.push({ text: e, codeblock: r }) - 1) + "G\n\n";
                    },
                    "^ {0,3}<pre\\b[^>]*>\\s*<code\\b[^>]*>",
                    "^ {0,3}</code>\\s*</pre>",
                    "gim"
                )),
                (e = s.converter._dispatch("makehtml.hashPreCodeTags.after", e, n, s).getText())
            );
        }),
        P.subParser("makehtml.headers", function (e, n, s) {
            "use strict";
            e = s.converter._dispatch("makehtml.headers.before", e, n, s).getText();
            var i = isNaN(parseInt(n.headerLevelStart)) ? 1 : parseInt(n.headerLevelStart),
                a = n.smoothLivePreview ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm,
                r = n.smoothLivePreview ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm,
                a =
                    ((e = (e = e.replace(a, function (e, a) {
                        var r = P.subParser("makehtml.spanGamut")(a, n, s),
                            a = n.noHeaderId ? "" : ' id="' + o(a) + '"',
                            a = "<h" + i + a + ">" + r + "</h" + i + ">";
                        return P.subParser("makehtml.hashBlock")(a, n, s);
                    })).replace(r, function (e, a) {
                        var r = P.subParser("makehtml.spanGamut")(a, n, s),
                            a = n.noHeaderId ? "" : ' id="' + o(a) + '"',
                            t = i + 1,
                            a = "<h" + t + a + ">" + r + "</h" + t + ">";
                        return P.subParser("makehtml.hashBlock")(a, n, s);
                    })),
                    n.requireSpaceBeforeHeadingText ? /^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm : /^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm);
            function o(e) {
                var a = (e = n.customizedHeaderId && (a = e.match(/{([^{]+?)}\s*$/)) && a[1] ? a[1] : e),
                    e = P.helper.isString(n.prefixHeaderId) ? n.prefixHeaderId : !0 === n.prefixHeaderId ? "section-" : "";
                return (
                    n.rawPrefixHeaderId || (a = e + a),
                    (a = (n.ghCompatibleHeaderId
                        ? a
                              .replace(/ /g, "-")
                              .replace(/&amp;/g, "")
                              .replace(/¨T/g, "")
                              .replace(/¨D/g, "")
                              .replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g, "")
                        : n.rawHeaderId
                        ? a.replace(/ /g, "-").replace(/&amp;/g, "&").replace(/¨T/g, "¨").replace(/¨D/g, "$").replace(/["']/g, "-")
                        : a.replace(/[^\w]/g, "")
                    ).toLowerCase()),
                    n.rawPrefixHeaderId && (a = e + a),
                    s.hashLinkCounts[a] ? (a = a + "-" + s.hashLinkCounts[a]++) : (s.hashLinkCounts[a] = 1),
                    a
                );
            }
            return (
                (e = e.replace(a, function (e, a, r) {
                    var t = r,
                        t = (n.customizedHeaderId && (t = r.replace(/\s?{([^{]+?)}\s*$/, "")), P.subParser("makehtml.spanGamut")(t, n, s)),
                        r = n.noHeaderId ? "" : ' id="' + o(r) + '"',
                        a = i - 1 + a.length,
                        r = "<h" + a + r + ">" + t + "</h" + a + ">";
                    return P.subParser("makehtml.hashBlock")(r, n, s);
                })),
                (e = s.converter._dispatch("makehtml.headers.after", e, n, s).getText())
            );
        }),
        P.subParser("makehtml.horizontalRule", function (e, a, r) {
            "use strict";
            e = r.converter._dispatch("makehtml.horizontalRule.before", e, a, r).getText();
            var t = P.subParser("makehtml.hashBlock")("<hr />", a, r);
            return (
                (e = (e = (e = e.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm, t)).replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm, t)).replace(/^ {0,2}( ?_){3,}[ \t]*$/gm, t)), (e = r.converter._dispatch("makehtml.horizontalRule.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.images", function (e, l, h) {
            "use strict";
            function a(e, a, r, t, n, s, i, o) {
                return c(e, a, r, (t = P.helper.applyBaseUrl(l.relativePathBaseUrl, t)), n, s, 0, o);
            }
            function c(e, a, r, t, n, s, i, o) {
                var l = h.gUrls,
                    c = h.gTitles,
                    u = h.gDimensions;
                if (((r = r.toLowerCase()), (o = o || ""), -1 < e.search(/\(<?\s*>? ?(['"].*['"])?\)$/m))) t = "";
                else if ("" === t || null === t) {
                    if (((t = "#" + (r = "" !== r && null !== r ? r : a.toLowerCase().replace(/ ?\n/g, " "))), P.helper.isUndefined(l[r]))) return e;
                    (t = l[r]), P.helper.isUndefined(c[r]) || (o = c[r]), P.helper.isUndefined(u[r]) || ((n = u[r].width), (s = u[r].height));
                }
                a = a.replace(/"/g, "&quot;").replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback);
                e = '<img src="' + (t = t.replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)) + '" alt="' + a + '"';
                return (
                    o && P.helper.isString(o) && (e += ' title="' + (o = o.replace(/"/g, "&quot;").replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)) + '"'),
                    n && s && (e = e + (' width="' + (n = "*" === n ? "auto" : n)) + '" height="' + (s = "*" === s ? "auto" : s) + '"'),
                    (e += " />")
                );
            }
            return (
                (e = (e = (e = (e = (e = (e = h.converter._dispatch("makehtml.images.before", e, l, h).getText()).replace(/!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g, c)).replace(
                    /!\[([^\]]*?)][ \t]*()\([ \t]?<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,
                    function (e, a, r, t, n, s, i, o) {
                        return c(e, a, r, (t = t.replace(/\s/g, "")), n, s, 0, o);
                    }
                )).replace(/!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g, a)).replace(
                    /!\[([^\]]*?)][ \t]*()\([ \t]?<?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,
                    a
                )).replace(/!\[([^\[\]]+)]()()()()()/g, c)),
                (e = h.converter._dispatch("makehtml.images.after", e, l, h).getText())
            );
        }),
        P.subParser("makehtml.italicsAndBold", function (e, a, r) {
            "use strict";
            return (
                (e = r.converter._dispatch("makehtml.italicsAndBold.before", e, a, r).getText()),
                (e = (e = (e = (e = a.literalMidWordUnderscores
                    ? (e = (e = e.replace(/\b___(\S[\s\S]*?)___\b/g, function (e, a) {
                          return "<strong><em>" + a + "</em></strong>";
                      })).replace(/\b__(\S[\s\S]*?)__\b/g, function (e, a) {
                          return "<strong>" + a + "</strong>";
                      })).replace(/\b_(\S[\s\S]*?)_\b/g, function (e, a) {
                          return "<em>" + a + "</em>";
                      })
                    : (e = (e = e.replace(/___(\S[\s\S]*?)___/g, function (e, a) {
                          return /\S$/.test(a) ? "<strong><em>" + a + "</em></strong>" : e;
                      })).replace(/__(\S[\s\S]*?)__/g, function (e, a) {
                          return /\S$/.test(a) ? "<strong>" + a + "</strong>" : e;
                      })).replace(/_([^\s_][\s\S]*?)_/g, function (e, a) {
                          return /\S$/.test(a) ? "<em>" + a + "</em>" : e;
                      })).replace(/\*\*\*(\S[\s\S]*?)\*\*\*/g, function (e, a) {
                    return /\S$/.test(a) ? "<strong><em>" + a + "</em></strong>" : e;
                })).replace(/\*\*(\S[\s\S]*?)\*\*/g, function (e, a) {
                    return /\S$/.test(a) ? "<strong>" + a + "</strong>" : e;
                })).replace(/\*([^\s*][\s\S]*?)\*/g, function (e, a) {
                    return /\S$/.test(a) ? "<em>" + a + "</em>" : e;
                })),
                (e = r.converter._dispatch("makehtml.italicsAndBold.after", e, a, r).getText())
            );
        }),
        (s = "makehtml.links"),
        P.subParser("makehtml.links", function (e, a, r) {
            return (
                (e = r.converter._dispatch(s + ".start", e, a, r).getText()),
                (e = P.subParser("makehtml.links.reference")(e, a, r)),
                (e = P.subParser("makehtml.links.inline")(e, a, r)),
                (e = P.subParser("makehtml.links.referenceShortcut")(e, a, r)),
                (e = P.subParser("makehtml.links.angleBrackets")(e, a, r)),
                (e = (e = (e = P.subParser("makehtml.links.ghMentions")(e, a, r)).replace(/<a\s[^>]*>[\s\S]*<\/a>/g, function (e) {
                    return P.helper._hashHTMLSpan(e, r);
                })).replace(/<img\s[^>]*\/?>/g, function (e) {
                    return P.helper._hashHTMLSpan(e, r);
                })),
                (e = P.subParser("makehtml.links.naked")(e, a, r)),
                (e = r.converter._dispatch(s + ".end", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.links.inline", function (e, a, r) {
            var t = void 0 + ".inline",
                n = /\[(.*?)]()()()()\(<? ?>? ?(?:["'](.*)["'])?\)/g,
                s = /\[((?:\[[^\]]*]|[^\[\]])*)]()\s?\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g,
                i = /\[([\S ]*?)]\s?()\( *<?([^\s'"]*?(?:\([\S]*?\)[\S]*?)?)>?\s*(?:()(['"])(.*?)\5)? *\)/g,
                o = /\[([\S ]*?)]\s?()\( *<?([^\s'"]*?(?:\([\S]*?\)[\S]*?)?)>?\s+()()\((.*?)\) *\)/g;
            return (
                (e = (e = (e = (e = (e = r.converter._dispatch(t + ".start", e, a, r).getText()).replace(n, l(n, t, a, r, !0))).replace(s, l(s, t, a, r))).replace(i, l(i, t, a, r))).replace(o, l(o, t, a, r))),
                (e = r.converter._dispatch(t + ".end", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.links.reference", function (e, a, r) {
            var t = void 0 + ".reference",
                n = /\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]()()()()/g;
            return (e = (e = r.converter._dispatch(t + ".start", e, a, r).getText()).replace(n, i(n, t, a, r))), (e = r.converter._dispatch(t + ".end", e, a, r).getText());
        }),
        P.subParser("makehtml.links.referenceShortcut", function (e, a, r) {
            var t = void 0 + ".referenceShortcut",
                n = /\[([^\[\]]+)]()()()()()/g;
            return (e = (e = r.converter._dispatch(t + ".start", e, a, r).getText()).replace(n, i(n, t, a, r))), (e = r.converter._dispatch(t + ".end", e, a, r).getText());
        }),
        P.subParser("makehtml.links.ghMentions", function (e, s, i) {
            var o = void 0 + "ghMentions";
            if (!s.ghMentions) return e;
            e = i.converter._dispatch(o + ".start", e, s, i).getText();
            var l = /(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d._-]+?[a-z\d]+)*))/gi;
            return (
                (e = e.replace(l, function (e, a, r, t, n) {
                    if ("\\" === r) return a + t;
                    if (!P.helper.isString(s.ghMentionsLink)) throw new Error("ghMentionsLink option must be a string");
                    r = s.ghMentionsLink.replace(/{u}/g, n);
                    return a + b(_(l, o + ".captureStart", e, t, null, r, null, s, i), s, i);
                })),
                (e = i.converter._dispatch(o + ".end", e, s, i).getText())
            );
        }),
        P.subParser("makehtml.links.angleBrackets", function (e, t, n) {
            var s = "makehtml.links.angleBrackets",
                i = ((e = n.converter._dispatch(s + ".start", e, t, n).getText()), /<(((?:https?|ftp):\/\/|www\.)[^'">\s]+)>/gi),
                o =
                    ((e = e.replace(i, function (e, a, r) {
                        return b(_(i, s + ".captureStart", e, a, null, (a = "www." === r ? "http://" + a : a), null, t, n), t, n);
                    })),
                    /<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi);
            return (
                (e = e.replace(o, function (e, a) {
                    var r = "mailto:";
                    return (
                        (a = P.subParser("makehtml.unescapeSpecialChars")(a, t, n)),
                        t.encodeEmails ? ((r = P.helper.encodeEmailAddress(r + a)), (a = P.helper.encodeEmailAddress(a))) : (r += a),
                        b(_(o, s + ".captureStart", e, a, null, r, null, t, n), t, n)
                    );
                })),
                (e = n.converter._dispatch(s + ".end", e, t, n).getText())
            );
        }),
        P.subParser("makehtml.links.naked", function (e, u, h) {
            if (!u.simplifiedAutoLink) return e;
            var m = "makehtml.links.naked",
                d = ((e = h.converter._dispatch(m + ".start", e, u, h).getText()), /([_*~]*?)(((?:https?|ftp):\/\/|www\.)[^\s<>"'`´.-][^\s<>"'`´]*?\.[a-z\d.]+[^\s<>"']*)\1/gi),
                n =
                    ((e = e.replace(d, function (e, a, r, t) {
                        for (var n = "", s = r.length - 1; 0 <= s; --s) {
                            var i = r.charAt(s);
                            if (/[_*~,;:.!?]/.test(i)) (r = r.slice(0, -1)), (n = i + n);
                            else if (/\)/.test(i)) {
                                var o = r.match(/\(/g) || [],
                                    l = r.match(/\)/g);
                                if (!(o.length < l.length)) break;
                                (r = r.slice(0, -1)), (n = i + n);
                            } else {
                                if (!/]/.test(i)) break;
                                (o = r.match(/\[/g) || []), (l = r.match(/\]/g));
                                if (!(o.length < l.length)) break;
                                (r = r.slice(0, -1)), (n = i + n);
                            }
                        }
                        var c = r;
                        return (
                            (r = "www." === t ? "http://" + r : r), (c = c.replace(P.helper.regexes.asteriskDashTildeAndColon, P.helper.escapeCharactersCallback)), a + b(_(d, m + ".captureStart", e, c, null, r, null, u, h), u, h) + n + a
                        );
                    })),
                    /(^|\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?=$|\s)/gim);
            return (
                (e = e.replace(n, function (e, a, r) {
                    var t = "mailto:";
                    return (
                        (r = P.subParser("makehtml.unescapeSpecialChars")(r, u, h)),
                        u.encodeEmails ? ((t = P.helper.encodeEmailAddress(t + r)), (r = P.helper.encodeEmailAddress(r))) : (t += r),
                        a + b(_(n, m + ".captureStart", e, r, null, t, null, u, h), u, h)
                    );
                })),
                (e = h.converter._dispatch(m + ".end", e, u, h).getText())
            );
        }),
        P.subParser("makehtml.lists", function (e, g, p) {
            "use strict";
            function h(e, a) {
                p.gListLevel++, (e = e.replace(/\n{2,}$/, "\n"));
                var r = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[([xX ])])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm,
                    d = /\n[ \t]*\n(?!¨0)/.test((e += "¨0"));
                return (
                    g.disableForced4SpacesIndentedSublists && (r = /(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[([xX ])])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm),
                    (e = (e = e.replace(r, function (e, a, r, t, n, s, i) {
                        i = i && "" !== i.trim();
                        var n = P.subParser("makehtml.outdent")(n, g, p),
                            o = "";
                        if (
                            (s &&
                                g.tasklists &&
                                ((o = ' class="task-list-item'),
                                g.moreStyling && (o += i ? " task-list-item-complete" : ""),
                                (o += '" style="list-style-type: none;"'),
                                (n = n.replace(/^[ \t]*\[([xX ])?]/m, function () {
                                    var e = '<input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;"';
                                    return i && (e += " checked"), (e += ">");
                                }))),
                            (n = n.replace(/^([-*+]|\d\.)[ \t]+[\S\n ]*/g, function (e) {
                                return "¨A" + e;
                            })),
                            /^#+.+\n.+/.test(n) && (n = n.replace(/^(#+.+)$/m, "$1\n")),
                            a || -1 < n.search(/\n{2,}/))
                        ) {
                            (n = P.subParser("makehtml.githubCodeBlocks")(n, g, p)),
                                (n = P.subParser("makehtml.blockQuotes")(n, g, p)),
                                (n = P.subParser("makehtml.headers")(n, g, p)),
                                (n = P.subParser("makehtml.lists")(n, g, p)),
                                (n = P.subParser("makehtml.codeBlocks")(n, g, p)),
                                (n = P.subParser("makehtml.tables")(n, g, p));
                            for (var l = (n = (n = (n = P.subParser("makehtml.hashHTMLBlocks")(n, g, p)).replace(/^\n+/g, "")).replace(/\n+$/g, "")).split(/\n{2,}/g), c = [], u = l.length, h = 0; h < u; h++) {
                                var m = l[h];
                                0 <= m.search(/¨([KG])(\d+)\1/g) ? c.push(m) : 0 <= m.search(/\S/) && ((m = (m = P.subParser("makehtml.spanGamut")(m, g, p)).replace(/^([ \t]*)/g, "<p>")), (m += "</p>"), c.push(m));
                            }
                            n = (n = (n = c.join("\n")).replace(/^\n+/g, "")).replace(/\n+$/g, "");
                        } else (n = (n = P.subParser("makehtml.lists")(n, g, p)).replace(/\n$/, "")), (n = (n = P.subParser("makehtml.hashHTMLBlocks")(n, g, p)).replace(/\n\n+/g, "\n\n")), (n = (d ? P.subParser("makehtml.paragraphs") : P.subParser("makehtml.spanGamut"))(n, g, p));
                        return (n = "<li" + o + ">" + (n = n.replace("¨A", "")) + "</li>\n");
                    })).replace(/¨0/g, "")),
                    p.gListLevel--,
                    (e = a ? e.replace(/\s+$/, "") : e)
                );
            }
            function m(e, a) {
                if ("ol" === a) {
                    a = e.match(/^ *(\d+)\./);
                    if (a && "1" !== a[1]) return ' start="' + a[1] + '"';
                }
                return "";
            }
            function n(n, s, i) {
                var e,
                    o = g.disableForced4SpacesIndentedSublists ? /^ ?\d+\.[ \t]/gm : /^ {0,3}\d+\.[ \t]/gm,
                    l = g.disableForced4SpacesIndentedSublists ? /^ ?[*+-][ \t]/gm : /^ {0,3}[*+-][ \t]/gm,
                    c = "ul" === s ? o : l,
                    u = "";
                return (
                    -1 !== n.search(c)
                        ? (function e(a) {
                              var r = a.search(c),
                                  t = m(n, s);
                              -1 !== r
                                  ? ((u += "\n\n<" + s + t + ">\n" + h(a.slice(0, r), !!i) + "</" + s + ">\n"), (c = "ul" === (s = "ul" === s ? "ol" : "ul") ? o : l), e(a.slice(r)))
                                  : (u += "\n\n<" + s + t + ">\n" + h(a, !!i) + "</" + s + ">\n");
                          })(n)
                        : ((e = m(n, s)), (u = "\n\n<" + s + e + ">\n" + h(n, !!i) + "</" + s + ">\n")),
                    u
                );
            }
            return (
                (e = p.converter._dispatch("lists.before", e, g, p).getText()),
                (e += "¨0"),
                (e = (e = p.gListLevel
                    ? e.replace(/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, function (e, a, r) {
                          return n(a, -1 < r.search(/[*+-]/g) ? "ul" : "ol", !0);
                      })
                    : e.replace(/(\n\n|^\n?)(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, function (e, a, r, t) {
                          return n(r, -1 < t.search(/[*+-]/g) ? "ul" : "ol", !1);
                      })).replace(/¨0/, "")),
                (e = p.converter._dispatch("makehtml.lists.after", e, g, p).getText())
            );
        }),
        P.subParser("makehtml.metadata", function (e, a, t) {
            "use strict";
            return a.metadata
                ? ((e = (e = (e = (e = t.converter._dispatch("makehtml.metadata.before", e, a, t).getText()).replace(/^\s*«««+(\S*?)\n([\s\S]+?)\n»»»+\n/, function (e, a, r) {
                      return n(r), "¨M";
                  })).replace(/^\s*---+(\S*?)\n([\s\S]+?)\n---+\n/, function (e, a, r) {
                      return a && (t.metadata.format = a), n(r), "¨M";
                  })).replace(/¨M/g, "")),
                  t.converter._dispatch("makehtml.metadata.after", e, a, t).getText())
                : e;
            function n(e) {
                (e = (e = (e = (t.metadata.raw = e).replace(/&/g, "&amp;").replace(/"/g, "&quot;")).replace(/¨D/g, "$$").replace(/¨T/g, "¨")).replace(/\n {4}/g, " ")).replace(/^([\S ]+): +([\s\S]+?)$/gm, function (e, a, r) {
                    return (t.metadata.parsed[a] = r), "";
                });
            }
        }),
        P.subParser("makehtml.outdent", function (e, a, r) {
            "use strict";
            return (e = (e = (e = r.converter._dispatch("makehtml.outdent.before", e, a, r).getText()).replace(/^(\t|[ ]{1,4})/gm, "¨0")).replace(/¨0/g, "")), (e = r.converter._dispatch("makehtml.outdent.after", e, a, r).getText());
        }),
        P.subParser("makehtml.paragraphs", function (e, a, r) {
            "use strict";
            for (var t = (e = (e = (e = r.converter._dispatch("makehtml.paragraphs.before", e, a, r).getText()).replace(/^\n+/g, "")).replace(/\n+$/g, "")).split(/\n{2,}/g), n = [], s = t.length, i = 0; i < s; i++) {
                var o = t[i];
                0 <= o.search(/¨(K|G)(\d+)\1/g) ? n.push(o) : 0 <= o.search(/\S/) && ((o = (o = P.subParser("makehtml.spanGamut")(o, a, r)).replace(/^([ \t]*)/g, "<p>")), (o += "</p>"), n.push(o));
            }
            for (s = n.length, i = 0; i < s; i++) {
                for (var l = "", c = n[i], u = !1; /¨(K|G)(\d+)\1/.test(c); ) {
                    var h = RegExp.$1,
                        m = RegExp.$2;
                    (l = (l = "K" === h ? r.gHtmlBlocks[m] : u ? P.subParser("makehtml.encodeCode")(r.ghCodeBlocks[m].text, a, r) : r.ghCodeBlocks[m].codeblock).replace(/\$/g, "$$$$")),
                        (c = c.replace(/(\n\n)?¨(K|G)\d+\2(\n\n)?/, l)),
                        /^<pre\b[^>]*>\s*<code\b[^>]*>/.test(c) && (u = !0);
                }
                n[i] = c;
            }
            return (e = (e = (e = n.join("\n")).replace(/^\n+/g, "")).replace(/\n+$/g, "")), r.converter._dispatch("makehtml.paragraphs.after", e, a, r).getText();
        }),
        P.subParser("makehtml.runExtension", function (e, a, r, t) {
            "use strict";
            return e.filter ? (a = e.filter(a, t.converter, r)) : e.regex && ((t = e.regex) instanceof RegExp || (t = new RegExp(t, "g")), (a = a.replace(t, e.replace))), a;
        }),
        P.subParser("makehtml.spanGamut", function (e, a, r) {
            "use strict";
            return (
                (e = r.converter._dispatch("makehtml.span.before", e, a, r).getText()),
                (e = P.subParser("makehtml.codeSpans")(e, a, r)),
                (e = P.subParser("makehtml.escapeSpecialCharsWithinTagAttributes")(e, a, r)),
                (e = P.subParser("makehtml.encodeBackslashEscapes")(e, a, r)),
                (e = P.subParser("makehtml.images")(e, a, r)),
                (e = r.converter._dispatch("smakehtml.links.before", e, a, r).getText()),
                (e = P.subParser("makehtml.links")(e, a, r)),
                (e = r.converter._dispatch("smakehtml.links.after", e, a, r).getText()),
                (e = P.subParser("makehtml.emoji")(e, a, r)),
                (e = P.subParser("makehtml.underline")(e, a, r)),
                (e = P.subParser("makehtml.italicsAndBold")(e, a, r)),
                (e = P.subParser("makehtml.strikethrough")(e, a, r)),
                (e = P.subParser("makehtml.ellipsis")(e, a, r)),
                (e = P.subParser("makehtml.hashHTMLSpans")(e, a, r)),
                (e = P.subParser("makehtml.encodeAmpsAndAngles")(e, a, r)),
                a.simpleLineBreaks ? /\n\n¨K/.test(e) || (e = e.replace(/\n+/g, "<br />\n")) : (e = e.replace(/  +\n/g, "<br />\n")),
                (e = r.converter._dispatch("makehtml.spanGamut.after", e, a, r).getText())
            );
        }),
        P.subParser("makehtml.strikethrough", function (e, a, r) {
            "use strict";
            return (
                a.strikethrough &&
                    ((e = (e = r.converter._dispatch("makehtml.strikethrough.before", e, a, r).getText()).replace(/(?:~){2}([\s\S]+?)(?:~){2}/g, function (e, a) {
                        return "<del>" + a + "</del>";
                    })),
                    (e = r.converter._dispatch("makehtml.strikethrough.after", e, a, r).getText())),
                e
            );
        }),
        P.subParser("makehtml.stripLinkDefinitions", function (o, l, c) {
            "use strict";
            function e(e, a, r, t, n, s, i) {
                return (
                    (a = a.toLowerCase()),
                    o.toLowerCase().split(a).length - 1 < 2
                        ? e
                        : (r.match(/^data:.+?\/.+?;base64,/) ? (c.gUrls[a] = r.replace(/\s/g, "")) : ((r = P.helper.applyBaseUrl(l.relativePathBaseUrl, r)), (c.gUrls[a] = P.subParser("makehtml.encodeAmpsAndAngles")(r, l, c))),
                          s ? s + i : (i && (c.gTitles[a] = i.replace(/"|'/g, "&quot;")), l.parseImgDimensions && t && n && (c.gDimensions[a] = { width: t, height: n }), ""))
                );
            }
            return (o = (o = (o = (o += "¨0").replace(
                /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*<?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm,
                e
            )).replace(/^ {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, e)).replace(/¨0/, ""));
        }),
        P.subParser("makehtml.tables", function (e, y, x) {
            "use strict";
            if (!y.tables) return e;
            function a(e) {
                for (var a = e.split("\n"), r = 0; r < a.length; ++r)
                    /^ {0,3}\|/.test(a[r]) && (a[r] = a[r].replace(/^ {0,3}\|/, "")), /\|[ \t]*$/.test(a[r]) && (a[r] = a[r].replace(/\|[ \t]*$/, "")), (a[r] = P.subParser("makehtml.codeSpans")(a[r], y, x));
                var t,
                    n,
                    s,
                    i,
                    o,
                    l = a[0].split("|").map(function (e) {
                        return e.trim();
                    }),
                    c = a[1].split("|").map(function (e) {
                        return e.trim();
                    }),
                    u = [],
                    h = [],
                    m = [],
                    d = [];
                for (a.shift(), a.shift(), r = 0; r < a.length; ++r)
                    "" !== a[r].trim() &&
                        u.push(
                            a[r].split("|").map(function (e) {
                                return e.trim();
                            })
                        );
                if (l.length < c.length) return e;
                for (r = 0; r < c.length; ++r)
                    m.push(((t = c[r]), /^:[ \t]*--*$/.test(t) ? ' style="text-align:left;"' : /^--*[ \t]*:[ \t]*$/.test(t) ? ' style="text-align:right;"' : /^:[ \t]*--*[ \t]*:$/.test(t) ? ' style="text-align:center;"' : ""));
                for (r = 0; r < l.length; ++r)
                    P.helper.isUndefined(m[r]) && (m[r] = ""),
                        h.push(
                            ((n = l[r]),
                            (s = m[r]),
                            void 0,
                            (i = ""),
                            (n = n.trim()),
                            "<th" + (i = y.tablesHeaderId || y.tableHeaderId ? ' id="' + n.replace(/ /g, "_").toLowerCase() + '"' : i) + s + ">" + (n = P.subParser("makehtml.spanGamut")(n, y, x)) + "</th>\n")
                        );
                for (r = 0; r < u.length; ++r) {
                    for (var g = [], p = 0; p < h.length; ++p) P.helper.isUndefined(u[r][p]), g.push(((o = u[r][p]), "<td" + m[p] + ">" + P.subParser("makehtml.spanGamut")(o, y, x) + "</td>\n"));
                    d.push(g);
                }
                for (var _ = h, b = d, f = "<table>\n<thead>\n<tr>\n", k = _.length, w = 0; w < k; ++w) f += _[w];
                for (f += "</tr>\n</thead>\n<tbody>\n", w = 0; w < b.length; ++w) {
                    f += "<tr>\n";
                    for (var v = 0; v < k; ++v) f += b[w][v];
                    f += "</tr>\n";
                }
                return (f += "</tbody>\n</table>\n");
            }
            return (
                (e = (e = (e = (e = x.converter._dispatch("makehtml.tables.before", e, y, x).getText()).replace(/\\(\|)/g, P.helper.escapeCharactersCallback)).replace(
                    /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*[-=]{2,}[\s\S]+?(?:\n\n|¨0)/gm,
                    a
                )).replace(/^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*[-=]{2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm, a)),
                (e = x.converter._dispatch("makehtml.tables.after", e, y, x).getText())
            );
        }),
        P.subParser("makehtml.underline", function (e, a, r) {
            "use strict";
            return a.underline
                ? ((e = r.converter._dispatch("makehtml.underline.before", e, a, r).getText()),
                  (e = (e = a.literalMidWordUnderscores
                      ? (e = e.replace(/\b___(\S[\s\S]*?)___\b/g, function (e, a) {
                            return "<u>" + a + "</u>";
                        })).replace(/\b__(\S[\s\S]*?)__\b/g, function (e, a) {
                            return "<u>" + a + "</u>";
                        })
                      : (e = e.replace(/___(\S[\s\S]*?)___/g, function (e, a) {
                            return /\S$/.test(a) ? "<u>" + a + "</u>" : e;
                        })).replace(/__(\S[\s\S]*?)__/g, function (e, a) {
                            return /\S$/.test(a) ? "<u>" + a + "</u>" : e;
                        })).replace(/(_)/g, P.helper.escapeCharactersCallback)),
                  r.converter._dispatch("makehtml.underline.after", e, a, r).getText())
                : e;
        }),
        P.subParser("makehtml.unescapeSpecialChars", function (e, a, r) {
            "use strict";
            return (
                (e = (e = r.converter._dispatch("makehtml.unescapeSpecialChars.before", e, a, r).getText()).replace(/¨E(\d+)E/g, function (e, a) {
                    a = parseInt(a);
                    return String.fromCharCode(a);
                })),
                (e = r.converter._dispatch("makehtml.unescapeSpecialChars.after", e, a, r).getText())
            );
        }),
        P.subParser("makeMarkdown.blockquote", function (e, a) {
            "use strict";
            var r = "";
            if (e.hasChildNodes())
                for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) {
                    var i = P.subParser("makeMarkdown.node")(t[s], a);
                    "" !== i && (r += i);
                }
            return (r = "> " + (r = r.trim()).split("\n").join("\n> "));
        }),
        P.subParser("makeMarkdown.break", function () {
            "use strict";
            return "  \n";
        }),
        P.subParser("makeMarkdown.codeBlock", function (e, a) {
            "use strict";
            var r = e.getAttribute("language"),
                e = e.getAttribute("precodenum");
            return "```" + r + "\n" + a.preList[e] + "\n```";
        }),
        P.subParser("makeMarkdown.codeSpan", function (e) {
            "use strict";
            return "`" + e.innerHTML + "`";
        }),
        P.subParser("makeMarkdown.emphasis", function (e, a) {
            "use strict";
            var r = "";
            if (e.hasChildNodes()) {
                r += "*";
                for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
                r += "*";
            }
            return r;
        }),
        P.subParser("makeMarkdown.header", function (e, a, r) {
            "use strict";
            var r = new Array(r + 1).join("#"),
                t = "";
            if (e.hasChildNodes()) for (var t = r + " ", n = e.childNodes, s = n.length, i = 0; i < s; ++i) t += P.subParser("makeMarkdown.node")(n[i], a);
            return t;
        }),
        P.subParser("makeMarkdown.hr", function () {
            "use strict";
            return "---";
        }),
        P.subParser("makeMarkdown.image", function (e) {
            "use strict";
            var a = "";
            return (
                e.hasAttribute("src") &&
                    ((a = (a += "![" + e.getAttribute("alt") + "](") + "<" + e.getAttribute("src") + ">"),
                    e.hasAttribute("width") && e.hasAttribute("height") && (a += " =" + e.getAttribute("width") + "x" + e.getAttribute("height")),
                    e.hasAttribute("title") && (a += ' "' + e.getAttribute("title") + '"'),
                    (a += ")")),
                a
            );
        }),
        P.subParser("makeMarkdown.input", function (e, a) {
            "use strict";
            for (var r = "", t = (null !== e.getAttribute("checked") ? (r += "[x]") : (r += "[ ]"), e.childNodes), n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
            return r;
        }),
        P.subParser("makeMarkdown.links", function (e, a) {
            "use strict";
            var r = "";
            if (e.hasChildNodes() && e.hasAttribute("href")) {
                for (var t = e.childNodes, n = t.length, r = "[", s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
                (r = (r += "](") + ("<" + e.getAttribute("href") + ">")), e.hasAttribute("title") && (r += ' "' + e.getAttribute("title") + '"'), (r += ")");
            }
            return r;
        }),
        P.subParser("makeMarkdown.list", function (e, a, r) {
            "use strict";
            var t = "";
            if (!e.hasChildNodes()) return "";
            for (var n = e.childNodes, s = n.length, i = e.getAttribute("start") || 1, o = 0; o < s; ++o)
                void 0 !== n[o].tagName && "li" === n[o].tagName.toLowerCase() && ((t += ("ol" === r ? i.toString() + ". " : "- ") + P.subParser("makeMarkdown.listItem")(n[o], a)), ++i);
            return t.trim();
        }),
        P.subParser("makeMarkdown.listItem", function (e, a) {
            "use strict";
            for (var r = "", t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
            return (
                /\n$/.test(r)
                    ? (r = r
                          .split("\n")
                          .join("\n    ")
                          .replace(/^ {4}$/gm, "")
                          .replace(/\n\n+/g, "\n\n"))
                    : (r += "\n"),
                r
            );
        }),
        P.subParser("makeMarkdown.node", function (e, a, r) {
            "use strict";
            r = r || !1;
            var t = "";
            if (3 === e.nodeType) return P.subParser("makeMarkdown.txt")(e, a);
            if (8 === e.nodeType) return "\x3c!--" + e.data + "--\x3e\n\n";
            if (1 !== e.nodeType) return "";
            switch (e.tagName.toLowerCase()) {
                case "h1":
                    r || (t = P.subParser("makeMarkdown.header")(e, a, 1) + "\n\n");
                    break;
                case "h2":
                    r || (t = P.subParser("makeMarkdown.header")(e, a, 2) + "\n\n");
                    break;
                case "h3":
                    r || (t = P.subParser("makeMarkdown.header")(e, a, 3) + "\n\n");
                    break;
                case "h4":
                    r || (t = P.subParser("makeMarkdown.header")(e, a, 4) + "\n\n");
                    break;
                case "h5":
                    r || (t = P.subParser("makeMarkdown.header")(e, a, 5) + "\n\n");
                    break;
                case "h6":
                    r || (t = P.subParser("makeMarkdown.header")(e, a, 6) + "\n\n");
                    break;
                case "p":
                    r || (t = P.subParser("makeMarkdown.paragraph")(e, a) + "\n\n");
                    break;
                case "blockquote":
                    r || (t = P.subParser("makeMarkdown.blockquote")(e, a) + "\n\n");
                    break;
                case "hr":
                    r || (t = P.subParser("makeMarkdown.hr")(e, a) + "\n\n");
                    break;
                case "ol":
                    r || (t = P.subParser("makeMarkdown.list")(e, a, "ol") + "\n\n");
                    break;
                case "ul":
                    r || (t = P.subParser("makeMarkdown.list")(e, a, "ul") + "\n\n");
                    break;
                case "precode":
                    r || (t = P.subParser("makeMarkdown.codeBlock")(e, a) + "\n\n");
                    break;
                case "pre":
                    r || (t = P.subParser("makeMarkdown.pre")(e, a) + "\n\n");
                    break;
                case "table":
                    r || (t = P.subParser("makeMarkdown.table")(e, a) + "\n\n");
                    break;
                case "code":
                    t = P.subParser("makeMarkdown.codeSpan")(e, a);
                    break;
                case "em":
                case "i":
                    t = P.subParser("makeMarkdown.emphasis")(e, a);
                    break;
                case "strong":
                case "b":
                    t = P.subParser("makeMarkdown.strong")(e, a);
                    break;
                case "del":
                    t = P.subParser("makeMarkdown.strikethrough")(e, a);
                    break;
                case "a":
                    t = P.subParser("makeMarkdown.links")(e, a);
                    break;
                case "img":
                    t = P.subParser("makeMarkdown.image")(e, a);
                    break;
                case "br":
                    t = P.subParser("makeMarkdown.break")(e, a);
                    break;
                case "input":
                    t = P.subParser("makeMarkdown.input")(e, a);
                    break;
                default:
                    t = e.outerHTML + "\n\n";
            }
            return t;
        }),
        P.subParser("makeMarkdown.paragraph", function (e, a) {
            "use strict";
            var r = "";
            if (e.hasChildNodes()) for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
            return (r = r.trim());
        }),
        P.subParser("makeMarkdown.pre", function (e, a) {
            "use strict";
            e = e.getAttribute("prenum");
            return "<pre>" + a.preList[e] + "</pre>";
        }),
        P.subParser("makeMarkdown.strikethrough", function (e, a) {
            "use strict";
            var r = "";
            if (e.hasChildNodes()) {
                r += "~~";
                for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
                r += "~~";
            }
            return r;
        }),
        P.subParser("makeMarkdown.strong", function (e, a) {
            "use strict";
            var r = "";
            if (e.hasChildNodes()) {
                r += "**";
                for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a);
                r += "**";
            }
            return r;
        }),
        P.subParser("makeMarkdown.table", function (e, a) {
            "use strict";
            for (var r = "", t = [[], []], n = e.querySelectorAll("thead>tr>th"), s = e.querySelectorAll("tbody>tr"), i = 0; i < n.length; ++i) {
                var o = P.subParser("makeMarkdown.tableCell")(n[i], a),
                    l = "---";
                if (n[i].hasAttribute("style"))
                    switch (n[i].getAttribute("style").toLowerCase().replace(/\s/g, "")) {
                        case "text-align:left;":
                            l = ":---";
                            break;
                        case "text-align:right;":
                            l = "---:";
                            break;
                        case "text-align:center;":
                            l = ":---:";
                    }
                (t[0][i] = o.trim()), (t[1][i] = l);
            }
            for (i = 0; i < s.length; ++i)
                for (var c = t.push([]) - 1, u = s[i].getElementsByTagName("td"), h = 0; h < n.length; ++h) {
                    var m = " ";
                    void 0 !== u[h] && (m = P.subParser("makeMarkdown.tableCell")(u[h], a)), t[c].push(m);
                }
            var d = 3;
            for (i = 0; i < t.length; ++i)
                for (h = 0; h < t[i].length; ++h) {
                    var g = t[i][h].length;
                    d < g && (d = g);
                }
            for (i = 0; i < t.length; ++i) {
                for (h = 0; h < t[i].length; ++h)
                    1 === i ? (":" === t[i][h].slice(-1) ? (t[i][h] = P.helper.padEnd(t[i][h].slice(0, -1), d - 1, "-") + ":") : (t[i][h] = P.helper.padEnd(t[i][h], d, "-"))) : (t[i][h] = P.helper.padEnd(t[i][h], d));
                r += "| " + t[i].join(" | ") + " |\n";
            }
            return r.trim();
        }),
        P.subParser("makeMarkdown.tableCell", function (e, a) {
            "use strict";
            var r = "";
            if (!e.hasChildNodes()) return "";
            for (var t = e.childNodes, n = t.length, s = 0; s < n; ++s) r += P.subParser("makeMarkdown.node")(t[s], a, !0);
            return r.trim();
        }),
        P.subParser("makeMarkdown.txt", function (e) {
            "use strict";
            e = e.nodeValue;
            return (
                (e = (e = e.replace(/ +/g, " ")).replace(/¨NBSP;/g, " ")),
                (e = (e = (e = (e = (e = (e = (e = (e = (e = P.helper.unescapeHTMLEntities(e)).replace(/([*_~|`])/g, "\\$1")).replace(/^(\s*)>/g, "\\$1>")).replace(/^#/gm, "\\#")).replace(/^(\s*)([-=]{3,})(\s*)$/, "$1\\$2$3")).replace(
                    /^( {0,3}\d+)\./gm,
                    "$1\\."
                )).replace(/^( {0,3})([+-])/gm, "$1\\$2")).replace(/]([\s]*)\(/g, "\\]$1\\(")).replace(/^ {0,3}\[([\S \t]*?)]:/gm, "\\[$1]:"))
            );
        }),
        (P.Converter = function (e) {
            "use strict";
            var a,
                r,
                n = {},
                o = [],
                l = [],
                c = {},
                t = d,
                s = { parsed: {}, raw: "", format: "" };
            for (a in ((e = e || {}), m)) m.hasOwnProperty(a) && (n[a] = m[a]);
            if ("object" != typeof e) throw Error("Converter expects the passed parameter to be an object, but " + typeof e + " was passed instead.");
            for (r in e) e.hasOwnProperty(r) && (n[r] = e[r]);
            function i(e, a) {
                if (((a = a || null), P.helper.isString(e))) {
                    if (((a = e = P.helper.stdExtName(e)), P.extensions[e])) {
                        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!");
                        var r = P.extensions[e],
                            t = e;
                        if (("function" == typeof r && (r = r(new P.Converter())), P.helper.isArray(r) || (r = [r]), !(t = p(r, t)).valid)) throw Error(t.error);
                        for (var n = 0; n < r.length; ++n)
                            switch (r[n].type) {
                                case "lang":
                                    o.push(r[n]);
                                    break;
                                case "output":
                                    l.push(r[n]);
                                    break;
                                default:
                                    throw Error("Extension loader error: Type unrecognized!!!");
                            }
                        return;
                    }
                    if (P.helper.isUndefined(h[e])) throw Error('Extension "' + e + '" could not be loaded. It was either not found or is not a valid extension.');
                    e = h[e];
                }
                "function" == typeof e && (e = e());
                t = p((e = P.helper.isArray(e) ? e : [e]), a);
                if (!t.valid) throw Error(t.error);
                for (var s = 0; s < e.length; ++s) {
                    switch (e[s].type) {
                        case "lang":
                            o.push(e[s]);
                            break;
                        case "output":
                            l.push(e[s]);
                    }
                    if (e[s].hasOwnProperty("listeners")) for (var i in e[s].listeners) e[s].listeners.hasOwnProperty(i) && u(i, e[s].listeners[i]);
                }
            }
            function u(e, a) {
                if (!P.helper.isString(e)) throw Error("Invalid argument in converter.listen() method: name must be a string, but " + typeof e + " given");
                if ("function" != typeof a) throw Error("Invalid argument in converter.listen() method: callback must be a function, but " + typeof a + " given");
                (e = e.toLowerCase()), c.hasOwnProperty(e) || (c[e] = []), c[e].push(a);
            }
            n.extensions && P.helper.forEach(n.extensions, i),
                (this._dispatch = function (e, a, r, t, n) {
                    e = e.toLowerCase();
                    var n = n || {},
                        s = ((n.converter = this), (n.text = a), (n.options = r), (n.globals = t), new P.helper.Event(e, a, n));
                    if (c.hasOwnProperty(e))
                        for (var i = 0; i < c[e].length; ++i) {
                            var o = c[e][i](s);
                            o && void 0 !== o && s.setText(o);
                        }
                    return s;
                }),
                (this.listen = function (e, a) {
                    return u(e, a), this;
                }),
                (this.makeHtml = function (a) {
                    if (!a) return a;
                    var e,
                        r,
                        t = {
                            gHtmlBlocks: [],
                            gHtmlMdBlocks: [],
                            gHtmlSpans: [],
                            gUrls: {},
                            gTitles: {},
                            gDimensions: {},
                            gListLevel: 0,
                            hashLinkCounts: {},
                            langExtensions: o,
                            outputModifiers: l,
                            converter: this,
                            ghCodeBlocks: [],
                            metadata: { parsed: {}, raw: "", format: "" },
                        };
                    return (
                        (a = (a = (a = (a = (a = a.replace(/¨/g, "¨T")).replace(/\$/g, "¨D")).replace(/\r\n/g, "\n")).replace(/\r/g, "\n")).replace(/\u00A0/g, "&nbsp;")),
                        n.smartIndentationFix && ((r = (e = a).match(/^\s*/)[0].length), (r = new RegExp("^\\s{0," + r + "}", "gm")), (a = e.replace(r, ""))),
                        (a = "\n\n" + a + "\n\n"),
                        (a = (a = P.subParser("makehtml.detab")(a, n, t)).replace(/^[ \t]+$/gm, "")),
                        P.helper.forEach(o, function (e) {
                            a = P.subParser("makehtml.runExtension")(e, a, n, t);
                        }),
                        (a = P.subParser("makehtml.metadata")(a, n, t)),
                        (a = P.subParser("makehtml.hashPreCodeTags")(a, n, t)),
                        (a = P.subParser("makehtml.githubCodeBlocks")(a, n, t)),
                        (a = P.subParser("makehtml.hashHTMLBlocks")(a, n, t)),
                        (a = P.subParser("makehtml.hashCodeTags")(a, n, t)),
                        (a = P.subParser("makehtml.stripLinkDefinitions")(a, n, t)),
                        (a = P.subParser("makehtml.blockGamut")(a, n, t)),
                        (a = P.subParser("makehtml.unhashHTMLSpans")(a, n, t)),
                        (a = (a = (a = P.subParser("makehtml.unescapeSpecialChars")(a, n, t)).replace(/¨D/g, "$$")).replace(/¨T/g, "¨")),
                        (a = P.subParser("makehtml.completeHTMLDocument")(a, n, t)),
                        P.helper.forEach(l, function (e) {
                            a = P.subParser("makehtml.runExtension")(e, a, n, t);
                        }),
                        (s = t.metadata),
                        a
                    );
                }),
                (this.makeMarkdown = function (e) {
                    e = (e = (e = e.replace(/\r\n/g, "\n")).replace(/\r/g, "\n")).replace(/>[ \t]+</, ">¨NBSP;<");
                    for (
                        var a = P.helper.document.createElement("div"),
                            r =
                                ((a.innerHTML = e),
                                {
                                    preList: (function (e) {
                                        for (var a = e.querySelectorAll("pre"), r = [], t = 0; t < a.length; ++t)
                                            if (1 === a[t].childElementCount && "code" === a[t].firstChild.tagName.toLowerCase()) {
                                                var n = a[t].firstChild.innerHTML.trim(),
                                                    s = a[t].firstChild.getAttribute("data-language") || "";
                                                if ("" === s)
                                                    for (var i = a[t].firstChild.className.split(" "), o = 0; o < i.length; ++o) {
                                                        var l = i[o].match(/^language-(.+)$/);
                                                        if (null !== l) {
                                                            s = l[1];
                                                            break;
                                                        }
                                                    }
                                                (n = P.helper.unescapeHTMLEntities(n)), r.push(n), (a[t].outerHTML = '<precode language="' + s + '" precodenum="' + t.toString() + '"></precode>');
                                            } else r.push(a[t].innerHTML), (a[t].innerHTML = ""), a[t].setAttribute("prenum", t.toString());
                                        return r;
                                    })(a),
                                }),
                            t =
                                (!(function e(a) {
                                    for (var r = 0; r < a.childNodes.length; ++r) {
                                        var t = a.childNodes[r];
                                        3 === t.nodeType
                                            ? /\S/.test(t.nodeValue) || /^[ ]+$/.test(t.nodeValue)
                                                ? ((t.nodeValue = t.nodeValue.split("\n").join(" ")), (t.nodeValue = t.nodeValue.replace(/(\s)+/g, "$1")))
                                                : (a.removeChild(t), --r)
                                            : 1 === t.nodeType && e(t);
                                    }
                                })(a),
                                a.childNodes),
                            n = "",
                            s = 0;
                        s < t.length;
                        s++
                    )
                        n += P.subParser("makeMarkdown.node")(t[s], r);
                    return n;
                }),
                (this.setOption = function (e, a) {
                    n[e] = a;
                }),
                (this.getOption = function (e) {
                    return n[e];
                }),
                (this.getOptions = function () {
                    return n;
                }),
                (this.addExtension = function (e, a) {
                    i(e, (a = a || null));
                }),
                (this.useExtension = function (e) {
                    i(e);
                }),
                (this.setFlavor = function (e) {
                    if (!g.hasOwnProperty(e)) throw Error(e + " flavor was not found");
                    var a,
                        r = g[e];
                    for (a in ((t = e), r)) r.hasOwnProperty(a) && (n[a] = r[a]);
                }),
                (this.getFlavor = function () {
                    return t;
                }),
                (this.removeExtension = function (e) {
                    P.helper.isArray(e) || (e = [e]);
                    for (var a = 0; a < e.length; ++a) {
                        for (var r = e[a], t = 0; t < o.length; ++t) o[t] === r && o.splice(t, 1);
                        for (var n = 0; n < l.length; ++n) l[n] === r && l.splice(n, 1);
                    }
                }),
                (this.getAllExtensions = function () {
                    return { language: o, output: l };
                }),
                (this.getMetadata = function (e) {
                    return e ? s.raw : s.parsed;
                }),
                (this.getMetadataFormat = function () {
                    return s.format;
                }),
                (this._setMetadataPair = function (e, a) {
                    s.parsed[e] = a;
                }),
                (this._setMetadataFormat = function (e) {
                    s.format = e;
                }),
                (this._setMetadataRaw = function (e) {
                    s.raw = e;
                });
        });
    "function" == typeof define && define.amd
        ? define(function () {
              "use strict";
              return P;
          })
        : "undefined" != typeof module && module.exports
        ? (module.exports = P)
        : (this.showdown = P);
}.call(this);



setTimeout(function(){
    var cfg = new MonkeyConfig({
        title: 'Configure',
        menuCommand: true,
        params: {
            'Automatic Temperature': {
                type: 'checkbox',
                default: true
            },
            'Temperature': {
                type: 'number',
                default: '1'
            },
            'Automatic Maximum Length': {
                type: 'checkbox',
                default: true
            },
            'Maximum Length': {
                type: 'number',
                default: '2048'
            },
            'Automatic Instructions': {
                type: 'checkbox',
                default: true
            },
            chatGPT_instructions: {
                type: 'text',
                default: ''
            },

        },
        // onSave: setOptions
    })

    GM_setValue('fullcontent','')
    var rootpath = "#root > div.route-container > div > div.pg-root.page-body.full-width.flush > div > div.pg-body";
    var path = rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-footer > span > button.btn.btn-sm.btn-minimal.btn-neutral"
    $('<button id="continue" tabindex="0" class="btn btn-sm btn-filled btn-primary" type="button" data-testid="pg-submit-btn" aria-haspopup="true" aria-expanded="false"><span class="btn-label-wrap"><span class="btn-label-inner">Continue&zwj;</span></span></button>').insertAfter(path)

    var e = jQuery.Event("keypress");
    e.which = 9; 
    e.keyCode = 9;

    if (cfg.get('Automatic Temperature')) {
        $(rootpath + " > div.pg-right > div.pg-right-content > div > div > div:nth-child(3) > div > div.css-1povu0j > input").val(Number(cfg.get('Temperature')))
        $(rootpath + " > div.pg-right > div.pg-right-content > div > div > div:nth-child(3) > div > div.css-1povu0j > input").focus().trigger(e);    
    }

    if (cfg.get('Automatic Maximum Length')) {
        $("body > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(1) > div:nth-child(4) > div:nth-child(1) > div:nth-child(1) > input:nth-child(2)").val(Number(cfg.get('Maximum Length')))
        $("body > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(1) > div:nth-child(4) > div:nth-child(1) > div:nth-child(1) > input:nth-child(2)").focus().trigger(e);
    }

    // chat-pg-instructions
    $(rootpath + ' > div.pg-editor > div > div > div:nth-child(1) > div > div.text-input-header-wrapper.overflow-wrapper.text-input > textarea').focus()

    if (cfg.get('Automatic Instructions')) {
        $(rootpath + ' > div.pg-editor > div > div > div:nth-child(1) > div > div.text-input-header-wrapper.overflow-wrapper.text-input > textarea').text(cfg.get('chatGPT_instructions'))
    }

    $("button[id='continue']").click(function(){
        $(rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div.chat-pg-message.add-message")[0].click()   
        setTimeout(function(){
            $(rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div:nth-child(3) > div.text-input-with-focus > textarea").text('continue')
        }, 500); 
        setTimeout(function(){
            $(rootpath + " > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-footer > span > button:nth-child(1)")[0].click()
        }, 1000); 
    });

    /*--------------------*/

    function export_text(){

        console.clear()
        var pattern = $("#root > div.route-container > div > div.pg-root.page-body.full-width.flush > div > div.pg-body > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div")

        $.each(pattern , function (index, value){
            content = GM_getValue('fullcontent') + content
            var role = $(this).find('.chat-message-role-text').text()
            var content = $(this).find('.text-input-with-focus').text()

            if (role==='assistant'){
                //console.log('role='+role)
                //console.log('index='+index) 
                console.log(content)
                GM_setValue('fullcontent',content)
            }
        }
              )} 

    function appendValue(crap) {
        let currentValue = GM_getValue('fullcontent', '');
        let newValue = currentValue + crap
        GM_setValue('fullcontent', newValue);
    }

    $('<button id="export" tabindex="0" class="btn btn-sm btn-filled btn-primary" type="button" data-testid="pg-submit-btn" aria-haspopup="true" aria-expanded="false"><span class="btn-label-wrap"><span class="btn-label-inner">Export&zwj;</span></span></button>').insertAfter(path)

    $("button[id='export']").click(function(){
        var pattern = $("#root > div.route-container > div > div.pg-root.page-body.full-width.flush > div > div.pg-body > div.pg-editor > div > div > div.chat-pg-right-wrapper > div.chat-pg-panel-wrapper > div > div > div")

        /*            
            GM_setClipboard(GM_getValue('fullcontent'), "text"); 
            */

        for (let i = 0; i < localStorage.length; i++) {
            const key = localStorage.key(i);

            if (key.startsWith('oai/user')) {
                var crap = localStorage.getItem(localStorage.key(i))
                appendValue(crap)
            }
        }

        var markdown = GM_getValue('fullcontent')

        var converter = new showdown.Converter()
        var zhtml = converter.makeHtml(markdown)

        GM_setClipboard(GM_getValue('fullcontent'), zhtml); 
        alert('Copied to clipboard')
    })

}, 1000);
})(jQuery);