/*!
 * @toast-ui/editor
 * @version 3.2.2 | Fri Feb 17 2023
 * @author NHN Cloud FE Development Lab <dl_javascript@nhn.com>
 * @license MIT
 */
! function(e, t) {
    "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.toastui = t() : (e.toastui = e.toastui || {}, e.toastui.Editor = t())
}(self, (function() {
    return function() {
        var e = {
                368: function(e) {
                    /*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */
                    e.exports = function() {
                        "use strict";

                        function e(e) {
                            if (Array.isArray(e)) {
                                for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t];
                                return n
                            }
                            return Array.from(e)
                        }
                        var t = Object.hasOwnProperty,
                            n = Object.setPrototypeOf,
                            r = Object.isFrozen,
                            o = Object.getPrototypeOf,
                            i = Object.getOwnPropertyDescriptor,
                            s = Object.freeze,
                            a = Object.seal,
                            l = Object.create,
                            c = "undefined" != typeof Reflect && Reflect,
                            u = c.apply,
                            d = c.construct;
                        u || (u = function(e, t, n) {
                            return e.apply(t, n)
                        }), s || (s = function(e) {
                            return e
                        }), a || (a = function(e) {
                            return e
                        }), d || (d = function(t, n) {
                            return new(Function.prototype.bind.apply(t, [null].concat(e(n))))
                        });
                        var p = x(Array.prototype.forEach),
                            h = x(Array.prototype.pop),
                            f = x(Array.prototype.push),
                            m = x(String.prototype.toLowerCase),
                            g = x(String.prototype.match),
                            v = x(String.prototype.replace),
                            y = x(String.prototype.indexOf),
                            b = x(String.prototype.trim),
                            w = x(RegExp.prototype.test),
                            k = C(TypeError);

                        function x(e) {
                            return function(t) {
                                for (var n = arguments.length, r = Array(n > 1 ? n - 1 : 0), o = 1; o < n; o++) r[o - 1] = arguments[o];
                                return u(e, t, r)
                            }
                        }

                        function C(e) {
                            return function() {
                                for (var t = arguments.length, n = Array(t), r = 0; r < t; r++) n[r] = arguments[r];
                                return d(e, n)
                            }
                        }

                        function T(e, t) {
                            n && n(e, null);
                            for (var o = t.length; o--;) {
                                var i = t[o];
                                if ("string" == typeof i) {
                                    var s = m(i);
                                    s !== i && (r(t) || (t[o] = s), i = s)
                                }
                                e[i] = !0
                            }
                            return e
                        }

                        function M(e) {
                            var n = l(null),
                                r = void 0;
                            for (r in e) u(t, e, [r]) && (n[r] = e[r]);
                            return n
                        }

                        function S(e, t) {
                            for (; null !== e;) {
                                var n = i(e, t);
                                if (n) {
                                    if (n.get) return x(n.get);
                                    if ("function" == typeof n.value) return x(n.value)
                                }
                                e = o(e)
                            }

                            function r(e) {
                                return console.warn("fallback value for", e), null
                            }
                            return r
                        }
                        var E = s(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]),
                            N = s(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]),
                            O = s(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]),
                            D = s(["animate", "color-profile", "cursor", "discard", "fedropshadow", "feimage", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]),
                            A = s(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover"]),
                            L = s(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]),
                            I = s(["#text"]),
                            R = s(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot"]),
                            P = s(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]),
                            B = s(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]),
                            F = s(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]),
                            H = a(/\{\{[\s\S]*|[\s\S]*\}\}/gm),
                            z = a(/<%[\s\S]*|[\s\S]*%>/gm),
                            q = a(/^data-[\-\w.\u00B7-\uFFFF]/),
                            V = a(/^aria-[\-\w]+$/),
                            j = a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),
                            $ = a(/^(?:\w+script|data):/i),
                            _ = a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),
                            U = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            };

                        function W(e) {
                            if (Array.isArray(e)) {
                                for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t];
                                return n
                            }
                            return Array.from(e)
                        }
                        var J = function() {
                                return "undefined" == typeof window ? null : window
                            },
                            G = function(e, t) {
                                if ("object" !== (void 0 === e ? "undefined" : U(e)) || "function" != typeof e.createPolicy) return null;
                                var n = null,
                                    r = "data-tt-policy-suffix";
                                t.currentScript && t.currentScript.hasAttribute(r) && (n = t.currentScript.getAttribute(r));
                                var o = "dompurify" + (n ? "#" + n : "");
                                try {
                                    return e.createPolicy(o, {
                                        createHTML: function(e) {
                                            return e
                                        }
                                    })
                                } catch (e) {
                                    return console.warn("TrustedTypes policy " + o + " could not be created."), null
                                }
                            };

                        function K() {
                            var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : J(),
                                t = function(e) {
                                    return K(e)
                                };
                            if (t.version = "2.3.3", t.removed = [], !e || !e.document || 9 !== e.document.nodeType) return t.isSupported = !1, t;
                            var n = e.document,
                                r = e.document,
                                o = e.DocumentFragment,
                                i = e.HTMLTemplateElement,
                                a = e.Node,
                                l = e.Element,
                                c = e.NodeFilter,
                                u = e.NamedNodeMap,
                                d = void 0 === u ? e.NamedNodeMap || e.MozNamedAttrMap : u,
                                x = e.Text,
                                C = e.Comment,
                                Z = e.DOMParser,
                                X = e.trustedTypes,
                                Q = l.prototype,
                                Y = S(Q, "cloneNode"),
                                ee = S(Q, "nextSibling"),
                                te = S(Q, "childNodes"),
                                ne = S(Q, "parentNode");
                            if ("function" == typeof i) {
                                var re = r.createElement("template");
                                re.content && re.content.ownerDocument && (r = re.content.ownerDocument)
                            }
                            var oe = G(X, n),
                                ie = oe && Fe ? oe.createHTML("") : "",
                                se = r,
                                ae = se.implementation,
                                le = se.createNodeIterator,
                                ce = se.createDocumentFragment,
                                ue = se.getElementsByTagName,
                                de = n.importNode,
                                pe = {};
                            try {
                                pe = M(r).documentMode ? r.documentMode : {}
                            } catch (e) {}
                            var he = {};
                            t.isSupported = "function" == typeof ne && ae && void 0 !== ae.createHTMLDocument && 9 !== pe;
                            var fe = H,
                                me = z,
                                ge = q,
                                ve = V,
                                ye = $,
                                be = _,
                                we = j,
                                ke = null,
                                xe = T({}, [].concat(W(E), W(N), W(O), W(A), W(I))),
                                Ce = null,
                                Te = T({}, [].concat(W(R), W(P), W(B), W(F))),
                                Me = null,
                                Se = null,
                                Ee = !0,
                                Ne = !0,
                                Oe = !1,
                                De = !1,
                                Ae = !1,
                                Le = !1,
                                Ie = !1,
                                Re = !1,
                                Pe = !1,
                                Be = !0,
                                Fe = !1,
                                He = !0,
                                ze = !0,
                                qe = !1,
                                Ve = {},
                                je = null,
                                $e = T({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]),
                                _e = null,
                                Ue = T({}, ["audio", "video", "img", "source", "image", "track"]),
                                We = null,
                                Je = T({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]),
                                Ge = "http://www.w3.org/1998/Math/MathML",
                                Ke = "http://www.w3.org/2000/svg",
                                Ze = "http://www.w3.org/1999/xhtml",
                                Xe = Ze,
                                Qe = !1,
                                Ye = void 0,
                                et = ["application/xhtml+xml", "text/html"],
                                tt = "text/html",
                                nt = void 0,
                                rt = null,
                                ot = r.createElement("form"),
                                it = function(e) {
                                    rt && rt === e || (e && "object" === (void 0 === e ? "undefined" : U(e)) || (e = {}), e = M(e), ke = "ALLOWED_TAGS" in e ? T({}, e.ALLOWED_TAGS) : xe, Ce = "ALLOWED_ATTR" in e ? T({}, e.ALLOWED_ATTR) : Te, We = "ADD_URI_SAFE_ATTR" in e ? T(M(Je), e.ADD_URI_SAFE_ATTR) : Je, _e = "ADD_DATA_URI_TAGS" in e ? T(M(Ue), e.ADD_DATA_URI_TAGS) : Ue, je = "FORBID_CONTENTS" in e ? T({}, e.FORBID_CONTENTS) : $e, Me = "FORBID_TAGS" in e ? T({}, e.FORBID_TAGS) : {}, Se = "FORBID_ATTR" in e ? T({}, e.FORBID_ATTR) : {}, Ve = "USE_PROFILES" in e && e.USE_PROFILES, Ee = !1 !== e.ALLOW_ARIA_ATTR, Ne = !1 !== e.ALLOW_DATA_ATTR, Oe = e.ALLOW_UNKNOWN_PROTOCOLS || !1, De = e.SAFE_FOR_TEMPLATES || !1, Ae = e.WHOLE_DOCUMENT || !1, Re = e.RETURN_DOM || !1, Pe = e.RETURN_DOM_FRAGMENT || !1, Be = !1 !== e.RETURN_DOM_IMPORT, Fe = e.RETURN_TRUSTED_TYPE || !1, Ie = e.FORCE_BODY || !1, He = !1 !== e.SANITIZE_DOM, ze = !1 !== e.KEEP_CONTENT, qe = e.IN_PLACE || !1, we = e.ALLOWED_URI_REGEXP || we, Xe = e.NAMESPACE || Ze, Ye = Ye = -1 === et.indexOf(e.PARSER_MEDIA_TYPE) ? tt : e.PARSER_MEDIA_TYPE, nt = "application/xhtml+xml" === Ye ? function(e) {
                                        return e
                                    } : m, De && (Ne = !1), Pe && (Re = !0), Ve && (ke = T({}, [].concat(W(I))), Ce = [], !0 === Ve.html && (T(ke, E), T(Ce, R)), !0 === Ve.svg && (T(ke, N), T(Ce, P), T(Ce, F)), !0 === Ve.svgFilters && (T(ke, O), T(Ce, P), T(Ce, F)), !0 === Ve.mathMl && (T(ke, A), T(Ce, B), T(Ce, F))), e.ADD_TAGS && (ke === xe && (ke = M(ke)), T(ke, e.ADD_TAGS)), e.ADD_ATTR && (Ce === Te && (Ce = M(Ce)), T(Ce, e.ADD_ATTR)), e.ADD_URI_SAFE_ATTR && T(We, e.ADD_URI_SAFE_ATTR), e.FORBID_CONTENTS && (je === $e && (je = M(je)), T(je, e.FORBID_CONTENTS)), ze && (ke["#text"] = !0), Ae && T(ke, ["html", "head", "body"]), ke.table && (T(ke, ["tbody"]), delete Me.tbody), s && s(e), rt = e)
                                },
                                st = T({}, ["mi", "mo", "mn", "ms", "mtext"]),
                                at = T({}, ["foreignobject", "desc", "title", "annotation-xml"]),
                                lt = T({}, N);
                            T(lt, O), T(lt, D);
                            var ct = T({}, A);
                            T(ct, L);
                            var ut = function(e) {
                                    var t = ne(e);
                                    t && t.tagName || (t = {
                                        namespaceURI: Ze,
                                        tagName: "template"
                                    });
                                    var n = m(e.tagName),
                                        r = m(t.tagName);
                                    if (e.namespaceURI === Ke) return t.namespaceURI === Ze ? "svg" === n : t.namespaceURI === Ge ? "svg" === n && ("annotation-xml" === r || st[r]) : Boolean(lt[n]);
                                    if (e.namespaceURI === Ge) return t.namespaceURI === Ze ? "math" === n : t.namespaceURI === Ke ? "math" === n && at[r] : Boolean(ct[n]);
                                    if (e.namespaceURI === Ze) {
                                        if (t.namespaceURI === Ke && !at[r]) return !1;
                                        if (t.namespaceURI === Ge && !st[r]) return !1;
                                        var o = T({}, ["title", "style", "font", "a", "script"]);
                                        return !ct[n] && (o[n] || !lt[n])
                                    }
                                    return !1
                                },
                                dt = function(e) {
                                    f(t.removed, {
                                        element: e
                                    });
                                    try {
                                        e.parentNode.removeChild(e)
                                    } catch (t) {
                                        try {
                                            e.outerHTML = ie
                                        } catch (t) {
                                            e.remove()
                                        }
                                    }
                                },
                                pt = function(e, n) {
                                    try {
                                        f(t.removed, {
                                            attribute: n.getAttributeNode(e),
                                            from: n
                                        })
                                    } catch (e) {
                                        f(t.removed, {
                                            attribute: null,
                                            from: n
                                        })
                                    }
                                    if (n.removeAttribute(e), "is" === e && !Ce[e])
                                        if (Re || Pe) try {
                                            dt(n)
                                        } catch (e) {} else try {
                                            n.setAttribute(e, "")
                                        } catch (e) {}
                                },
                                ht = function(e) {
                                    var t = void 0,
                                        n = void 0;
                                    if (Ie) e = "<remove></remove>" + e;
                                    else {
                                        var o = g(e, /^[\r\n\t ]+/);
                                        n = o && o[0]
                                    }
                                    "application/xhtml+xml" === Ye && (e = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + e + "</body></html>");
                                    var i = oe ? oe.createHTML(e) : e;
                                    if (Xe === Ze) try {
                                        t = (new Z).parseFromString(i, Ye)
                                    } catch (e) {}
                                    if (!t || !t.documentElement) {
                                        t = ae.createDocument(Xe, "template", null);
                                        try {
                                            t.documentElement.innerHTML = Qe ? "" : i
                                        } catch (e) {}
                                    }
                                    var s = t.body || t.documentElement;
                                    return e && n && s.insertBefore(r.createTextNode(n), s.childNodes[0] || null), Xe === Ze ? ue.call(t, Ae ? "html" : "body")[0] : Ae ? t.documentElement : s
                                },
                                ft = function(e) {
                                    return le.call(e.ownerDocument || e, e, c.SHOW_ELEMENT | c.SHOW_COMMENT | c.SHOW_TEXT, null, !1)
                                },
                                mt = function(e) {
                                    return !(e instanceof x || e instanceof C || "string" == typeof e.nodeName && "string" == typeof e.textContent && "function" == typeof e.removeChild && e.attributes instanceof d && "function" == typeof e.removeAttribute && "function" == typeof e.setAttribute && "string" == typeof e.namespaceURI && "function" == typeof e.insertBefore)
                                },
                                gt = function(e) {
                                    return "object" === (void 0 === a ? "undefined" : U(a)) ? e instanceof a : e && "object" === (void 0 === e ? "undefined" : U(e)) && "number" == typeof e.nodeType && "string" == typeof e.nodeName
                                },
                                vt = function(e, n, r) {
                                    he[e] && p(he[e], (function(e) {
                                        e.call(t, n, r, rt)
                                    }))
                                },
                                yt = function(e) {
                                    var n = void 0;
                                    if (vt("beforeSanitizeElements", e, null), mt(e)) return dt(e), !0;
                                    if (g(e.nodeName, /[\u0080-\uFFFF]/)) return dt(e), !0;
                                    var r = nt(e.nodeName);
                                    if (vt("uponSanitizeElement", e, {
                                        tagName: r,
                                        allowedTags: ke
                                    }), !gt(e.firstElementChild) && (!gt(e.content) || !gt(e.content.firstElementChild)) && w(/<[/\w]/g, e.innerHTML) && w(/<[/\w]/g, e.textContent)) return dt(e), !0;
                                    if ("select" === r && w(/<template/i, e.innerHTML)) return dt(e), !0;
                                    if (!ke[r] || Me[r]) {
                                        if (ze && !je[r]) {
                                            var o = ne(e) || e.parentNode,
                                                i = te(e) || e.childNodes;
                                            if (i && o)
                                                for (var s = i.length - 1; s >= 0; --s) o.insertBefore(Y(i[s], !0), ee(e))
                                        }
                                        return dt(e), !0
                                    }
                                    return e instanceof l && !ut(e) ? (dt(e), !0) : "noscript" !== r && "noembed" !== r || !w(/<\/no(script|embed)/i, e.innerHTML) ? (De && 3 === e.nodeType && (n = e.textContent, n = v(n, fe, " "), n = v(n, me, " "), e.textContent !== n && (f(t.removed, {
                                        element: e.cloneNode()
                                    }), e.textContent = n)), vt("afterSanitizeElements", e, null), !1) : (dt(e), !0)
                                },
                                bt = function(e, t, n) {
                                    if (He && ("id" === t || "name" === t) && (n in r || n in ot)) return !1;
                                    if (Ne && !Se[t] && w(ge, t));
                                    else if (Ee && w(ve, t));
                                    else {
                                        if (!Ce[t] || Se[t]) return !1;
                                        if (We[t]);
                                        else if (w(we, v(n, be, "")));
                                        else if ("src" !== t && "xlink:href" !== t && "href" !== t || "script" === e || 0 !== y(n, "data:") || !_e[e])
                                            if (Oe && !w(ye, v(n, be, "")));
                                            else if (n) return !1
                                    }
                                    return !0
                                },
                                wt = function(e) {
                                    var n = void 0,
                                        r = void 0,
                                        o = void 0,
                                        i = void 0;
                                    vt("beforeSanitizeAttributes", e, null);
                                    var s = e.attributes;
                                    if (s) {
                                        var a = {
                                            attrName: "",
                                            attrValue: "",
                                            keepAttr: !0,
                                            allowedAttributes: Ce
                                        };
                                        for (i = s.length; i--;) {
                                            var l = n = s[i],
                                                c = l.name,
                                                u = l.namespaceURI;
                                            if (r = b(n.value), o = nt(c), a.attrName = o, a.attrValue = r, a.keepAttr = !0, a.forceKeepAttr = void 0, vt("uponSanitizeAttribute", e, a), r = a.attrValue, !a.forceKeepAttr && (pt(c, e), a.keepAttr))
                                                if (w(/\/>/i, r)) pt(c, e);
                                                else {
                                                    De && (r = v(r, fe, " "), r = v(r, me, " "));
                                                    var d = nt(e.nodeName);
                                                    if (bt(d, o, r)) try {
                                                        u ? e.setAttributeNS(u, c, r) : e.setAttribute(c, r), h(t.removed)
                                                    } catch (e) {}
                                                }
                                        }
                                        vt("afterSanitizeAttributes", e, null)
                                    }
                                },
                                kt = function e(t) {
                                    var n = void 0,
                                        r = ft(t);
                                    for (vt("beforeSanitizeShadowDOM", t, null); n = r.nextNode();) vt("uponSanitizeShadowNode", n, null), yt(n) || (n.content instanceof o && e(n.content), wt(n));
                                    vt("afterSanitizeShadowDOM", t, null)
                                };
                            return t.sanitize = function(r, i) {
                                var s = void 0,
                                    l = void 0,
                                    c = void 0,
                                    u = void 0,
                                    d = void 0;
                                if ((Qe = !r) && (r = "\x3c!--\x3e"), "string" != typeof r && !gt(r)) {
                                    if ("function" != typeof r.toString) throw k("toString is not a function");
                                    if ("string" != typeof(r = r.toString())) throw k("dirty is not a string, aborting")
                                }
                                if (!t.isSupported) {
                                    if ("object" === U(e.toStaticHTML) || "function" == typeof e.toStaticHTML) {
                                        if ("string" == typeof r) return e.toStaticHTML(r);
                                        if (gt(r)) return e.toStaticHTML(r.outerHTML)
                                    }
                                    return r
                                }
                                if (Le || it(i), t.removed = [], "string" == typeof r && (qe = !1), qe);
                                else if (r instanceof a) 1 === (l = (s = ht("\x3c!----\x3e")).ownerDocument.importNode(r, !0)).nodeType && "BODY" === l.nodeName || "HTML" === l.nodeName ? s = l : s.appendChild(l);
                                else {
                                    if (!Re && !De && !Ae && -1 === r.indexOf("<")) return oe && Fe ? oe.createHTML(r) : r;
                                    if (!(s = ht(r))) return Re ? null : ie
                                }
                                s && Ie && dt(s.firstChild);
                                for (var p = ft(qe ? r : s); c = p.nextNode();) 3 === c.nodeType && c === u || yt(c) || (c.content instanceof o && kt(c.content), wt(c), u = c);
                                if (u = null, qe) return r;
                                if (Re) {
                                    if (Pe)
                                        for (d = ce.call(s.ownerDocument); s.firstChild;) d.appendChild(s.firstChild);
                                    else d = s;
                                    return Be && (d = de.call(n, d, !0)), d
                                }
                                var h = Ae ? s.outerHTML : s.innerHTML;
                                return De && (h = v(h, fe, " "), h = v(h, me, " ")), oe && Fe ? oe.createHTML(h) : h
                            }, t.setConfig = function(e) {
                                it(e), Le = !0
                            }, t.clearConfig = function() {
                                rt = null, Le = !1
                            }, t.isValidAttribute = function(e, t, n) {
                                rt || it({});
                                var r = nt(e),
                                    o = nt(t);
                                return bt(r, o, n)
                            }, t.addHook = function(e, t) {
                                "function" == typeof t && (he[e] = he[e] || [], f(he[e], t))
                            }, t.removeHook = function(e) {
                                he[e] && h(he[e])
                            }, t.removeHooks = function(e) {
                                he[e] && (he[e] = [])
                            }, t.removeAllHooks = function() {
                                he = {}
                            }, t
                        }
                        return K()
                    }()
                },
                928: function(e, t, n) {
                    "use strict";
                    var r = n(322);
                    e.exports = function(e, t, n) {
                        var o, i;
                        if (n = n || 0, !r(t)) return -1;
                        if (Array.prototype.indexOf) return Array.prototype.indexOf.call(t, e, n);
                        for (i = t.length, o = n; n >= 0 && o < i; o += 1)
                            if (t[o] === e) return o;
                        return -1
                    }
                },
                690: function(e, t, n) {
                    "use strict";
                    var r = n(322),
                        o = n(893),
                        i = n(956);
                    e.exports = function(e, t, n) {
                        r(e) ? o(e, t, n) : i(e, t, n)
                    }
                },
                893: function(e) {
                    "use strict";
                    e.exports = function(e, t, n) {
                        var r = 0,
                            o = e.length;
                        for (n = n || null; r < o && !1 !== t.call(n, e[r], r, e); r += 1);
                    }
                },
                956: function(e) {
                    "use strict";
                    e.exports = function(e, t, n) {
                        var r;
                        for (r in n = n || null, e)
                            if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r, e)) break
                    }
                },
                354: function(e, t, n) {
                    "use strict";
                    var r = n(893);
                    e.exports = function(e) {
                        var t;
                        try {
                            t = Array.prototype.slice.call(e)
                        } catch (n) {
                            t = [], r(e, (function(e) {
                                t.push(e)
                            }))
                        }
                        return t
                    }
                },
                755: function(e) {
                    "use strict";
                    var t = "_feEventKey";
                    e.exports = function(e, n) {
                        var r, o = e[t];
                        return o || (o = e[t] = {}), (r = o[n]) || (r = o[n] = []), r
                    }
                },
                349: function(e, t, n) {
                    "use strict";
                    var r = n(758),
                        o = n(690),
                        i = n(755);

                    function s(e, t, n) {
                        var r, s = i(e, t);
                        n ? (o(s, (function(o, i) {
                            return n !== o.handler || (a(e, t, o.wrappedHandler), r = i, !1)
                        })), s.splice(r, 1)) : (o(s, (function(n) {
                            a(e, t, n.wrappedHandler)
                        })), s.splice(0, s.length))
                    }

                    function a(e, t, n) {
                        "removeEventListener" in e ? e.removeEventListener(t, n) : "detachEvent" in e && e.detachEvent("on" + t, n)
                    }
                    e.exports = function(e, t, n) {
                        r(t) ? o(t.split(/\s+/g), (function(t) {
                            s(e, t, n)
                        })) : o(t, (function(t, n) {
                            s(e, n, t)
                        }))
                    }
                },
                348: function(e, t, n) {
                    "use strict";
                    var r = n(758),
                        o = n(690),
                        i = n(755);

                    function s(e, t, n, r) {
                        function s(t) {
                            n.call(r || e, t || window.event)
                        }
                        "addEventListener" in e ? e.addEventListener(t, s) : "attachEvent" in e && e.attachEvent("on" + t, s),
                            function(e, t, n, r) {
                                var s = i(e, t),
                                    a = !1;
                                o(s, (function(e) {
                                    return e.handler !== n || (a = !0, !1)
                                })), a || s.push({
                                    handler: n,
                                    wrappedHandler: r
                                })
                            }(e, t, n, s)
                    }
                    e.exports = function(e, t, n, i) {
                        r(t) ? o(t.split(/\s+/g), (function(t) {
                            s(e, t, n, i)
                        })) : o(t, (function(t, r) {
                            s(e, r, t, n)
                        }))
                    }
                },
                24: function(e, t, n) {
                    "use strict";
                    var r = n(322),
                        o = n(929);
                    e.exports = function(e, t) {
                        t = (t = r(t) ? t.join(" ") : t).replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""), o(e.className.baseVal) ? e.className = t : e.className.baseVal = t
                    }
                },
                204: function(e, t, n) {
                    "use strict";
                    var r = n(690),
                        o = n(928),
                        i = n(902),
                        s = n(24);
                    e.exports = function(e) {
                        var t, n = Array.prototype.slice.call(arguments, 1),
                            a = e.classList,
                            l = [];
                        a ? r(n, (function(t) {
                            e.classList.add(t)
                        })) : ((t = i(e)) && (n = [].concat(t.split(/\s+/), n)), r(n, (function(e) {
                            o(e, l) < 0 && l.push(e)
                        })), s(e, l))
                    }
                },
                522: function(e, t, n) {
                    "use strict";
                    var r = n(758),
                        o = n(690);
                    e.exports = function(e, t, n) {
                        var i = e.style;
                        r(t) ? i[t] = n : o(t, (function(e, t) {
                            i[t] = e
                        }))
                    }
                },
                902: function(e, t, n) {
                    "use strict";
                    var r = n(929);
                    e.exports = function(e) {
                        return e && e.className ? r(e.className.baseVal) ? e.className : e.className.baseVal : ""
                    }
                },
                714: function(e, t, n) {
                    "use strict";
                    var r = n(928),
                        o = n(902);
                    e.exports = function(e, t) {
                        var n;
                        return e.classList ? e.classList.contains(t) : (n = o(e).split(/\s+/), r(t, n) > -1)
                    }
                },
                471: function(e, t, n) {
                    "use strict";
                    var r = n(928),
                        o = n(354),
                        i = Element.prototype,
                        s = i.matches || i.webkitMatchesSelector || i.mozMatchesSelector || i.msMatchesSelector || function(e) {
                            var t = this.document || this.ownerDocument;
                            return r(this, o(t.querySelectorAll(e))) > -1
                        };
                    e.exports = function(e, t) {
                        return s.call(e, t)
                    }
                },
                462: function(e, t, n) {
                    "use strict";
                    var r = n(893),
                        o = n(928),
                        i = n(902),
                        s = n(24);
                    e.exports = function(e) {
                        var t, n, a = Array.prototype.slice.call(arguments, 1),
                            l = e.classList;
                        l ? r(a, (function(e) {
                            l.remove(e)
                        })) : (t = i(e).split(/\s+/), n = [], r(t, (function(e) {
                            o(e, a) < 0 && n.push(e)
                        })), s(e, n))
                    }
                },
                969: function(e) {
                    "use strict";
                    e.exports = function(e, t) {
                        var n, r, o, i, s = Object.prototype.hasOwnProperty;
                        for (o = 1, i = arguments.length; o < i; o += 1)
                            for (r in n = arguments[o]) s.call(n, r) && (e[r] = n[r]);
                        return e
                    }
                },
                254: function(e, t, n) {
                    "use strict";
                    var r = n(956);
                    e.exports = function(e, t) {
                        var n = document.createElement("img"),
                            o = "";
                        return r(t, (function(e, t) {
                            o += "&" + t + "=" + e
                        })), o = o.substring(1), n.src = e + "?" + o, n.style.display = "none", document.body.appendChild(n), document.body.removeChild(n), n
                    }
                },
                391: function(e, t, n) {
                    "use strict";
                    var r = n(929),
                        o = n(254);
                    e.exports = function(e, t) {
                        var n = location.hostname,
                            i = "TOAST UI " + e + " for " + n + ": Statistics",
                            s = window.localStorage.getItem(i);
                        (r(window.tui) || !1 !== window.tui.usageStatistics) && (s && ! function(e) {
                            return (new Date).getTime() - e > 6048e5
                        }(s) || (window.localStorage.setItem(i, (new Date).getTime()), setTimeout((function() {
                            "interactive" !== document.readyState && "complete" !== document.readyState || o("https://www.google-analytics.com/collect", {
                                v: 1,
                                t: "event",
                                tid: t,
                                cid: n,
                                dp: n,
                                dh: e,
                                el: e,
                                ec: "use"
                            })
                        }), 1e3)))
                    }
                },
                516: function(e) {
                    "use strict";
                    e.exports = function(e, t) {
                        var n, r;
                        return t = t || 0,
                            function() {
                                r = Array.prototype.slice.call(arguments), window.clearTimeout(n), n = window.setTimeout((function() {
                                    e.apply(null, r)
                                }), t)
                            }
                    }
                },
                423: function(e, t, n) {
                    "use strict";
                    var r = n(516);
                    e.exports = function(e, t) {
                        var n, o, i, s, a = !0,
                            l = function(t) {
                                e.apply(null, t), n = null
                            };

                        function c() {
                            if (s = Array.prototype.slice.call(arguments), a) return l(s), void(a = !1);
                            i = Number(new Date), n = n || i, o(s), i - n >= t && l(s)
                        }
                        return o = r(l, t = t || 0), c.reset = function() {
                            a = !0, n = null
                        }, c
                    }
                },
                322: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return e instanceof Array
                    }
                },
                326: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return "boolean" == typeof e || e instanceof Boolean
                    }
                },
                65: function(e, t, n) {
                    "use strict";
                    var r = n(929),
                        o = n(934);
                    e.exports = function(e) {
                        return !r(e) && !o(e)
                    }
                },
                404: function(e, t, n) {
                    "use strict";
                    var r = n(790);
                    e.exports = function(e) {
                        return !r(e)
                    }
                },
                294: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return e instanceof Function
                    }
                },
                934: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return null === e
                    }
                },
                321: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return "number" == typeof e || e instanceof Number
                    }
                },
                73: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return e === Object(e)
                    }
                },
                758: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return "string" == typeof e || e instanceof String
                    }
                },
                790: function(e, t, n) {
                    "use strict";
                    var r = n(65);
                    e.exports = function(e) {
                        return r(e) && !1 !== e
                    }
                },
                929: function(e) {
                    "use strict";
                    e.exports = function(e) {
                        return void 0 === e
                    }
                }
            },
            t = {};

        function n(r) {
            var o = t[r];
            if (void 0 !== o) return o.exports;
            var i = t[r] = {
                exports: {}
            };
            return e[r].call(i.exports, i, i.exports, n), i.exports
        }
        n.n = function(e) {
            var t = e && e.__esModule ? function() {
                return e.default
            } : function() {
                return e
            };
            return n.d(t, {
                a: t
            }), t
        }, n.d = function(e, t) {
            for (var r in t) n.o(t, r) && !n.o(e, r) && Object.defineProperty(e, r, {
                enumerable: !0,
                get: t[r]
            })
        }, n.g = function() {
            if ("object" == typeof globalThis) return globalThis;
            try {
                return this || new Function("return this")()
            } catch (e) {
                if ("object" == typeof window) return window
            }
        }(), n.o = function(e, t) {
            return Object.prototype.hasOwnProperty.call(e, t)
        };
        var r = {};
        return function() {
            "use strict";
            n.d(r, {
                default: function() {
                    return vy
                }
            });
            /*! *****************************************************************************
            Copyright (c) Microsoft Corporation.

            Permission to use, copy, modify, and/or distribute this software for any
            purpose with or without fee is hereby granted.

            THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
            REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
            AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
            INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
            LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
            OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
            PERFORMANCE OF THIS SOFTWARE.
            ***************************************************************************** */
            var e = function(t, n) {
                return e = Object.setPrototypeOf || {
                        __proto__: []
                    }
                    instanceof Array && function(e, t) {
                        e.__proto__ = t
                    } || function(e, t) {
                        for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                    }, e(t, n)
            };

            function t(t, n) {
                if ("function" != typeof n && null !== n) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");

                function r() {
                    this.constructor = t
                }
                e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
            }
            var o = function() {
                return o = Object.assign || function(e) {
                    for (var t, n = 1, r = arguments.length; n < r; n++)
                        for (var o in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]);
                    return e
                }, o.apply(this, arguments)
            };
            Object.create;

            function i(e, t, n) {
                if (n || 2 === arguments.length)
                    for (var r, o = 0, i = t.length; o < i; o++) !r && o in t || (r || (r = Array.prototype.slice.call(t, 0, o)), r[o] = t[o]);
                return e.concat(r || Array.prototype.slice.call(t))
            }

            function s(e, t) {
                return Object.defineProperty ? Object.defineProperty(e, "raw", {
                    value: t
                }) : e.raw = t, e
            }
            Object.create;

            function a(e) {
                this.content = e
            }
            a.prototype = {
                constructor: a,
                find: function(e) {
                    for (var t = 0; t < this.content.length; t += 2)
                        if (this.content[t] === e) return t;
                    return -1
                },
                get: function(e) {
                    var t = this.find(e);
                    return -1 == t ? void 0 : this.content[t + 1]
                },
                update: function(e, t, n) {
                    var r = n && n != e ? this.remove(n) : this,
                        o = r.find(e),
                        i = r.content.slice();
                    return -1 == o ? i.push(n || e, t) : (i[o + 1] = t, n && (i[o] = n)), new a(i)
                },
                remove: function(e) {
                    var t = this.find(e);
                    if (-1 == t) return this;
                    var n = this.content.slice();
                    return n.splice(t, 2), new a(n)
                },
                addToStart: function(e, t) {
                    return new a([e, t].concat(this.remove(e).content))
                },
                addToEnd: function(e, t) {
                    var n = this.remove(e).content.slice();
                    return n.push(e, t), new a(n)
                },
                addBefore: function(e, t, n) {
                    var r = this.remove(t),
                        o = r.content.slice(),
                        i = r.find(e);
                    return o.splice(-1 == i ? o.length : i, 0, t, n), new a(o)
                },
                forEach: function(e) {
                    for (var t = 0; t < this.content.length; t += 2) e(this.content[t], this.content[t + 1])
                },
                prepend: function(e) {
                    return (e = a.from(e)).size ? new a(e.content.concat(this.subtract(e).content)) : this
                },
                append: function(e) {
                    return (e = a.from(e)).size ? new a(this.subtract(e).content.concat(e.content)) : this
                },
                subtract: function(e) {
                    var t = this;
                    e = a.from(e);
                    for (var n = 0; n < e.content.length; n += 2) t = t.remove(e.content[n]);
                    return t
                },
                get size() {
                    return this.content.length >> 1
                }
            }, a.from = function(e) {
                if (e instanceof a) return e;
                var t = [];
                if (e)
                    for (var n in e) t.push(n, e[n]);
                return new a(t)
            };
            var l = a;

            function c(e, t, n) {
                for (let r = 0;; r++) {
                    if (r == e.childCount || r == t.childCount) return e.childCount == t.childCount ? null : n;
                    let o = e.child(r),
                        i = t.child(r);
                    if (o != i) {
                        if (!o.sameMarkup(i)) return n;
                        if (o.isText && o.text != i.text) {
                            for (let e = 0; o.text[e] == i.text[e]; e++) n++;
                            return n
                        }
                        if (o.content.size || i.content.size) {
                            let e = c(o.content, i.content, n + 1);
                            if (null != e) return e
                        }
                        n += o.nodeSize
                    } else n += o.nodeSize
                }
            }

            function u(e, t, n, r) {
                for (let o = e.childCount, i = t.childCount;;) {
                    if (0 == o || 0 == i) return o == i ? null : {
                        a: n,
                        b: r
                    };
                    let s = e.child(--o),
                        a = t.child(--i),
                        l = s.nodeSize;
                    if (s != a) {
                        if (!s.sameMarkup(a)) return {
                            a: n,
                            b: r
                        };
                        if (s.isText && s.text != a.text) {
                            let e = 0,
                                t = Math.min(s.text.length, a.text.length);
                            for (; e < t && s.text[s.text.length - e - 1] == a.text[a.text.length - e - 1];) e++, n--, r--;
                            return {
                                a: n,
                                b: r
                            }
                        }
                        if (s.content.size || a.content.size) {
                            let e = u(s.content, a.content, n - 1, r - 1);
                            if (e) return e
                        }
                        n -= l, r -= l
                    } else n -= l, r -= l
                }
            }
            class d {
                constructor(e, t) {
                    if (this.content = e, this.size = t || 0, null == t)
                        for (let t = 0; t < e.length; t++) this.size += e[t].nodeSize
                }
                nodesBetween(e, t, n, r = 0, o) {
                    for (let i = 0, s = 0; s < t; i++) {
                        let a = this.content[i],
                            l = s + a.nodeSize;
                        if (l > e && !1 !== n(a, r + s, o || null, i) && a.content.size) {
                            let o = s + 1;
                            a.nodesBetween(Math.max(0, e - o), Math.min(a.content.size, t - o), n, r + o)
                        }
                        s = l
                    }
                }
                descendants(e) {
                    this.nodesBetween(0, this.size, e)
                }
                textBetween(e, t, n, r) {
                    let o = "",
                        i = !0;
                    return this.nodesBetween(e, t, ((s, a) => {
                        s.isText ? (o += s.text.slice(Math.max(e, a) - a, t - a), i = !n) : s.isLeaf ? (r ? o += "function" == typeof r ? r(s) : r : s.type.spec.leafText && (o += s.type.spec.leafText(s)), i = !n) : !i && s.isBlock && (o += n, i = !0)
                    }), 0), o
                }
                append(e) {
                    if (!e.size) return this;
                    if (!this.size) return e;
                    let t = this.lastChild,
                        n = e.firstChild,
                        r = this.content.slice(),
                        o = 0;
                    for (t.isText && t.sameMarkup(n) && (r[r.length - 1] = t.withText(t.text + n.text), o = 1); o < e.content.length; o++) r.push(e.content[o]);
                    return new d(r, this.size + e.size)
                }
                cut(e, t = this.size) {
                    if (0 == e && t == this.size) return this;
                    let n = [],
                        r = 0;
                    if (t > e)
                        for (let o = 0, i = 0; i < t; o++) {
                            let s = this.content[o],
                                a = i + s.nodeSize;
                            a > e && ((i < e || a > t) && (s = s.isText ? s.cut(Math.max(0, e - i), Math.min(s.text.length, t - i)) : s.cut(Math.max(0, e - i - 1), Math.min(s.content.size, t - i - 1))), n.push(s), r += s.nodeSize), i = a
                        }
                    return new d(n, r)
                }
                cutByIndex(e, t) {
                    return e == t ? d.empty : 0 == e && t == this.content.length ? this : new d(this.content.slice(e, t))
                }
                replaceChild(e, t) {
                    let n = this.content[e];
                    if (n == t) return this;
                    let r = this.content.slice(),
                        o = this.size + t.nodeSize - n.nodeSize;
                    return r[e] = t, new d(r, o)
                }
                addToStart(e) {
                    return new d([e].concat(this.content), this.size + e.nodeSize)
                }
                addToEnd(e) {
                    return new d(this.content.concat(e), this.size + e.nodeSize)
                }
                eq(e) {
                    if (this.content.length != e.content.length) return !1;
                    for (let t = 0; t < this.content.length; t++)
                        if (!this.content[t].eq(e.content[t])) return !1;
                    return !0
                }
                get firstChild() {
                    return this.content.length ? this.content[0] : null
                }
                get lastChild() {
                    return this.content.length ? this.content[this.content.length - 1] : null
                }
                get childCount() {
                    return this.content.length
                }
                child(e) {
                    let t = this.content[e];
                    if (!t) throw new RangeError("Index " + e + " out of range for " + this);
                    return t
                }
                maybeChild(e) {
                    return this.content[e] || null
                }
                forEach(e) {
                    for (let t = 0, n = 0; t < this.content.length; t++) {
                        let r = this.content[t];
                        e(r, n, t), n += r.nodeSize
                    }
                }
                findDiffStart(e, t = 0) {
                    return c(this, e, t)
                }
                findDiffEnd(e, t = this.size, n = e.size) {
                    return u(this, e, t, n)
                }
                findIndex(e, t = -1) {
                    if (0 == e) return h(0, e);
                    if (e == this.size) return h(this.content.length, e);
                    if (e > this.size || e < 0) throw new RangeError(`Position ${e} outside of fragment (${this})`);
                    for (let n = 0, r = 0;; n++) {
                        let o = r + this.child(n).nodeSize;
                        if (o >= e) return o == e || t > 0 ? h(n + 1, o) : h(n, r);
                        r = o
                    }
                }
                toString() {
                    return "<" + this.toStringInner() + ">"
                }
                toStringInner() {
                    return this.content.join(", ")
                }
                toJSON() {
                    return this.content.length ? this.content.map((e => e.toJSON())) : null
                }
                static fromJSON(e, t) {
                    if (!t) return d.empty;
                    if (!Array.isArray(t)) throw new RangeError("Invalid input for Fragment.fromJSON");
                    return new d(t.map(e.nodeFromJSON))
                }
                static fromArray(e) {
                    if (!e.length) return d.empty;
                    let t, n = 0;
                    for (let r = 0; r < e.length; r++) {
                        let o = e[r];
                        n += o.nodeSize, r && o.isText && e[r - 1].sameMarkup(o) ? (t || (t = e.slice(0, r)), t[t.length - 1] = o.withText(t[t.length - 1].text + o.text)) : t && t.push(o)
                    }
                    return new d(t || e, n)
                }
                static from(e) {
                    if (!e) return d.empty;
                    if (e instanceof d) return e;
                    if (Array.isArray(e)) return this.fromArray(e);
                    if (e.attrs) return new d([e], e.nodeSize);
                    throw new RangeError("Can not convert " + e + " to a Fragment" + (e.nodesBetween ? " (looks like multiple versions of prosemirror-model were loaded)" : ""))
                }
            }
            d.empty = new d([], 0);
            const p = {
                index: 0,
                offset: 0
            };

            function h(e, t) {
                return p.index = e, p.offset = t, p
            }

            function f(e, t) {
                if (e === t) return !0;
                if (!e || "object" != typeof e || !t || "object" != typeof t) return !1;
                let n = Array.isArray(e);
                if (Array.isArray(t) != n) return !1;
                if (n) {
                    if (e.length != t.length) return !1;
                    for (let n = 0; n < e.length; n++)
                        if (!f(e[n], t[n])) return !1
                } else {
                    for (let n in e)
                        if (!(n in t) || !f(e[n], t[n])) return !1;
                    for (let n in t)
                        if (!(n in e)) return !1
                }
                return !0
            }
            class m {
                constructor(e, t) {
                    this.type = e, this.attrs = t
                }
                addToSet(e) {
                    let t, n = !1;
                    for (let r = 0; r < e.length; r++) {
                        let o = e[r];
                        if (this.eq(o)) return e;
                        if (this.type.excludes(o.type)) t || (t = e.slice(0, r));
                        else {
                            if (o.type.excludes(this.type)) return e;
                            !n && o.type.rank > this.type.rank && (t || (t = e.slice(0, r)), t.push(this), n = !0), t && t.push(o)
                        }
                    }
                    return t || (t = e.slice()), n || t.push(this), t
                }
                removeFromSet(e) {
                    for (let t = 0; t < e.length; t++)
                        if (this.eq(e[t])) return e.slice(0, t).concat(e.slice(t + 1));
                    return e
                }
                isInSet(e) {
                    for (let t = 0; t < e.length; t++)
                        if (this.eq(e[t])) return !0;
                    return !1
                }
                eq(e) {
                    return this == e || this.type == e.type && f(this.attrs, e.attrs)
                }
                toJSON() {
                    let e = {
                        type: this.type.name
                    };
                    for (let t in this.attrs) {
                        e.attrs = this.attrs;
                        break
                    }
                    return e
                }
                static fromJSON(e, t) {
                    if (!t) throw new RangeError("Invalid input for Mark.fromJSON");
                    let n = e.marks[t.type];
                    if (!n) throw new RangeError(`There is no mark type ${t.type} in this schema`);
                    return n.create(t.attrs)
                }
                static sameSet(e, t) {
                    if (e == t) return !0;
                    if (e.length != t.length) return !1;
                    for (let n = 0; n < e.length; n++)
                        if (!e[n].eq(t[n])) return !1;
                    return !0
                }
                static setFrom(e) {
                    if (!e || Array.isArray(e) && 0 == e.length) return m.none;
                    if (e instanceof m) return [e];
                    let t = e.slice();
                    return t.sort(((e, t) => e.type.rank - t.type.rank)), t
                }
            }
            m.none = [];
            class g extends Error {}
            class v {
                constructor(e, t, n) {
                    this.content = e, this.openStart = t, this.openEnd = n
                }
                get size() {
                    return this.content.size - this.openStart - this.openEnd
                }
                insertAt(e, t) {
                    let n = b(this.content, e + this.openStart, t);
                    return n && new v(n, this.openStart, this.openEnd)
                }
                removeBetween(e, t) {
                    return new v(y(this.content, e + this.openStart, t + this.openStart), this.openStart, this.openEnd)
                }
                eq(e) {
                    return this.content.eq(e.content) && this.openStart == e.openStart && this.openEnd == e.openEnd
                }
                toString() {
                    return this.content + "(" + this.openStart + "," + this.openEnd + ")"
                }
                toJSON() {
                    if (!this.content.size) return null;
                    let e = {
                        content: this.content.toJSON()
                    };
                    return this.openStart > 0 && (e.openStart = this.openStart), this.openEnd > 0 && (e.openEnd = this.openEnd), e
                }
                static fromJSON(e, t) {
                    if (!t) return v.empty;
                    let n = t.openStart || 0,
                        r = t.openEnd || 0;
                    if ("number" != typeof n || "number" != typeof r) throw new RangeError("Invalid input for Slice.fromJSON");
                    return new v(d.fromJSON(e, t.content), n, r)
                }
                static maxOpen(e, t = !0) {
                    let n = 0,
                        r = 0;
                    for (let r = e.firstChild; r && !r.isLeaf && (t || !r.type.spec.isolating); r = r.firstChild) n++;
                    for (let n = e.lastChild; n && !n.isLeaf && (t || !n.type.spec.isolating); n = n.lastChild) r++;
                    return new v(e, n, r)
                }
            }

            function y(e, t, n) {
                let {
                    index: r,
                    offset: o
                } = e.findIndex(t), i = e.maybeChild(r), {
                    index: s,
                    offset: a
                } = e.findIndex(n);
                if (o == t || i.isText) {
                    if (a != n && !e.child(s).isText) throw new RangeError("Removing non-flat range");
                    return e.cut(0, t).append(e.cut(n))
                }
                if (r != s) throw new RangeError("Removing non-flat range");
                return e.replaceChild(r, i.copy(y(i.content, t - o - 1, n - o - 1)))
            }

            function b(e, t, n, r) {
                let {
                    index: o,
                    offset: i
                } = e.findIndex(t), s = e.maybeChild(o);
                if (i == t || s.isText) return r && !r.canReplace(o, o, n) ? null : e.cut(0, t).append(n).append(e.cut(t));
                let a = b(s.content, t - i - 1, n);
                return a && e.replaceChild(o, s.copy(a))
            }

            function w(e, t, n) {
                if (n.openStart > e.depth) throw new g("Inserted content deeper than insertion position");
                if (e.depth - n.openStart != t.depth - n.openEnd) throw new g("Inconsistent open depths");
                return k(e, t, n, 0)
            }

            function k(e, t, n, r) {
                let o = e.index(r),
                    i = e.node(r);
                if (o == t.index(r) && r < e.depth - n.openStart) {
                    let s = k(e, t, n, r + 1);
                    return i.copy(i.content.replaceChild(o, s))
                }
                if (n.content.size) {
                    if (n.openStart || n.openEnd || e.depth != r || t.depth != r) {
                        let {
                            start: o,
                            end: s
                        } = function(e, t) {
                            let n = t.depth - e.openStart,
                                r = t.node(n).copy(e.content);
                            for (let e = n - 1; e >= 0; e--) r = t.node(e).copy(d.from(r));
                            return {
                                start: r.resolveNoCache(e.openStart + n),
                                end: r.resolveNoCache(r.content.size - e.openEnd - n)
                            }
                        }(n, e);
                        return S(i, E(e, o, s, t, r))
                    } {
                        let r = e.parent,
                            o = r.content;
                        return S(r, o.cut(0, e.parentOffset).append(n.content).append(o.cut(t.parentOffset)))
                    }
                }
                return S(i, N(e, t, r))
            }

            function x(e, t) {
                if (!t.type.compatibleContent(e.type)) throw new g("Cannot join " + t.type.name + " onto " + e.type.name)
            }

            function C(e, t, n) {
                let r = e.node(n);
                return x(r, t.node(n)), r
            }

            function T(e, t) {
                let n = t.length - 1;
                n >= 0 && e.isText && e.sameMarkup(t[n]) ? t[n] = e.withText(t[n].text + e.text) : t.push(e)
            }

            function M(e, t, n, r) {
                let o = (t || e).node(n),
                    i = 0,
                    s = t ? t.index(n) : o.childCount;
                e && (i = e.index(n), e.depth > n ? i++ : e.textOffset && (T(e.nodeAfter, r), i++));
                for (let e = i; e < s; e++) T(o.child(e), r);
                t && t.depth == n && t.textOffset && T(t.nodeBefore, r)
            }

            function S(e, t) {
                if (!e.type.validContent(t)) throw new g("Invalid content for node " + e.type.name);
                return e.copy(t)
            }

            function E(e, t, n, r, o) {
                let i = e.depth > o && C(e, t, o + 1),
                    s = r.depth > o && C(n, r, o + 1),
                    a = [];
                return M(null, e, o, a), i && s && t.index(o) == n.index(o) ? (x(i, s), T(S(i, E(e, t, n, r, o + 1)), a)) : (i && T(S(i, N(e, t, o + 1)), a), M(t, n, o, a), s && T(S(s, N(n, r, o + 1)), a)), M(r, null, o, a), new d(a)
            }

            function N(e, t, n) {
                let r = [];
                if (M(null, e, n, r), e.depth > n) {
                    T(S(C(e, t, n + 1), N(e, t, n + 1)), r)
                }
                return M(t, null, n, r), new d(r)
            }
            v.empty = new v(d.empty, 0, 0);
            class O {
                constructor(e, t, n) {
                    this.pos = e, this.path = t, this.parentOffset = n, this.depth = t.length / 3 - 1
                }
                resolveDepth(e) {
                    return null == e ? this.depth : e < 0 ? this.depth + e : e
                }
                get parent() {
                    return this.node(this.depth)
                }
                get doc() {
                    return this.node(0)
                }
                node(e) {
                    return this.path[3 * this.resolveDepth(e)]
                }
                index(e) {
                    return this.path[3 * this.resolveDepth(e) + 1]
                }
                indexAfter(e) {
                    return e = this.resolveDepth(e), this.index(e) + (e != this.depth || this.textOffset ? 1 : 0)
                }
                start(e) {
                    return 0 == (e = this.resolveDepth(e)) ? 0 : this.path[3 * e - 1] + 1
                }
                end(e) {
                    return e = this.resolveDepth(e), this.start(e) + this.node(e).content.size
                }
                before(e) {
                    if (!(e = this.resolveDepth(e))) throw new RangeError("There is no position before the top-level node");
                    return e == this.depth + 1 ? this.pos : this.path[3 * e - 1]
                }
                after(e) {
                    if (!(e = this.resolveDepth(e))) throw new RangeError("There is no position after the top-level node");
                    return e == this.depth + 1 ? this.pos : this.path[3 * e - 1] + this.path[3 * e].nodeSize
                }
                get textOffset() {
                    return this.pos - this.path[this.path.length - 1]
                }
                get nodeAfter() {
                    let e = this.parent,
                        t = this.index(this.depth);
                    if (t == e.childCount) return null;
                    let n = this.pos - this.path[this.path.length - 1],
                        r = e.child(t);
                    return n ? e.child(t).cut(n) : r
                }
                get nodeBefore() {
                    let e = this.index(this.depth),
                        t = this.pos - this.path[this.path.length - 1];
                    return t ? this.parent.child(e).cut(0, t) : 0 == e ? null : this.parent.child(e - 1)
                }
                posAtIndex(e, t) {
                    t = this.resolveDepth(t);
                    let n = this.path[3 * t],
                        r = 0 == t ? 0 : this.path[3 * t - 1] + 1;
                    for (let t = 0; t < e; t++) r += n.child(t).nodeSize;
                    return r
                }
                marks() {
                    let e = this.parent,
                        t = this.index();
                    if (0 == e.content.size) return m.none;
                    if (this.textOffset) return e.child(t).marks;
                    let n = e.maybeChild(t - 1),
                        r = e.maybeChild(t);
                    if (!n) {
                        let e = n;
                        n = r, r = e
                    }
                    let o = n.marks;
                    for (var i = 0; i < o.length; i++) !1 !== o[i].type.spec.inclusive || r && o[i].isInSet(r.marks) || (o = o[i--].removeFromSet(o));
                    return o
                }
                marksAcross(e) {
                    let t = this.parent.maybeChild(this.index());
                    if (!t || !t.isInline) return null;
                    let n = t.marks,
                        r = e.parent.maybeChild(e.index());
                    for (var o = 0; o < n.length; o++) !1 !== n[o].type.spec.inclusive || r && n[o].isInSet(r.marks) || (n = n[o--].removeFromSet(n));
                    return n
                }
                sharedDepth(e) {
                    for (let t = this.depth; t > 0; t--)
                        if (this.start(t) <= e && this.end(t) >= e) return t;
                    return 0
                }
                blockRange(e = this, t) {
                    if (e.pos < this.pos) return e.blockRange(this);
                    for (let n = this.depth - (this.parent.inlineContent || this.pos == e.pos ? 1 : 0); n >= 0; n--)
                        if (e.pos <= this.end(n) && (!t || t(this.node(n)))) return new I(this, e, n);
                    return null
                }
                sameParent(e) {
                    return this.pos - this.parentOffset == e.pos - e.parentOffset
                }
                max(e) {
                    return e.pos > this.pos ? e : this
                }
                min(e) {
                    return e.pos < this.pos ? e : this
                }
                toString() {
                    let e = "";
                    for (let t = 1; t <= this.depth; t++) e += (e ? "/" : "") + this.node(t).type.name + "_" + this.index(t - 1);
                    return e + ":" + this.parentOffset
                }
                static resolve(e, t) {
                    if (!(t >= 0 && t <= e.content.size)) throw new RangeError("Position " + t + " out of range");
                    let n = [],
                        r = 0,
                        o = t;
                    for (let t = e;;) {
                        let {
                            index: e,
                            offset: i
                        } = t.content.findIndex(o), s = o - i;
                        if (n.push(t, e, r + i), !s) break;
                        if (t = t.child(e), t.isText) break;
                        o = s - 1, r += i + 1
                    }
                    return new O(t, n, o)
                }
                static resolveCached(e, t) {
                    for (let n = 0; n < D.length; n++) {
                        let r = D[n];
                        if (r.pos == t && r.doc == e) return r
                    }
                    let n = D[A] = O.resolve(e, t);
                    return A = (A + 1) % L, n
                }
            }
            let D = [],
                A = 0,
                L = 12;
            class I {
                constructor(e, t, n) {
                    this.$from = e, this.$to = t, this.depth = n
                }
                get start() {
                    return this.$from.before(this.depth + 1)
                }
                get end() {
                    return this.$to.after(this.depth + 1)
                }
                get parent() {
                    return this.$from.node(this.depth)
                }
                get startIndex() {
                    return this.$from.index(this.depth)
                }
                get endIndex() {
                    return this.$to.indexAfter(this.depth)
                }
            }
            const R = Object.create(null);
            class P {
                constructor(e, t, n, r = m.none) {
                    this.type = e, this.attrs = t, this.marks = r, this.content = n || d.empty
                }
                get nodeSize() {
                    return this.isLeaf ? 1 : 2 + this.content.size
                }
                get childCount() {
                    return this.content.childCount
                }
                child(e) {
                    return this.content.child(e)
                }
                maybeChild(e) {
                    return this.content.maybeChild(e)
                }
                forEach(e) {
                    this.content.forEach(e)
                }
                nodesBetween(e, t, n, r = 0) {
                    this.content.nodesBetween(e, t, n, r, this)
                }
                descendants(e) {
                    this.nodesBetween(0, this.content.size, e)
                }
                get textContent() {
                    return this.isLeaf && this.type.spec.leafText ? this.type.spec.leafText(this) : this.textBetween(0, this.content.size, "")
                }
                textBetween(e, t, n, r) {
                    return this.content.textBetween(e, t, n, r)
                }
                get firstChild() {
                    return this.content.firstChild
                }
                get lastChild() {
                    return this.content.lastChild
                }
                eq(e) {
                    return this == e || this.sameMarkup(e) && this.content.eq(e.content)
                }
                sameMarkup(e) {
                    return this.hasMarkup(e.type, e.attrs, e.marks)
                }
                hasMarkup(e, t, n) {
                    return this.type == e && f(this.attrs, t || e.defaultAttrs || R) && m.sameSet(this.marks, n || m.none)
                }
                copy(e = null) {
                    return e == this.content ? this : new P(this.type, this.attrs, e, this.marks)
                }
                mark(e) {
                    return e == this.marks ? this : new P(this.type, this.attrs, this.content, e)
                }
                cut(e, t = this.content.size) {
                    return 0 == e && t == this.content.size ? this : this.copy(this.content.cut(e, t))
                }
                slice(e, t = this.content.size, n = !1) {
                    if (e == t) return v.empty;
                    let r = this.resolve(e),
                        o = this.resolve(t),
                        i = n ? 0 : r.sharedDepth(t),
                        s = r.start(i),
                        a = r.node(i).content.cut(r.pos - s, o.pos - s);
                    return new v(a, r.depth - i, o.depth - i)
                }
                replace(e, t, n) {
                    return w(this.resolve(e), this.resolve(t), n)
                }
                nodeAt(e) {
                    for (let t = this;;) {
                        let {
                            index: n,
                            offset: r
                        } = t.content.findIndex(e);
                        if (t = t.maybeChild(n), !t) return null;
                        if (r == e || t.isText) return t;
                        e -= r + 1
                    }
                }
                childAfter(e) {
                    let {
                        index: t,
                        offset: n
                    } = this.content.findIndex(e);
                    return {
                        node: this.content.maybeChild(t),
                        index: t,
                        offset: n
                    }
                }
                childBefore(e) {
                    if (0 == e) return {
                        node: null,
                        index: 0,
                        offset: 0
                    };
                    let {
                        index: t,
                        offset: n
                    } = this.content.findIndex(e);
                    if (n < e) return {
                        node: this.content.child(t),
                        index: t,
                        offset: n
                    };
                    let r = this.content.child(t - 1);
                    return {
                        node: r,
                        index: t - 1,
                        offset: n - r.nodeSize
                    }
                }
                resolve(e) {
                    return O.resolveCached(this, e)
                }
                resolveNoCache(e) {
                    return O.resolve(this, e)
                }
                rangeHasMark(e, t, n) {
                    let r = !1;
                    return t > e && this.nodesBetween(e, t, (e => (n.isInSet(e.marks) && (r = !0), !r))), r
                }
                get isBlock() {
                    return this.type.isBlock
                }
                get isTextblock() {
                    return this.type.isTextblock
                }
                get inlineContent() {
                    return this.type.inlineContent
                }
                get isInline() {
                    return this.type.isInline
                }
                get isText() {
                    return this.type.isText
                }
                get isLeaf() {
                    return this.type.isLeaf
                }
                get isAtom() {
                    return this.type.isAtom
                }
                toString() {
                    if (this.type.spec.toDebugString) return this.type.spec.toDebugString(this);
                    let e = this.type.name;
                    return this.content.size && (e += "(" + this.content.toStringInner() + ")"), F(this.marks, e)
                }
                contentMatchAt(e) {
                    let t = this.type.contentMatch.matchFragment(this.content, 0, e);
                    if (!t) throw new Error("Called contentMatchAt on a node with invalid content");
                    return t
                }
                canReplace(e, t, n = d.empty, r = 0, o = n.childCount) {
                    let i = this.contentMatchAt(e).matchFragment(n, r, o),
                        s = i && i.matchFragment(this.content, t);
                    if (!s || !s.validEnd) return !1;
                    for (let e = r; e < o; e++)
                        if (!this.type.allowsMarks(n.child(e).marks)) return !1;
                    return !0
                }
                canReplaceWith(e, t, n, r) {
                    if (r && !this.type.allowsMarks(r)) return !1;
                    let o = this.contentMatchAt(e).matchType(n),
                        i = o && o.matchFragment(this.content, t);
                    return !!i && i.validEnd
                }
                canAppend(e) {
                    return e.content.size ? this.canReplace(this.childCount, this.childCount, e.content) : this.type.compatibleContent(e.type)
                }
                check() {
                    if (!this.type.validContent(this.content)) throw new RangeError(`Invalid content for node ${this.type.name}: ${this.content.toString().slice(0,50)}`);
                    let e = m.none;
                    for (let t = 0; t < this.marks.length; t++) e = this.marks[t].addToSet(e);
                    if (!m.sameSet(e, this.marks)) throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map((e=>e.type.name))}`);
                    this.content.forEach((e => e.check()))
                }
                toJSON() {
                    let e = {
                        type: this.type.name
                    };
                    for (let t in this.attrs) {
                        e.attrs = this.attrs;
                        break
                    }
                    return this.content.size && (e.content = this.content.toJSON()), this.marks.length && (e.marks = this.marks.map((e => e.toJSON()))), e
                }
                static fromJSON(e, t) {
                    if (!t) throw new RangeError("Invalid input for Node.fromJSON");
                    let n = null;
                    if (t.marks) {
                        if (!Array.isArray(t.marks)) throw new RangeError("Invalid mark data for Node.fromJSON");
                        n = t.marks.map(e.markFromJSON)
                    }
                    if ("text" == t.type) {
                        if ("string" != typeof t.text) throw new RangeError("Invalid text node in JSON");
                        return e.text(t.text, n)
                    }
                    let r = d.fromJSON(e, t.content);
                    return e.nodeType(t.type).create(t.attrs, r, n)
                }
            }
            P.prototype.text = void 0;
            class B extends P {
                constructor(e, t, n, r) {
                    if (super(e, t, null, r), !n) throw new RangeError("Empty text nodes are not allowed");
                    this.text = n
                }
                toString() {
                    return this.type.spec.toDebugString ? this.type.spec.toDebugString(this) : F(this.marks, JSON.stringify(this.text))
                }
                get textContent() {
                    return this.text
                }
                textBetween(e, t) {
                    return this.text.slice(e, t)
                }
                get nodeSize() {
                    return this.text.length
                }
                mark(e) {
                    return e == this.marks ? this : new B(this.type, this.attrs, this.text, e)
                }
                withText(e) {
                    return e == this.text ? this : new B(this.type, this.attrs, e, this.marks)
                }
                cut(e = 0, t = this.text.length) {
                    return 0 == e && t == this.text.length ? this : this.withText(this.text.slice(e, t))
                }
                eq(e) {
                    return this.sameMarkup(e) && this.text == e.text
                }
                toJSON() {
                    let e = super.toJSON();
                    return e.text = this.text, e
                }
            }

            function F(e, t) {
                for (let n = e.length - 1; n >= 0; n--) t = e[n].type.name + "(" + t + ")";
                return t
            }
            class H {
                constructor(e) {
                    this.validEnd = e, this.next = [], this.wrapCache = []
                }
                static parse(e, t) {
                    let n = new z(e, t);
                    if (null == n.next) return H.empty;
                    let r = q(n);
                    n.next && n.err("Unexpected trailing text");
                    let o = function(e) {
                        let t = Object.create(null);
                        return n(W(e, 0));

                        function n(r) {
                            let o = [];
                            r.forEach((t => {
                                e[t].forEach((({
                                                   term: t,
                                                   to: n
                                               }) => {
                                    if (!t) return;
                                    let r;
                                    for (let e = 0; e < o.length; e++) o[e][0] == t && (r = o[e][1]);
                                    W(e, n).forEach((e => {
                                        r || o.push([t, r = []]), -1 == r.indexOf(e) && r.push(e)
                                    }))
                                }))
                            }));
                            let i = t[r.join(",")] = new H(r.indexOf(e.length - 1) > -1);
                            for (let e = 0; e < o.length; e++) {
                                let r = o[e][1].sort(U);
                                i.next.push({
                                    type: o[e][0],
                                    next: t[r.join(",")] || n(r)
                                })
                            }
                            return i
                        }
                    }(function(e) {
                        let t = [
                            []
                        ];
                        return o(i(e, 0), n()), t;

                        function n() {
                            return t.push([]) - 1
                        }

                        function r(e, n, r) {
                            let o = {
                                term: r,
                                to: n
                            };
                            return t[e].push(o), o
                        }

                        function o(e, t) {
                            e.forEach((e => e.to = t))
                        }

                        function i(e, t) {
                            if ("choice" == e.type) return e.exprs.reduce(((e, n) => e.concat(i(n, t))), []);
                            if ("seq" != e.type) {
                                if ("star" == e.type) {
                                    let s = n();
                                    return r(t, s), o(i(e.expr, s), s), [r(s)]
                                }
                                if ("plus" == e.type) {
                                    let s = n();
                                    return o(i(e.expr, t), s), o(i(e.expr, s), s), [r(s)]
                                }
                                if ("opt" == e.type) return [r(t)].concat(i(e.expr, t));
                                if ("range" == e.type) {
                                    let s = t;
                                    for (let t = 0; t < e.min; t++) {
                                        let t = n();
                                        o(i(e.expr, s), t), s = t
                                    }
                                    if (-1 == e.max) o(i(e.expr, s), s);
                                    else
                                        for (let t = e.min; t < e.max; t++) {
                                            let t = n();
                                            r(s, t), o(i(e.expr, s), t), s = t
                                        }
                                    return [r(s)]
                                }
                                if ("name" == e.type) return [r(t, void 0, e.value)];
                                throw new Error("Unknown expr type")
                            }
                            for (let r = 0;; r++) {
                                let s = i(e.exprs[r], t);
                                if (r == e.exprs.length - 1) return s;
                                o(s, t = n())
                            }
                        }
                    }(r));
                    return function(e, t) {
                        for (let n = 0, r = [e]; n < r.length; n++) {
                            let e = r[n],
                                o = !e.validEnd,
                                i = [];
                            for (let t = 0; t < e.next.length; t++) {
                                let {
                                    type: n,
                                    next: s
                                } = e.next[t];
                                i.push(n.name), !o || n.isText || n.hasRequiredAttrs() || (o = !1), -1 == r.indexOf(s) && r.push(s)
                            }
                            o && t.err("Only non-generatable nodes (" + i.join(", ") + ") in a required position (see https://prosemirror.net/docs/guide/#generatable)")
                        }
                    }(o, n), o
                }
                matchType(e) {
                    for (let t = 0; t < this.next.length; t++)
                        if (this.next[t].type == e) return this.next[t].next;
                    return null
                }
                matchFragment(e, t = 0, n = e.childCount) {
                    let r = this;
                    for (let o = t; r && o < n; o++) r = r.matchType(e.child(o).type);
                    return r
                }
                get inlineContent() {
                    return this.next.length && this.next[0].type.isInline
                }
                get defaultType() {
                    for (let e = 0; e < this.next.length; e++) {
                        let {
                            type: t
                        } = this.next[e];
                        if (!t.isText && !t.hasRequiredAttrs()) return t
                    }
                    return null
                }
                compatible(e) {
                    for (let t = 0; t < this.next.length; t++)
                        for (let n = 0; n < e.next.length; n++)
                            if (this.next[t].type == e.next[n].type) return !0;
                    return !1
                }
                fillBefore(e, t = !1, n = 0) {
                    let r = [this];
                    return function o(i, s) {
                        let a = i.matchFragment(e, n);
                        if (a && (!t || a.validEnd)) return d.from(s.map((e => e.createAndFill())));
                        for (let e = 0; e < i.next.length; e++) {
                            let {
                                type: t,
                                next: n
                            } = i.next[e];
                            if (!t.isText && !t.hasRequiredAttrs() && -1 == r.indexOf(n)) {
                                r.push(n);
                                let e = o(n, s.concat(t));
                                if (e) return e
                            }
                        }
                        return null
                    }(this, [])
                }
                findWrapping(e) {
                    for (let t = 0; t < this.wrapCache.length; t += 2)
                        if (this.wrapCache[t] == e) return this.wrapCache[t + 1];
                    let t = this.computeWrapping(e);
                    return this.wrapCache.push(e, t), t
                }
                computeWrapping(e) {
                    let t = Object.create(null),
                        n = [{
                            match: this,
                            type: null,
                            via: null
                        }];
                    for (; n.length;) {
                        let r = n.shift(),
                            o = r.match;
                        if (o.matchType(e)) {
                            let e = [];
                            for (let t = r; t.type; t = t.via) e.push(t.type);
                            return e.reverse()
                        }
                        for (let e = 0; e < o.next.length; e++) {
                            let {
                                type: i,
                                next: s
                            } = o.next[e];
                            i.isLeaf || i.hasRequiredAttrs() || i.name in t || r.type && !s.validEnd || (n.push({
                                match: i.contentMatch,
                                type: i,
                                via: r
                            }), t[i.name] = !0)
                        }
                    }
                    return null
                }
                get edgeCount() {
                    return this.next.length
                }
                edge(e) {
                    if (e >= this.next.length) throw new RangeError(`There's no ${e}th edge in this content match`);
                    return this.next[e]
                }
                toString() {
                    let e = [];
                    return function t(n) {
                        e.push(n);
                        for (let r = 0; r < n.next.length; r++) - 1 == e.indexOf(n.next[r].next) && t(n.next[r].next)
                    }(this), e.map(((t, n) => {
                        let r = n + (t.validEnd ? "*" : " ") + " ";
                        for (let n = 0; n < t.next.length; n++) r += (n ? ", " : "") + t.next[n].type.name + "->" + e.indexOf(t.next[n].next);
                        return r
                    })).join("\n")
                }
            }
            H.empty = new H(!0);
            class z {
                constructor(e, t) {
                    this.string = e, this.nodeTypes = t, this.inline = null, this.pos = 0, this.tokens = e.split(/\s*(?=\b|\W|$)/), "" == this.tokens[this.tokens.length - 1] && this.tokens.pop(), "" == this.tokens[0] && this.tokens.shift()
                }
                get next() {
                    return this.tokens[this.pos]
                }
                eat(e) {
                    return this.next == e && (this.pos++ || !0)
                }
                err(e) {
                    throw new SyntaxError(e + " (in content expression '" + this.string + "')")
                }
            }

            function q(e) {
                let t = [];
                do {
                    t.push(V(e))
                } while (e.eat("|"));
                return 1 == t.length ? t[0] : {
                    type: "choice",
                    exprs: t
                }
            }

            function V(e) {
                let t = [];
                do {
                    t.push(j(e))
                } while (e.next && ")" != e.next && "|" != e.next);
                return 1 == t.length ? t[0] : {
                    type: "seq",
                    exprs: t
                }
            }

            function j(e) {
                let t = function(e) {
                    if (e.eat("(")) {
                        let t = q(e);
                        return e.eat(")") || e.err("Missing closing paren"), t
                    }
                    if (!/\W/.test(e.next)) {
                        let t = function(e, t) {
                            let n = e.nodeTypes,
                                r = n[t];
                            if (r) return [r];
                            let o = [];
                            for (let e in n) {
                                let r = n[e];
                                r.groups.indexOf(t) > -1 && o.push(r)
                            }
                            0 == o.length && e.err("No node type or group '" + t + "' found");
                            return o
                        }(e, e.next).map((t => (null == e.inline ? e.inline = t.isInline : e.inline != t.isInline && e.err("Mixing inline and block content"), {
                            type: "name",
                            value: t
                        })));
                        return e.pos++, 1 == t.length ? t[0] : {
                            type: "choice",
                            exprs: t
                        }
                    }
                    e.err("Unexpected token '" + e.next + "'")
                }(e);
                for (;;)
                    if (e.eat("+")) t = {
                        type: "plus",
                        expr: t
                    };
                    else if (e.eat("*")) t = {
                        type: "star",
                        expr: t
                    };
                    else if (e.eat("?")) t = {
                        type: "opt",
                        expr: t
                    };
                    else {
                        if (!e.eat("{")) break;
                        t = _(e, t)
                    }
                return t
            }

            function $(e) {
                /\D/.test(e.next) && e.err("Expected number, got '" + e.next + "'");
                let t = Number(e.next);
                return e.pos++, t
            }

            function _(e, t) {
                let n = $(e),
                    r = n;
                return e.eat(",") && (r = "}" != e.next ? $(e) : -1), e.eat("}") || e.err("Unclosed braced range"), {
                    type: "range",
                    min: n,
                    max: r,
                    expr: t
                }
            }

            function U(e, t) {
                return t - e
            }

            function W(e, t) {
                let n = [];
                return function t(r) {
                    let o = e[r];
                    if (1 == o.length && !o[0].term) return t(o[0].to);
                    n.push(r);
                    for (let e = 0; e < o.length; e++) {
                        let {
                            term: r,
                            to: i
                        } = o[e];
                        r || -1 != n.indexOf(i) || t(i)
                    }
                }(t), n.sort(U)
            }

            function J(e) {
                let t = Object.create(null);
                for (let n in e) {
                    let r = e[n];
                    if (!r.hasDefault) return null;
                    t[n] = r.default
                }
                return t
            }

            function G(e, t) {
                let n = Object.create(null);
                for (let r in e) {
                    let o = t && t[r];
                    if (void 0 === o) {
                        let t = e[r];
                        if (!t.hasDefault) throw new RangeError("No value supplied for attribute " + r);
                        o = t.default
                    }
                    n[r] = o
                }
                return n
            }

            function K(e) {
                let t = Object.create(null);
                if (e)
                    for (let n in e) t[n] = new X(e[n]);
                return t
            }
            class Z {
                constructor(e, t, n) {
                    this.name = e, this.schema = t, this.spec = n, this.markSet = null, this.groups = n.group ? n.group.split(" ") : [], this.attrs = K(n.attrs), this.defaultAttrs = J(this.attrs), this.contentMatch = null, this.inlineContent = null, this.isBlock = !(n.inline || "text" == e), this.isText = "text" == e
                }
                get isInline() {
                    return !this.isBlock
                }
                get isTextblock() {
                    return this.isBlock && this.inlineContent
                }
                get isLeaf() {
                    return this.contentMatch == H.empty
                }
                get isAtom() {
                    return this.isLeaf || !!this.spec.atom
                }
                get whitespace() {
                    return this.spec.whitespace || (this.spec.code ? "pre" : "normal")
                }
                hasRequiredAttrs() {
                    for (let e in this.attrs)
                        if (this.attrs[e].isRequired) return !0;
                    return !1
                }
                compatibleContent(e) {
                    return this == e || this.contentMatch.compatible(e.contentMatch)
                }
                computeAttrs(e) {
                    return !e && this.defaultAttrs ? this.defaultAttrs : G(this.attrs, e)
                }
                create(e = null, t, n) {
                    if (this.isText) throw new Error("NodeType.create can't construct text nodes");
                    return new P(this, this.computeAttrs(e), d.from(t), m.setFrom(n))
                }
                createChecked(e = null, t, n) {
                    if (t = d.from(t), !this.validContent(t)) throw new RangeError("Invalid content for node " + this.name);
                    return new P(this, this.computeAttrs(e), t, m.setFrom(n))
                }
                createAndFill(e = null, t, n) {
                    if (e = this.computeAttrs(e), (t = d.from(t)).size) {
                        let e = this.contentMatch.fillBefore(t);
                        if (!e) return null;
                        t = e.append(t)
                    }
                    let r = this.contentMatch.matchFragment(t),
                        o = r && r.fillBefore(d.empty, !0);
                    return o ? new P(this, e, t.append(o), m.setFrom(n)) : null
                }
                validContent(e) {
                    let t = this.contentMatch.matchFragment(e);
                    if (!t || !t.validEnd) return !1;
                    for (let t = 0; t < e.childCount; t++)
                        if (!this.allowsMarks(e.child(t).marks)) return !1;
                    return !0
                }
                allowsMarkType(e) {
                    return null == this.markSet || this.markSet.indexOf(e) > -1
                }
                allowsMarks(e) {
                    if (null == this.markSet) return !0;
                    for (let t = 0; t < e.length; t++)
                        if (!this.allowsMarkType(e[t].type)) return !1;
                    return !0
                }
                allowedMarks(e) {
                    if (null == this.markSet) return e;
                    let t;
                    for (let n = 0; n < e.length; n++) this.allowsMarkType(e[n].type) ? t && t.push(e[n]) : t || (t = e.slice(0, n));
                    return t ? t.length ? t : m.none : e
                }
                static compile(e, t) {
                    let n = Object.create(null);
                    e.forEach(((e, r) => n[e] = new Z(e, t, r)));
                    let r = t.spec.topNode || "doc";
                    if (!n[r]) throw new RangeError("Schema is missing its top node type ('" + r + "')");
                    if (!n.text) throw new RangeError("Every schema needs a 'text' type");
                    for (let e in n.text.attrs) throw new RangeError("The text node type should not have attributes");
                    return n
                }
            }
            class X {
                constructor(e) {
                    this.hasDefault = Object.prototype.hasOwnProperty.call(e, "default"), this.default = e.default
                }
                get isRequired() {
                    return !this.hasDefault
                }
            }
            class Q {
                constructor(e, t, n, r) {
                    this.name = e, this.rank = t, this.schema = n, this.spec = r, this.attrs = K(r.attrs), this.excluded = null;
                    let o = J(this.attrs);
                    this.instance = o ? new m(this, o) : null
                }
                create(e = null) {
                    return !e && this.instance ? this.instance : new m(this, G(this.attrs, e))
                }
                static compile(e, t) {
                    let n = Object.create(null),
                        r = 0;
                    return e.forEach(((e, o) => n[e] = new Q(e, r++, t, o))), n
                }
                removeFromSet(e) {
                    for (var t = 0; t < e.length; t++) e[t].type == this && (e = e.slice(0, t).concat(e.slice(t + 1)), t--);
                    return e
                }
                isInSet(e) {
                    for (let t = 0; t < e.length; t++)
                        if (e[t].type == this) return e[t]
                }
                excludes(e) {
                    return this.excluded.indexOf(e) > -1
                }
            }
            class Y {
                constructor(e) {
                    this.cached = Object.create(null), this.spec = {
                        nodes: l.from(e.nodes),
                        marks: l.from(e.marks || {}),
                        topNode: e.topNode
                    }, this.nodes = Z.compile(this.spec.nodes, this), this.marks = Q.compile(this.spec.marks, this);
                    let t = Object.create(null);
                    for (let e in this.nodes) {
                        if (e in this.marks) throw new RangeError(e + " can not be both a node and a mark");
                        let n = this.nodes[e],
                            r = n.spec.content || "",
                            o = n.spec.marks;
                        n.contentMatch = t[r] || (t[r] = H.parse(r, this.nodes)), n.inlineContent = n.contentMatch.inlineContent, n.markSet = "_" == o ? null : o ? ee(this, o.split(" ")) : "" != o && n.inlineContent ? null : []
                    }
                    for (let e in this.marks) {
                        let t = this.marks[e],
                            n = t.spec.excludes;
                        t.excluded = null == n ? [t] : "" == n ? [] : ee(this, n.split(" "))
                    }
                    this.nodeFromJSON = this.nodeFromJSON.bind(this), this.markFromJSON = this.markFromJSON.bind(this), this.topNodeType = this.nodes[this.spec.topNode || "doc"], this.cached.wrappings = Object.create(null)
                }
                node(e, t = null, n, r) {
                    if ("string" == typeof e) e = this.nodeType(e);
                    else {
                        if (!(e instanceof Z)) throw new RangeError("Invalid node type: " + e);
                        if (e.schema != this) throw new RangeError("Node type from different schema used (" + e.name + ")")
                    }
                    return e.createChecked(t, n, r)
                }
                text(e, t) {
                    let n = this.nodes.text;
                    return new B(n, n.defaultAttrs, e, m.setFrom(t))
                }
                mark(e, t) {
                    return "string" == typeof e && (e = this.marks[e]), e.create(t)
                }
                nodeFromJSON(e) {
                    return P.fromJSON(this, e)
                }
                markFromJSON(e) {
                    return m.fromJSON(this, e)
                }
                nodeType(e) {
                    let t = this.nodes[e];
                    if (!t) throw new RangeError("Unknown node type: " + e);
                    return t
                }
            }

            function ee(e, t) {
                let n = [];
                for (let r = 0; r < t.length; r++) {
                    let o = t[r],
                        i = e.marks[o],
                        s = i;
                    if (i) n.push(i);
                    else
                        for (let t in e.marks) {
                            let r = e.marks[t];
                            ("_" == o || r.spec.group && r.spec.group.split(" ").indexOf(o) > -1) && n.push(s = r)
                        }
                    if (!s) throw new SyntaxError("Unknown mark type: '" + t[r] + "'")
                }
                return n
            }
            class te {
                constructor(e, t) {
                    this.schema = e, this.rules = t, this.tags = [], this.styles = [], t.forEach((e => {
                        e.tag ? this.tags.push(e) : e.style && this.styles.push(e)
                    })), this.normalizeLists = !this.tags.some((t => {
                        if (!/^(ul|ol)\b/.test(t.tag) || !t.node) return !1;
                        let n = e.nodes[t.node];
                        return n.contentMatch.matchType(n)
                    }))
                }
                parse(e, t = {}) {
                    let n = new ae(this, t, !1);
                    return n.addAll(e, t.from, t.to), n.finish()
                }
                parseSlice(e, t = {}) {
                    let n = new ae(this, t, !0);
                    return n.addAll(e, t.from, t.to), v.maxOpen(n.finish())
                }
                matchTag(e, t, n) {
                    for (let r = n ? this.tags.indexOf(n) + 1 : 0; r < this.tags.length; r++) {
                        let n = this.tags[r];
                        if (le(e, n.tag) && (void 0 === n.namespace || e.namespaceURI == n.namespace) && (!n.context || t.matchesContext(n.context))) {
                            if (n.getAttrs) {
                                let t = n.getAttrs(e);
                                if (!1 === t) continue;
                                n.attrs = t || void 0
                            }
                            return n
                        }
                    }
                }
                matchStyle(e, t, n, r) {
                    for (let o = r ? this.styles.indexOf(r) + 1 : 0; o < this.styles.length; o++) {
                        let r = this.styles[o],
                            i = r.style;
                        if (!(0 != i.indexOf(e) || r.context && !n.matchesContext(r.context) || i.length > e.length && (61 != i.charCodeAt(e.length) || i.slice(e.length + 1) != t))) {
                            if (r.getAttrs) {
                                let e = r.getAttrs(t);
                                if (!1 === e) continue;
                                r.attrs = e || void 0
                            }
                            return r
                        }
                    }
                }
                static schemaRules(e) {
                    let t = [];

                    function n(e) {
                        let n = null == e.priority ? 50 : e.priority,
                            r = 0;
                        for (; r < t.length; r++) {
                            let e = t[r];
                            if ((null == e.priority ? 50 : e.priority) < n) break
                        }
                        t.splice(r, 0, e)
                    }
                    for (let t in e.marks) {
                        let r = e.marks[t].spec.parseDOM;
                        r && r.forEach((e => {
                            n(e = ce(e)), e.mark = t
                        }))
                    }
                    for (let t in e.nodes) {
                        let r = e.nodes[t].spec.parseDOM;
                        r && r.forEach((e => {
                            n(e = ce(e)), e.node = t
                        }))
                    }
                    return t
                }
                static fromSchema(e) {
                    return e.cached.domParser || (e.cached.domParser = new te(e, te.schemaRules(e)))
                }
            }
            const ne = {
                    address: !0,
                    article: !0,
                    aside: !0,
                    blockquote: !0,
                    canvas: !0,
                    dd: !0,
                    div: !0,
                    dl: !0,
                    fieldset: !0,
                    figcaption: !0,
                    figure: !0,
                    footer: !0,
                    form: !0,
                    h1: !0,
                    h2: !0,
                    h3: !0,
                    h4: !0,
                    h5: !0,
                    h6: !0,
                    header: !0,
                    hgroup: !0,
                    hr: !0,
                    li: !0,
                    noscript: !0,
                    ol: !0,
                    output: !0,
                    p: !0,
                    pre: !0,
                    section: !0,
                    table: !0,
                    tfoot: !0,
                    ul: !0
                },
                re = {
                    head: !0,
                    noscript: !0,
                    object: !0,
                    script: !0,
                    style: !0,
                    title: !0
                },
                oe = {
                    ol: !0,
                    ul: !0
                };

            function ie(e, t, n) {
                return null != t ? (t ? 1 : 0) | ("full" === t ? 2 : 0) : e && "pre" == e.whitespace ? 3 : -5 & n
            }
            class se {
                constructor(e, t, n, r, o, i, s) {
                    this.type = e, this.attrs = t, this.marks = n, this.pendingMarks = r, this.solid = o, this.options = s, this.content = [], this.activeMarks = m.none, this.stashMarks = [], this.match = i || (4 & s ? null : e.contentMatch)
                }
                findWrapping(e) {
                    if (!this.match) {
                        if (!this.type) return [];
                        let t = this.type.contentMatch.fillBefore(d.from(e));
                        if (!t) {
                            let t, n = this.type.contentMatch;
                            return (t = n.findWrapping(e.type)) ? (this.match = n, t) : null
                        }
                        this.match = this.type.contentMatch.matchFragment(t)
                    }
                    return this.match.findWrapping(e.type)
                }
                finish(e) {
                    if (!(1 & this.options)) {
                        let e, t = this.content[this.content.length - 1];
                        if (t && t.isText && (e = /[ \t\r\n\u000c]+$/.exec(t.text))) {
                            let n = t;
                            t.text.length == e[0].length ? this.content.pop() : this.content[this.content.length - 1] = n.withText(n.text.slice(0, n.text.length - e[0].length))
                        }
                    }
                    let t = d.from(this.content);
                    return !e && this.match && (t = t.append(this.match.fillBefore(d.empty, !0))), this.type ? this.type.create(this.attrs, t, this.marks) : t
                }
                popFromStashMark(e) {
                    for (let t = this.stashMarks.length - 1; t >= 0; t--)
                        if (e.eq(this.stashMarks[t])) return this.stashMarks.splice(t, 1)[0]
                }
                applyPending(e) {
                    for (let t = 0, n = this.pendingMarks; t < n.length; t++) {
                        let r = n[t];
                        (this.type ? this.type.allowsMarkType(r.type) : ue(r.type, e)) && !r.isInSet(this.activeMarks) && (this.activeMarks = r.addToSet(this.activeMarks), this.pendingMarks = r.removeFromSet(this.pendingMarks))
                    }
                }
                inlineContext(e) {
                    return this.type ? this.type.inlineContent : this.content.length ? this.content[0].isInline : e.parentNode && !ne.hasOwnProperty(e.parentNode.nodeName.toLowerCase())
                }
            }
            class ae {
                constructor(e, t, n) {
                    this.parser = e, this.options = t, this.isOpen = n, this.open = 0;
                    let r, o = t.topNode,
                        i = ie(null, t.preserveWhitespace, 0) | (n ? 4 : 0);
                    r = o ? new se(o.type, o.attrs, m.none, m.none, !0, t.topMatch || o.type.contentMatch, i) : new se(n ? null : e.schema.topNodeType, null, m.none, m.none, !0, null, i), this.nodes = [r], this.find = t.findPositions, this.needsBlock = !1
                }
                get top() {
                    return this.nodes[this.open]
                }
                addDOM(e) {
                    if (3 == e.nodeType) this.addTextNode(e);
                    else if (1 == e.nodeType) {
                        let t = e.getAttribute("style"),
                            n = t ? this.readStyles(function(e) {
                                let t, n = /\s*([\w-]+)\s*:\s*([^;]+)/g,
                                    r = [];
                                for (; t = n.exec(e);) r.push(t[1], t[2].trim());
                                return r
                            }(t)) : null,
                            r = this.top;
                        if (null != n)
                            for (let e = 0; e < n.length; e++) this.addPendingMark(n[e]);
                        if (this.addElement(e), null != n)
                            for (let e = 0; e < n.length; e++) this.removePendingMark(n[e], r)
                    }
                }
                addTextNode(e) {
                    let t = e.nodeValue,
                        n = this.top;
                    if (2 & n.options || n.inlineContext(e) || /[^ \t\r\n\u000c]/.test(t)) {
                        if (1 & n.options) t = 2 & n.options ? t.replace(/\r\n?/g, "\n") : t.replace(/\r?\n|\r/g, " ");
                        else if (t = t.replace(/[ \t\r\n\u000c]+/g, " "), /^[ \t\r\n\u000c]/.test(t) && this.open == this.nodes.length - 1) {
                            let r = n.content[n.content.length - 1],
                                o = e.previousSibling;
                            (!r || o && "BR" == o.nodeName || r.isText && /[ \t\r\n\u000c]$/.test(r.text)) && (t = t.slice(1))
                        }
                        t && this.insertNode(this.parser.schema.text(t)), this.findInText(e)
                    } else this.findInside(e)
                }
                addElement(e, t) {
                    let n, r = e.nodeName.toLowerCase();
                    oe.hasOwnProperty(r) && this.parser.normalizeLists && function(e) {
                        for (let t = e.firstChild, n = null; t; t = t.nextSibling) {
                            let e = 1 == t.nodeType ? t.nodeName.toLowerCase() : null;
                            e && oe.hasOwnProperty(e) && n ? (n.appendChild(t), t = n) : "li" == e ? n = t : e && (n = null)
                        }
                    }(e);
                    let o = this.options.ruleFromNode && this.options.ruleFromNode(e) || (n = this.parser.matchTag(e, this, t));
                    if (o ? o.ignore : re.hasOwnProperty(r)) this.findInside(e), this.ignoreFallback(e);
                    else if (!o || o.skip || o.closeParent) {
                        o && o.closeParent ? this.open = Math.max(0, this.open - 1) : o && o.skip.nodeType && (e = o.skip);
                        let t, n = this.top,
                            i = this.needsBlock;
                        if (ne.hasOwnProperty(r)) t = !0, n.type || (this.needsBlock = !0);
                        else if (!e.firstChild) return void this.leafFallback(e);
                        this.addAll(e), t && this.sync(n), this.needsBlock = i
                    } else this.addElementByRule(e, o, !1 === o.consuming ? n : void 0)
                }
                leafFallback(e) {
                    "BR" == e.nodeName && this.top.type && this.top.type.inlineContent && this.addTextNode(e.ownerDocument.createTextNode("\n"))
                }
                ignoreFallback(e) {
                    "BR" != e.nodeName || this.top.type && this.top.type.inlineContent || this.findPlace(this.parser.schema.text("-"))
                }
                readStyles(e) {
                    let t = m.none;
                    e: for (let n = 0; n < e.length; n += 2)
                        for (let r;;) {
                            let o = this.parser.matchStyle(e[n], e[n + 1], this, r);
                            if (!o) continue e;
                            if (o.ignore) return null;
                            if (t = this.parser.schema.marks[o.mark].create(o.attrs).addToSet(t), !1 !== o.consuming) break;
                            r = o
                        }
                    return t
                }
                addElementByRule(e, t, n) {
                    let r, o, i;
                    if (t.node) o = this.parser.schema.nodes[t.node], o.isLeaf ? this.insertNode(o.create(t.attrs)) || this.leafFallback(e) : r = this.enter(o, t.attrs || null, t.preserveWhitespace);
                    else {
                        i = this.parser.schema.marks[t.mark].create(t.attrs), this.addPendingMark(i)
                    }
                    let s = this.top;
                    if (o && o.isLeaf) this.findInside(e);
                    else if (n) this.addElement(e, n);
                    else if (t.getContent) this.findInside(e), t.getContent(e, this.parser.schema).forEach((e => this.insertNode(e)));
                    else {
                        let n = e;
                        "string" == typeof t.contentElement ? n = e.querySelector(t.contentElement) : "function" == typeof t.contentElement ? n = t.contentElement(e) : t.contentElement && (n = t.contentElement), this.findAround(e, n, !0), this.addAll(n)
                    }
                    r && this.sync(s) && this.open--, i && this.removePendingMark(i, s)
                }
                addAll(e, t, n) {
                    let r = t || 0;
                    for (let o = t ? e.childNodes[t] : e.firstChild, i = null == n ? null : e.childNodes[n]; o != i; o = o.nextSibling, ++r) this.findAtPoint(e, r), this.addDOM(o);
                    this.findAtPoint(e, r)
                }
                findPlace(e) {
                    let t, n;
                    for (let r = this.open; r >= 0; r--) {
                        let o = this.nodes[r],
                            i = o.findWrapping(e);
                        if (i && (!t || t.length > i.length) && (t = i, n = o, !i.length)) break;
                        if (o.solid) break
                    }
                    if (!t) return !1;
                    this.sync(n);
                    for (let e = 0; e < t.length; e++) this.enterInner(t[e], null, !1);
                    return !0
                }
                insertNode(e) {
                    if (e.isInline && this.needsBlock && !this.top.type) {
                        let e = this.textblockFromContext();
                        e && this.enterInner(e)
                    }
                    if (this.findPlace(e)) {
                        this.closeExtra();
                        let t = this.top;
                        t.applyPending(e.type), t.match && (t.match = t.match.matchType(e.type));
                        let n = t.activeMarks;
                        for (let r = 0; r < e.marks.length; r++) t.type && !t.type.allowsMarkType(e.marks[r].type) || (n = e.marks[r].addToSet(n));
                        return t.content.push(e.mark(n)), !0
                    }
                    return !1
                }
                enter(e, t, n) {
                    let r = this.findPlace(e.create(t));
                    return r && this.enterInner(e, t, !0, n), r
                }
                enterInner(e, t = null, n = !1, r) {
                    this.closeExtra();
                    let o = this.top;
                    o.applyPending(e), o.match = o.match && o.match.matchType(e);
                    let i = ie(e, r, o.options);
                    4 & o.options && 0 == o.content.length && (i |= 4), this.nodes.push(new se(e, t, o.activeMarks, o.pendingMarks, n, null, i)), this.open++
                }
                closeExtra(e = !1) {
                    let t = this.nodes.length - 1;
                    if (t > this.open) {
                        for (; t > this.open; t--) this.nodes[t - 1].content.push(this.nodes[t].finish(e));
                        this.nodes.length = this.open + 1
                    }
                }
                finish() {
                    return this.open = 0, this.closeExtra(this.isOpen), this.nodes[0].finish(this.isOpen || this.options.topOpen)
                }
                sync(e) {
                    for (let t = this.open; t >= 0; t--)
                        if (this.nodes[t] == e) return this.open = t, !0;
                    return !1
                }
                get currentPos() {
                    this.closeExtra();
                    let e = 0;
                    for (let t = this.open; t >= 0; t--) {
                        let n = this.nodes[t].content;
                        for (let t = n.length - 1; t >= 0; t--) e += n[t].nodeSize;
                        t && e++
                    }
                    return e
                }
                findAtPoint(e, t) {
                    if (this.find)
                        for (let n = 0; n < this.find.length; n++) this.find[n].node == e && this.find[n].offset == t && (this.find[n].pos = this.currentPos)
                }
                findInside(e) {
                    if (this.find)
                        for (let t = 0; t < this.find.length; t++) null == this.find[t].pos && 1 == e.nodeType && e.contains(this.find[t].node) && (this.find[t].pos = this.currentPos)
                }
                findAround(e, t, n) {
                    if (e != t && this.find)
                        for (let r = 0; r < this.find.length; r++)
                            if (null == this.find[r].pos && 1 == e.nodeType && e.contains(this.find[r].node)) {
                                t.compareDocumentPosition(this.find[r].node) & (n ? 2 : 4) && (this.find[r].pos = this.currentPos)
                            }
                }
                findInText(e) {
                    if (this.find)
                        for (let t = 0; t < this.find.length; t++) this.find[t].node == e && (this.find[t].pos = this.currentPos - (e.nodeValue.length - this.find[t].offset))
                }
                matchesContext(e) {
                    if (e.indexOf("|") > -1) return e.split(/\s*\|\s*/).some(this.matchesContext, this);
                    let t = e.split("/"),
                        n = this.options.context,
                        r = !(this.isOpen || n && n.parent.type != this.nodes[0].type),
                        o = -(n ? n.depth + 1 : 0) + (r ? 0 : 1),
                        i = (e, s) => {
                            for (; e >= 0; e--) {
                                let a = t[e];
                                if ("" == a) {
                                    if (e == t.length - 1 || 0 == e) continue;
                                    for (; s >= o; s--)
                                        if (i(e - 1, s)) return !0;
                                    return !1
                                } {
                                    let e = s > 0 || 0 == s && r ? this.nodes[s].type : n && s >= o ? n.node(s - o).type : null;
                                    if (!e || e.name != a && -1 == e.groups.indexOf(a)) return !1;
                                    s--
                                }
                            }
                            return !0
                        };
                    return i(t.length - 1, this.open)
                }
                textblockFromContext() {
                    let e = this.options.context;
                    if (e)
                        for (let t = e.depth; t >= 0; t--) {
                            let n = e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;
                            if (n && n.isTextblock && n.defaultAttrs) return n
                        }
                    for (let e in this.parser.schema.nodes) {
                        let t = this.parser.schema.nodes[e];
                        if (t.isTextblock && t.defaultAttrs) return t
                    }
                }
                addPendingMark(e) {
                    let t = function(e, t) {
                        for (let n = 0; n < t.length; n++)
                            if (e.eq(t[n])) return t[n]
                    }(e, this.top.pendingMarks);
                    t && this.top.stashMarks.push(t), this.top.pendingMarks = e.addToSet(this.top.pendingMarks)
                }
                removePendingMark(e, t) {
                    for (let n = this.open; n >= 0; n--) {
                        let r = this.nodes[n];
                        if (r.pendingMarks.lastIndexOf(e) > -1) r.pendingMarks = e.removeFromSet(r.pendingMarks);
                        else {
                            r.activeMarks = e.removeFromSet(r.activeMarks);
                            let t = r.popFromStashMark(e);
                            t && r.type && r.type.allowsMarkType(t.type) && (r.activeMarks = t.addToSet(r.activeMarks))
                        }
                        if (r == t) break
                    }
                }
            }

            function le(e, t) {
                return (e.matches || e.msMatchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector).call(e, t)
            }

            function ce(e) {
                let t = {};
                for (let n in e) t[n] = e[n];
                return t
            }

            function ue(e, t) {
                let n = t.schema.nodes;
                for (let r in n) {
                    let o = n[r];
                    if (!o.allowsMarkType(e)) continue;
                    let i = [],
                        s = e => {
                            i.push(e);
                            for (let n = 0; n < e.edgeCount; n++) {
                                let {
                                    type: r,
                                    next: o
                                } = e.edge(n);
                                if (r == t) return !0;
                                if (i.indexOf(o) < 0 && s(o)) return !0
                            }
                        };
                    if (s(o.contentMatch)) return !0
                }
            }
            class de {
                constructor(e, t) {
                    this.nodes = e, this.marks = t
                }
                serializeFragment(e, t = {}, n) {
                    n || (n = he(t).createDocumentFragment());
                    let r = n,
                        o = [];
                    return e.forEach((e => {
                        if (o.length || e.marks.length) {
                            let n = 0,
                                i = 0;
                            for (; n < o.length && i < e.marks.length;) {
                                let t = e.marks[i];
                                if (this.marks[t.type.name]) {
                                    if (!t.eq(o[n][0]) || !1 === t.type.spec.spanning) break;
                                    n++, i++
                                } else i++
                            }
                            for (; n < o.length;) r = o.pop()[1];
                            for (; i < e.marks.length;) {
                                let n = e.marks[i++],
                                    s = this.serializeMark(n, e.isInline, t);
                                s && (o.push([n, r]), r.appendChild(s.dom), r = s.contentDOM || s.dom)
                            }
                        }
                        r.appendChild(this.serializeNodeInner(e, t))
                    })), n
                }
                serializeNodeInner(e, t) {
                    let {
                        dom: n,
                        contentDOM: r
                    } = de.renderSpec(he(t), this.nodes[e.type.name](e));
                    if (r) {
                        if (e.isLeaf) throw new RangeError("Content hole not allowed in a leaf node spec");
                        this.serializeFragment(e.content, t, r)
                    }
                    return n
                }
                serializeNode(e, t = {}) {
                    let n = this.serializeNodeInner(e, t);
                    for (let r = e.marks.length - 1; r >= 0; r--) {
                        let o = this.serializeMark(e.marks[r], e.isInline, t);
                        o && ((o.contentDOM || o.dom).appendChild(n), n = o.dom)
                    }
                    return n
                }
                serializeMark(e, t, n = {}) {
                    let r = this.marks[e.type.name];
                    return r && de.renderSpec(he(n), r(e, t))
                }
                static renderSpec(e, t, n = null) {
                    if ("string" == typeof t) return {
                        dom: e.createTextNode(t)
                    };
                    if (null != t.nodeType) return {
                        dom: t
                    };
                    if (t.dom && null != t.dom.nodeType) return t;
                    let r, o = t[0],
                        i = o.indexOf(" ");
                    i > 0 && (n = o.slice(0, i), o = o.slice(i + 1));
                    let s = n ? e.createElementNS(n, o) : e.createElement(o),
                        a = t[1],
                        l = 1;
                    if (a && "object" == typeof a && null == a.nodeType && !Array.isArray(a)) {
                        l = 2;
                        for (let e in a)
                            if (null != a[e]) {
                                let t = e.indexOf(" ");
                                t > 0 ? s.setAttributeNS(e.slice(0, t), e.slice(t + 1), a[e]) : s.setAttribute(e, a[e])
                            }
                    }
                    for (let o = l; o < t.length; o++) {
                        let i = t[o];
                        if (0 === i) {
                            if (o < t.length - 1 || o > l) throw new RangeError("Content hole must be the only child of its parent node");
                            return {
                                dom: s,
                                contentDOM: s
                            }
                        } {
                            let {
                                dom: t,
                                contentDOM: o
                            } = de.renderSpec(e, i, n);
                            if (s.appendChild(t), o) {
                                if (r) throw new RangeError("Multiple content holes");
                                r = o
                            }
                        }
                    }
                    return {
                        dom: s,
                        contentDOM: r
                    }
                }
                static fromSchema(e) {
                    return e.cached.domSerializer || (e.cached.domSerializer = new de(this.nodesFromSchema(e), this.marksFromSchema(e)))
                }
                static nodesFromSchema(e) {
                    let t = pe(e.nodes);
                    return t.text || (t.text = e => e.text), t
                }
                static marksFromSchema(e) {
                    return pe(e.marks)
                }
            }

            function pe(e) {
                let t = {};
                for (let n in e) {
                    let r = e[n].spec.toDOM;
                    r && (t[n] = r)
                }
                return t
            }

            function he(e) {
                return e.document || window.document
            }
            var fe = n(956),
                me = n.n(fe),
                ge = n(969),
                ve = n.n(ge),
                ye = n(522),
                be = n.n(ye),
                we = n(204),
                ke = n.n(we),
                xe = n(462),
                Ce = n.n(xe),
                Te = n(758),
                Me = n.n(Te),
                Se = n(321),
                Ee = n.n(Se),
                Ne = n(929),
                Oe = n.n(Ne),
                De = n(934),
                Ae = n.n(De),
                Le = n(391),
                Ie = n.n(Le),
                Re = (/Mac/.test(navigator.platform), /[\u0020]+/g),
                Pe = /[>(){}[\]+-.!#|]/g,
                Be = /<([a-zA-Z_][a-zA-Z0-9\-._]*)(\s|[^\\>])*\/?>|<(\/)([a-zA-Z_][a-zA-Z0-9\-._]*)\s*\/?>|<!--[^-]+-->|<([a-zA-Z_][a-zA-Z0-9\-.:/]*)>/g,
                Fe = /\\[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~\\]/g,
                He = /[*_~`]/g,
                ze = /!\[.*\]\(.*\)/g,
                qe = /[[\]]/g,
                Ve = /(?:^|[^\\])\\(?!\\)/g,
                je = new RegExp('[&<>"]', "g");

            function $e(e) {
                switch (e) {
                    case "&":
                        return "&amp;";
                    case "<":
                        return "&lt;";
                    case ">":
                        return "&gt;";
                    case '"':
                        return "&quot;";
                    default:
                        return e
                }
            }

            function _e(e) {
                return je.test(e) ? e.replace(je, $e) : e
            }

            function Ue(e, t) {
                return -1 !== e.indexOf(t)
            }
            var We = ["rel", "target", "hreflang", "type"],
                Je = {
                    codeblock: /(^ {4}[^\n]+\n*)+/,
                    thematicBreak: /^ *((\* *){3,}|(- *){3,} *|(_ *){3,}) */,
                    atxHeading: /^(#{1,6}) +[\s\S]+/,
                    seTextheading: /^([^\n]+)\n *(=|-){2,} */,
                    blockquote: /^( *>[^\n]+.*)+/,
                    list: /^ *(\*+|-+|\d+\.) [\s\S]+/,
                    def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? */,
                    link: /!?\[.*\]\(.*\)/,
                    reflink: /!?\[.*\]\s*\[([^\]]*)\]/,
                    verticalBar: /\u007C/,
                    fencedCodeblock: /^((`|~){3,})/
                };

            function Ge(e) {
                if (!e) return null;
                var t = {};
                return We.forEach((function(n) {
                    Oe()(e[n]) || (t[n] = e[n])
                })), t
            }

            function Ke(e, t) {
                for (var n = "", r = 0; r < t; r += 1) n += e;
                return n
            }

            function Ze(e) {
                for (var t = [], n = ze.exec(e); n;) t.push([n.index, n.index + n[0].length]), n = ze.exec(e);
                return e.replace(qe, (function(e, n) {
                    var r = t.some((function(e) {
                        return n > e[0] && n < e[1]
                    }));
                    return r ? e : "\\" + e
                }))
            }

            function Xe(e) {
                var t = function(e) {
                        return "\\" + e
                    },
                    n = e.replace(Re, " ");
                return Fe.test(n) && (n = n.replace(Fe, t)), Ve.test(n) && (n = n.replace(Ve, (function(e) {
                    return e + "\\"
                }))), n = n.replace(He, t), Be.test(n) && (n = n.replace(Be, t)),
                function(e) {
                    var t = !1;
                    return me()(Je, (function(n) {
                        return n.test(e) && (t = !0), !t
                    })), t
                }(n) && (n = n.replace(Pe, t)), n
            }

            function Qe(e) {
                return Ae()(e) || Oe()(e)
            }

            function Ye(e, t) {
                if (null === e && e === t) return !0;
                if ("object" != typeof e || "object" != typeof t || Qe(e) || Qe(t)) return e === t;
                for (var n in e)
                    if (e[n] !== t[n]) return !1;
                for (var n in t)
                    if (!(n in e)) return !1;
                return !0
            }

            function et(e) {
                return e[e.length - 1]
            }

            function tt(e) {
                return "object" == typeof e && null !== e
            }

            function nt(e, t) {
                var n = o({}, e);
                return e && t && Object.keys(t).forEach((function(e) {
                    tt(n[e]) ? Array.isArray(t[e]) ? n[e] = rt(t[e]) : n.hasOwnProperty(e) ? n[e] = nt(n[e], t[e]) : n[e] = ot(t[e]) : n[e] = t[e]
                })), n
            }

            function rt(e) {
                return e.map((function(e) {
                    return tt(e) ? Array.isArray(e) ? rt(e) : ot(e) : e
                }))
            }

            function ot(e) {
                var t = Object.keys(e);
                return t.length ? t.reduce((function(t, n) {
                    return tt(e[n]) ? t[n] = Array.isArray(e[n]) ? rt(e[n]) : ot(e[n]) : t[n] = e[n], t
                }), {}) : e
            }

            function it(e, t) {
                return void 0 === t && (t = {}), Object.keys(t).forEach((function(n) {
                    e.hasOwnProperty(n) && "object" == typeof e[n] ? Array.isArray(t[n]) ? e[n] = t[n] : it(e[n], t[n]) : e[n] = t[n]
                })), e
            }

            function st(e, t) {
                return e > t ? [t, e] : [e, t]
            }
            const at = Math.pow(2, 16);

            function lt(e, t) {
                return e + t * at
            }

            function ct(e) {
                return 65535 & e
            }
            class ut {
                constructor(e, t, n) {
                    this.pos = e, this.delInfo = t, this.recover = n
                }
                get deleted() {
                    return (8 & this.delInfo) > 0
                }
                get deletedBefore() {
                    return (5 & this.delInfo) > 0
                }
                get deletedAfter() {
                    return (6 & this.delInfo) > 0
                }
                get deletedAcross() {
                    return (4 & this.delInfo) > 0
                }
            }
            class dt {
                constructor(e, t = !1) {
                    if (this.ranges = e, this.inverted = t, !e.length && dt.empty) return dt.empty
                }
                recover(e) {
                    let t = 0,
                        n = ct(e);
                    if (!this.inverted)
                        for (let e = 0; e < n; e++) t += this.ranges[3 * e + 2] - this.ranges[3 * e + 1];
                    return this.ranges[3 * n] + t + function(e) {
                        return (e - (65535 & e)) / at
                    }(e)
                }
                mapResult(e, t = 1) {
                    return this._map(e, t, !1)
                }
                map(e, t = 1) {
                    return this._map(e, t, !0)
                }
                _map(e, t, n) {
                    let r = 0,
                        o = this.inverted ? 2 : 1,
                        i = this.inverted ? 1 : 2;
                    for (let s = 0; s < this.ranges.length; s += 3) {
                        let a = this.ranges[s] - (this.inverted ? r : 0);
                        if (a > e) break;
                        let l = this.ranges[s + o],
                            c = this.ranges[s + i],
                            u = a + l;
                        if (e <= u) {
                            let o = a + r + ((l ? e == a ? -1 : e == u ? 1 : t : t) < 0 ? 0 : c);
                            if (n) return o;
                            let i = e == (t < 0 ? a : u) ? null : lt(s / 3, e - a),
                                d = e == a ? 2 : e == u ? 1 : 4;
                            return (t < 0 ? e != a : e != u) && (d |= 8), new ut(o, d, i)
                        }
                        r += c - l
                    }
                    return n ? e + r : new ut(e + r, 0, null)
                }
                touches(e, t) {
                    let n = 0,
                        r = ct(t),
                        o = this.inverted ? 2 : 1,
                        i = this.inverted ? 1 : 2;
                    for (let t = 0; t < this.ranges.length; t += 3) {
                        let s = this.ranges[t] - (this.inverted ? n : 0);
                        if (s > e) break;
                        let a = this.ranges[t + o];
                        if (e <= s + a && t == 3 * r) return !0;
                        n += this.ranges[t + i] - a
                    }
                    return !1
                }
                forEach(e) {
                    let t = this.inverted ? 2 : 1,
                        n = this.inverted ? 1 : 2;
                    for (let r = 0, o = 0; r < this.ranges.length; r += 3) {
                        let i = this.ranges[r],
                            s = i - (this.inverted ? o : 0),
                            a = i + (this.inverted ? 0 : o),
                            l = this.ranges[r + t],
                            c = this.ranges[r + n];
                        e(s, s + l, a, a + c), o += c - l
                    }
                }
                invert() {
                    return new dt(this.ranges, !this.inverted)
                }
                toString() {
                    return (this.inverted ? "-" : "") + JSON.stringify(this.ranges)
                }
                static offset(e) {
                    return 0 == e ? dt.empty : new dt(e < 0 ? [0, -e, 0] : [0, 0, e])
                }
            }
            dt.empty = new dt([]);
            class pt {
                constructor(e = [], t, n = 0, r = e.length) {
                    this.maps = e, this.mirror = t, this.from = n, this.to = r
                }
                slice(e = 0, t = this.maps.length) {
                    return new pt(this.maps, this.mirror, e, t)
                }
                copy() {
                    return new pt(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to)
                }
                appendMap(e, t) {
                    this.to = this.maps.push(e), null != t && this.setMirror(this.maps.length - 1, t)
                }
                appendMapping(e) {
                    for (let t = 0, n = this.maps.length; t < e.maps.length; t++) {
                        let r = e.getMirror(t);
                        this.appendMap(e.maps[t], null != r && r < t ? n + r : void 0)
                    }
                }
                getMirror(e) {
                    if (this.mirror)
                        for (let t = 0; t < this.mirror.length; t++)
                            if (this.mirror[t] == e) return this.mirror[t + (t % 2 ? -1 : 1)]
                }
                setMirror(e, t) {
                    this.mirror || (this.mirror = []), this.mirror.push(e, t)
                }
                appendMappingInverted(e) {
                    for (let t = e.maps.length - 1, n = this.maps.length + e.maps.length; t >= 0; t--) {
                        let r = e.getMirror(t);
                        this.appendMap(e.maps[t].invert(), null != r && r > t ? n - r - 1 : void 0)
                    }
                }
                invert() {
                    let e = new pt;
                    return e.appendMappingInverted(this), e
                }
                map(e, t = 1) {
                    if (this.mirror) return this._map(e, t, !0);
                    for (let n = this.from; n < this.to; n++) e = this.maps[n].map(e, t);
                    return e
                }
                mapResult(e, t = 1) {
                    return this._map(e, t, !1)
                }
                _map(e, t, n) {
                    let r = 0;
                    for (let n = this.from; n < this.to; n++) {
                        let o = this.maps[n].mapResult(e, t);
                        if (null != o.recover) {
                            let t = this.getMirror(n);
                            if (null != t && t > n && t < this.to) {
                                n = t, e = this.maps[t].recover(o.recover);
                                continue
                            }
                        }
                        r |= o.delInfo, e = o.pos
                    }
                    return n ? e : new ut(e, r, null)
                }
            }
            const ht = Object.create(null);
            class ft {
                getMap() {
                    return dt.empty
                }
                merge(e) {
                    return null
                }
                static fromJSON(e, t) {
                    if (!t || !t.stepType) throw new RangeError("Invalid input for Step.fromJSON");
                    let n = ht[t.stepType];
                    if (!n) throw new RangeError(`No step type ${t.stepType} defined`);
                    return n.fromJSON(e, t)
                }
                static jsonID(e, t) {
                    if (e in ht) throw new RangeError("Duplicate use of step JSON ID " + e);
                    return ht[e] = t, t.prototype.jsonID = e, t
                }
            }
            class mt {
                constructor(e, t) {
                    this.doc = e, this.failed = t
                }
                static ok(e) {
                    return new mt(e, null)
                }
                static fail(e) {
                    return new mt(null, e)
                }
                static fromReplace(e, t, n, r) {
                    try {
                        return mt.ok(e.replace(t, n, r))
                    } catch (e) {
                        if (e instanceof g) return mt.fail(e.message);
                        throw e
                    }
                }
            }

            function gt(e, t, n) {
                let r = [];
                for (let o = 0; o < e.childCount; o++) {
                    let i = e.child(o);
                    i.content.size && (i = i.copy(gt(i.content, t, i))), i.isInline && (i = t(i, n, o)), r.push(i)
                }
                return d.fromArray(r)
            }
            class vt extends ft {
                constructor(e, t, n) {
                    super(), this.from = e, this.to = t, this.mark = n
                }
                apply(e) {
                    let t = e.slice(this.from, this.to),
                        n = e.resolve(this.from),
                        r = n.node(n.sharedDepth(this.to)),
                        o = new v(gt(t.content, ((e, t) => e.isAtom && t.type.allowsMarkType(this.mark.type) ? e.mark(this.mark.addToSet(e.marks)) : e), r), t.openStart, t.openEnd);
                    return mt.fromReplace(e, this.from, this.to, o)
                }
                invert() {
                    return new yt(this.from, this.to, this.mark)
                }
                map(e) {
                    let t = e.mapResult(this.from, 1),
                        n = e.mapResult(this.to, -1);
                    return t.deleted && n.deleted || t.pos >= n.pos ? null : new vt(t.pos, n.pos, this.mark)
                }
                merge(e) {
                    return e instanceof vt && e.mark.eq(this.mark) && this.from <= e.to && this.to >= e.from ? new vt(Math.min(this.from, e.from), Math.max(this.to, e.to), this.mark) : null
                }
                toJSON() {
                    return {
                        stepType: "addMark",
                        mark: this.mark.toJSON(),
                        from: this.from,
                        to: this.to
                    }
                }
                static fromJSON(e, t) {
                    if ("number" != typeof t.from || "number" != typeof t.to) throw new RangeError("Invalid input for AddMarkStep.fromJSON");
                    return new vt(t.from, t.to, e.markFromJSON(t.mark))
                }
            }
            ft.jsonID("addMark", vt);
            class yt extends ft {
                constructor(e, t, n) {
                    super(), this.from = e, this.to = t, this.mark = n
                }
                apply(e) {
                    let t = e.slice(this.from, this.to),
                        n = new v(gt(t.content, (e => e.mark(this.mark.removeFromSet(e.marks))), e), t.openStart, t.openEnd);
                    return mt.fromReplace(e, this.from, this.to, n)
                }
                invert() {
                    return new vt(this.from, this.to, this.mark)
                }
                map(e) {
                    let t = e.mapResult(this.from, 1),
                        n = e.mapResult(this.to, -1);
                    return t.deleted && n.deleted || t.pos >= n.pos ? null : new yt(t.pos, n.pos, this.mark)
                }
                merge(e) {
                    return e instanceof yt && e.mark.eq(this.mark) && this.from <= e.to && this.to >= e.from ? new yt(Math.min(this.from, e.from), Math.max(this.to, e.to), this.mark) : null
                }
                toJSON() {
                    return {
                        stepType: "removeMark",
                        mark: this.mark.toJSON(),
                        from: this.from,
                        to: this.to
                    }
                }
                static fromJSON(e, t) {
                    if ("number" != typeof t.from || "number" != typeof t.to) throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");
                    return new yt(t.from, t.to, e.markFromJSON(t.mark))
                }
            }
            ft.jsonID("removeMark", yt);
            class bt extends ft {
                constructor(e, t, n, r = !1) {
                    super(), this.from = e, this.to = t, this.slice = n, this.structure = r
                }
                apply(e) {
                    return this.structure && kt(e, this.from, this.to) ? mt.fail("Structure replace would overwrite content") : mt.fromReplace(e, this.from, this.to, this.slice)
                }
                getMap() {
                    return new dt([this.from, this.to - this.from, this.slice.size])
                }
                invert(e) {
                    return new bt(this.from, this.from + this.slice.size, e.slice(this.from, this.to))
                }
                map(e) {
                    let t = e.mapResult(this.from, 1),
                        n = e.mapResult(this.to, -1);
                    return t.deletedAcross && n.deletedAcross ? null : new bt(t.pos, Math.max(t.pos, n.pos), this.slice)
                }
                merge(e) {
                    if (!(e instanceof bt) || e.structure || this.structure) return null;
                    if (this.from + this.slice.size != e.from || this.slice.openEnd || e.slice.openStart) {
                        if (e.to != this.from || this.slice.openStart || e.slice.openEnd) return null;
                        {
                            let t = this.slice.size + e.slice.size == 0 ? v.empty : new v(e.slice.content.append(this.slice.content), e.slice.openStart, this.slice.openEnd);
                            return new bt(e.from, this.to, t, this.structure)
                        }
                    } {
                        let t = this.slice.size + e.slice.size == 0 ? v.empty : new v(this.slice.content.append(e.slice.content), this.slice.openStart, e.slice.openEnd);
                        return new bt(this.from, this.to + (e.to - e.from), t, this.structure)
                    }
                }
                toJSON() {
                    let e = {
                        stepType: "replace",
                        from: this.from,
                        to: this.to
                    };
                    return this.slice.size && (e.slice = this.slice.toJSON()), this.structure && (e.structure = !0), e
                }
                static fromJSON(e, t) {
                    if ("number" != typeof t.from || "number" != typeof t.to) throw new RangeError("Invalid input for ReplaceStep.fromJSON");
                    return new bt(t.from, t.to, v.fromJSON(e, t.slice), !!t.structure)
                }
            }
            ft.jsonID("replace", bt);
            class wt extends ft {
                constructor(e, t, n, r, o, i, s = !1) {
                    super(), this.from = e, this.to = t, this.gapFrom = n, this.gapTo = r, this.slice = o, this.insert = i, this.structure = s
                }
                apply(e) {
                    if (this.structure && (kt(e, this.from, this.gapFrom) || kt(e, this.gapTo, this.to))) return mt.fail("Structure gap-replace would overwrite content");
                    let t = e.slice(this.gapFrom, this.gapTo);
                    if (t.openStart || t.openEnd) return mt.fail("Gap is not a flat range");
                    let n = this.slice.insertAt(this.insert, t.content);
                    return n ? mt.fromReplace(e, this.from, this.to, n) : mt.fail("Content does not fit in gap")
                }
                getMap() {
                    return new dt([this.from, this.gapFrom - this.from, this.insert, this.gapTo, this.to - this.gapTo, this.slice.size - this.insert])
                }
                invert(e) {
                    let t = this.gapTo - this.gapFrom;
                    return new wt(this.from, this.from + this.slice.size + t, this.from + this.insert, this.from + this.insert + t, e.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure)
                }
                map(e) {
                    let t = e.mapResult(this.from, 1),
                        n = e.mapResult(this.to, -1),
                        r = e.map(this.gapFrom, -1),
                        o = e.map(this.gapTo, 1);
                    return t.deletedAcross && n.deletedAcross || r < t.pos || o > n.pos ? null : new wt(t.pos, n.pos, r, o, this.slice, this.insert, this.structure)
                }
                toJSON() {
                    let e = {
                        stepType: "replaceAround",
                        from: this.from,
                        to: this.to,
                        gapFrom: this.gapFrom,
                        gapTo: this.gapTo,
                        insert: this.insert
                    };
                    return this.slice.size && (e.slice = this.slice.toJSON()), this.structure && (e.structure = !0), e
                }
                static fromJSON(e, t) {
                    if ("number" != typeof t.from || "number" != typeof t.to || "number" != typeof t.gapFrom || "number" != typeof t.gapTo || "number" != typeof t.insert) throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");
                    return new wt(t.from, t.to, t.gapFrom, t.gapTo, v.fromJSON(e, t.slice), t.insert, !!t.structure)
                }
            }

            function kt(e, t, n) {
                let r = e.resolve(t),
                    o = n - t,
                    i = r.depth;
                for (; o > 0 && i > 0 && r.indexAfter(i) == r.node(i).childCount;) i--, o--;
                if (o > 0) {
                    let e = r.node(i).maybeChild(r.indexAfter(i));
                    for (; o > 0;) {
                        if (!e || e.isLeaf) return !0;
                        e = e.firstChild, o--
                    }
                }
                return !1
            }

            function xt(e, t, n) {
                return (0 == t || e.canReplace(t, e.childCount)) && (n == e.childCount || e.canReplace(0, n))
            }

            function Ct(e) {
                let t = e.parent.content.cutByIndex(e.startIndex, e.endIndex);
                for (let n = e.depth;; --n) {
                    let r = e.$from.node(n),
                        o = e.$from.index(n),
                        i = e.$to.indexAfter(n);
                    if (n < e.depth && r.canReplace(o, i, t)) return n;
                    if (0 == n || r.type.spec.isolating || !xt(r, o, i)) break
                }
                return null
            }

            function Tt(e) {
                return {
                    type: e,
                    attrs: null
                }
            }

            function Mt(e, t, n = 1, r) {
                let o = e.resolve(t),
                    i = o.depth - n,
                    s = r && r[r.length - 1] || o.parent;
                if (i < 0 || o.parent.type.spec.isolating || !o.parent.canReplace(o.index(), o.parent.childCount) || !s.type.validContent(o.parent.content.cutByIndex(o.index(), o.parent.childCount))) return !1;
                for (let e = o.depth - 1, t = n - 2; e > i; e--, t--) {
                    let n = o.node(e),
                        i = o.index(e);
                    if (n.type.spec.isolating) return !1;
                    let s = n.content.cutByIndex(i, n.childCount),
                        a = r && r[t] || n;
                    if (a != n && (s = s.replaceChild(0, a.type.create(a.attrs))), !n.canReplace(i + 1, n.childCount) || !a.type.validContent(s)) return !1
                }
                let a = o.indexAfter(i),
                    l = r && r[0];
                return o.node(i).canReplaceWith(a, a, l ? l.type : o.node(i + 1).type)
            }

            function St(e, t) {
                let n = e.resolve(t),
                    r = n.index();
                return Et(n.nodeBefore, n.nodeAfter) && n.parent.canReplace(r, r + 1)
            }

            function Et(e, t) {
                return !(!e || !t || e.isLeaf || !e.canAppend(t))
            }

            function Nt(e, t, n = t, r = v.empty) {
                if (t == n && !r.size) return null;
                let o = e.resolve(t),
                    i = e.resolve(n);
                return Ot(o, i, r) ? new bt(t, n, r) : new Dt(o, i, r).fit()
            }

            function Ot(e, t, n) {
                return !n.openStart && !n.openEnd && e.start() == t.start() && e.parent.canReplace(e.index(), t.index(), n.content)
            }
            ft.jsonID("replaceAround", wt);
            class Dt {
                constructor(e, t, n) {
                    this.$from = e, this.$to = t, this.unplaced = n, this.frontier = [], this.placed = d.empty;
                    for (let t = 0; t <= e.depth; t++) {
                        let n = e.node(t);
                        this.frontier.push({
                            type: n.type,
                            match: n.contentMatchAt(e.indexAfter(t))
                        })
                    }
                    for (let t = e.depth; t > 0; t--) this.placed = d.from(e.node(t).copy(this.placed))
                }
                get depth() {
                    return this.frontier.length - 1
                }
                fit() {
                    for (; this.unplaced.size;) {
                        let e = this.findFittable();
                        e ? this.placeNodes(e) : this.openMore() || this.dropNode()
                    }
                    let e = this.mustMoveInline(),
                        t = this.placed.size - this.depth - this.$from.depth,
                        n = this.$from,
                        r = this.close(e < 0 ? this.$to : n.doc.resolve(e));
                    if (!r) return null;
                    let o = this.placed,
                        i = n.depth,
                        s = r.depth;
                    for (; i && s && 1 == o.childCount;) o = o.firstChild.content, i--, s--;
                    let a = new v(o, i, s);
                    return e > -1 ? new wt(n.pos, e, this.$to.pos, this.$to.end(), a, t) : a.size || n.pos != this.$to.pos ? new bt(n.pos, r.pos, a) : null
                }
                findFittable() {
                    for (let e = 1; e <= 2; e++)
                        for (let t = this.unplaced.openStart; t >= 0; t--) {
                            let n, r = null;
                            t ? (r = It(this.unplaced.content, t - 1).firstChild, n = r.content) : n = this.unplaced.content;
                            let o = n.firstChild;
                            for (let n = this.depth; n >= 0; n--) {
                                let i, {
                                        type: s,
                                        match: a
                                    } = this.frontier[n],
                                    l = null;
                                if (1 == e && (o ? a.matchType(o.type) || (l = a.fillBefore(d.from(o), !1)) : r && s.compatibleContent(r.type))) return {
                                    sliceDepth: t,
                                    frontierDepth: n,
                                    parent: r,
                                    inject: l
                                };
                                if (2 == e && o && (i = a.findWrapping(o.type))) return {
                                    sliceDepth: t,
                                    frontierDepth: n,
                                    parent: r,
                                    wrap: i
                                };
                                if (r && a.matchType(r.type)) break
                            }
                        }
                }
                openMore() {
                    let {
                        content: e,
                        openStart: t,
                        openEnd: n
                    } = this.unplaced, r = It(e, t);
                    return !(!r.childCount || r.firstChild.isLeaf) && (this.unplaced = new v(e, t + 1, Math.max(n, r.size + t >= e.size - n ? t + 1 : 0)), !0)
                }
                dropNode() {
                    let {
                        content: e,
                        openStart: t,
                        openEnd: n
                    } = this.unplaced, r = It(e, t);
                    if (r.childCount <= 1 && t > 0) {
                        let o = e.size - t <= t + r.size;
                        this.unplaced = new v(At(e, t - 1, 1), t - 1, o ? t - 1 : n)
                    } else this.unplaced = new v(At(e, t, 1), t, n)
                }
                placeNodes({
                               sliceDepth: e,
                               frontierDepth: t,
                               parent: n,
                               inject: r,
                               wrap: o
                           }) {
                    for (; this.depth > t;) this.closeFrontierNode();
                    if (o)
                        for (let e = 0; e < o.length; e++) this.openFrontierNode(o[e]);
                    let i = this.unplaced,
                        s = n ? n.content : i.content,
                        a = i.openStart - e,
                        l = 0,
                        c = [],
                        {
                            match: u,
                            type: p
                        } = this.frontier[t];
                    if (r) {
                        for (let e = 0; e < r.childCount; e++) c.push(r.child(e));
                        u = u.matchFragment(r)
                    }
                    let h = s.size + e - (i.content.size - i.openEnd);
                    for (; l < s.childCount;) {
                        let e = s.child(l),
                            t = u.matchType(e.type);
                        if (!t) break;
                        l++, (l > 1 || 0 == a || e.content.size) && (u = t, c.push(Rt(e.mark(p.allowedMarks(e.marks)), 1 == l ? a : 0, l == s.childCount ? h : -1)))
                    }
                    let f = l == s.childCount;
                    f || (h = -1), this.placed = Lt(this.placed, t, d.from(c)), this.frontier[t].match = u, f && h < 0 && n && n.type == this.frontier[this.depth].type && this.frontier.length > 1 && this.closeFrontierNode();
                    for (let e = 0, t = s; e < h; e++) {
                        let e = t.lastChild;
                        this.frontier.push({
                            type: e.type,
                            match: e.contentMatchAt(e.childCount)
                        }), t = e.content
                    }
                    this.unplaced = f ? 0 == e ? v.empty : new v(At(i.content, e - 1, 1), e - 1, h < 0 ? i.openEnd : e - 1) : new v(At(i.content, e, l), i.openStart, i.openEnd)
                }
                mustMoveInline() {
                    if (!this.$to.parent.isTextblock) return -1;
                    let e, t = this.frontier[this.depth];
                    if (!t.type.isTextblock || !Pt(this.$to, this.$to.depth, t.type, t.match, !1) || this.$to.depth == this.depth && (e = this.findCloseLevel(this.$to)) && e.depth == this.depth) return -1;
                    let {
                        depth: n
                    } = this.$to, r = this.$to.after(n);
                    for (; n > 1 && r == this.$to.end(--n);) ++r;
                    return r
                }
                findCloseLevel(e) {
                    e: for (let t = Math.min(this.depth, e.depth); t >= 0; t--) {
                        let {
                            match: n,
                            type: r
                        } = this.frontier[t], o = t < e.depth && e.end(t + 1) == e.pos + (e.depth - (t + 1)), i = Pt(e, t, r, n, o);
                        if (i) {
                            for (let n = t - 1; n >= 0; n--) {
                                let {
                                    match: t,
                                    type: r
                                } = this.frontier[n], o = Pt(e, n, r, t, !0);
                                if (!o || o.childCount) continue e
                            }
                            return {
                                depth: t,
                                fit: i,
                                move: o ? e.doc.resolve(e.after(t + 1)) : e
                            }
                        }
                    }
                }
                close(e) {
                    let t = this.findCloseLevel(e);
                    if (!t) return null;
                    for (; this.depth > t.depth;) this.closeFrontierNode();
                    t.fit.childCount && (this.placed = Lt(this.placed, t.depth, t.fit)), e = t.move;
                    for (let n = t.depth + 1; n <= e.depth; n++) {
                        let t = e.node(n),
                            r = t.type.contentMatch.fillBefore(t.content, !0, e.index(n));
                        this.openFrontierNode(t.type, t.attrs, r)
                    }
                    return e
                }
                openFrontierNode(e, t = null, n) {
                    let r = this.frontier[this.depth];
                    r.match = r.match.matchType(e), this.placed = Lt(this.placed, this.depth, d.from(e.create(t, n))), this.frontier.push({
                        type: e,
                        match: e.contentMatch
                    })
                }
                closeFrontierNode() {
                    let e = this.frontier.pop().match.fillBefore(d.empty, !0);
                    e.childCount && (this.placed = Lt(this.placed, this.frontier.length, e))
                }
            }

            function At(e, t, n) {
                return 0 == t ? e.cutByIndex(n, e.childCount) : e.replaceChild(0, e.firstChild.copy(At(e.firstChild.content, t - 1, n)))
            }

            function Lt(e, t, n) {
                return 0 == t ? e.append(n) : e.replaceChild(e.childCount - 1, e.lastChild.copy(Lt(e.lastChild.content, t - 1, n)))
            }

            function It(e, t) {
                for (let n = 0; n < t; n++) e = e.firstChild.content;
                return e
            }

            function Rt(e, t, n) {
                if (t <= 0) return e;
                let r = e.content;
                return t > 1 && (r = r.replaceChild(0, Rt(r.firstChild, t - 1, 1 == r.childCount ? n - 1 : 0))), t > 0 && (r = e.type.contentMatch.fillBefore(r).append(r), n <= 0 && (r = r.append(e.type.contentMatch.matchFragment(r).fillBefore(d.empty, !0)))), e.copy(r)
            }

            function Pt(e, t, n, r, o) {
                let i = e.node(t),
                    s = o ? e.indexAfter(t) : e.index(t);
                if (s == i.childCount && !n.compatibleContent(i.type)) return null;
                let a = r.fillBefore(i.content, !0, s);
                return a && ! function(e, t, n) {
                    for (let r = n; r < t.childCount; r++)
                        if (!e.allowsMarks(t.child(r).marks)) return !0;
                    return !1
                }(n, i.content, s) ? a : null
            }

            function Bt(e) {
                return e.spec.defining || e.spec.definingForContent
            }

            function Ft(e, t, n, r, o) {
                if (t < n) {
                    let o = e.firstChild;
                    e = e.replaceChild(0, o.copy(Ft(o.content, t + 1, n, r, o)))
                }
                if (t > r) {
                    let t = o.contentMatchAt(0),
                        n = t.fillBefore(e).append(e);
                    e = n.append(t.matchFragment(n).fillBefore(d.empty, !0))
                }
                return e
            }

            function Ht(e, t) {
                let n = [];
                for (let r = Math.min(e.depth, t.depth); r >= 0; r--) {
                    let o = e.start(r);
                    if (o < e.pos - (e.depth - r) || t.end(r) > t.pos + (t.depth - r) || e.node(r).type.spec.isolating || t.node(r).type.spec.isolating) break;
                    (o == t.start(r) || r == e.depth && r == t.depth && e.parent.inlineContent && t.parent.inlineContent && r && t.start(r - 1) == o - 1) && n.push(r)
                }
                return n
            }
            let zt = class extends Error {};
            zt = function e(t) {
                let n = Error.call(this, t);
                return n.__proto__ = e.prototype, n
            }, (zt.prototype = Object.create(Error.prototype)).constructor = zt, zt.prototype.name = "TransformError";
            const qt = Object.create(null);
            class Vt {
                constructor(e, t, n) {
                    this.$anchor = e, this.$head = t, this.ranges = n || [new jt(e.min(t), e.max(t))]
                }
                get anchor() {
                    return this.$anchor.pos
                }
                get head() {
                    return this.$head.pos
                }
                get from() {
                    return this.$from.pos
                }
                get to() {
                    return this.$to.pos
                }
                get $from() {
                    return this.ranges[0].$from
                }
                get $to() {
                    return this.ranges[0].$to
                }
                get empty() {
                    let e = this.ranges;
                    for (let t = 0; t < e.length; t++)
                        if (e[t].$from.pos != e[t].$to.pos) return !1;
                    return !0
                }
                content() {
                    return this.$from.doc.slice(this.from, this.to, !0)
                }
                replace(e, t = v.empty) {
                    let n = t.content.lastChild,
                        r = null;
                    for (let e = 0; e < t.openEnd; e++) r = n, n = n.lastChild;
                    let o = e.steps.length,
                        i = this.ranges;
                    for (let s = 0; s < i.length; s++) {
                        let {
                            $from: a,
                            $to: l
                        } = i[s], c = e.mapping.slice(o);
                        e.replaceRange(c.map(a.pos), c.map(l.pos), s ? v.empty : t), 0 == s && Qt(e, o, (n ? n.isInline : r && r.isTextblock) ? -1 : 1)
                    }
                }
                replaceWith(e, t) {
                    let n = e.steps.length,
                        r = this.ranges;
                    for (let o = 0; o < r.length; o++) {
                        let {
                            $from: i,
                            $to: s
                        } = r[o], a = e.mapping.slice(n), l = a.map(i.pos), c = a.map(s.pos);
                        o ? e.deleteRange(l, c) : (e.replaceRangeWith(l, c, t), Qt(e, n, t.isInline ? -1 : 1))
                    }
                }
                static findFrom(e, t, n = !1) {
                    let r = e.parent.inlineContent ? new Ut(e) : Xt(e.node(0), e.parent, e.pos, e.index(), t, n);
                    if (r) return r;
                    for (let r = e.depth - 1; r >= 0; r--) {
                        let o = t < 0 ? Xt(e.node(0), e.node(r), e.before(r + 1), e.index(r), t, n) : Xt(e.node(0), e.node(r), e.after(r + 1), e.index(r) + 1, t, n);
                        if (o) return o
                    }
                    return null
                }
                static near(e, t = 1) {
                    return this.findFrom(e, t) || this.findFrom(e, -t) || new Kt(e.node(0))
                }
                static atStart(e) {
                    return Xt(e, e, 0, 0, 1) || new Kt(e)
                }
                static atEnd(e) {
                    return Xt(e, e, e.content.size, e.childCount, -1) || new Kt(e)
                }
                static fromJSON(e, t) {
                    if (!t || !t.type) throw new RangeError("Invalid input for Selection.fromJSON");
                    let n = qt[t.type];
                    if (!n) throw new RangeError(`No selection type ${t.type} defined`);
                    return n.fromJSON(e, t)
                }
                static jsonID(e, t) {
                    if (e in qt) throw new RangeError("Duplicate use of selection JSON ID " + e);
                    return qt[e] = t, t.prototype.jsonID = e, t
                }
                getBookmark() {
                    return Ut.between(this.$anchor, this.$head).getBookmark()
                }
            }
            Vt.prototype.visible = !0;
            class jt {
                constructor(e, t) {
                    this.$from = e, this.$to = t
                }
            }
            let $t = !1;

            function _t(e) {
                $t || e.parent.inlineContent || ($t = !0, console.warn("TextSelection endpoint not pointing into a node with inline content (" + e.parent.type.name + ")"))
            }
            class Ut extends Vt {
                constructor(e, t = e) {
                    _t(e), _t(t), super(e, t)
                }
                get $cursor() {
                    return this.$anchor.pos == this.$head.pos ? this.$head : null
                }
                map(e, t) {
                    let n = e.resolve(t.map(this.head));
                    if (!n.parent.inlineContent) return Vt.near(n);
                    let r = e.resolve(t.map(this.anchor));
                    return new Ut(r.parent.inlineContent ? r : n, n)
                }
                replace(e, t = v.empty) {
                    if (super.replace(e, t), t == v.empty) {
                        let t = this.$from.marksAcross(this.$to);
                        t && e.ensureMarks(t)
                    }
                }
                eq(e) {
                    return e instanceof Ut && e.anchor == this.anchor && e.head == this.head
                }
                getBookmark() {
                    return new Wt(this.anchor, this.head)
                }
                toJSON() {
                    return {
                        type: "text",
                        anchor: this.anchor,
                        head: this.head
                    }
                }
                static fromJSON(e, t) {
                    if ("number" != typeof t.anchor || "number" != typeof t.head) throw new RangeError("Invalid input for TextSelection.fromJSON");
                    return new Ut(e.resolve(t.anchor), e.resolve(t.head))
                }
                static create(e, t, n = t) {
                    let r = e.resolve(t);
                    return new this(r, n == t ? r : e.resolve(n))
                }
                static between(e, t, n) {
                    let r = e.pos - t.pos;
                    if (n && !r || (n = r >= 0 ? 1 : -1), !t.parent.inlineContent) {
                        let e = Vt.findFrom(t, n, !0) || Vt.findFrom(t, -n, !0);
                        if (!e) return Vt.near(t, n);
                        t = e.$head
                    }
                    return e.parent.inlineContent || (0 == r || (e = (Vt.findFrom(e, -n, !0) || Vt.findFrom(e, n, !0)).$anchor).pos < t.pos != r < 0) && (e = t), new Ut(e, t)
                }
            }
            Vt.jsonID("text", Ut);
            class Wt {
                constructor(e, t) {
                    this.anchor = e, this.head = t
                }
                map(e) {
                    return new Wt(e.map(this.anchor), e.map(this.head))
                }
                resolve(e) {
                    return Ut.between(e.resolve(this.anchor), e.resolve(this.head))
                }
            }
            class Jt extends Vt {
                constructor(e) {
                    let t = e.nodeAfter,
                        n = e.node(0).resolve(e.pos + t.nodeSize);
                    super(e, n), this.node = t
                }
                map(e, t) {
                    let {
                        deleted: n,
                        pos: r
                    } = t.mapResult(this.anchor), o = e.resolve(r);
                    return n ? Vt.near(o) : new Jt(o)
                }
                content() {
                    return new v(d.from(this.node), 0, 0)
                }
                eq(e) {
                    return e instanceof Jt && e.anchor == this.anchor
                }
                toJSON() {
                    return {
                        type: "node",
                        anchor: this.anchor
                    }
                }
                getBookmark() {
                    return new Gt(this.anchor)
                }
                static fromJSON(e, t) {
                    if ("number" != typeof t.anchor) throw new RangeError("Invalid input for NodeSelection.fromJSON");
                    return new Jt(e.resolve(t.anchor))
                }
                static create(e, t) {
                    return new Jt(e.resolve(t))
                }
                static isSelectable(e) {
                    return !e.isText && !1 !== e.type.spec.selectable
                }
            }
            Jt.prototype.visible = !1, Vt.jsonID("node", Jt);
            class Gt {
                constructor(e) {
                    this.anchor = e
                }
                map(e) {
                    let {
                        deleted: t,
                        pos: n
                    } = e.mapResult(this.anchor);
                    return t ? new Wt(n, n) : new Gt(n)
                }
                resolve(e) {
                    let t = e.resolve(this.anchor),
                        n = t.nodeAfter;
                    return n && Jt.isSelectable(n) ? new Jt(t) : Vt.near(t)
                }
            }
            class Kt extends Vt {
                constructor(e) {
                    super(e.resolve(0), e.resolve(e.content.size))
                }
                replace(e, t = v.empty) {
                    if (t == v.empty) {
                        e.delete(0, e.doc.content.size);
                        let t = Vt.atStart(e.doc);
                        t.eq(e.selection) || e.setSelection(t)
                    } else super.replace(e, t)
                }
                toJSON() {
                    return {
                        type: "all"
                    }
                }
                static fromJSON(e) {
                    return new Kt(e)
                }
                map(e) {
                    return new Kt(e)
                }
                eq(e) {
                    return e instanceof Kt
                }
                getBookmark() {
                    return Zt
                }
            }
            Vt.jsonID("all", Kt);
            const Zt = {
                map() {
                    return this
                },
                resolve: e => new Kt(e)
            };

            function Xt(e, t, n, r, o, i = !1) {
                if (t.inlineContent) return Ut.create(e, n);
                for (let s = r - (o > 0 ? 0 : 1); o > 0 ? s < t.childCount : s >= 0; s += o) {
                    let r = t.child(s);
                    if (r.isAtom) {
                        if (!i && Jt.isSelectable(r)) return Jt.create(e, n - (o < 0 ? r.nodeSize : 0))
                    } else {
                        let t = Xt(e, r, n + o, o < 0 ? r.childCount : 0, o, i);
                        if (t) return t
                    }
                    n += r.nodeSize * o
                }
                return null
            }

            function Qt(e, t, n) {
                let r = e.steps.length - 1;
                if (r < t) return;
                let o, i = e.steps[r];
                (i instanceof bt || i instanceof wt) && (e.mapping.maps[r].forEach(((e, t, n, r) => {
                    null == o && (o = r)
                })), e.setSelection(Vt.near(e.doc.resolve(o), n)))
            }
            class Yt extends class {
                constructor(e) {
                    this.doc = e, this.steps = [], this.docs = [], this.mapping = new pt
                }
                get before() {
                    return this.docs.length ? this.docs[0] : this.doc
                }
                step(e) {
                    let t = this.maybeStep(e);
                    if (t.failed) throw new zt(t.failed);
                    return this
                }
                maybeStep(e) {
                    let t = e.apply(this.doc);
                    return t.failed || this.addStep(e, t.doc), t
                }
                get docChanged() {
                    return this.steps.length > 0
                }
                addStep(e, t) {
                    this.docs.push(this.doc), this.steps.push(e), this.mapping.appendMap(e.getMap()), this.doc = t
                }
                replace(e, t = e, n = v.empty) {
                    let r = Nt(this.doc, e, t, n);
                    return r && this.step(r), this
                }
                replaceWith(e, t, n) {
                    return this.replace(e, t, new v(d.from(n), 0, 0))
                }
                delete(e, t) {
                    return this.replace(e, t, v.empty)
                }
                insert(e, t) {
                    return this.replaceWith(e, e, t)
                }
                replaceRange(e, t, n) {
                    return function(e, t, n, r) {
                        if (!r.size) return e.deleteRange(t, n);
                        let o = e.doc.resolve(t),
                            i = e.doc.resolve(n);
                        if (Ot(o, i, r)) return e.step(new bt(t, n, r));
                        let s = Ht(o, e.doc.resolve(n));
                        0 == s[s.length - 1] && s.pop();
                        let a = -(o.depth + 1);
                        s.unshift(a);
                        for (let e = o.depth, t = o.pos - 1; e > 0; e--, t--) {
                            let n = o.node(e).type.spec;
                            if (n.defining || n.definingAsContext || n.isolating) break;
                            s.indexOf(e) > -1 ? a = e : o.before(e) == t && s.splice(1, 0, -e)
                        }
                        let l = s.indexOf(a),
                            c = [],
                            u = r.openStart;
                        for (let e = r.content, t = 0;; t++) {
                            let n = e.firstChild;
                            if (c.push(n), t == r.openStart) break;
                            e = n.content
                        }
                        for (let e = u - 1; e >= 0; e--) {
                            let t = c[e].type,
                                n = Bt(t);
                            if (n && o.node(l).type != t) u = e;
                            else if (n || !t.isTextblock) break
                        }
                        for (let t = r.openStart; t >= 0; t--) {
                            let a = (t + u + 1) % (r.openStart + 1),
                                d = c[a];
                            if (d)
                                for (let t = 0; t < s.length; t++) {
                                    let c = s[(t + l) % s.length],
                                        u = !0;
                                    c < 0 && (u = !1, c = -c);
                                    let p = o.node(c - 1),
                                        h = o.index(c - 1);
                                    if (p.canReplaceWith(h, h, d.type, d.marks)) return e.replace(o.before(c), u ? i.after(c) : n, new v(Ft(r.content, 0, r.openStart, a), a, r.openEnd))
                                }
                        }
                        let d = e.steps.length;
                        for (let a = s.length - 1; a >= 0 && (e.replace(t, n, r), !(e.steps.length > d)); a--) {
                            let e = s[a];
                            e < 0 || (t = o.before(e), n = i.after(e))
                        }
                    }(this, e, t, n), this
                }
                replaceRangeWith(e, t, n) {
                    return function(e, t, n, r) {
                        if (!r.isInline && t == n && e.doc.resolve(t).parent.content.size) {
                            let o = function(e, t, n) {
                                let r = e.resolve(t);
                                if (r.parent.canReplaceWith(r.index(), r.index(), n)) return t;
                                if (0 == r.parentOffset)
                                    for (let e = r.depth - 1; e >= 0; e--) {
                                        let t = r.index(e);
                                        if (r.node(e).canReplaceWith(t, t, n)) return r.before(e + 1);
                                        if (t > 0) return null
                                    }
                                if (r.parentOffset == r.parent.content.size)
                                    for (let e = r.depth - 1; e >= 0; e--) {
                                        let t = r.indexAfter(e);
                                        if (r.node(e).canReplaceWith(t, t, n)) return r.after(e + 1);
                                        if (t < r.node(e).childCount) return null
                                    }
                                return null
                            }(e.doc, t, r.type);
                            null != o && (t = n = o)
                        }
                        e.replaceRange(t, n, new v(d.from(r), 0, 0))
                    }(this, e, t, n), this
                }
                deleteRange(e, t) {
                    return function(e, t, n) {
                        let r = e.doc.resolve(t),
                            o = e.doc.resolve(n),
                            i = Ht(r, o);
                        for (let t = 0; t < i.length; t++) {
                            let n = i[t],
                                s = t == i.length - 1;
                            if (s && 0 == n || r.node(n).type.contentMatch.validEnd) return e.delete(r.start(n), o.end(n));
                            if (n > 0 && (s || r.node(n - 1).canReplace(r.index(n - 1), o.indexAfter(n - 1)))) return e.delete(r.before(n), o.after(n))
                        }
                        for (let i = 1; i <= r.depth && i <= o.depth; i++)
                            if (t - r.start(i) == r.depth - i && n > r.end(i) && o.end(i) - n != o.depth - i) return e.delete(r.before(i), n);
                        e.delete(t, n)
                    }(this, e, t), this
                }
                lift(e, t) {
                    return function(e, t, n) {
                        let {
                            $from: r,
                            $to: o,
                            depth: i
                        } = t, s = r.before(i + 1), a = o.after(i + 1), l = s, c = a, u = d.empty, p = 0;
                        for (let e = i, t = !1; e > n; e--) t || r.index(e) > 0 ? (t = !0, u = d.from(r.node(e).copy(u)), p++) : l--;
                        let h = d.empty,
                            f = 0;
                        for (let e = i, t = !1; e > n; e--) t || o.after(e + 1) < o.end(e) ? (t = !0, h = d.from(o.node(e).copy(h)), f++) : c++;
                        e.step(new wt(l, c, s, a, new v(u.append(h), p, f), u.size - p, !0))
                    }(this, e, t), this
                }
                join(e, t = 1) {
                    return function(e, t, n) {
                        let r = new bt(t - n, t + n, v.empty, !0);
                        e.step(r)
                    }(this, e, t), this
                }
                wrap(e, t) {
                    return function(e, t, n) {
                        let r = d.empty;
                        for (let e = n.length - 1; e >= 0; e--) {
                            if (r.size) {
                                let t = n[e].type.contentMatch.matchFragment(r);
                                if (!t || !t.validEnd) throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")
                            }
                            r = d.from(n[e].type.create(n[e].attrs, r))
                        }
                        let o = t.start,
                            i = t.end;
                        e.step(new wt(o, i, o, i, new v(r, 0, 0), n.length, !0))
                    }(this, e, t), this
                }
                setBlockType(e, t = e, n, r = null) {
                    return function(e, t, n, r, o) {
                        if (!r.isTextblock) throw new RangeError("Type given to setBlockType should be a textblock");
                        let i = e.steps.length;
                        e.doc.nodesBetween(t, n, ((t, n) => {
                            if (t.isTextblock && !t.hasMarkup(r, o) && function(e, t, n) {
                                let r = e.resolve(t),
                                    o = r.index();
                                return r.parent.canReplaceWith(o, o + 1, n)
                            }(e.doc, e.mapping.slice(i).map(n), r)) {
                                e.clearIncompatible(e.mapping.slice(i).map(n, 1), r);
                                let s = e.mapping.slice(i),
                                    a = s.map(n, 1),
                                    l = s.map(n + t.nodeSize, 1);
                                return e.step(new wt(a, l, a + 1, l - 1, new v(d.from(r.create(o, null, t.marks)), 0, 0), 1, !0)), !1
                            }
                        }))
                    }(this, e, t, n, r), this
                }
                setNodeMarkup(e, t, n = null, r = []) {
                    return function(e, t, n, r, o) {
                        let i = e.doc.nodeAt(t);
                        if (!i) throw new RangeError("No node at given position");
                        n || (n = i.type);
                        let s = n.create(r, null, o || i.marks);
                        if (i.isLeaf) return e.replaceWith(t, t + i.nodeSize, s);
                        if (!n.validContent(i.content)) throw new RangeError("Invalid content for node type " + n.name);
                        e.step(new wt(t, t + i.nodeSize, t + 1, t + i.nodeSize - 1, new v(d.from(s), 0, 0), 1, !0))
                    }(this, e, t, n, r), this
                }
                split(e, t = 1, n) {
                    return function(e, t, n = 1, r) {
                        let o = e.doc.resolve(t),
                            i = d.empty,
                            s = d.empty;
                        for (let e = o.depth, t = o.depth - n, a = n - 1; e > t; e--, a--) {
                            i = d.from(o.node(e).copy(i));
                            let t = r && r[a];
                            s = d.from(t ? t.type.create(t.attrs, s) : o.node(e).copy(s))
                        }
                        e.step(new bt(t, t, new v(i.append(s), n, n), !0))
                    }(this, e, t, n), this
                }
                addMark(e, t, n) {
                    return function(e, t, n, r) {
                        let o, i, s = [],
                            a = [];
                        e.doc.nodesBetween(t, n, ((e, l, c) => {
                            if (!e.isInline) return;
                            let u = e.marks;
                            if (!r.isInSet(u) && c.type.allowsMarkType(r.type)) {
                                let c = Math.max(l, t),
                                    d = Math.min(l + e.nodeSize, n),
                                    p = r.addToSet(u);
                                for (let e = 0; e < u.length; e++) u[e].isInSet(p) || (o && o.to == c && o.mark.eq(u[e]) ? o.to = d : s.push(o = new yt(c, d, u[e])));
                                i && i.to == c ? i.to = d : a.push(i = new vt(c, d, r))
                            }
                        })), s.forEach((t => e.step(t))), a.forEach((t => e.step(t)))
                    }(this, e, t, n), this
                }
                removeMark(e, t, n) {
                    return function(e, t, n, r) {
                        let o = [],
                            i = 0;
                        e.doc.nodesBetween(t, n, ((e, s) => {
                            if (!e.isInline) return;
                            i++;
                            let a = null;
                            if (r instanceof Q) {
                                let t, n = e.marks;
                                for (; t = r.isInSet(n);)(a || (a = [])).push(t), n = t.removeFromSet(n)
                            } else r ? r.isInSet(e.marks) && (a = [r]) : a = e.marks;
                            if (a && a.length) {
                                let r = Math.min(s + e.nodeSize, n);
                                for (let e = 0; e < a.length; e++) {
                                    let n, l = a[e];
                                    for (let e = 0; e < o.length; e++) {
                                        let t = o[e];
                                        t.step == i - 1 && l.eq(o[e].style) && (n = t)
                                    }
                                    n ? (n.to = r, n.step = i) : o.push({
                                        style: l,
                                        from: Math.max(s, t),
                                        to: r,
                                        step: i
                                    })
                                }
                            }
                        })), o.forEach((t => e.step(new yt(t.from, t.to, t.style))))
                    }(this, e, t, n), this
                }
                clearIncompatible(e, t, n) {
                    return function(e, t, n, r = n.contentMatch) {
                        let o = e.doc.nodeAt(t),
                            i = [],
                            s = t + 1;
                        for (let t = 0; t < o.childCount; t++) {
                            let a = o.child(t),
                                l = s + a.nodeSize,
                                c = r.matchType(a.type);
                            if (c) {
                                r = c;
                                for (let t = 0; t < a.marks.length; t++) n.allowsMarkType(a.marks[t].type) || e.step(new yt(s, l, a.marks[t]))
                            } else i.push(new bt(s, l, v.empty));
                            s = l
                        }
                        if (!r.validEnd) {
                            let t = r.fillBefore(d.empty, !0);
                            e.replace(s, s, new v(t, 0, 0))
                        }
                        for (let t = i.length - 1; t >= 0; t--) e.step(i[t])
                    }(this, e, t, n), this
                }
            } {
                constructor(e) {
                    super(e.doc), this.curSelectionFor = 0, this.updated = 0, this.meta = Object.create(null), this.time = Date.now(), this.curSelection = e.selection, this.storedMarks = e.storedMarks
                }
                get selection() {
                    return this.curSelectionFor < this.steps.length && (this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor)), this.curSelectionFor = this.steps.length), this.curSelection
                }
                setSelection(e) {
                    if (e.$from.doc != this.doc) throw new RangeError("Selection passed to setSelection must point at the current document");
                    return this.curSelection = e, this.curSelectionFor = this.steps.length, this.updated = -3 & (1 | this.updated), this.storedMarks = null, this
                }
                get selectionSet() {
                    return (1 & this.updated) > 0
                }
                setStoredMarks(e) {
                    return this.storedMarks = e, this.updated |= 2, this
                }
                ensureMarks(e) {
                    return m.sameSet(this.storedMarks || this.selection.$from.marks(), e) || this.setStoredMarks(e), this
                }
                addStoredMark(e) {
                    return this.ensureMarks(e.addToSet(this.storedMarks || this.selection.$head.marks()))
                }
                removeStoredMark(e) {
                    return this.ensureMarks(e.removeFromSet(this.storedMarks || this.selection.$head.marks()))
                }
                get storedMarksSet() {
                    return (2 & this.updated) > 0
                }
                addStep(e, t) {
                    super.addStep(e, t), this.updated = -3 & this.updated, this.storedMarks = null
                }
                setTime(e) {
                    return this.time = e, this
                }
                replaceSelection(e) {
                    return this.selection.replace(this, e), this
                }
                replaceSelectionWith(e, t = !0) {
                    let n = this.selection;
                    return t && (e = e.mark(this.storedMarks || (n.empty ? n.$from.marks() : n.$from.marksAcross(n.$to) || m.none))), n.replaceWith(this, e), this
                }
                deleteSelection() {
                    return this.selection.replace(this), this
                }
                insertText(e, t, n) {
                    let r = this.doc.type.schema;
                    if (null == t) return e ? this.replaceSelectionWith(r.text(e), !0) : this.deleteSelection();
                    {
                        if (null == n && (n = t), n = null == n ? t : n, !e) return this.deleteRange(t, n);
                        let o = this.storedMarks;
                        if (!o) {
                            let e = this.doc.resolve(t);
                            o = n == t ? e.marks() : e.marksAcross(this.doc.resolve(n))
                        }
                        return this.replaceRangeWith(t, n, r.text(e, o)), this.selection.empty || this.setSelection(Vt.near(this.selection.$to)), this
                    }
                }
                setMeta(e, t) {
                    return this.meta["string" == typeof e ? e : e.key] = t, this
                }
                getMeta(e) {
                    return this.meta["string" == typeof e ? e : e.key]
                }
                get isGeneric() {
                    for (let e in this.meta) return !1;
                    return !0
                }
                scrollIntoView() {
                    return this.updated |= 4, this
                }
                get scrolledIntoView() {
                    return (4 & this.updated) > 0
                }
            }

            function en(e, t) {
                return t && e ? e.bind(t) : e
            }
            class tn {
                constructor(e, t, n) {
                    this.name = e, this.init = en(t.init, n), this.apply = en(t.apply, n)
                }
            }
            const nn = [new tn("doc", {
                init: e => e.doc || e.schema.topNodeType.createAndFill(),
                apply: e => e.doc
            }), new tn("selection", {
                init: (e, t) => e.selection || Vt.atStart(t.doc),
                apply: e => e.selection
            }), new tn("storedMarks", {
                init: e => e.storedMarks || null,
                apply: (e, t, n, r) => r.selection.$cursor ? e.storedMarks : null
            }), new tn("scrollToSelection", {
                init: () => 0,
                apply: (e, t) => e.scrolledIntoView ? t + 1 : t
            })];
            class rn {
                constructor(e, t) {
                    this.schema = e, this.plugins = [], this.pluginsByKey = Object.create(null), this.fields = nn.slice(), t && t.forEach((e => {
                        if (this.pluginsByKey[e.key]) throw new RangeError("Adding different instances of a keyed plugin (" + e.key + ")");
                        this.plugins.push(e), this.pluginsByKey[e.key] = e, e.spec.state && this.fields.push(new tn(e.key, e.spec.state, e))
                    }))
                }
            }
            class on {
                constructor(e) {
                    this.config = e
                }
                get schema() {
                    return this.config.schema
                }
                get plugins() {
                    return this.config.plugins
                }
                apply(e) {
                    return this.applyTransaction(e).state
                }
                filterTransaction(e, t = -1) {
                    for (let n = 0; n < this.config.plugins.length; n++)
                        if (n != t) {
                            let t = this.config.plugins[n];
                            if (t.spec.filterTransaction && !t.spec.filterTransaction.call(t, e, this)) return !1
                        } return !0
                }
                applyTransaction(e) {
                    if (!this.filterTransaction(e)) return {
                        state: this,
                        transactions: []
                    };
                    let t = [e],
                        n = this.applyInner(e),
                        r = null;
                    for (;;) {
                        let o = !1;
                        for (let i = 0; i < this.config.plugins.length; i++) {
                            let s = this.config.plugins[i];
                            if (s.spec.appendTransaction) {
                                let a = r ? r[i].n : 0,
                                    l = r ? r[i].state : this,
                                    c = a < t.length && s.spec.appendTransaction.call(s, a ? t.slice(a) : t, l, n);
                                if (c && n.filterTransaction(c, i)) {
                                    if (c.setMeta("appendedTransaction", e), !r) {
                                        r = [];
                                        for (let e = 0; e < this.config.plugins.length; e++) r.push(e < i ? {
                                            state: n,
                                            n: t.length
                                        } : {
                                            state: this,
                                            n: 0
                                        })
                                    }
                                    t.push(c), n = n.applyInner(c), o = !0
                                }
                                r && (r[i] = {
                                    state: n,
                                    n: t.length
                                })
                            }
                        }
                        if (!o) return {
                            state: n,
                            transactions: t
                        }
                    }
                }
                applyInner(e) {
                    if (!e.before.eq(this.doc)) throw new RangeError("Applying a mismatched transaction");
                    let t = new on(this.config),
                        n = this.config.fields;
                    for (let r = 0; r < n.length; r++) {
                        let o = n[r];
                        t[o.name] = o.apply(e, this[o.name], this, t)
                    }
                    return t
                }
                get tr() {
                    return new Yt(this)
                }
                static create(e) {
                    let t = new rn(e.doc ? e.doc.type.schema : e.schema, e.plugins),
                        n = new on(t);
                    for (let r = 0; r < t.fields.length; r++) n[t.fields[r].name] = t.fields[r].init(e, n);
                    return n
                }
                reconfigure(e) {
                    let t = new rn(this.schema, e.plugins),
                        n = t.fields,
                        r = new on(t);
                    for (let t = 0; t < n.length; t++) {
                        let o = n[t].name;
                        r[o] = this.hasOwnProperty(o) ? this[o] : n[t].init(e, r)
                    }
                    return r
                }
                toJSON(e) {
                    let t = {
                        doc: this.doc.toJSON(),
                        selection: this.selection.toJSON()
                    };
                    if (this.storedMarks && (t.storedMarks = this.storedMarks.map((e => e.toJSON()))), e && "object" == typeof e)
                        for (let n in e) {
                            if ("doc" == n || "selection" == n) throw new RangeError("The JSON fields `doc` and `selection` are reserved");
                            let r = e[n],
                                o = r.spec.state;
                            o && o.toJSON && (t[n] = o.toJSON.call(r, this[r.key]))
                        }
                    return t
                }
                static fromJSON(e, t, n) {
                    if (!t) throw new RangeError("Invalid input for EditorState.fromJSON");
                    if (!e.schema) throw new RangeError("Required config field 'schema' missing");
                    let r = new rn(e.schema, e.plugins),
                        o = new on(r);
                    return r.fields.forEach((r => {
                        if ("doc" == r.name) o.doc = P.fromJSON(e.schema, t.doc);
                        else if ("selection" == r.name) o.selection = Vt.fromJSON(o.doc, t.selection);
                        else if ("storedMarks" == r.name) t.storedMarks && (o.storedMarks = t.storedMarks.map(e.schema.markFromJSON));
                        else {
                            if (n)
                                for (let i in n) {
                                    let s = n[i],
                                        a = s.spec.state;
                                    if (s.key == r.name && a && a.fromJSON && Object.prototype.hasOwnProperty.call(t, i)) return void(o[r.name] = a.fromJSON.call(s, e, t[i], o))
                                }
                            o[r.name] = r.init(e, o)
                        }
                    })), o
                }
            }

            function sn(e, t, n) {
                for (let r in e) {
                    let o = e[r];
                    o instanceof Function ? o = o.bind(t) : "handleDOMEvents" == r && (o = sn(o, t, {})), n[r] = o
                }
                return n
            }
            class an {
                constructor(e) {
                    this.spec = e, this.props = {}, e.props && sn(e.props, this, this.props), this.key = e.key ? e.key.key : cn("plugin")
                }
                getState(e) {
                    return e[this.key]
                }
            }
            const ln = Object.create(null);

            function cn(e) {
                return e in ln ? e + "$" + ++ln[e] : (ln[e] = 0, e + "$")
            }
            class un {
                constructor(e = "key") {
                    this.key = cn(e)
                }
                get(e) {
                    return e.config.pluginsByKey[this.key]
                }
                getState(e) {
                    return e[this.key]
                }
            }
            const dn = "undefined" != typeof navigator ? navigator : null,
                pn = "undefined" != typeof document ? document : null,
                hn = dn && dn.userAgent || "",
                fn = /Edge\/(\d+)/.exec(hn),
                mn = /MSIE \d/.exec(hn),
                gn = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(hn),
                vn = !!(mn || gn || fn),
                yn = mn ? document.documentMode : gn ? +gn[1] : fn ? +fn[1] : 0,
                bn = !vn && /gecko\/(\d+)/i.test(hn);
            bn && (/Firefox\/(\d+)/.exec(hn) || [0, 0])[1];
            const wn = !vn && /Chrome\/(\d+)/.exec(hn),
                kn = !!wn,
                xn = wn ? +wn[1] : 0,
                Cn = !vn && !!dn && /Apple Computer/.test(dn.vendor),
                Tn = Cn && (/Mobile\/\w+/.test(hn) || !!dn && dn.maxTouchPoints > 2),
                Mn = Tn || !!dn && /Mac/.test(dn.platform),
                Sn = /Android \d/.test(hn),
                En = !!pn && "webkitFontSmoothing" in pn.documentElement.style,
                Nn = En ? +(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0,
                On = function(e) {
                    for (var t = 0;; t++)
                        if (!(e = e.previousSibling)) return t
                },
                Dn = function(e) {
                    let t = e.assignedSlot || e.parentNode;
                    return t && 11 == t.nodeType ? t.host : t
                };
            let An = null;
            const Ln = function(e, t, n) {
                    let r = An || (An = document.createRange());
                    return r.setEnd(e, null == n ? e.nodeValue.length : n), r.setStart(e, t || 0), r
                },
                In = function(e, t, n, r) {
                    return n && (Pn(e, t, n, r, -1) || Pn(e, t, n, r, 1))
                },
                Rn = /^(img|br|input|textarea|hr)$/i;

            function Pn(e, t, n, r, o) {
                for (;;) {
                    if (e == n && t == r) return !0;
                    if (t == (o < 0 ? 0 : Bn(e))) {
                        let n = e.parentNode;
                        if (!n || 1 != n.nodeType || Fn(e) || Rn.test(e.nodeName) || "false" == e.contentEditable) return !1;
                        t = On(e) + (o < 0 ? 0 : 1), e = n
                    } else {
                        if (1 != e.nodeType) return !1;
                        if ("false" == (e = e.childNodes[t + (o < 0 ? -1 : 0)]).contentEditable) return !1;
                        t = o < 0 ? Bn(e) : 0
                    }
                }
            }

            function Bn(e) {
                return 3 == e.nodeType ? e.nodeValue.length : e.childNodes.length
            }

            function Fn(e) {
                let t;
                for (let n = e; n && !(t = n.pmViewDesc); n = n.parentNode);
                return t && t.node && t.node.isBlock && (t.dom == e || t.contentDOM == e)
            }
            const Hn = function(e) {
                let t = e.isCollapsed;
                return t && kn && e.rangeCount && !e.getRangeAt(0).collapsed && (t = !1), t
            };

            function zn(e, t) {
                let n = document.createEvent("Event");
                return n.initEvent("keydown", !0, !0), n.keyCode = e, n.key = n.code = t, n
            }

            function qn(e) {
                return {
                    left: 0,
                    right: e.documentElement.clientWidth,
                    top: 0,
                    bottom: e.documentElement.clientHeight
                }
            }

            function Vn(e, t) {
                return "number" == typeof e ? e : e[t]
            }

            function jn(e) {
                let t = e.getBoundingClientRect(),
                    n = t.width / e.offsetWidth || 1,
                    r = t.height / e.offsetHeight || 1;
                return {
                    left: t.left,
                    right: t.left + e.clientWidth * n,
                    top: t.top,
                    bottom: t.top + e.clientHeight * r
                }
            }

            function $n(e, t, n) {
                let r = e.someProp("scrollThreshold") || 0,
                    o = e.someProp("scrollMargin") || 5,
                    i = e.dom.ownerDocument;
                for (let s = n || e.dom; s; s = Dn(s)) {
                    if (1 != s.nodeType) continue;
                    let e = s,
                        n = e == i.body,
                        a = n ? qn(i) : jn(e),
                        l = 0,
                        c = 0;
                    if (t.top < a.top + Vn(r, "top") ? c = -(a.top - t.top + Vn(o, "top")) : t.bottom > a.bottom - Vn(r, "bottom") && (c = t.bottom - a.bottom + Vn(o, "bottom")), t.left < a.left + Vn(r, "left") ? l = -(a.left - t.left + Vn(o, "left")) : t.right > a.right - Vn(r, "right") && (l = t.right - a.right + Vn(o, "right")), l || c)
                        if (n) i.defaultView.scrollBy(l, c);
                        else {
                            let n = e.scrollLeft,
                                r = e.scrollTop;
                            c && (e.scrollTop += c), l && (e.scrollLeft += l);
                            let o = e.scrollLeft - n,
                                i = e.scrollTop - r;
                            t = {
                                left: t.left - o,
                                top: t.top - i,
                                right: t.right - o,
                                bottom: t.bottom - i
                            }
                        } if (n) break
                }
            }

            function _n(e) {
                let t = [],
                    n = e.ownerDocument;
                for (let r = e; r && (t.push({
                    dom: r,
                    top: r.scrollTop,
                    left: r.scrollLeft
                }), e != n); r = Dn(r));
                return t
            }

            function Un(e, t) {
                for (let n = 0; n < e.length; n++) {
                    let {
                        dom: r,
                        top: o,
                        left: i
                    } = e[n];
                    r.scrollTop != o + t && (r.scrollTop = o + t), r.scrollLeft != i && (r.scrollLeft = i)
                }
            }
            let Wn = null;

            function Jn(e, t) {
                let n, r, o = 2e8,
                    i = 0,
                    s = t.top,
                    a = t.top;
                for (let l = e.firstChild, c = 0; l; l = l.nextSibling, c++) {
                    let e;
                    if (1 == l.nodeType) e = l.getClientRects();
                    else {
                        if (3 != l.nodeType) continue;
                        e = Ln(l).getClientRects()
                    }
                    for (let u = 0; u < e.length; u++) {
                        let d = e[u];
                        if (d.top <= s && d.bottom >= a) {
                            s = Math.max(d.bottom, s), a = Math.min(d.top, a);
                            let e = d.left > t.left ? d.left - t.left : d.right < t.left ? t.left - d.right : 0;
                            if (e < o) {
                                n = l, o = e, r = e && 3 == n.nodeType ? {
                                    left: d.right < t.left ? d.right : d.left,
                                    top: t.top
                                } : t, 1 == l.nodeType && e && (i = c + (t.left >= (d.left + d.right) / 2 ? 1 : 0));
                                continue
                            }
                        }!n && (t.left >= d.right && t.top >= d.top || t.left >= d.left && t.top >= d.bottom) && (i = c + 1)
                    }
                }
                return n && 3 == n.nodeType ? function(e, t) {
                    let n = e.nodeValue.length,
                        r = document.createRange();
                    for (let o = 0; o < n; o++) {
                        r.setEnd(e, o + 1), r.setStart(e, o);
                        let n = Xn(r, 1);
                        if (n.top != n.bottom && Gn(t, n)) return {
                            node: e,
                            offset: o + (t.left >= (n.left + n.right) / 2 ? 1 : 0)
                        }
                    }
                    return {
                        node: e,
                        offset: 0
                    }
                }(n, r) : !n || o && 1 == n.nodeType ? {
                    node: e,
                    offset: i
                } : Jn(n, r)
            }

            function Gn(e, t) {
                return e.left >= t.left - 1 && e.left <= t.right + 1 && e.top >= t.top - 1 && e.top <= t.bottom + 1
            }

            function Kn(e, t, n) {
                let r = e.childNodes.length;
                if (r && n.top < n.bottom)
                    for (let o = Math.max(0, Math.min(r - 1, Math.floor(r * (t.top - n.top) / (n.bottom - n.top)) - 2)), i = o;;) {
                        let n = e.childNodes[i];
                        if (1 == n.nodeType) {
                            let e = n.getClientRects();
                            for (let r = 0; r < e.length; r++) {
                                let o = e[r];
                                if (Gn(t, o)) return Kn(n, t, o)
                            }
                        }
                        if ((i = (i + 1) % r) == o) break
                    }
                return e
            }

            function Zn(e, t) {
                let n, r = e.dom.ownerDocument,
                    o = 0;
                if (r.caretPositionFromPoint) try {
                    let e = r.caretPositionFromPoint(t.left, t.top);
                    e && ({
                        offsetNode: n,
                        offset: o
                    } = e)
                } catch (e) {}
                if (!n && r.caretRangeFromPoint) {
                    let e = r.caretRangeFromPoint(t.left, t.top);
                    e && ({
                        startContainer: n,
                        startOffset: o
                    } = e)
                }
                let i, s = (e.root.elementFromPoint ? e.root : r).elementFromPoint(t.left, t.top);
                if (!s || !e.dom.contains(1 != s.nodeType ? s.parentNode : s)) {
                    let n = e.dom.getBoundingClientRect();
                    if (!Gn(t, n)) return null;
                    if (s = Kn(e.dom, t, n), !s) return null
                }
                if (Cn)
                    for (let e = s; n && e; e = Dn(e)) e.draggable && (n = void 0);
                if (s = function(e, t) {
                    let n = e.parentNode;
                    return n && /^li$/i.test(n.nodeName) && t.left < e.getBoundingClientRect().left ? n : e
                }(s, t), n) {
                    if (bn && 1 == n.nodeType && (o = Math.min(o, n.childNodes.length), o < n.childNodes.length)) {
                        let e, r = n.childNodes[o];
                        "IMG" == r.nodeName && (e = r.getBoundingClientRect()).right <= t.left && e.bottom > t.top && o++
                    }
                    n == e.dom && o == n.childNodes.length - 1 && 1 == n.lastChild.nodeType && t.top > n.lastChild.getBoundingClientRect().bottom ? i = e.state.doc.content.size : 0 != o && 1 == n.nodeType && "BR" == n.childNodes[o - 1].nodeName || (i = function(e, t, n, r) {
                        let o = -1;
                        for (let n = t; n != e.dom;) {
                            let t = e.docView.nearestDesc(n, !0);
                            if (!t) return null;
                            if (t.node.isBlock && t.parent) {
                                let e = t.dom.getBoundingClientRect();
                                if (e.left > r.left || e.top > r.top) o = t.posBefore;
                                else {
                                    if (!(e.right < r.left || e.bottom < r.top)) break;
                                    o = t.posAfter
                                }
                            }
                            n = t.dom.parentNode
                        }
                        return o > -1 ? o : e.docView.posFromDOM(t, n, 1)
                    }(e, n, o, t))
                }
                null == i && (i = function(e, t, n) {
                    let {
                        node: r,
                        offset: o
                    } = Jn(t, n), i = -1;
                    if (1 == r.nodeType && !r.firstChild) {
                        let e = r.getBoundingClientRect();
                        i = e.left != e.right && n.left > (e.left + e.right) / 2 ? 1 : -1
                    }
                    return e.docView.posFromDOM(r, o, i)
                }(e, s, t));
                let a = e.docView.nearestDesc(s, !0);
                return {
                    pos: i,
                    inside: a ? a.posAtStart - a.border : -1
                }
            }

            function Xn(e, t) {
                let n = e.getClientRects();
                return n.length ? n[t < 0 ? 0 : n.length - 1] : e.getBoundingClientRect()
            }
            const Qn = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;

            function Yn(e, t, n) {
                let {
                    node: r,
                    offset: o,
                    atom: i
                } = e.docView.domFromPos(t, n < 0 ? -1 : 1), s = En || bn;
                if (3 == r.nodeType) {
                    if (!s || !Qn.test(r.nodeValue) && (n < 0 ? o : o != r.nodeValue.length)) {
                        let e = o,
                            t = o,
                            i = n < 0 ? 1 : -1;
                        return n < 0 && !o ? (t++, i = -1) : n >= 0 && o == r.nodeValue.length ? (e--, i = 1) : n < 0 ? e-- : t++, er(Xn(Ln(r, e, t), i), i < 0)
                    } {
                        let e = Xn(Ln(r, o, o), n);
                        if (bn && o && /\s/.test(r.nodeValue[o - 1]) && o < r.nodeValue.length) {
                            let t = Xn(Ln(r, o - 1, o - 1), -1);
                            if (t.top == e.top) {
                                let n = Xn(Ln(r, o, o + 1), -1);
                                if (n.top != e.top) return er(n, n.left < t.left)
                            }
                        }
                        return e
                    }
                }
                if (!e.state.doc.resolve(t - (i || 0)).parent.inlineContent) {
                    if (null == i && o && (n < 0 || o == Bn(r))) {
                        let e = r.childNodes[o - 1];
                        if (1 == e.nodeType) return tr(e.getBoundingClientRect(), !1)
                    }
                    if (null == i && o < Bn(r)) {
                        let e = r.childNodes[o];
                        if (1 == e.nodeType) return tr(e.getBoundingClientRect(), !0)
                    }
                    return tr(r.getBoundingClientRect(), n >= 0)
                }
                if (null == i && o && (n < 0 || o == Bn(r))) {
                    let e = r.childNodes[o - 1],
                        t = 3 == e.nodeType ? Ln(e, Bn(e) - (s ? 0 : 1)) : 1 != e.nodeType || "BR" == e.nodeName && e.nextSibling ? null : e;
                    if (t) return er(Xn(t, 1), !1)
                }
                if (null == i && o < Bn(r)) {
                    let e = r.childNodes[o];
                    for (; e.pmViewDesc && e.pmViewDesc.ignoreForCoords;) e = e.nextSibling;
                    let t = e ? 3 == e.nodeType ? Ln(e, 0, s ? 0 : 1) : 1 == e.nodeType ? e : null : null;
                    if (t) return er(Xn(t, -1), !0)
                }
                return er(Xn(3 == r.nodeType ? Ln(r) : r, -n), n >= 0)
            }

            function er(e, t) {
                if (0 == e.width) return e;
                let n = t ? e.left : e.right;
                return {
                    top: e.top,
                    bottom: e.bottom,
                    left: n,
                    right: n
                }
            }

            function tr(e, t) {
                if (0 == e.height) return e;
                let n = t ? e.top : e.bottom;
                return {
                    top: n,
                    bottom: n,
                    left: e.left,
                    right: e.right
                }
            }

            function nr(e, t, n) {
                let r = e.state,
                    o = e.root.activeElement;
                r != t && e.updateState(t), o != e.dom && e.focus();
                try {
                    return n()
                } finally {
                    r != t && e.updateState(r), o != e.dom && o && o.focus()
                }
            }
            const rr = /[\u0590-\u08ac]/;
            let or = null,
                ir = null,
                sr = !1;

            function ar(e, t, n) {
                return or == t && ir == n ? sr : (or = t, ir = n, sr = "up" == n || "down" == n ? function(e, t, n) {
                    let r = t.selection,
                        o = "up" == n ? r.$from : r.$to;
                    return nr(e, t, (() => {
                        let {
                            node: t
                        } = e.docView.domFromPos(o.pos, "up" == n ? -1 : 1);
                        for (;;) {
                            let n = e.docView.nearestDesc(t, !0);
                            if (!n) break;
                            if (n.node.isBlock) {
                                t = n.dom;
                                break
                            }
                            t = n.dom.parentNode
                        }
                        let r = Yn(e, o.pos, 1);
                        for (let e = t.firstChild; e; e = e.nextSibling) {
                            let t;
                            if (1 == e.nodeType) t = e.getClientRects();
                            else {
                                if (3 != e.nodeType) continue;
                                t = Ln(e, 0, e.nodeValue.length).getClientRects()
                            }
                            for (let e = 0; e < t.length; e++) {
                                let o = t[e];
                                if (o.bottom > o.top + 1 && ("up" == n ? r.top - o.top > 2 * (o.bottom - r.top) : o.bottom - r.bottom > 2 * (r.bottom - o.top))) return !1
                            }
                        }
                        return !0
                    }))
                }(e, t, n) : function(e, t, n) {
                    let {
                        $head: r
                    } = t.selection;
                    if (!r.parent.isTextblock) return !1;
                    let o = r.parentOffset,
                        i = !o,
                        s = o == r.parent.content.size,
                        a = e.domSelection();
                    return rr.test(r.parent.textContent) && a.modify ? nr(e, t, (() => {
                        let t = a.getRangeAt(0),
                            o = a.focusNode,
                            i = a.focusOffset,
                            s = a.caretBidiLevel;
                        a.modify("move", n, "character");
                        let l = !(r.depth ? e.docView.domAfterPos(r.before()) : e.dom).contains(1 == a.focusNode.nodeType ? a.focusNode : a.focusNode.parentNode) || o == a.focusNode && i == a.focusOffset;
                        return a.removeAllRanges(), a.addRange(t), null != s && (a.caretBidiLevel = s), l
                    })) : "left" == n || "backward" == n ? i : s
                }(e, t, n))
            }
            class lr {
                constructor(e, t, n, r) {
                    this.parent = e, this.children = t, this.dom = n, this.contentDOM = r, this.dirty = 0, n.pmViewDesc = this
                }
                matchesWidget(e) {
                    return !1
                }
                matchesMark(e) {
                    return !1
                }
                matchesNode(e, t, n) {
                    return !1
                }
                matchesHack(e) {
                    return !1
                }
                parseRule() {
                    return null
                }
                stopEvent(e) {
                    return !1
                }
                get size() {
                    let e = 0;
                    for (let t = 0; t < this.children.length; t++) e += this.children[t].size;
                    return e
                }
                get border() {
                    return 0
                }
                destroy() {
                    this.parent = void 0, this.dom.pmViewDesc == this && (this.dom.pmViewDesc = void 0);
                    for (let e = 0; e < this.children.length; e++) this.children[e].destroy()
                }
                posBeforeChild(e) {
                    for (let t = 0, n = this.posAtStart;; t++) {
                        let r = this.children[t];
                        if (r == e) return n;
                        n += r.size
                    }
                }
                get posBefore() {
                    return this.parent.posBeforeChild(this)
                }
                get posAtStart() {
                    return this.parent ? this.parent.posBeforeChild(this) + this.border : 0
                }
                get posAfter() {
                    return this.posBefore + this.size
                }
                get posAtEnd() {
                    return this.posAtStart + this.size - 2 * this.border
                }
                localPosFromDOM(e, t, n) {
                    if (this.contentDOM && this.contentDOM.contains(1 == e.nodeType ? e : e.parentNode)) {
                        if (n < 0) {
                            let n, r;
                            if (e == this.contentDOM) n = e.childNodes[t - 1];
                            else {
                                for (; e.parentNode != this.contentDOM;) e = e.parentNode;
                                n = e.previousSibling
                            }
                            for (; n && (!(r = n.pmViewDesc) || r.parent != this);) n = n.previousSibling;
                            return n ? this.posBeforeChild(r) + r.size : this.posAtStart
                        } {
                            let n, r;
                            if (e == this.contentDOM) n = e.childNodes[t];
                            else {
                                for (; e.parentNode != this.contentDOM;) e = e.parentNode;
                                n = e.nextSibling
                            }
                            for (; n && (!(r = n.pmViewDesc) || r.parent != this);) n = n.nextSibling;
                            return n ? this.posBeforeChild(r) : this.posAtEnd
                        }
                    }
                    let r;
                    if (e == this.dom && this.contentDOM) r = t > On(this.contentDOM);
                    else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) r = 2 & e.compareDocumentPosition(this.contentDOM);
                    else if (this.dom.firstChild) {
                        if (0 == t)
                            for (let t = e;; t = t.parentNode) {
                                if (t == this.dom) {
                                    r = !1;
                                    break
                                }
                                if (t.previousSibling) break
                            }
                        if (null == r && t == e.childNodes.length)
                            for (let t = e;; t = t.parentNode) {
                                if (t == this.dom) {
                                    r = !0;
                                    break
                                }
                                if (t.nextSibling) break
                            }
                    }
                    return (null == r ? n > 0 : r) ? this.posAtEnd : this.posAtStart
                }
                nearestDesc(e, t = !1) {
                    for (let n = !0, r = e; r; r = r.parentNode) {
                        let o, i = this.getDesc(r);
                        if (i && (!t || i.node)) {
                            if (!n || !(o = i.nodeDOM) || (1 == o.nodeType ? o.contains(1 == e.nodeType ? e : e.parentNode) : o == e)) return i;
                            n = !1
                        }
                    }
                }
                getDesc(e) {
                    let t = e.pmViewDesc;
                    for (let e = t; e; e = e.parent)
                        if (e == this) return t
                }
                posFromDOM(e, t, n) {
                    for (let r = e; r; r = r.parentNode) {
                        let o = this.getDesc(r);
                        if (o) return o.localPosFromDOM(e, t, n)
                    }
                    return -1
                }
                descAt(e) {
                    for (let t = 0, n = 0; t < this.children.length; t++) {
                        let r = this.children[t],
                            o = n + r.size;
                        if (n == e && o != n) {
                            for (; !r.border && r.children.length;) r = r.children[0];
                            return r
                        }
                        if (e < o) return r.descAt(e - n - r.border);
                        n = o
                    }
                }
                domFromPos(e, t) {
                    if (!this.contentDOM) return {
                        node: this.dom,
                        offset: 0,
                        atom: e + 1
                    };
                    let n, r = 0,
                        o = 0;
                    for (let t = 0; r < this.children.length; r++) {
                        let n = this.children[r],
                            i = t + n.size;
                        if (i > e || n instanceof mr) {
                            o = e - t;
                            break
                        }
                        t = i
                    }
                    if (o) return this.children[r].domFromPos(o - this.children[r].border, t);
                    for (; r && !(n = this.children[r - 1]).size && n instanceof cr && n.side >= 0; r--);
                    if (t <= 0) {
                        let e, n = !0;
                        for (; e = r ? this.children[r - 1] : null, e && e.dom.parentNode != this.contentDOM; r--, n = !1);
                        return e && t && n && !e.border && !e.domAtom ? e.domFromPos(e.size, t) : {
                            node: this.contentDOM,
                            offset: e ? On(e.dom) + 1 : 0
                        }
                    } {
                        let e, n = !0;
                        for (; e = r < this.children.length ? this.children[r] : null, e && e.dom.parentNode != this.contentDOM; r++, n = !1);
                        return e && n && !e.border && !e.domAtom ? e.domFromPos(0, t) : {
                            node: this.contentDOM,
                            offset: e ? On(e.dom) : this.contentDOM.childNodes.length
                        }
                    }
                }
                parseRange(e, t, n = 0) {
                    if (0 == this.children.length) return {
                        node: this.contentDOM,
                        from: e,
                        to: t,
                        fromOffset: 0,
                        toOffset: this.contentDOM.childNodes.length
                    };
                    let r = -1,
                        o = -1;
                    for (let i = n, s = 0;; s++) {
                        let n = this.children[s],
                            a = i + n.size;
                        if (-1 == r && e <= a) {
                            let o = i + n.border;
                            if (e >= o && t <= a - n.border && n.node && n.contentDOM && this.contentDOM.contains(n.contentDOM)) return n.parseRange(e, t, o);
                            e = i;
                            for (let t = s; t > 0; t--) {
                                let n = this.children[t - 1];
                                if (n.size && n.dom.parentNode == this.contentDOM && !n.emptyChildAt(1)) {
                                    r = On(n.dom) + 1;
                                    break
                                }
                                e -= n.size
                            } - 1 == r && (r = 0)
                        }
                        if (r > -1 && (a > t || s == this.children.length - 1)) {
                            t = a;
                            for (let e = s + 1; e < this.children.length; e++) {
                                let n = this.children[e];
                                if (n.size && n.dom.parentNode == this.contentDOM && !n.emptyChildAt(-1)) {
                                    o = On(n.dom);
                                    break
                                }
                                t += n.size
                            } - 1 == o && (o = this.contentDOM.childNodes.length);
                            break
                        }
                        i = a
                    }
                    return {
                        node: this.contentDOM,
                        from: e,
                        to: t,
                        fromOffset: r,
                        toOffset: o
                    }
                }
                emptyChildAt(e) {
                    if (this.border || !this.contentDOM || !this.children.length) return !1;
                    let t = this.children[e < 0 ? 0 : this.children.length - 1];
                    return 0 == t.size || t.emptyChildAt(e)
                }
                domAfterPos(e) {
                    let {
                        node: t,
                        offset: n
                    } = this.domFromPos(e, 0);
                    if (1 != t.nodeType || n == t.childNodes.length) throw new RangeError("No node after pos " + e);
                    return t.childNodes[n]
                }
                setSelection(e, t, n, r = !1) {
                    let o = Math.min(e, t),
                        i = Math.max(e, t);
                    for (let s = 0, a = 0; s < this.children.length; s++) {
                        let l = this.children[s],
                            c = a + l.size;
                        if (o > a && i < c) return l.setSelection(e - a - l.border, t - a - l.border, n, r);
                        a = c
                    }
                    let s = this.domFromPos(e, e ? -1 : 1),
                        a = t == e ? s : this.domFromPos(t, t ? -1 : 1),
                        l = n.getSelection(),
                        c = !1;
                    if ((bn || Cn) && e == t) {
                        let {
                            node: e,
                            offset: t
                        } = s;
                        if (3 == e.nodeType) {
                            if (c = !(!t || "\n" != e.nodeValue[t - 1]), c && t == e.nodeValue.length)
                                for (let t, n = e; n; n = n.parentNode) {
                                    if (t = n.nextSibling) {
                                        "BR" == t.nodeName && (s = a = {
                                            node: t.parentNode,
                                            offset: On(t) + 1
                                        });
                                        break
                                    }
                                    let e = n.pmViewDesc;
                                    if (e && e.node && e.node.isBlock) break
                                }
                        } else {
                            let n = e.childNodes[t - 1];
                            c = n && ("BR" == n.nodeName || "false" == n.contentEditable)
                        }
                    }
                    if (bn && l.focusNode && l.focusNode != a.node && 1 == l.focusNode.nodeType) {
                        let e = l.focusNode.childNodes[l.focusOffset];
                        e && "false" == e.contentEditable && (r = !0)
                    }
                    if (!(r || c && Cn) && In(s.node, s.offset, l.anchorNode, l.anchorOffset) && In(a.node, a.offset, l.focusNode, l.focusOffset)) return;
                    let u = !1;
                    if ((l.extend || e == t) && !c) {
                        l.collapse(s.node, s.offset);
                        try {
                            e != t && l.extend(a.node, a.offset), u = !0
                        } catch (e) {
                            if (!(e instanceof DOMException)) throw e
                        }
                    }
                    if (!u) {
                        if (e > t) {
                            let e = s;
                            s = a, a = e
                        }
                        let n = document.createRange();
                        n.setEnd(a.node, a.offset), n.setStart(s.node, s.offset), l.removeAllRanges(), l.addRange(n)
                    }
                }
                ignoreMutation(e) {
                    return !this.contentDOM && "selection" != e.type
                }
                get contentLost() {
                    return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM)
                }
                markDirty(e, t) {
                    for (let n = 0, r = 0; r < this.children.length; r++) {
                        let o = this.children[r],
                            i = n + o.size;
                        if (n == i ? e <= i && t >= n : e < i && t > n) {
                            let r = n + o.border,
                                s = i - o.border;
                            if (e >= r && t <= s) return this.dirty = e == n || t == i ? 2 : 1, void(e != r || t != s || !o.contentLost && o.dom.parentNode == this.contentDOM ? o.markDirty(e - r, t - r) : o.dirty = 3);
                            o.dirty = o.dom != o.contentDOM || o.dom.parentNode != this.contentDOM || o.children.length ? 3 : 2
                        }
                        n = i
                    }
                    this.dirty = 2
                }
                markParentsDirty() {
                    let e = 1;
                    for (let t = this.parent; t; t = t.parent, e++) {
                        let n = 1 == e ? 2 : 1;
                        t.dirty < n && (t.dirty = n)
                    }
                }
                get domAtom() {
                    return !1
                }
                get ignoreForCoords() {
                    return !1
                }
            }
            class cr extends lr {
                constructor(e, t, n, r) {
                    let o, i = t.type.toDOM;
                    if ("function" == typeof i && (i = i(n, (() => o ? o.parent ? o.parent.posBeforeChild(o) : void 0 : r))), !t.type.spec.raw) {
                        if (1 != i.nodeType) {
                            let e = document.createElement("span");
                            e.appendChild(i), i = e
                        }
                        i.contentEditable = "false", i.classList.add("ProseMirror-widget")
                    }
                    super(e, [], i, null), this.widget = t, this.widget = t, o = this
                }
                matchesWidget(e) {
                    return 0 == this.dirty && e.type.eq(this.widget.type)
                }
                parseRule() {
                    return {
                        ignore: !0
                    }
                }
                stopEvent(e) {
                    let t = this.widget.spec.stopEvent;
                    return !!t && t(e)
                }
                ignoreMutation(e) {
                    return "selection" != e.type || this.widget.spec.ignoreSelection
                }
                destroy() {
                    this.widget.type.destroy(this.dom), super.destroy()
                }
                get domAtom() {
                    return !0
                }
                get side() {
                    return this.widget.type.side
                }
            }
            class ur extends lr {
                constructor(e, t, n, r) {
                    super(e, [], t, null), this.textDOM = n, this.text = r
                }
                get size() {
                    return this.text.length
                }
                localPosFromDOM(e, t) {
                    return e != this.textDOM ? this.posAtStart + (t ? this.size : 0) : this.posAtStart + t
                }
                domFromPos(e) {
                    return {
                        node: this.textDOM,
                        offset: e
                    }
                }
                ignoreMutation(e) {
                    return "characterData" === e.type && e.target.nodeValue == e.oldValue
                }
            }
            class dr extends lr {
                constructor(e, t, n, r) {
                    super(e, [], n, r), this.mark = t
                }
                static create(e, t, n, r) {
                    let o = r.nodeViews[t.type.name],
                        i = o && o(t, r, n);
                    return i && i.dom || (i = de.renderSpec(document, t.type.spec.toDOM(t, n))), new dr(e, t, i.dom, i.contentDOM || i.dom)
                }
                parseRule() {
                    return 3 & this.dirty || this.mark.type.spec.reparseInView ? null : {
                        mark: this.mark.type.name,
                        attrs: this.mark.attrs,
                        contentElement: this.contentDOM || void 0
                    }
                }
                matchesMark(e) {
                    return 3 != this.dirty && this.mark.eq(e)
                }
                markDirty(e, t) {
                    if (super.markDirty(e, t), 0 != this.dirty) {
                        let e = this.parent;
                        for (; !e.node;) e = e.parent;
                        e.dirty < this.dirty && (e.dirty = this.dirty), this.dirty = 0
                    }
                }
                slice(e, t, n) {
                    let r = dr.create(this.parent, this.mark, !0, n),
                        o = this.children,
                        i = this.size;
                    t < i && (o = Nr(o, t, i, n)), e > 0 && (o = Nr(o, 0, e, n));
                    for (let e = 0; e < o.length; e++) o[e].parent = r;
                    return r.children = o, r
                }
            }
            class pr extends lr {
                constructor(e, t, n, r, o, i, s, a, l) {
                    super(e, [], o, i), this.node = t, this.outerDeco = n, this.innerDeco = r, this.nodeDOM = s, i && this.updateChildren(a, l)
                }
                static create(e, t, n, r, o, i) {
                    let s, a = o.nodeViews[t.type.name],
                        l = a && a(t, o, (() => s ? s.parent ? s.parent.posBeforeChild(s) : void 0 : i), n, r),
                        c = l && l.dom,
                        u = l && l.contentDOM;
                    if (t.isText)
                        if (c) {
                            if (3 != c.nodeType) throw new RangeError("Text must be rendered as a DOM text node")
                        } else c = document.createTextNode(t.text);
                    else c || ({
                        dom: c,
                        contentDOM: u
                    } = de.renderSpec(document, t.type.spec.toDOM(t)));
                    u || t.isText || "BR" == c.nodeName || (c.hasAttribute("contenteditable") || (c.contentEditable = "false"), t.type.spec.draggable && (c.draggable = !0));
                    let d = c;
                    return c = Cr(c, n, t), l ? s = new gr(e, t, n, r, c, u || null, d, l, o, i + 1) : t.isText ? new fr(e, t, n, r, c, d, o) : new pr(e, t, n, r, c, u || null, d, o, i + 1)
                }
                parseRule() {
                    if (this.node.type.spec.reparseInView) return null;
                    let e = {
                        node: this.node.type.name,
                        attrs: this.node.attrs
                    };
                    if ("pre" == this.node.type.whitespace && (e.preserveWhitespace = "full"), this.contentDOM)
                        if (this.contentLost) {
                            for (let t = this.children.length - 1; t >= 0; t--) {
                                let n = this.children[t];
                                if (this.dom.contains(n.dom.parentNode)) {
                                    e.contentElement = n.dom.parentNode;
                                    break
                                }
                            }
                            e.contentElement || (e.getContent = () => d.empty)
                        } else e.contentElement = this.contentDOM;
                    else e.getContent = () => this.node.content;
                    return e
                }
                matchesNode(e, t, n) {
                    return 0 == this.dirty && e.eq(this.node) && Tr(t, this.outerDeco) && n.eq(this.innerDeco)
                }
                get size() {
                    return this.node.nodeSize
                }
                get border() {
                    return this.node.isLeaf ? 0 : 1
                }
                updateChildren(e, t) {
                    let n = this.node.inlineContent,
                        r = t,
                        o = e.composing ? this.localCompositionInfo(e, t) : null,
                        i = o && o.pos > -1 ? o : null,
                        s = o && o.pos < 0,
                        a = new Sr(this, i && i.node);
                    ! function(e, t, n, r) {
                        let o = t.locals(e),
                            i = 0;
                        if (0 == o.length) {
                            for (let n = 0; n < e.childCount; n++) {
                                let s = e.child(n);
                                r(s, o, t.forChild(i, s), n), i += s.nodeSize
                            }
                            return
                        }
                        let s = 0,
                            a = [],
                            l = null;
                        for (let c = 0;;) {
                            if (s < o.length && o[s].to == i) {
                                let e, t = o[s++];
                                for (; s < o.length && o[s].to == i;)(e || (e = [t])).push(o[s++]);
                                if (e) {
                                    e.sort(Er);
                                    for (let t = 0; t < e.length; t++) n(e[t], c, !!l)
                                } else n(t, c, !!l)
                            }
                            let u, d;
                            if (l) d = -1, u = l, l = null;
                            else {
                                if (!(c < e.childCount)) break;
                                d = c, u = e.child(c++)
                            }
                            for (let e = 0; e < a.length; e++) a[e].to <= i && a.splice(e--, 1);
                            for (; s < o.length && o[s].from <= i && o[s].to > i;) a.push(o[s++]);
                            let p = i + u.nodeSize;
                            if (u.isText) {
                                let e = p;
                                s < o.length && o[s].from < e && (e = o[s].from);
                                for (let t = 0; t < a.length; t++) a[t].to < e && (e = a[t].to);
                                e < p && (l = u.cut(e - i), u = u.cut(0, e - i), p = e, d = -1)
                            }
                            r(u, u.isInline && !u.isLeaf ? a.filter((e => !e.inline)) : a.slice(), t.forChild(i, u), d), i = p
                        }
                    }(this.node, this.innerDeco, ((t, o, i) => {
                        t.spec.marks ? a.syncToMarks(t.spec.marks, n, e) : t.type.side >= 0 && !i && a.syncToMarks(o == this.node.childCount ? m.none : this.node.child(o).marks, n, e), a.placeWidget(t, e, r)
                    }), ((t, i, l, c) => {
                        let u;
                        a.syncToMarks(t.marks, n, e), a.findNodeMatch(t, i, l, c) || s && e.state.selection.from > r && e.state.selection.to < r + t.nodeSize && (u = a.findIndexWithChild(o.node)) > -1 && a.updateNodeAt(t, i, l, u, e) || a.updateNextNode(t, i, l, e, c) || a.addNode(t, i, l, e, r), r += t.nodeSize
                    })), a.syncToMarks([], n, e), this.node.isTextblock && a.addTextblockHacks(), a.destroyRest(), (a.changed || 2 == this.dirty) && (i && this.protectLocalComposition(e, i), vr(this.contentDOM, this.children, e), Tn && function(e) {
                        if ("UL" == e.nodeName || "OL" == e.nodeName) {
                            let t = e.style.cssText;
                            e.style.cssText = t + "; list-style: square !important", window.getComputedStyle(e).listStyle, e.style.cssText = t
                        }
                    }(this.dom))
                }
                localCompositionInfo(e, t) {
                    let {
                        from: n,
                        to: r
                    } = e.state.selection;
                    if (!(e.state.selection instanceof Ut) || n < t || r > t + this.node.content.size) return null;
                    let o = e.domSelection(),
                        i = function(e, t) {
                            for (;;) {
                                if (3 == e.nodeType) return e;
                                if (1 == e.nodeType && t > 0) {
                                    if (e.childNodes.length > t && 3 == e.childNodes[t].nodeType) return e.childNodes[t];
                                    t = Bn(e = e.childNodes[t - 1])
                                } else {
                                    if (!(1 == e.nodeType && t < e.childNodes.length)) return null;
                                    e = e.childNodes[t], t = 0
                                }
                            }
                        }(o.focusNode, o.focusOffset);
                    if (!i || !this.dom.contains(i.parentNode)) return null;
                    if (this.node.inlineContent) {
                        let e = i.nodeValue,
                            o = function(e, t, n, r) {
                                for (let o = 0, i = 0; o < e.childCount && i <= r;) {
                                    let s = e.child(o++),
                                        a = i;
                                    if (i += s.nodeSize, !s.isText) continue;
                                    let l = s.text;
                                    for (; o < e.childCount;) {
                                        let t = e.child(o++);
                                        if (i += t.nodeSize, !t.isText) break;
                                        l += t.text
                                    }
                                    if (i >= n) {
                                        let e = a < r ? l.lastIndexOf(t, r - a - 1) : -1;
                                        if (e >= 0 && e + t.length + a >= n) return a + e;
                                        if (n == r && l.length >= r + t.length - a && l.slice(r - a, r - a + t.length) == t) return r
                                    }
                                }
                                return -1
                            }(this.node.content, e, n - t, r - t);
                        return o < 0 ? null : {
                            node: i,
                            pos: o,
                            text: e
                        }
                    }
                    return {
                        node: i,
                        pos: -1,
                        text: ""
                    }
                }
                protectLocalComposition(e, {
                    node: t,
                    pos: n,
                    text: r
                }) {
                    if (this.getDesc(t)) return;
                    let o = t;
                    for (; o.parentNode != this.contentDOM; o = o.parentNode) {
                        for (; o.previousSibling;) o.parentNode.removeChild(o.previousSibling);
                        for (; o.nextSibling;) o.parentNode.removeChild(o.nextSibling);
                        o.pmViewDesc && (o.pmViewDesc = void 0)
                    }
                    let i = new ur(this, o, t, r);
                    e.input.compositionNodes.push(i), this.children = Nr(this.children, n, n + r.length, e, i)
                }
                update(e, t, n, r) {
                    return !(3 == this.dirty || !e.sameMarkup(this.node)) && (this.updateInner(e, t, n, r), !0)
                }
                updateInner(e, t, n, r) {
                    this.updateOuterDeco(t), this.node = e, this.innerDeco = n, this.contentDOM && this.updateChildren(r, this.posAtStart), this.dirty = 0
                }
                updateOuterDeco(e) {
                    if (Tr(e, this.outerDeco)) return;
                    let t = 1 != this.nodeDOM.nodeType,
                        n = this.dom;
                    this.dom = kr(this.dom, this.nodeDOM, wr(this.outerDeco, this.node, t), wr(e, this.node, t)), this.dom != n && (n.pmViewDesc = void 0, this.dom.pmViewDesc = this), this.outerDeco = e
                }
                selectNode() {
                    1 == this.nodeDOM.nodeType && this.nodeDOM.classList.add("ProseMirror-selectednode"), !this.contentDOM && this.node.type.spec.draggable || (this.dom.draggable = !0)
                }
                deselectNode() {
                    1 == this.nodeDOM.nodeType && this.nodeDOM.classList.remove("ProseMirror-selectednode"), !this.contentDOM && this.node.type.spec.draggable || this.dom.removeAttribute("draggable")
                }
                get domAtom() {
                    return this.node.isAtom
                }
            }

            function hr(e, t, n, r, o) {
                return Cr(r, t, e), new pr(void 0, e, t, n, r, r, r, o, 0)
            }
            class fr extends pr {
                constructor(e, t, n, r, o, i, s) {
                    super(e, t, n, r, o, null, i, s, 0)
                }
                parseRule() {
                    let e = this.nodeDOM.parentNode;
                    for (; e && e != this.dom && !e.pmIsDeco;) e = e.parentNode;
                    return {
                        skip: e || !0
                    }
                }
                update(e, t, n, r) {
                    return !(3 == this.dirty || 0 != this.dirty && !this.inParent() || !e.sameMarkup(this.node)) && (this.updateOuterDeco(t), 0 == this.dirty && e.text == this.node.text || e.text == this.nodeDOM.nodeValue || (this.nodeDOM.nodeValue = e.text, r.trackWrites == this.nodeDOM && (r.trackWrites = null)), this.node = e, this.dirty = 0, !0)
                }
                inParent() {
                    let e = this.parent.contentDOM;
                    for (let t = this.nodeDOM; t; t = t.parentNode)
                        if (t == e) return !0;
                    return !1
                }
                domFromPos(e) {
                    return {
                        node: this.nodeDOM,
                        offset: e
                    }
                }
                localPosFromDOM(e, t, n) {
                    return e == this.nodeDOM ? this.posAtStart + Math.min(t, this.node.text.length) : super.localPosFromDOM(e, t, n)
                }
                ignoreMutation(e) {
                    return "characterData" != e.type && "selection" != e.type
                }
                slice(e, t, n) {
                    let r = this.node.cut(e, t),
                        o = document.createTextNode(r.text);
                    return new fr(this.parent, r, this.outerDeco, this.innerDeco, o, o, n)
                }
                markDirty(e, t) {
                    super.markDirty(e, t), this.dom == this.nodeDOM || 0 != e && t != this.nodeDOM.nodeValue.length || (this.dirty = 3)
                }
                get domAtom() {
                    return !1
                }
            }
            class mr extends lr {
                parseRule() {
                    return {
                        ignore: !0
                    }
                }
                matchesHack(e) {
                    return 0 == this.dirty && this.dom.nodeName == e
                }
                get domAtom() {
                    return !0
                }
                get ignoreForCoords() {
                    return "IMG" == this.dom.nodeName
                }
            }
            class gr extends pr {
                constructor(e, t, n, r, o, i, s, a, l, c) {
                    super(e, t, n, r, o, i, s, l, c), this.spec = a
                }
                update(e, t, n, r) {
                    if (3 == this.dirty) return !1;
                    if (this.spec.update) {
                        let o = this.spec.update(e, t, n);
                        return o && this.updateInner(e, t, n, r), o
                    }
                    return !(!this.contentDOM && !e.isLeaf) && super.update(e, t, n, r)
                }
                selectNode() {
                    this.spec.selectNode ? this.spec.selectNode() : super.selectNode()
                }
                deselectNode() {
                    this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode()
                }
                setSelection(e, t, n, r) {
                    this.spec.setSelection ? this.spec.setSelection(e, t, n) : super.setSelection(e, t, n, r)
                }
                destroy() {
                    this.spec.destroy && this.spec.destroy(), super.destroy()
                }
                stopEvent(e) {
                    return !!this.spec.stopEvent && this.spec.stopEvent(e)
                }
                ignoreMutation(e) {
                    return this.spec.ignoreMutation ? this.spec.ignoreMutation(e) : super.ignoreMutation(e)
                }
            }

            function vr(e, t, n) {
                let r = e.firstChild,
                    o = !1;
                for (let i = 0; i < t.length; i++) {
                    let s = t[i],
                        a = s.dom;
                    if (a.parentNode == e) {
                        for (; a != r;) r = Mr(r), o = !0;
                        r = r.nextSibling
                    } else o = !0, e.insertBefore(a, r);
                    if (s instanceof dr) {
                        let t = r ? r.previousSibling : e.lastChild;
                        vr(s.contentDOM, s.children, n), r = t ? t.nextSibling : e.firstChild
                    }
                }
                for (; r;) r = Mr(r), o = !0;
                o && n.trackWrites == e && (n.trackWrites = null)
            }
            const yr = function(e) {
                e && (this.nodeName = e)
            };
            yr.prototype = Object.create(null);
            const br = [new yr];

            function wr(e, t, n) {
                if (0 == e.length) return br;
                let r = n ? br[0] : new yr,
                    o = [r];
                for (let i = 0; i < e.length; i++) {
                    let s = e[i].type.attrs;
                    if (s) {
                        s.nodeName && o.push(r = new yr(s.nodeName));
                        for (let e in s) {
                            let i = s[e];
                            null != i && (n && 1 == o.length && o.push(r = new yr(t.isInline ? "span" : "div")), "class" == e ? r.class = (r.class ? r.class + " " : "") + i : "style" == e ? r.style = (r.style ? r.style + ";" : "") + i : "nodeName" != e && (r[e] = i))
                        }
                    }
                }
                return o
            }

            function kr(e, t, n, r) {
                if (n == br && r == br) return t;
                let o = t;
                for (let t = 0; t < r.length; t++) {
                    let i = r[t],
                        s = n[t];
                    if (t) {
                        let t;
                        s && s.nodeName == i.nodeName && o != e && (t = o.parentNode) && t.nodeName.toLowerCase() == i.nodeName || (t = document.createElement(i.nodeName), t.pmIsDeco = !0, t.appendChild(o), s = br[0]), o = t
                    }
                    xr(o, s || br[0], i)
                }
                return o
            }

            function xr(e, t, n) {
                for (let r in t) "class" == r || "style" == r || "nodeName" == r || r in n || e.removeAttribute(r);
                for (let r in n) "class" != r && "style" != r && "nodeName" != r && n[r] != t[r] && e.setAttribute(r, n[r]);
                if (t.class != n.class) {
                    let r = t.class ? t.class.split(" ").filter(Boolean) : [],
                        o = n.class ? n.class.split(" ").filter(Boolean) : [];
                    for (let t = 0; t < r.length; t++) - 1 == o.indexOf(r[t]) && e.classList.remove(r[t]);
                    for (let t = 0; t < o.length; t++) - 1 == r.indexOf(o[t]) && e.classList.add(o[t]);
                    0 == e.classList.length && e.removeAttribute("class")
                }
                if (t.style != n.style) {
                    if (t.style) {
                        let n, r = /\s*([\w\-\xa1-\uffff]+)\s*:(?:"(?:\\.|[^"])*"|'(?:\\.|[^'])*'|\(.*?\)|[^;])*/g;
                        for (; n = r.exec(t.style);) e.style.removeProperty(n[1])
                    }
                    n.style && (e.style.cssText += n.style)
                }
            }

            function Cr(e, t, n) {
                return kr(e, e, br, wr(t, n, 1 != e.nodeType))
            }

            function Tr(e, t) {
                if (e.length != t.length) return !1;
                for (let n = 0; n < e.length; n++)
                    if (!e[n].type.eq(t[n].type)) return !1;
                return !0
            }

            function Mr(e) {
                let t = e.nextSibling;
                return e.parentNode.removeChild(e), t
            }
            class Sr {
                constructor(e, t) {
                    this.lock = t, this.index = 0, this.stack = [], this.changed = !1, this.top = e, this.preMatch = function(e, t) {
                        let n = t,
                            r = n.children.length,
                            o = e.childCount,
                            i = new Map,
                            s = [];
                        e: for (; o > 0;) {
                            let a;
                            for (;;)
                                if (r) {
                                    let e = n.children[r - 1];
                                    if (!(e instanceof dr)) {
                                        a = e, r--;
                                        break
                                    }
                                    n = e, r = e.children.length
                                } else {
                                    if (n == t) break e;
                                    r = n.parent.children.indexOf(n), n = n.parent
                                } let l = a.node;
                            if (l) {
                                if (l != e.child(o - 1)) break;
                                --o, i.set(a, o), s.push(a)
                            }
                        }
                        return {
                            index: o,
                            matched: i,
                            matches: s.reverse()
                        }
                    }(e.node.content, e)
                }
                destroyBetween(e, t) {
                    if (e != t) {
                        for (let n = e; n < t; n++) this.top.children[n].destroy();
                        this.top.children.splice(e, t - e), this.changed = !0
                    }
                }
                destroyRest() {
                    this.destroyBetween(this.index, this.top.children.length)
                }
                syncToMarks(e, t, n) {
                    let r = 0,
                        o = this.stack.length >> 1,
                        i = Math.min(o, e.length);
                    for (; r < i && (r == o - 1 ? this.top : this.stack[r + 1 << 1]).matchesMark(e[r]) && !1 !== e[r].type.spec.spanning;) r++;
                    for (; r < o;) this.destroyRest(), this.top.dirty = 0, this.index = this.stack.pop(), this.top = this.stack.pop(), o--;
                    for (; o < e.length;) {
                        this.stack.push(this.top, this.index + 1);
                        let r = -1;
                        for (let t = this.index; t < Math.min(this.index + 3, this.top.children.length); t++)
                            if (this.top.children[t].matchesMark(e[o])) {
                                r = t;
                                break
                            } if (r > -1) r > this.index && (this.changed = !0, this.destroyBetween(this.index, r)), this.top = this.top.children[this.index];
                        else {
                            let r = dr.create(this.top, e[o], t, n);
                            this.top.children.splice(this.index, 0, r), this.top = r, this.changed = !0
                        }
                        this.index = 0, o++
                    }
                }
                findNodeMatch(e, t, n, r) {
                    let o, i = -1;
                    if (r >= this.preMatch.index && (o = this.preMatch.matches[r - this.preMatch.index]).parent == this.top && o.matchesNode(e, t, n)) i = this.top.children.indexOf(o, this.index);
                    else
                        for (let r = this.index, o = Math.min(this.top.children.length, r + 5); r < o; r++) {
                            let o = this.top.children[r];
                            if (o.matchesNode(e, t, n) && !this.preMatch.matched.has(o)) {
                                i = r;
                                break
                            }
                        }
                    return !(i < 0) && (this.destroyBetween(this.index, i), this.index++, !0)
                }
                updateNodeAt(e, t, n, r, o) {
                    let i = this.top.children[r];
                    return 3 == i.dirty && i.dom == i.contentDOM && (i.dirty = 2), !!i.update(e, t, n, o) && (this.destroyBetween(this.index, r), this.index++, !0)
                }
                findIndexWithChild(e) {
                    for (;;) {
                        let t = e.parentNode;
                        if (!t) return -1;
                        if (t == this.top.contentDOM) {
                            let t = e.pmViewDesc;
                            if (t)
                                for (let e = this.index; e < this.top.children.length; e++)
                                    if (this.top.children[e] == t) return e;
                            return -1
                        }
                        e = t
                    }
                }
                updateNextNode(e, t, n, r, o) {
                    for (let i = this.index; i < this.top.children.length; i++) {
                        let s = this.top.children[i];
                        if (s instanceof pr) {
                            let a = this.preMatch.matched.get(s);
                            if (null != a && a != o) return !1;
                            let l = s.dom;
                            if (!(this.lock && (l == this.lock || 1 == l.nodeType && l.contains(this.lock.parentNode)) && !(e.isText && s.node && s.node.isText && s.nodeDOM.nodeValue == e.text && 3 != s.dirty && Tr(t, s.outerDeco))) && s.update(e, t, n, r)) return this.destroyBetween(this.index, i), s.dom != l && (this.changed = !0), this.index++, !0;
                            break
                        }
                    }
                    return !1
                }
                addNode(e, t, n, r, o) {
                    this.top.children.splice(this.index++, 0, pr.create(this.top, e, t, n, r, o)), this.changed = !0
                }
                placeWidget(e, t, n) {
                    let r = this.index < this.top.children.length ? this.top.children[this.index] : null;
                    if (!r || !r.matchesWidget(e) || e != r.widget && r.widget.type.toDOM.parentNode) {
                        let r = new cr(this.top, e, t, n);
                        this.top.children.splice(this.index++, 0, r), this.changed = !0
                    } else this.index++
                }
                addTextblockHacks() {
                    let e = this.top.children[this.index - 1],
                        t = this.top;
                    for (; e instanceof dr;) t = e, e = t.children[t.children.length - 1];
                    e && e instanceof fr && !/\n$/.test(e.node.text) || ((Cn || kn) && e && "false" == e.dom.contentEditable && this.addHackNode("IMG", t), this.addHackNode("BR", this.top))
                }
                addHackNode(e, t) {
                    if (t == this.top && this.index < t.children.length && t.children[this.index].matchesHack(e)) this.index++;
                    else {
                        let n = document.createElement(e);
                        "IMG" == e && (n.className = "ProseMirror-separator", n.alt = ""), "BR" == e && (n.className = "ProseMirror-trailingBreak");
                        let r = new mr(this.top, [], n, null);
                        t != this.top ? t.children.push(r) : t.children.splice(this.index++, 0, r), this.changed = !0
                    }
                }
            }

            function Er(e, t) {
                return e.type.side - t.type.side
            }

            function Nr(e, t, n, r, o) {
                let i = [];
                for (let s = 0, a = 0; s < e.length; s++) {
                    let l = e[s],
                        c = a,
                        u = a += l.size;
                    c >= n || u <= t ? i.push(l) : (c < t && i.push(l.slice(0, t - c, r)), o && (i.push(o), o = void 0), u > n && i.push(l.slice(n - c, l.size, r)))
                }
                return i
            }

            function Or(e, t = null) {
                let n = e.domSelection(),
                    r = e.state.doc;
                if (!n.focusNode) return null;
                let o = e.docView.nearestDesc(n.focusNode),
                    i = o && 0 == o.size,
                    s = e.docView.posFromDOM(n.focusNode, n.focusOffset, 1);
                if (s < 0) return null;
                let a, l, c = r.resolve(s);
                if (Hn(n)) {
                    for (a = c; o && !o.node;) o = o.parent;
                    let e = o.node;
                    if (o && e.isAtom && Jt.isSelectable(e) && o.parent && (!e.isInline || ! function(e, t, n) {
                        for (let r = 0 == t, o = t == Bn(e); r || o;) {
                            if (e == n) return !0;
                            let t = On(e);
                            if (!(e = e.parentNode)) return !1;
                            r = r && 0 == t, o = o && t == Bn(e)
                        }
                    }(n.focusNode, n.focusOffset, o.dom))) {
                        let e = o.posBefore;
                        l = new Jt(s == e ? c : r.resolve(e))
                    }
                } else {
                    let t = e.docView.posFromDOM(n.anchorNode, n.anchorOffset, 1);
                    if (t < 0) return null;
                    a = r.resolve(t)
                }
                if (!l) {
                    l = Hr(e, a, c, "pointer" == t || e.state.selection.head < c.pos && !i ? 1 : -1)
                }
                return l
            }

            function Dr(e) {
                return e.editable ? e.hasFocus() : qr(e) && document.activeElement && document.activeElement.contains(e.dom)
            }

            function Ar(e, t = !1) {
                let n = e.state.selection;
                if (Br(e, n), Dr(e)) {
                    if (!t && e.input.mouseDown && e.input.mouseDown.allowDefault && kn) {
                        let t = e.domSelection(),
                            n = e.domObserver.currentSelection;
                        if (t.anchorNode && n.anchorNode && In(t.anchorNode, t.anchorOffset, n.anchorNode, n.anchorOffset)) return e.input.mouseDown.delayedSelectionSync = !0, void e.domObserver.setCurSelection()
                    }
                    if (e.domObserver.disconnectSelection(), e.cursorWrapper) ! function(e) {
                        let t = e.domSelection(),
                            n = document.createRange(),
                            r = e.cursorWrapper.dom,
                            o = "IMG" == r.nodeName;
                        o ? n.setEnd(r.parentNode, On(r) + 1) : n.setEnd(r, 0);
                        n.collapse(!1), t.removeAllRanges(), t.addRange(n), !o && !e.state.selection.visible && vn && yn <= 11 && (r.disabled = !0, r.disabled = !1)
                    }(e);
                    else {
                        let r, o, {
                            anchor: i,
                            head: s
                        } = n;
                        !Lr || n instanceof Ut || (n.$from.parent.inlineContent || (r = Ir(e, n.from)), n.empty || n.$from.parent.inlineContent || (o = Ir(e, n.to))), e.docView.setSelection(i, s, e.root, t), Lr && (r && Pr(r), o && Pr(o)), n.visible ? e.dom.classList.remove("ProseMirror-hideselection") : (e.dom.classList.add("ProseMirror-hideselection"), "onselectionchange" in document && function(e) {
                            let t = e.dom.ownerDocument;
                            t.removeEventListener("selectionchange", e.input.hideSelectionGuard);
                            let n = e.domSelection(),
                                r = n.anchorNode,
                                o = n.anchorOffset;
                            t.addEventListener("selectionchange", e.input.hideSelectionGuard = () => {
                                n.anchorNode == r && n.anchorOffset == o || (t.removeEventListener("selectionchange", e.input.hideSelectionGuard), setTimeout((() => {
                                    Dr(e) && !e.state.selection.visible || e.dom.classList.remove("ProseMirror-hideselection")
                                }), 20))
                            })
                        }(e))
                    }
                    e.domObserver.setCurSelection(), e.domObserver.connectSelection()
                }
            }
            const Lr = Cn || kn && xn < 63;

            function Ir(e, t) {
                let {
                    node: n,
                    offset: r
                } = e.docView.domFromPos(t, 0), o = r < n.childNodes.length ? n.childNodes[r] : null, i = r ? n.childNodes[r - 1] : null;
                if (Cn && o && "false" == o.contentEditable) return Rr(o);
                if (!(o && "false" != o.contentEditable || i && "false" != i.contentEditable)) {
                    if (o) return Rr(o);
                    if (i) return Rr(i)
                }
            }

            function Rr(e) {
                return e.contentEditable = "true", Cn && e.draggable && (e.draggable = !1, e.wasDraggable = !0), e
            }

            function Pr(e) {
                e.contentEditable = "false", e.wasDraggable && (e.draggable = !0, e.wasDraggable = null)
            }

            function Br(e, t) {
                if (t instanceof Jt) {
                    let n = e.docView.descAt(t.from);
                    n != e.lastSelectedViewDesc && (Fr(e), n && n.selectNode(), e.lastSelectedViewDesc = n)
                } else Fr(e)
            }

            function Fr(e) {
                e.lastSelectedViewDesc && (e.lastSelectedViewDesc.parent && e.lastSelectedViewDesc.deselectNode(), e.lastSelectedViewDesc = void 0)
            }

            function Hr(e, t, n, r) {
                return e.someProp("createSelectionBetween", (r => r(e, t, n))) || Ut.between(t, n, r)
            }

            function zr(e) {
                return (!e.editable || e.root.activeElement == e.dom) && qr(e)
            }

            function qr(e) {
                let t = e.domSelection();
                if (!t.anchorNode) return !1;
                try {
                    return e.dom.contains(3 == t.anchorNode.nodeType ? t.anchorNode.parentNode : t.anchorNode) && (e.editable || e.dom.contains(3 == t.focusNode.nodeType ? t.focusNode.parentNode : t.focusNode))
                } catch (e) {
                    return !1
                }
            }

            function Vr(e, t) {
                let {
                    $anchor: n,
                    $head: r
                } = e.selection, o = t > 0 ? n.max(r) : n.min(r), i = o.parent.inlineContent ? o.depth ? e.doc.resolve(t > 0 ? o.after() : o.before()) : null : o;
                return i && Vt.findFrom(i, t)
            }

            function jr(e, t) {
                return e.dispatch(e.state.tr.setSelection(t).scrollIntoView()), !0
            }

            function $r(e, t, n) {
                let r = e.state.selection;
                if (!(r instanceof Ut)) {
                    if (r instanceof Jt && r.node.isInline) return jr(e, new Ut(t > 0 ? r.$to : r.$from));
                    {
                        let n = Vr(e.state, t);
                        return !!n && jr(e, n)
                    }
                }
                if (!r.empty || n.indexOf("s") > -1) return !1;
                if (e.endOfTextblock(t > 0 ? "right" : "left")) {
                    let n = Vr(e.state, t);
                    return !!(n && n instanceof Jt) && jr(e, n)
                }
                if (!(Mn && n.indexOf("m") > -1)) {
                    let n, o = r.$head,
                        i = o.textOffset ? null : t < 0 ? o.nodeBefore : o.nodeAfter;
                    if (!i || i.isText) return !1;
                    let s = t < 0 ? o.pos - i.nodeSize : o.pos;
                    return !!(i.isAtom || (n = e.docView.descAt(s)) && !n.contentDOM) && (Jt.isSelectable(i) ? jr(e, new Jt(t < 0 ? e.state.doc.resolve(o.pos - i.nodeSize) : o)) : !!En && jr(e, new Ut(e.state.doc.resolve(t < 0 ? s : s + i.nodeSize))))
                }
            }

            function _r(e) {
                return 3 == e.nodeType ? e.nodeValue.length : e.childNodes.length
            }

            function Ur(e) {
                let t = e.pmViewDesc;
                return t && 0 == t.size && (e.nextSibling || "BR" != e.nodeName)
            }

            function Wr(e) {
                let t = e.domSelection(),
                    n = t.focusNode,
                    r = t.focusOffset;
                if (!n) return;
                let o, i, s = !1;
                for (bn && 1 == n.nodeType && r < _r(n) && Ur(n.childNodes[r]) && (s = !0);;)
                    if (r > 0) {
                        if (1 != n.nodeType) break;
                        {
                            let e = n.childNodes[r - 1];
                            if (Ur(e)) o = n, i = --r;
                            else {
                                if (3 != e.nodeType) break;
                                n = e, r = n.nodeValue.length
                            }
                        }
                    } else {
                        if (Gr(n)) break;
                        {
                            let t = n.previousSibling;
                            for (; t && Ur(t);) o = n.parentNode, i = On(t), t = t.previousSibling;
                            if (t) n = t, r = _r(n);
                            else {
                                if (n = n.parentNode, n == e.dom) break;
                                r = 0
                            }
                        }
                    } s ? Kr(e, t, n, r) : o && Kr(e, t, o, i)
            }

            function Jr(e) {
                let t = e.domSelection(),
                    n = t.focusNode,
                    r = t.focusOffset;
                if (!n) return;
                let o, i, s = _r(n);
                for (;;)
                    if (r < s) {
                        if (1 != n.nodeType) break;
                        if (!Ur(n.childNodes[r])) break;
                        o = n, i = ++r
                    } else {
                        if (Gr(n)) break;
                        {
                            let t = n.nextSibling;
                            for (; t && Ur(t);) o = t.parentNode, i = On(t) + 1, t = t.nextSibling;
                            if (t) n = t, r = 0, s = _r(n);
                            else {
                                if (n = n.parentNode, n == e.dom) break;
                                r = s = 0
                            }
                        }
                    } o && Kr(e, t, o, i)
            }

            function Gr(e) {
                let t = e.pmViewDesc;
                return t && t.node && t.node.isBlock
            }

            function Kr(e, t, n, r) {
                if (Hn(t)) {
                    let e = document.createRange();
                    e.setEnd(n, r), e.setStart(n, r), t.removeAllRanges(), t.addRange(e)
                } else t.extend && t.extend(n, r);
                e.domObserver.setCurSelection();
                let {
                    state: o
                } = e;
                setTimeout((() => {
                    e.state == o && Ar(e)
                }), 50)
            }

            function Zr(e, t, n) {
                let r = e.state.selection;
                if (r instanceof Ut && !r.empty || n.indexOf("s") > -1) return !1;
                if (Mn && n.indexOf("m") > -1) return !1;
                let {
                    $from: o,
                    $to: i
                } = r;
                if (!o.parent.inlineContent || e.endOfTextblock(t < 0 ? "up" : "down")) {
                    let n = Vr(e.state, t);
                    if (n && n instanceof Jt) return jr(e, n)
                }
                if (!o.parent.inlineContent) {
                    let n = t < 0 ? o : i,
                        s = r instanceof Kt ? Vt.near(n, t) : Vt.findFrom(n, t);
                    return !!s && jr(e, s)
                }
                return !1
            }

            function Xr(e, t) {
                if (!(e.state.selection instanceof Ut)) return !0;
                let {
                    $head: n,
                    $anchor: r,
                    empty: o
                } = e.state.selection;
                if (!n.sameParent(r)) return !0;
                if (!o) return !1;
                if (e.endOfTextblock(t > 0 ? "forward" : "backward")) return !0;
                let i = !n.textOffset && (t < 0 ? n.nodeBefore : n.nodeAfter);
                if (i && !i.isText) {
                    let r = e.state.tr;
                    return t < 0 ? r.delete(n.pos - i.nodeSize, n.pos) : r.delete(n.pos, n.pos + i.nodeSize), e.dispatch(r), !0
                }
                return !1
            }

            function Qr(e, t, n) {
                e.domObserver.stop(), t.contentEditable = n, e.domObserver.start()
            }

            function Yr(e, t) {
                let n = t.keyCode,
                    r = function(e) {
                        let t = "";
                        return e.ctrlKey && (t += "c"), e.metaKey && (t += "m"), e.altKey && (t += "a"), e.shiftKey && (t += "s"), t
                    }(t);
                return 8 == n || Mn && 72 == n && "c" == r ? Xr(e, -1) || Wr(e) : 46 == n || Mn && 68 == n && "c" == r ? Xr(e, 1) || Jr(e) : 13 == n || 27 == n || (37 == n || Mn && 66 == n && "c" == r ? $r(e, -1, r) || Wr(e) : 39 == n || Mn && 70 == n && "c" == r ? $r(e, 1, r) || Jr(e) : 38 == n || Mn && 80 == n && "c" == r ? Zr(e, -1, r) || Wr(e) : 40 == n || Mn && 78 == n && "c" == r ? function(e) {
                    if (!Cn || e.state.selection.$head.parentOffset > 0) return !1;
                    let {
                        focusNode: t,
                        focusOffset: n
                    } = e.domSelection();
                    if (t && 1 == t.nodeType && 0 == n && t.firstChild && "false" == t.firstChild.contentEditable) {
                        let n = t.firstChild;
                        Qr(e, n, "true"), setTimeout((() => Qr(e, n, "false")), 20)
                    }
                    return !1
                }(e) || Zr(e, 1, r) || Jr(e) : r == (Mn ? "m" : "c") && (66 == n || 73 == n || 89 == n || 90 == n))
            }

            function eo(e, t) {
                let n = [],
                    {
                        content: r,
                        openStart: o,
                        openEnd: i
                    } = t;
                for (; o > 1 && i > 1 && 1 == r.childCount && 1 == r.firstChild.childCount;) {
                    o--, i--;
                    let e = r.firstChild;
                    n.push(e.type.name, e.attrs != e.type.defaultAttrs ? e.attrs : null), r = e.content
                }
                let s = e.someProp("clipboardSerializer") || de.fromSchema(e.state.schema),
                    a = uo(),
                    l = a.createElement("div");
                l.appendChild(s.serializeFragment(r, {
                    document: a
                }));
                let c, u = l.firstChild,
                    d = 0;
                for (; u && 1 == u.nodeType && (c = lo[u.nodeName.toLowerCase()]);) {
                    for (let e = c.length - 1; e >= 0; e--) {
                        let t = a.createElement(c[e]);
                        for (; l.firstChild;) t.appendChild(l.firstChild);
                        l.appendChild(t), d++
                    }
                    u = l.firstChild
                }
                return u && 1 == u.nodeType && u.setAttribute("data-pm-slice", `${o} ${i}${d?` -${d}`:""} ${JSON.stringify(n)}`), {
                    dom: l,
                    text: e.someProp("clipboardTextSerializer", (e => e(t))) || t.content.textBetween(0, t.content.size, "\n\n")
                }
            }

            function to(e, t, n, r, o) {
                let i, s, a = o.parent.type.spec.code;
                if (!n && !t) return null;
                let l = t && (r || a || !n);
                if (l) {
                    if (e.someProp("transformPastedText", (e => {
                        t = e(t, a || r)
                    })), a) return t ? new v(d.from(e.state.schema.text(t.replace(/\r\n?/g, "\n"))), 0, 0) : v.empty;
                    let n = e.someProp("clipboardTextParser", (e => e(t, o, r)));
                    if (n) s = n;
                    else {
                        let n = o.marks(),
                            {
                                schema: r
                            } = e.state,
                            s = de.fromSchema(r);
                        i = document.createElement("div"), t.split(/(?:\r\n?|\n)+/).forEach((e => {
                            let t = i.appendChild(document.createElement("p"));
                            e && t.appendChild(s.serializeNode(r.text(e, n)))
                        }))
                    }
                } else e.someProp("transformPastedHTML", (e => {
                    n = e(n)
                })), i = function(e) {
                    let t = /^(\s*<meta [^>]*>)*/.exec(e);
                    t && (e = e.slice(t[0].length));
                    let n, r = uo().createElement("div"),
                        o = /<([a-z][^>\s]+)/i.exec(e);
                    (n = o && lo[o[1].toLowerCase()]) && (e = n.map((e => "<" + e + ">")).join("") + e + n.map((e => "</" + e + ">")).reverse().join(""));
                    if (r.innerHTML = e, n)
                        for (let e = 0; e < n.length; e++) r = r.querySelector(n[e]) || r;
                    return r
                }(n), En && function(e) {
                    let t = e.querySelectorAll(kn ? "span:not([class]):not([style])" : "span.Apple-converted-space");
                    for (let n = 0; n < t.length; n++) {
                        let r = t[n];
                        1 == r.childNodes.length && "Â " == r.textContent && r.parentNode && r.parentNode.replaceChild(e.ownerDocument.createTextNode(" "), r)
                    }
                }(i);
                let c = i && i.querySelector("[data-pm-slice]"),
                    u = c && /^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(c.getAttribute("data-pm-slice") || "");
                if (u && u[3])
                    for (let e = +u[3]; e > 0 && i.firstChild; e--) i = i.firstChild;
                if (!s) {
                    let t = e.someProp("clipboardParser") || e.someProp("domParser") || te.fromSchema(e.state.schema);
                    s = t.parseSlice(i, {
                        preserveWhitespace: !(!l && !u),
                        context: o,
                        ruleFromNode: e => "BR" != e.nodeName || e.nextSibling || !e.parentNode || no.test(e.parentNode.nodeName) ? null : {
                            ignore: !0
                        }
                    })
                }
                if (u) s = function(e, t) {
                    if (!e.size) return e;
                    let n, r = e.content.firstChild.type.schema;
                    try {
                        n = JSON.parse(t)
                    } catch (t) {
                        return e
                    }
                    let {
                        content: o,
                        openStart: i,
                        openEnd: s
                    } = e;
                    for (let e = n.length - 2; e >= 0; e -= 2) {
                        let t = r.nodes[n[e]];
                        if (!t || t.hasRequiredAttrs()) break;
                        o = d.from(t.create(n[e + 1], o)), i++, s++
                    }
                    return new v(o, i, s)
                }(ao(s, +u[1], +u[2]), u[4]);
                else if (s = v.maxOpen(function(e, t) {
                    if (e.childCount < 2) return e;
                    for (let n = t.depth; n >= 0; n--) {
                        let r, o = t.node(n).contentMatchAt(t.index(n)),
                            i = [];
                        if (e.forEach((e => {
                            if (!i) return;
                            let t, n = o.findWrapping(e.type);
                            if (!n) return i = null;
                            if (t = i.length && r.length && oo(n, r, e, i[i.length - 1], 0)) i[i.length - 1] = t;
                            else {
                                i.length && (i[i.length - 1] = io(i[i.length - 1], r.length));
                                let t = ro(e, n);
                                i.push(t), o = o.matchType(t.type), r = n
                            }
                        })), i) return d.from(i)
                    }
                    return e
                }(s.content, o), !0), s.openStart || s.openEnd) {
                    let e = 0,
                        t = 0;
                    for (let t = s.content.firstChild; e < s.openStart && !t.type.spec.isolating; e++, t = t.firstChild);
                    for (let e = s.content.lastChild; t < s.openEnd && !e.type.spec.isolating; t++, e = e.lastChild);
                    s = ao(s, e, t)
                }
                return e.someProp("transformPasted", (e => {
                    s = e(s)
                })), s
            }
            const no = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;

            function ro(e, t, n = 0) {
                for (let r = t.length - 1; r >= n; r--) e = t[r].create(null, d.from(e));
                return e
            }

            function oo(e, t, n, r, o) {
                if (o < e.length && o < t.length && e[o] == t[o]) {
                    let i = oo(e, t, n, r.lastChild, o + 1);
                    if (i) return r.copy(r.content.replaceChild(r.childCount - 1, i));
                    if (r.contentMatchAt(r.childCount).matchType(o == e.length - 1 ? n.type : e[o + 1])) return r.copy(r.content.append(d.from(ro(n, e, o + 1))))
                }
            }

            function io(e, t) {
                if (0 == t) return e;
                let n = e.content.replaceChild(e.childCount - 1, io(e.lastChild, t - 1)),
                    r = e.contentMatchAt(e.childCount).fillBefore(d.empty, !0);
                return e.copy(n.append(r))
            }

            function so(e, t, n, r, o, i) {
                let s = t < 0 ? e.firstChild : e.lastChild,
                    a = s.content;
                return o < r - 1 && (a = so(a, t, n, r, o + 1, i)), o >= n && (a = t < 0 ? s.contentMatchAt(0).fillBefore(a, e.childCount > 1 || i <= o).append(a) : a.append(s.contentMatchAt(s.childCount).fillBefore(d.empty, !0))), e.replaceChild(t < 0 ? 0 : e.childCount - 1, s.copy(a))
            }

            function ao(e, t, n) {
                return t < e.openStart && (e = new v(so(e.content, -1, t, e.openStart, 0, e.openEnd), t, e.openEnd)), n < e.openEnd && (e = new v(so(e.content, 1, n, e.openEnd, 0, 0), e.openStart, n)), e
            }
            const lo = {
                thead: ["table"],
                tbody: ["table"],
                tfoot: ["table"],
                caption: ["table"],
                colgroup: ["table"],
                col: ["table", "colgroup"],
                tr: ["table", "tbody"],
                td: ["table", "tbody", "tr"],
                th: ["table", "tbody", "tr"]
            };
            let co = null;

            function uo() {
                return co || (co = document.implementation.createHTMLDocument("title"))
            }
            const po = {};
            let ho = {};
            class fo {
                constructor() {
                    this.shiftKey = !1, this.mouseDown = null, this.lastKeyCode = null, this.lastKeyCodeTime = 0, this.lastClick = {
                        time: 0,
                        x: 0,
                        y: 0,
                        type: ""
                    }, this.lastSelectionOrigin = null, this.lastSelectionTime = 0, this.lastIOSEnter = 0, this.lastIOSEnterFallbackTimeout = -1, this.lastAndroidDelete = 0, this.composing = !1, this.composingTimeout = -1, this.compositionNodes = [], this.compositionEndedAt = -2e8, this.domChangeCount = 0, this.eventHandlers = Object.create(null), this.hideSelectionGuard = null
                }
            }

            function mo(e, t) {
                e.input.lastSelectionOrigin = t, e.input.lastSelectionTime = Date.now()
            }

            function go(e) {
                e.someProp("handleDOMEvents", (t => {
                    for (let n in t) e.input.eventHandlers[n] || e.dom.addEventListener(n, e.input.eventHandlers[n] = t => vo(e, t))
                }))
            }

            function vo(e, t) {
                return e.someProp("handleDOMEvents", (n => {
                    let r = n[t.type];
                    return !!r && (r(e, t) || t.defaultPrevented)
                }))
            }

            function yo(e, t) {
                if (!t.bubbles) return !0;
                if (t.defaultPrevented) return !1;
                for (let n = t.target; n != e.dom; n = n.parentNode)
                    if (!n || 11 == n.nodeType || n.pmViewDesc && n.pmViewDesc.stopEvent(t)) return !1;
                return !0
            }

            function bo(e) {
                return {
                    left: e.clientX,
                    top: e.clientY
                }
            }

            function wo(e, t, n, r, o) {
                if (-1 == r) return !1;
                let i = e.state.doc.resolve(r);
                for (let r = i.depth + 1; r > 0; r--)
                    if (e.someProp(t, (t => r > i.depth ? t(e, n, i.nodeAfter, i.before(r), o, !0) : t(e, n, i.node(r), i.before(r), o, !1)))) return !0;
                return !1
            }

            function ko(e, t, n) {
                e.focused || e.focus();
                let r = e.state.tr.setSelection(t);
                "pointer" == n && r.setMeta("pointer", !0), e.dispatch(r)
            }

            function xo(e, t, n, r, o) {
                return wo(e, "handleClickOn", t, n, r) || e.someProp("handleClick", (n => n(e, t, r))) || (o ? function(e, t) {
                    if (-1 == t) return !1;
                    let n, r, o = e.state.selection;
                    o instanceof Jt && (n = o.node);
                    let i = e.state.doc.resolve(t);
                    for (let e = i.depth + 1; e > 0; e--) {
                        let t = e > i.depth ? i.nodeAfter : i.node(e);
                        if (Jt.isSelectable(t)) {
                            r = n && o.$from.depth > 0 && e >= o.$from.depth && i.before(o.$from.depth + 1) == o.$from.pos ? i.before(o.$from.depth) : i.before(e);
                            break
                        }
                    }
                    return null != r && (ko(e, Jt.create(e.state.doc, r), "pointer"), !0)
                }(e, n) : function(e, t) {
                    if (-1 == t) return !1;
                    let n = e.state.doc.resolve(t),
                        r = n.nodeAfter;
                    return !!(r && r.isAtom && Jt.isSelectable(r)) && (ko(e, new Jt(n), "pointer"), !0)
                }(e, n))
            }

            function Co(e, t, n, r) {
                return wo(e, "handleDoubleClickOn", t, n, r) || e.someProp("handleDoubleClick", (n => n(e, t, r)))
            }

            function To(e, t, n, r) {
                return wo(e, "handleTripleClickOn", t, n, r) || e.someProp("handleTripleClick", (n => n(e, t, r))) || function(e, t, n) {
                    if (0 != n.button) return !1;
                    let r = e.state.doc;
                    if (-1 == t) return !!r.inlineContent && (ko(e, Ut.create(r, 0, r.content.size), "pointer"), !0);
                    let o = r.resolve(t);
                    for (let t = o.depth + 1; t > 0; t--) {
                        let n = t > o.depth ? o.nodeAfter : o.node(t),
                            i = o.before(t);
                        if (n.inlineContent) ko(e, Ut.create(r, i + 1, i + 1 + n.content.size), "pointer");
                        else {
                            if (!Jt.isSelectable(n)) continue;
                            ko(e, Jt.create(r, i), "pointer")
                        }
                        return !0
                    }
                }(e, n, r)
            }

            function Mo(e) {
                return Lo(e)
            }
            ho.keydown = (e, t) => {
                let n = t;
                if (e.input.shiftKey = 16 == n.keyCode || n.shiftKey, !No(e, n) && (e.input.lastKeyCode = n.keyCode, e.input.lastKeyCodeTime = Date.now(), !Sn || !kn || 13 != n.keyCode))
                    if (229 != n.keyCode && e.domObserver.forceFlush(), !Tn || 13 != n.keyCode || n.ctrlKey || n.altKey || n.metaKey) e.someProp("handleKeyDown", (t => t(e, n))) || Yr(e, n) ? n.preventDefault() : mo(e, "key");
                    else {
                        let t = Date.now();
                        e.input.lastIOSEnter = t, e.input.lastIOSEnterFallbackTimeout = setTimeout((() => {
                            e.input.lastIOSEnter == t && (e.someProp("handleKeyDown", (t => t(e, zn(13, "Enter")))), e.input.lastIOSEnter = 0)
                        }), 200)
                    }
            }, ho.keyup = (e, t) => {
                16 == t.keyCode && (e.input.shiftKey = !1)
            }, ho.keypress = (e, t) => {
                let n = t;
                if (No(e, n) || !n.charCode || n.ctrlKey && !n.altKey || Mn && n.metaKey) return;
                if (e.someProp("handleKeyPress", (t => t(e, n)))) return void n.preventDefault();
                let r = e.state.selection;
                if (!(r instanceof Ut && r.$from.sameParent(r.$to))) {
                    let t = String.fromCharCode(n.charCode);
                    e.someProp("handleTextInput", (n => n(e, r.$from.pos, r.$to.pos, t))) || e.dispatch(e.state.tr.insertText(t).scrollIntoView()), n.preventDefault()
                }
            };
            const So = Mn ? "metaKey" : "ctrlKey";
            po.mousedown = (e, t) => {
                let n = t;
                e.input.shiftKey = n.shiftKey;
                let r = Mo(e),
                    o = Date.now(),
                    i = "singleClick";
                o - e.input.lastClick.time < 500 && function(e, t) {
                    let n = t.x - e.clientX,
                        r = t.y - e.clientY;
                    return n * n + r * r < 100
                }(n, e.input.lastClick) && !n[So] && ("singleClick" == e.input.lastClick.type ? i = "doubleClick" : "doubleClick" == e.input.lastClick.type && (i = "tripleClick")), e.input.lastClick = {
                    time: o,
                    x: n.clientX,
                    y: n.clientY,
                    type: i
                };
                let s = e.posAtCoords(bo(n));
                s && ("singleClick" == i ? (e.input.mouseDown && e.input.mouseDown.done(), e.input.mouseDown = new Eo(e, s, n, !!r)) : ("doubleClick" == i ? Co : To)(e, s.pos, s.inside, n) ? n.preventDefault() : mo(e, "pointer"))
            };
            class Eo {
                constructor(e, t, n, r) {
                    let o, i;
                    if (this.view = e, this.pos = t, this.event = n, this.flushed = r, this.delayedSelectionSync = !1, this.mightDrag = null, this.startDoc = e.state.doc, this.selectNode = !!n[So], this.allowDefault = n.shiftKey, t.inside > -1) o = e.state.doc.nodeAt(t.inside), i = t.inside;
                    else {
                        let n = e.state.doc.resolve(t.pos);
                        o = n.parent, i = n.depth ? n.before() : 0
                    }
                    const s = r ? null : n.target,
                        a = s ? e.docView.nearestDesc(s, !0) : null;
                    this.target = a ? a.dom : null;
                    let {
                        selection: l
                    } = e.state;
                    (0 == n.button && o.type.spec.draggable && !1 !== o.type.spec.selectable || l instanceof Jt && l.from <= i && l.to > i) && (this.mightDrag = {
                        node: o,
                        pos: i,
                        addAttr: !(!this.target || this.target.draggable),
                        setUneditable: !(!this.target || !bn || this.target.hasAttribute("contentEditable"))
                    }), this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable) && (this.view.domObserver.stop(), this.mightDrag.addAttr && (this.target.draggable = !0), this.mightDrag.setUneditable && setTimeout((() => {
                        this.view.input.mouseDown == this && this.target.setAttribute("contentEditable", "false")
                    }), 20), this.view.domObserver.start()), e.root.addEventListener("mouseup", this.up = this.up.bind(this)), e.root.addEventListener("mousemove", this.move = this.move.bind(this)), mo(e, "pointer")
                }
                done() {
                    this.view.root.removeEventListener("mouseup", this.up), this.view.root.removeEventListener("mousemove", this.move), this.mightDrag && this.target && (this.view.domObserver.stop(), this.mightDrag.addAttr && this.target.removeAttribute("draggable"), this.mightDrag.setUneditable && this.target.removeAttribute("contentEditable"), this.view.domObserver.start()), this.delayedSelectionSync && setTimeout((() => Ar(this.view))), this.view.input.mouseDown = null
                }
                up(e) {
                    if (this.done(), !this.view.dom.contains(e.target)) return;
                    let t = this.pos;
                    this.view.state.doc != this.startDoc && (t = this.view.posAtCoords(bo(e))), this.allowDefault || !t ? mo(this.view, "pointer") : xo(this.view, t.pos, t.inside, e, this.selectNode) ? e.preventDefault() : 0 == e.button && (this.flushed || Cn && this.mightDrag && !this.mightDrag.node.isAtom || kn && !(this.view.state.selection instanceof Ut) && Math.min(Math.abs(t.pos - this.view.state.selection.from), Math.abs(t.pos - this.view.state.selection.to)) <= 2) ? (ko(this.view, Vt.near(this.view.state.doc.resolve(t.pos)), "pointer"), e.preventDefault()) : mo(this.view, "pointer")
                }
                move(e) {
                    !this.allowDefault && (Math.abs(this.event.x - e.clientX) > 4 || Math.abs(this.event.y - e.clientY) > 4) && (this.allowDefault = !0), mo(this.view, "pointer"), 0 == e.buttons && this.done()
                }
            }

            function No(e, t) {
                return !!e.composing || !!(Cn && Math.abs(t.timeStamp - e.input.compositionEndedAt) < 500) && (e.input.compositionEndedAt = -2e8, !0)
            }
            po.touchdown = e => {
                Mo(e), mo(e, "pointer")
            }, po.contextmenu = e => Mo(e);
            const Oo = Sn ? 5e3 : -1;

            function Do(e, t) {
                clearTimeout(e.input.composingTimeout), t > -1 && (e.input.composingTimeout = setTimeout((() => Lo(e)), t))
            }

            function Ao(e) {
                for (e.composing && (e.input.composing = !1, e.input.compositionEndedAt = function() {
                    let e = document.createEvent("Event");
                    return e.initEvent("event", !0, !0), e.timeStamp
                }()); e.input.compositionNodes.length > 0;) e.input.compositionNodes.pop().markParentsDirty()
            }

            function Lo(e, t = !1) {
                if (!(Sn && e.domObserver.flushingSoon >= 0)) {
                    if (e.domObserver.forceFlush(), Ao(e), t || e.docView && e.docView.dirty) {
                        let t = Or(e);
                        return t && !t.eq(e.state.selection) ? e.dispatch(e.state.tr.setSelection(t)) : e.updateState(e.state), !0
                    }
                    return !1
                }
            }
            ho.compositionstart = ho.compositionupdate = e => {
                if (!e.composing) {
                    e.domObserver.flush();
                    let {
                        state: t
                    } = e, n = t.selection.$from;
                    if (t.selection.empty && (t.storedMarks || !n.textOffset && n.parentOffset && n.nodeBefore.marks.some((e => !1 === e.type.spec.inclusive)))) e.markCursor = e.state.storedMarks || n.marks(), Lo(e, !0), e.markCursor = null;
                    else if (Lo(e), bn && t.selection.empty && n.parentOffset && !n.textOffset && n.nodeBefore.marks.length) {
                        let t = e.domSelection();
                        for (let e = t.focusNode, n = t.focusOffset; e && 1 == e.nodeType && 0 != n;) {
                            let r = n < 0 ? e.lastChild : e.childNodes[n - 1];
                            if (!r) break;
                            if (3 == r.nodeType) {
                                t.collapse(r, r.nodeValue.length);
                                break
                            }
                            e = r, n = -1
                        }
                    }
                    e.input.composing = !0
                }
                Do(e, Oo)
            }, ho.compositionend = (e, t) => {
                e.composing && (e.input.composing = !1, e.input.compositionEndedAt = t.timeStamp, Do(e, 20))
            };
            const Io = vn && yn < 15 || Tn && Nn < 604;

            function Ro(e, t, n, r) {
                let o = to(e, t, n, e.input.shiftKey, e.state.selection.$from);
                if (e.someProp("handlePaste", (t => t(e, r, o || v.empty)))) return !0;
                if (!o) return !1;
                let i = function(e) {
                        return 0 == e.openStart && 0 == e.openEnd && 1 == e.content.childCount ? e.content.firstChild : null
                    }(o),
                    s = i ? e.state.tr.replaceSelectionWith(i, e.input.shiftKey) : e.state.tr.replaceSelection(o);
                return e.dispatch(s.scrollIntoView().setMeta("paste", !0).setMeta("uiEvent", "paste")), !0
            }
            po.copy = ho.cut = (e, t) => {
                let n = t,
                    r = e.state.selection,
                    o = "cut" == n.type;
                if (r.empty) return;
                let i = Io ? null : n.clipboardData,
                    s = r.content(),
                    {
                        dom: a,
                        text: l
                    } = eo(e, s);
                i ? (n.preventDefault(), i.clearData(), i.setData("text/html", a.innerHTML), i.setData("text/plain", l)) : function(e, t) {
                    if (!e.dom.parentNode) return;
                    let n = e.dom.parentNode.appendChild(document.createElement("div"));
                    n.appendChild(t), n.style.cssText = "position: fixed; left: -10000px; top: 10px";
                    let r = getSelection(),
                        o = document.createRange();
                    o.selectNodeContents(t), e.dom.blur(), r.removeAllRanges(), r.addRange(o), setTimeout((() => {
                        n.parentNode && n.parentNode.removeChild(n), e.focus()
                    }), 50)
                }(e, a), o && e.dispatch(e.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent", "cut"))
            }, ho.paste = (e, t) => {
                let n = t;
                if (e.composing && !Sn) return;
                let r = Io ? null : n.clipboardData;
                r && Ro(e, r.getData("text/plain"), r.getData("text/html"), n) ? n.preventDefault() : function(e, t) {
                    if (!e.dom.parentNode) return;
                    let n = e.input.shiftKey || e.state.selection.$from.parent.type.spec.code,
                        r = e.dom.parentNode.appendChild(document.createElement(n ? "textarea" : "div"));
                    n || (r.contentEditable = "true"), r.style.cssText = "position: fixed; left: -10000px; top: 10px", r.focus(), setTimeout((() => {
                        e.focus(), r.parentNode && r.parentNode.removeChild(r), n ? Ro(e, r.value, null, t) : Ro(e, r.textContent, r.innerHTML, t)
                    }), 50)
                }(e, n)
            };
            class Po {
                constructor(e, t) {
                    this.slice = e, this.move = t
                }
            }
            const Bo = Mn ? "altKey" : "ctrlKey";
            po.dragstart = (e, t) => {
                let n = t,
                    r = e.input.mouseDown;
                if (r && r.done(), !n.dataTransfer) return;
                let o = e.state.selection,
                    i = o.empty ? null : e.posAtCoords(bo(n));
                if (i && i.pos >= o.from && i.pos <= (o instanceof Jt ? o.to - 1 : o.to));
                else if (r && r.mightDrag) e.dispatch(e.state.tr.setSelection(Jt.create(e.state.doc, r.mightDrag.pos)));
                else if (n.target && 1 == n.target.nodeType) {
                    let t = e.docView.nearestDesc(n.target, !0);
                    t && t.node.type.spec.draggable && t != e.docView && e.dispatch(e.state.tr.setSelection(Jt.create(e.state.doc, t.posBefore)))
                }
                let s = e.state.selection.content(),
                    {
                        dom: a,
                        text: l
                    } = eo(e, s);
                n.dataTransfer.clearData(), n.dataTransfer.setData(Io ? "Text" : "text/html", a.innerHTML), n.dataTransfer.effectAllowed = "copyMove", Io || n.dataTransfer.setData("text/plain", l), e.dragging = new Po(s, !n[Bo])
            }, po.dragend = e => {
                let t = e.dragging;
                window.setTimeout((() => {
                    e.dragging == t && (e.dragging = null)
                }), 50)
            }, ho.dragover = ho.dragenter = (e, t) => t.preventDefault(), ho.drop = (e, t) => {
                let n = t,
                    r = e.dragging;
                if (e.dragging = null, !n.dataTransfer) return;
                let o = e.posAtCoords(bo(n));
                if (!o) return;
                let i = e.state.doc.resolve(o.pos);
                if (!i) return;
                let s = r && r.slice;
                s ? e.someProp("transformPasted", (e => {
                    s = e(s)
                })) : s = to(e, n.dataTransfer.getData(Io ? "Text" : "text/plain"), Io ? null : n.dataTransfer.getData("text/html"), !1, i);
                let a = !(!r || n[Bo]);
                if (e.someProp("handleDrop", (t => t(e, n, s || v.empty, a)))) return void n.preventDefault();
                if (!s) return;
                n.preventDefault();
                let l = s ? function(e, t, n) {
                    let r = e.resolve(t);
                    if (!n.content.size) return t;
                    let o = n.content;
                    for (let e = 0; e < n.openStart; e++) o = o.firstChild.content;
                    for (let e = 1; e <= (0 == n.openStart && n.size ? 2 : 1); e++)
                        for (let t = r.depth; t >= 0; t--) {
                            let n = t == r.depth ? 0 : r.pos <= (r.start(t + 1) + r.end(t + 1)) / 2 ? -1 : 1,
                                i = r.index(t) + (n > 0 ? 1 : 0),
                                s = r.node(t),
                                a = !1;
                            if (1 == e) a = s.canReplace(i, i, o);
                            else {
                                let e = s.contentMatchAt(i).findWrapping(o.firstChild.type);
                                a = e && s.canReplaceWith(i, i, e[0])
                            }
                            if (a) return 0 == n ? r.pos : n < 0 ? r.before(t + 1) : r.after(t + 1)
                        }
                    return null
                }(e.state.doc, i.pos, s) : i.pos;
                null == l && (l = i.pos);
                let c = e.state.tr;
                a && c.deleteSelection();
                let u = c.mapping.map(l),
                    d = 0 == s.openStart && 0 == s.openEnd && 1 == s.content.childCount,
                    p = c.doc;
                if (d ? c.replaceRangeWith(u, u, s.content.firstChild) : c.replaceRange(u, u, s), c.doc.eq(p)) return;
                let h = c.doc.resolve(u);
                if (d && Jt.isSelectable(s.content.firstChild) && h.nodeAfter && h.nodeAfter.sameMarkup(s.content.firstChild)) c.setSelection(new Jt(h));
                else {
                    let t = c.mapping.map(l);
                    c.mapping.maps[c.mapping.maps.length - 1].forEach(((e, n, r, o) => t = o)), c.setSelection(Hr(e, h, c.doc.resolve(t)))
                }
                e.focus(), e.dispatch(c.setMeta("uiEvent", "drop"))
            }, po.focus = e => {
                e.focused || (e.domObserver.stop(), e.dom.classList.add("ProseMirror-focused"), e.domObserver.start(), e.focused = !0, setTimeout((() => {
                    e.docView && e.hasFocus() && !e.domObserver.currentSelection.eq(e.domSelection()) && Ar(e)
                }), 20))
            }, po.blur = (e, t) => {
                let n = t;
                e.focused && (e.domObserver.stop(), e.dom.classList.remove("ProseMirror-focused"), e.domObserver.start(), n.relatedTarget && e.dom.contains(n.relatedTarget) && e.domObserver.currentSelection.clear(), e.focused = !1)
            }, po.beforeinput = (e, t) => {
                if (kn && Sn && "deleteContentBackward" == t.inputType) {
                    e.domObserver.flushSoon();
                    let {
                        domChangeCount: t
                    } = e.input;
                    setTimeout((() => {
                        if (e.input.domChangeCount != t) return;
                        if (e.dom.blur(), e.focus(), e.someProp("handleKeyDown", (t => t(e, zn(8, "Backspace"))))) return;
                        let {
                            $cursor: n
                        } = e.state.selection;
                        n && n.pos > 0 && e.dispatch(e.state.tr.delete(n.pos - 1, n.pos).scrollIntoView())
                    }), 50)
                }
            };
            for (let e in ho) po[e] = ho[e];

            function Fo(e, t) {
                if (e == t) return !0;
                for (let n in e)
                    if (e[n] !== t[n]) return !1;
                for (let n in t)
                    if (!(n in e)) return !1;
                return !0
            }
            class Ho {
                constructor(e, t) {
                    this.toDOM = e, this.spec = t || $o, this.side = this.spec.side || 0
                }
                map(e, t, n, r) {
                    let {
                        pos: o,
                        deleted: i
                    } = e.mapResult(t.from + r, this.side < 0 ? -1 : 1);
                    return i ? null : new Vo(o - n, o - n, this)
                }
                valid() {
                    return !0
                }
                eq(e) {
                    return this == e || e instanceof Ho && (this.spec.key && this.spec.key == e.spec.key || this.toDOM == e.toDOM && Fo(this.spec, e.spec))
                }
                destroy(e) {
                    this.spec.destroy && this.spec.destroy(e)
                }
            }
            class zo {
                constructor(e, t) {
                    this.attrs = e, this.spec = t || $o
                }
                map(e, t, n, r) {
                    let o = e.map(t.from + r, this.spec.inclusiveStart ? -1 : 1) - n,
                        i = e.map(t.to + r, this.spec.inclusiveEnd ? 1 : -1) - n;
                    return o >= i ? null : new Vo(o, i, this)
                }
                valid(e, t) {
                    return t.from < t.to
                }
                eq(e) {
                    return this == e || e instanceof zo && Fo(this.attrs, e.attrs) && Fo(this.spec, e.spec)
                }
                static is(e) {
                    return e.type instanceof zo
                }
                destroy() {}
            }
            class qo {
                constructor(e, t) {
                    this.attrs = e, this.spec = t || $o
                }
                map(e, t, n, r) {
                    let o = e.mapResult(t.from + r, 1);
                    if (o.deleted) return null;
                    let i = e.mapResult(t.to + r, -1);
                    return i.deleted || i.pos <= o.pos ? null : new Vo(o.pos - n, i.pos - n, this)
                }
                valid(e, t) {
                    let n, {
                        index: r,
                        offset: o
                    } = e.content.findIndex(t.from);
                    return o == t.from && !(n = e.child(r)).isText && o + n.nodeSize == t.to
                }
                eq(e) {
                    return this == e || e instanceof qo && Fo(this.attrs, e.attrs) && Fo(this.spec, e.spec)
                }
                destroy() {}
            }
            class Vo {
                constructor(e, t, n) {
                    this.from = e, this.to = t, this.type = n
                }
                copy(e, t) {
                    return new Vo(e, t, this.type)
                }
                eq(e, t = 0) {
                    return this.type.eq(e.type) && this.from + t == e.from && this.to + t == e.to
                }
                map(e, t, n) {
                    return this.type.map(e, this, t, n)
                }
                static widget(e, t, n) {
                    return new Vo(e, e, new Ho(t, n))
                }
                static inline(e, t, n, r) {
                    return new Vo(e, t, new zo(n, r))
                }
                static node(e, t, n, r) {
                    return new Vo(e, t, new qo(n, r))
                }
                get spec() {
                    return this.type.spec
                }
                get inline() {
                    return this.type instanceof zo
                }
            }
            const jo = [],
                $o = {};
            class _o {
                constructor(e, t) {
                    this.local = e.length ? e : jo, this.children = t.length ? t : jo
                }
                static create(e, t) {
                    return t.length ? Zo(t, e, 0, $o) : Uo
                }
                find(e, t, n) {
                    let r = [];
                    return this.findInner(null == e ? 0 : e, null == t ? 1e9 : t, r, 0, n), r
                }
                findInner(e, t, n, r, o) {
                    for (let i = 0; i < this.local.length; i++) {
                        let s = this.local[i];
                        s.from <= t && s.to >= e && (!o || o(s.spec)) && n.push(s.copy(s.from + r, s.to + r))
                    }
                    for (let i = 0; i < this.children.length; i += 3)
                        if (this.children[i] < t && this.children[i + 1] > e) {
                            let s = this.children[i] + 1;
                            this.children[i + 2].findInner(e - s, t - s, n, r + s, o)
                        }
                }
                map(e, t, n) {
                    return this == Uo || 0 == e.maps.length ? this : this.mapInner(e, t, 0, 0, n || $o)
                }
                mapInner(e, t, n, r, o) {
                    let i;
                    for (let s = 0; s < this.local.length; s++) {
                        let a = this.local[s].map(e, n, r);
                        a && a.type.valid(t, a) ? (i || (i = [])).push(a) : o.onRemove && o.onRemove(this.local[s].spec)
                    }
                    return this.children.length ? function(e, t, n, r, o, i, s) {
                        let a = e.slice(),
                            l = (e, t, n, r) => {
                                for (let s = 0; s < a.length; s += 3) {
                                    let l, c = a[s + 1];
                                    if (c < 0 || e > c + i) continue;
                                    let u = a[s] + i;
                                    t >= u ? a[s + 1] = e <= u ? -2 : -1 : n >= o && (l = r - n - (t - e)) && (a[s] += l, a[s + 1] += l)
                                }
                            };
                        for (let e = 0; e < n.maps.length; e++) n.maps[e].forEach(l);
                        let c = !1;
                        for (let t = 0; t < a.length; t += 3)
                            if (a[t + 1] < 0) {
                                if (-2 == a[t + 1]) {
                                    c = !0, a[t + 1] = -1;
                                    continue
                                }
                                let l = n.map(e[t] + i),
                                    u = l - o;
                                if (u < 0 || u >= r.content.size) {
                                    c = !0;
                                    continue
                                }
                                let d = n.map(e[t + 1] + i, -1) - o,
                                    {
                                        index: p,
                                        offset: h
                                    } = r.content.findIndex(u),
                                    f = r.maybeChild(p);
                                if (f && h == u && h + f.nodeSize == d) {
                                    let r = a[t + 2].mapInner(n, f, l + 1, e[t] + i + 1, s);
                                    r != Uo ? (a[t] = u, a[t + 1] = d, a[t + 2] = r) : (a[t + 1] = -2, c = !0)
                                } else c = !0
                            } if (c) {
                            let l = function(e, t, n, r, o, i, s) {
                                    function a(e, t) {
                                        for (let i = 0; i < e.local.length; i++) {
                                            let a = e.local[i].map(r, o, t);
                                            a ? n.push(a) : s.onRemove && s.onRemove(e.local[i].spec)
                                        }
                                        for (let n = 0; n < e.children.length; n += 3) a(e.children[n + 2], e.children[n] + t + 1)
                                    }
                                    for (let n = 0; n < e.length; n += 3) - 1 == e[n + 1] && a(e[n + 2], t[n] + i + 1);
                                    return n
                                }(a, e, t, n, o, i, s),
                                c = Zo(l, r, 0, s);
                            t = c.local;
                            for (let e = 0; e < a.length; e += 3) a[e + 1] < 0 && (a.splice(e, 3), e -= 3);
                            for (let e = 0, t = 0; e < c.children.length; e += 3) {
                                let n = c.children[e];
                                for (; t < a.length && a[t] < n;) t += 3;
                                a.splice(t, 0, c.children[e], c.children[e + 1], c.children[e + 2])
                            }
                        }
                        return new _o(t.sort(Xo), a)
                    }(this.children, i || [], e, t, n, r, o) : i ? new _o(i.sort(Xo), jo) : Uo
                }
                add(e, t) {
                    return t.length ? this == Uo ? _o.create(e, t) : this.addInner(e, t, 0) : this
                }
                addInner(e, t, n) {
                    let r, o = 0;
                    e.forEach(((e, i) => {
                        let s, a = i + n;
                        if (s = Go(t, e, a)) {
                            for (r || (r = this.children.slice()); o < r.length && r[o] < i;) o += 3;
                            r[o] == i ? r[o + 2] = r[o + 2].addInner(e, s, a + 1) : r.splice(o, 0, i, i + e.nodeSize, Zo(s, e, a + 1, $o)), o += 3
                        }
                    }));
                    let i = Jo(o ? Ko(t) : t, -n);
                    for (let t = 0; t < i.length; t++) i[t].type.valid(e, i[t]) || i.splice(t--, 1);
                    return new _o(i.length ? this.local.concat(i).sort(Xo) : this.local, r || this.children)
                }
                remove(e) {
                    return 0 == e.length || this == Uo ? this : this.removeInner(e, 0)
                }
                removeInner(e, t) {
                    let n = this.children,
                        r = this.local;
                    for (let r = 0; r < n.length; r += 3) {
                        let o, i = n[r] + t,
                            s = n[r + 1] + t;
                        for (let t, n = 0; n < e.length; n++)(t = e[n]) && t.from > i && t.to < s && (e[n] = null, (o || (o = [])).push(t));
                        if (!o) continue;
                        n == this.children && (n = this.children.slice());
                        let a = n[r + 2].removeInner(o, i + 1);
                        a != Uo ? n[r + 2] = a : (n.splice(r, 3), r -= 3)
                    }
                    if (r.length)
                        for (let n, o = 0; o < e.length; o++)
                            if (n = e[o])
                                for (let e = 0; e < r.length; e++) r[e].eq(n, t) && (r == this.local && (r = this.local.slice()), r.splice(e--, 1));
                    return n == this.children && r == this.local ? this : r.length || n.length ? new _o(r, n) : Uo
                }
                forChild(e, t) {
                    if (this == Uo) return this;
                    if (t.isLeaf) return _o.empty;
                    let n, r;
                    for (let t = 0; t < this.children.length; t += 3)
                        if (this.children[t] >= e) {
                            this.children[t] == e && (n = this.children[t + 2]);
                            break
                        } let o = e + 1,
                        i = o + t.content.size;
                    for (let e = 0; e < this.local.length; e++) {
                        let t = this.local[e];
                        if (t.from < i && t.to > o && t.type instanceof zo) {
                            let e = Math.max(o, t.from) - o,
                                n = Math.min(i, t.to) - o;
                            e < n && (r || (r = [])).push(t.copy(e, n))
                        }
                    }
                    if (r) {
                        let e = new _o(r.sort(Xo), jo);
                        return n ? new Wo([e, n]) : e
                    }
                    return n || Uo
                }
                eq(e) {
                    if (this == e) return !0;
                    if (!(e instanceof _o) || this.local.length != e.local.length || this.children.length != e.children.length) return !1;
                    for (let t = 0; t < this.local.length; t++)
                        if (!this.local[t].eq(e.local[t])) return !1;
                    for (let t = 0; t < this.children.length; t += 3)
                        if (this.children[t] != e.children[t] || this.children[t + 1] != e.children[t + 1] || !this.children[t + 2].eq(e.children[t + 2])) return !1;
                    return !0
                }
                locals(e) {
                    return Qo(this.localsInner(e))
                }
                localsInner(e) {
                    if (this == Uo) return jo;
                    if (e.inlineContent || !this.local.some(zo.is)) return this.local;
                    let t = [];
                    for (let e = 0; e < this.local.length; e++) this.local[e].type instanceof zo || t.push(this.local[e]);
                    return t
                }
            }
            _o.empty = new _o([], []), _o.removeOverlap = Qo;
            const Uo = _o.empty;
            class Wo {
                constructor(e) {
                    this.members = e
                }
                map(e, t) {
                    const n = this.members.map((n => n.map(e, t, $o)));
                    return Wo.from(n)
                }
                forChild(e, t) {
                    if (t.isLeaf) return _o.empty;
                    let n = [];
                    for (let r = 0; r < this.members.length; r++) {
                        let o = this.members[r].forChild(e, t);
                        o != Uo && (o instanceof Wo ? n = n.concat(o.members) : n.push(o))
                    }
                    return Wo.from(n)
                }
                eq(e) {
                    if (!(e instanceof Wo) || e.members.length != this.members.length) return !1;
                    for (let t = 0; t < this.members.length; t++)
                        if (!this.members[t].eq(e.members[t])) return !1;
                    return !0
                }
                locals(e) {
                    let t, n = !0;
                    for (let r = 0; r < this.members.length; r++) {
                        let o = this.members[r].localsInner(e);
                        if (o.length)
                            if (t) {
                                n && (t = t.slice(), n = !1);
                                for (let e = 0; e < o.length; e++) t.push(o[e])
                            } else t = o
                    }
                    return t ? Qo(n ? t : t.sort(Xo)) : jo
                }
                static from(e) {
                    switch (e.length) {
                        case 0:
                            return Uo;
                        case 1:
                            return e[0];
                        default:
                            return new Wo(e)
                    }
                }
            }

            function Jo(e, t) {
                if (!t || !e.length) return e;
                let n = [];
                for (let r = 0; r < e.length; r++) {
                    let o = e[r];
                    n.push(new Vo(o.from + t, o.to + t, o.type))
                }
                return n
            }

            function Go(e, t, n) {
                if (t.isLeaf) return null;
                let r = n + t.nodeSize,
                    o = null;
                for (let t, i = 0; i < e.length; i++)(t = e[i]) && t.from > n && t.to < r && ((o || (o = [])).push(t), e[i] = null);
                return o
            }

            function Ko(e) {
                let t = [];
                for (let n = 0; n < e.length; n++) null != e[n] && t.push(e[n]);
                return t
            }

            function Zo(e, t, n, r) {
                let o = [],
                    i = !1;
                t.forEach(((t, s) => {
                    let a = Go(e, t, s + n);
                    if (a) {
                        i = !0;
                        let e = Zo(a, t, n + s + 1, r);
                        e != Uo && o.push(s, s + t.nodeSize, e)
                    }
                }));
                let s = Jo(i ? Ko(e) : e, -n).sort(Xo);
                for (let e = 0; e < s.length; e++) s[e].type.valid(t, s[e]) || (r.onRemove && r.onRemove(s[e].spec), s.splice(e--, 1));
                return s.length || o.length ? new _o(s, o) : Uo
            }

            function Xo(e, t) {
                return e.from - t.from || e.to - t.to
            }

            function Qo(e) {
                let t = e;
                for (let n = 0; n < t.length - 1; n++) {
                    let r = t[n];
                    if (r.from != r.to)
                        for (let o = n + 1; o < t.length; o++) {
                            let i = t[o];
                            if (i.from != r.from) {
                                i.from < r.to && (t == e && (t = e.slice()), t[n] = r.copy(r.from, i.from), Yo(t, o, r.copy(i.from, r.to)));
                                break
                            }
                            i.to != r.to && (t == e && (t = e.slice()), t[o] = i.copy(i.from, r.to), Yo(t, o + 1, i.copy(r.to, i.to)))
                        }
                }
                return t
            }

            function Yo(e, t, n) {
                for (; t < e.length && Xo(n, e[t]) > 0;) t++;
                e.splice(t, 0, n)
            }

            function ei(e) {
                let t = [];
                return e.someProp("decorations", (n => {
                    let r = n(e.state);
                    r && r != Uo && t.push(r)
                })), e.cursorWrapper && t.push(_o.create(e.state.doc, [e.cursorWrapper.deco])), Wo.from(t)
            }
            const ti = {
                    childList: !0,
                    characterData: !0,
                    characterDataOldValue: !0,
                    attributes: !0,
                    attributeOldValue: !0,
                    subtree: !0
                },
                ni = vn && yn <= 11;
            class ri {
                constructor() {
                    this.anchorNode = null, this.anchorOffset = 0, this.focusNode = null, this.focusOffset = 0
                }
                set(e) {
                    this.anchorNode = e.anchorNode, this.anchorOffset = e.anchorOffset, this.focusNode = e.focusNode, this.focusOffset = e.focusOffset
                }
                clear() {
                    this.anchorNode = this.focusNode = null
                }
                eq(e) {
                    return e.anchorNode == this.anchorNode && e.anchorOffset == this.anchorOffset && e.focusNode == this.focusNode && e.focusOffset == this.focusOffset
                }
            }
            class oi {
                constructor(e, t) {
                    this.view = e, this.handleDOMChange = t, this.queue = [], this.flushingSoon = -1, this.observer = null, this.currentSelection = new ri, this.onCharData = null, this.suppressingSelectionUpdates = !1, this.observer = window.MutationObserver && new window.MutationObserver((e => {
                        for (let t = 0; t < e.length; t++) this.queue.push(e[t]);
                        vn && yn <= 11 && e.some((e => "childList" == e.type && e.removedNodes.length || "characterData" == e.type && e.oldValue.length > e.target.nodeValue.length)) ? this.flushSoon() : this.flush()
                    })), ni && (this.onCharData = e => {
                        this.queue.push({
                            target: e.target,
                            type: "characterData",
                            oldValue: e.prevValue
                        }), this.flushSoon()
                    }), this.onSelectionChange = this.onSelectionChange.bind(this)
                }
                flushSoon() {
                    this.flushingSoon < 0 && (this.flushingSoon = window.setTimeout((() => {
                        this.flushingSoon = -1, this.flush()
                    }), 20))
                }
                forceFlush() {
                    this.flushingSoon > -1 && (window.clearTimeout(this.flushingSoon), this.flushingSoon = -1, this.flush())
                }
                start() {
                    this.observer && (this.observer.takeRecords(), this.observer.observe(this.view.dom, ti)), this.onCharData && this.view.dom.addEventListener("DOMCharacterDataModified", this.onCharData), this.connectSelection()
                }
                stop() {
                    if (this.observer) {
                        let e = this.observer.takeRecords();
                        if (e.length) {
                            for (let t = 0; t < e.length; t++) this.queue.push(e[t]);
                            window.setTimeout((() => this.flush()), 20)
                        }
                        this.observer.disconnect()
                    }
                    this.onCharData && this.view.dom.removeEventListener("DOMCharacterDataModified", this.onCharData), this.disconnectSelection()
                }
                connectSelection() {
                    this.view.dom.ownerDocument.addEventListener("selectionchange", this.onSelectionChange)
                }
                disconnectSelection() {
                    this.view.dom.ownerDocument.removeEventListener("selectionchange", this.onSelectionChange)
                }
                suppressSelectionUpdates() {
                    this.suppressingSelectionUpdates = !0, setTimeout((() => this.suppressingSelectionUpdates = !1), 50)
                }
                onSelectionChange() {
                    if (zr(this.view)) {
                        if (this.suppressingSelectionUpdates) return Ar(this.view);
                        if (vn && yn <= 11 && !this.view.state.selection.empty) {
                            let e = this.view.domSelection();
                            if (e.focusNode && In(e.focusNode, e.focusOffset, e.anchorNode, e.anchorOffset)) return this.flushSoon()
                        }
                        this.flush()
                    }
                }
                setCurSelection() {
                    this.currentSelection.set(this.view.domSelection())
                }
                ignoreSelectionChange(e) {
                    if (0 == e.rangeCount) return !0;
                    let t = e.getRangeAt(0).commonAncestorContainer,
                        n = this.view.docView.nearestDesc(t);
                    return n && n.ignoreMutation({
                        type: "selection",
                        target: 3 == t.nodeType ? t.parentNode : t
                    }) ? (this.setCurSelection(), !0) : void 0
                }
                flush() {
                    if (!this.view.docView || this.flushingSoon > -1) return;
                    let e = this.observer ? this.observer.takeRecords() : [];
                    this.queue.length && (e = this.queue.concat(e), this.queue.length = 0);
                    let t = this.view.domSelection(),
                        n = !this.suppressingSelectionUpdates && !this.currentSelection.eq(t) && zr(this.view) && !this.ignoreSelectionChange(t),
                        r = -1,
                        o = -1,
                        i = !1,
                        s = [];
                    if (this.view.editable)
                        for (let t = 0; t < e.length; t++) {
                            let n = this.registerMutation(e[t], s);
                            n && (r = r < 0 ? n.from : Math.min(n.from, r), o = o < 0 ? n.to : Math.max(n.to, o), n.typeOver && (i = !0))
                        }
                    if (bn && s.length > 1) {
                        let e = s.filter((e => "BR" == e.nodeName));
                        if (2 == e.length) {
                            let t = e[0],
                                n = e[1];
                            t.parentNode && t.parentNode.parentNode == n.parentNode ? n.remove() : t.remove()
                        }
                    }(r > -1 || n) && (r > -1 && (this.view.docView.markDirty(r, o), function(e) {
                        if (ii) return;
                        ii = !0, "normal" == getComputedStyle(e.dom).whiteSpace && console.warn("ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.")
                    }(this.view)), this.handleDOMChange(r, o, i, s), this.view.docView && this.view.docView.dirty ? this.view.updateState(this.view.state) : this.currentSelection.eq(t) || Ar(this.view), this.currentSelection.set(t))
                }
                registerMutation(e, t) {
                    if (t.indexOf(e.target) > -1) return null;
                    let n = this.view.docView.nearestDesc(e.target);
                    if ("attributes" == e.type && (n == this.view.docView || "contenteditable" == e.attributeName || "style" == e.attributeName && !e.oldValue && !e.target.getAttribute("style"))) return null;
                    if (!n || n.ignoreMutation(e)) return null;
                    if ("childList" == e.type) {
                        for (let n = 0; n < e.addedNodes.length; n++) t.push(e.addedNodes[n]);
                        if (n.contentDOM && n.contentDOM != n.dom && !n.contentDOM.contains(e.target)) return {
                            from: n.posBefore,
                            to: n.posAfter
                        };
                        let r = e.previousSibling,
                            o = e.nextSibling;
                        if (vn && yn <= 11 && e.addedNodes.length)
                            for (let t = 0; t < e.addedNodes.length; t++) {
                                let {
                                    previousSibling: n,
                                    nextSibling: i
                                } = e.addedNodes[t];
                                (!n || Array.prototype.indexOf.call(e.addedNodes, n) < 0) && (r = n), (!i || Array.prototype.indexOf.call(e.addedNodes, i) < 0) && (o = i)
                            }
                        let i = r && r.parentNode == e.target ? On(r) + 1 : 0,
                            s = n.localPosFromDOM(e.target, i, -1),
                            a = o && o.parentNode == e.target ? On(o) : e.target.childNodes.length;
                        return {
                            from: s,
                            to: n.localPosFromDOM(e.target, a, 1)
                        }
                    }
                    return "attributes" == e.type ? {
                        from: n.posAtStart - n.border,
                        to: n.posAtEnd + n.border
                    } : {
                        from: n.posAtStart,
                        to: n.posAtEnd,
                        typeOver: e.target.nodeValue == e.oldValue
                    }
                }
            }
            let ii = !1;

            function si(e) {
                let t = e.pmViewDesc;
                if (t) return t.parseRule();
                if ("BR" == e.nodeName && e.parentNode) {
                    if (Cn && /^(ul|ol)$/i.test(e.parentNode.nodeName)) {
                        let e = document.createElement("div");
                        return e.appendChild(document.createElement("li")), {
                            skip: e
                        }
                    }
                    if (e.parentNode.lastChild == e || Cn && /^(tr|table)$/i.test(e.parentNode.nodeName)) return {
                        ignore: !0
                    }
                } else if ("IMG" == e.nodeName && e.getAttribute("mark-placeholder")) return {
                    ignore: !0
                };
                return null
            }

            function ai(e, t, n, r, o) {
                if (t < 0) {
                    let t = e.input.lastSelectionTime > Date.now() - 50 ? e.input.lastSelectionOrigin : null,
                        n = Or(e, t);
                    if (n && !e.state.selection.eq(n)) {
                        let r = e.state.tr.setSelection(n);
                        "pointer" == t ? r.setMeta("pointer", !0) : "key" == t && r.scrollIntoView(), e.dispatch(r)
                    }
                    return
                }
                let i = e.state.doc.resolve(t),
                    s = i.sharedDepth(n);
                t = i.before(s + 1), n = e.state.doc.resolve(n).after(s + 1);
                let a = e.state.selection,
                    l = function(e, t, n) {
                        let r, {
                                node: o,
                                fromOffset: i,
                                toOffset: s,
                                from: a,
                                to: l
                            } = e.docView.parseRange(t, n),
                            c = e.domSelection(),
                            u = c.anchorNode;
                        if (u && e.dom.contains(1 == u.nodeType ? u : u.parentNode) && (r = [{
                            node: u,
                            offset: c.anchorOffset
                        }], Hn(c) || r.push({
                            node: c.focusNode,
                            offset: c.focusOffset
                        })), kn && 8 === e.input.lastKeyCode)
                            for (let e = s; e > i; e--) {
                                let t = o.childNodes[e - 1],
                                    n = t.pmViewDesc;
                                if ("BR" == t.nodeName && !n) {
                                    s = e;
                                    break
                                }
                                if (!n || n.size) break
                            }
                        let d = e.state.doc,
                            p = e.someProp("domParser") || te.fromSchema(e.state.schema),
                            h = d.resolve(a),
                            f = null,
                            m = p.parse(o, {
                                topNode: h.parent,
                                topMatch: h.parent.contentMatchAt(h.index()),
                                topOpen: !0,
                                from: i,
                                to: s,
                                preserveWhitespace: "pre" != h.parent.type.whitespace || "full",
                                findPositions: r,
                                ruleFromNode: si,
                                context: h
                            });
                        if (r && null != r[0].pos) {
                            let e = r[0].pos,
                                t = r[1] && r[1].pos;
                            null == t && (t = e), f = {
                                anchor: e + a,
                                head: t + a
                            }
                        }
                        return {
                            doc: m,
                            sel: f,
                            from: a,
                            to: l
                        }
                    }(e, t, n);
                if (kn && e.cursorWrapper && l.sel && l.sel.anchor == e.cursorWrapper.deco.from && l.sel.head == l.sel.anchor) {
                    let t = e.cursorWrapper.deco.type.toDOM.nextSibling,
                        n = t && t.nodeValue ? t.nodeValue.length : 1;
                    l.sel = {
                        anchor: l.sel.anchor + n,
                        head: l.sel.anchor + n
                    }
                }
                let c, u, p = e.state.doc,
                    h = p.slice(l.from, l.to);
                8 === e.input.lastKeyCode && Date.now() - 100 < e.input.lastKeyCodeTime ? (c = e.state.selection.to, u = "end") : (c = e.state.selection.from, u = "start"), e.input.lastKeyCode = null;
                let f = function(e, t, n, r, o) {
                    let i = e.findDiffStart(t, n);
                    if (null == i) return null;
                    let {
                        a: s,
                        b: a
                    } = e.findDiffEnd(t, n + e.size, n + t.size);
                    if ("end" == o) {
                        r -= s + Math.max(0, i - Math.min(s, a)) - i
                    }
                    if (s < i && e.size < t.size) {
                        i -= r <= i && r >= s ? i - r : 0, a = i + (a - s), s = i
                    } else if (a < i) {
                        i -= r <= i && r >= a ? i - r : 0, s = i + (s - a), a = i
                    }
                    return {
                        start: i,
                        endA: s,
                        endB: a
                    }
                }(h.content, l.doc.content, l.from, c, u);
                if ((Tn && e.input.lastIOSEnter > Date.now() - 225 || Sn) && o.some((e => "DIV" == e.nodeName || "P" == e.nodeName)) && (!f || f.endA >= f.endB) && e.someProp("handleKeyDown", (t => t(e, zn(13, "Enter"))))) return void(e.input.lastIOSEnter = 0);
                if (!f) {
                    if (!(r && a instanceof Ut && !a.empty && a.$head.sameParent(a.$anchor)) || e.composing || l.sel && l.sel.anchor != l.sel.head) {
                        if (l.sel) {
                            let t = li(e, e.state.doc, l.sel);
                            t && !t.eq(e.state.selection) && e.dispatch(e.state.tr.setSelection(t))
                        }
                        return
                    }
                    f = {
                        start: a.from,
                        endA: a.to,
                        endB: a.to
                    }
                }
                e.input.domChangeCount++, e.state.selection.from < e.state.selection.to && f.start == f.endB && e.state.selection instanceof Ut && (f.start > e.state.selection.from && f.start <= e.state.selection.from + 2 && e.state.selection.from >= l.from ? f.start = e.state.selection.from : f.endA < e.state.selection.to && f.endA >= e.state.selection.to - 2 && e.state.selection.to <= l.to && (f.endB += e.state.selection.to - f.endA, f.endA = e.state.selection.to)), vn && yn <= 11 && f.endB == f.start + 1 && f.endA == f.start && f.start > l.from && " Â " == l.doc.textBetween(f.start - l.from - 1, f.start - l.from + 1) && (f.start--, f.endA--, f.endB--);
                let m, g = l.doc.resolveNoCache(f.start - l.from),
                    v = l.doc.resolveNoCache(f.endB - l.from),
                    y = p.resolve(f.start),
                    b = g.sameParent(v) && g.parent.inlineContent && y.end() >= f.endA;
                if ((Tn && e.input.lastIOSEnter > Date.now() - 225 && (!b || o.some((e => "DIV" == e.nodeName || "P" == e.nodeName))) || !b && g.pos < l.doc.content.size && (m = Vt.findFrom(l.doc.resolve(g.pos + 1), 1, !0)) && m.head == v.pos) && e.someProp("handleKeyDown", (t => t(e, zn(13, "Enter"))))) return void(e.input.lastIOSEnter = 0);
                if (e.state.selection.anchor > f.start && function(e, t, n, r, o) {
                    if (!r.parent.isTextblock || n - t <= o.pos - r.pos || ci(r, !0, !1) < o.pos) return !1;
                    let i = e.resolve(t);
                    if (i.parentOffset < i.parent.content.size || !i.parent.isTextblock) return !1;
                    let s = e.resolve(ci(i, !0, !0));
                    return !(!s.parent.isTextblock || s.pos > n || ci(s, !0, !1) < n) && r.parent.content.cut(r.parentOffset).eq(s.parent.content)
                }(p, f.start, f.endA, g, v) && e.someProp("handleKeyDown", (t => t(e, zn(8, "Backspace"))))) return void(Sn && kn && e.domObserver.suppressSelectionUpdates());
                kn && Sn && f.endB == f.start && (e.input.lastAndroidDelete = Date.now()), Sn && !b && g.start() != v.start() && 0 == v.parentOffset && g.depth == v.depth && l.sel && l.sel.anchor == l.sel.head && l.sel.head == f.endA && (f.endB -= 2, v = l.doc.resolveNoCache(f.endB - l.from), setTimeout((() => {
                    e.someProp("handleKeyDown", (function(t) {
                        return t(e, zn(13, "Enter"))
                    }))
                }), 20));
                let w, k, x, C = f.start,
                    T = f.endA;
                if (b)
                    if (g.pos == v.pos) vn && yn <= 11 && 0 == g.parentOffset && (e.domObserver.suppressSelectionUpdates(), setTimeout((() => Ar(e)), 20)), w = e.state.tr.delete(C, T), k = p.resolve(f.start).marksAcross(p.resolve(f.endA));
                    else if (f.endA == f.endB && (x = function(e, t) {
                        let n, r, o, i = e.firstChild.marks,
                            s = t.firstChild.marks,
                            a = i,
                            l = s;
                        for (let e = 0; e < s.length; e++) a = s[e].removeFromSet(a);
                        for (let e = 0; e < i.length; e++) l = i[e].removeFromSet(l);
                        if (1 == a.length && 0 == l.length) r = a[0], n = "add", o = e => e.mark(r.addToSet(e.marks));
                        else {
                            if (0 != a.length || 1 != l.length) return null;
                            r = l[0], n = "remove", o = e => e.mark(r.removeFromSet(e.marks))
                        }
                        let c = [];
                        for (let e = 0; e < t.childCount; e++) c.push(o(t.child(e)));
                        if (d.from(c).eq(e)) return {
                            mark: r,
                            type: n
                        }
                    }(g.parent.content.cut(g.parentOffset, v.parentOffset), y.parent.content.cut(y.parentOffset, f.endA - y.start())))) w = e.state.tr, "add" == x.type ? w.addMark(C, T, x.mark) : w.removeMark(C, T, x.mark);
                    else if (g.parent.child(g.index()).isText && g.index() == v.index() - (v.textOffset ? 0 : 1)) {
                        let t = g.parent.textBetween(g.parentOffset, v.parentOffset);
                        if (e.someProp("handleTextInput", (n => n(e, C, T, t)))) return;
                        w = e.state.tr.insertText(t, C, T)
                    }
                if (w || (w = e.state.tr.replace(C, T, l.doc.slice(f.start - l.from, f.endB - l.from))), l.sel) {
                    let t = li(e, w.doc, l.sel);
                    t && !(kn && Sn && e.composing && t.empty && (f.start != f.endB || e.input.lastAndroidDelete < Date.now() - 100) && (t.head == C || t.head == w.mapping.map(T) - 1) || vn && t.empty && t.head == C) && w.setSelection(t)
                }
                k && w.ensureMarks(k), e.dispatch(w.scrollIntoView())
            }

            function li(e, t, n) {
                return Math.max(n.anchor, n.head) > t.content.size ? null : Hr(e, t.resolve(n.anchor), t.resolve(n.head))
            }

            function ci(e, t, n) {
                let r = e.depth,
                    o = t ? e.end() : e.pos;
                for (; r > 0 && (t || e.indexAfter(r) == e.node(r).childCount);) r--, o++, t = !1;
                if (n) {
                    let t = e.node(r).maybeChild(e.indexAfter(r));
                    for (; t && !t.isLeaf;) t = t.firstChild, o++
                }
                return o
            }
            class ui {
                constructor(e, t) {
                    this._root = null, this.focused = !1, this.trackWrites = null, this.mounted = !1, this.markCursor = null, this.cursorWrapper = null, this.lastSelectedViewDesc = void 0, this.input = new fo, this.prevDirectPlugins = [], this.pluginViews = [], this.dragging = null, this._props = t, this.state = t.state, this.directPlugins = t.plugins || [], this.directPlugins.forEach(mi), this.dispatch = this.dispatch.bind(this), this.dom = e && e.mount || document.createElement("div"), e && (e.appendChild ? e.appendChild(this.dom) : "function" == typeof e ? e(this.dom) : e.mount && (this.mounted = !0)), this.editable = hi(this), pi(this), this.nodeViews = fi(this), this.docView = hr(this.state.doc, di(this), ei(this), this.dom, this), this.domObserver = new oi(this, ((e, t, n, r) => ai(this, e, t, n, r))), this.domObserver.start(),
                        function(e) {
                            for (let t in po) {
                                let n = po[t];
                                e.dom.addEventListener(t, e.input.eventHandlers[t] = t => {
                                    !yo(e, t) || vo(e, t) || !e.editable && t.type in ho || n(e, t)
                                })
                            }
                            Cn && e.dom.addEventListener("input", (() => null)), go(e)
                        }(this), this.updatePluginViews()
                }
                get composing() {
                    return this.input.composing
                }
                get props() {
                    if (this._props.state != this.state) {
                        let e = this._props;
                        this._props = {};
                        for (let t in e) this._props[t] = e[t];
                        this._props.state = this.state
                    }
                    return this._props
                }
                update(e) {
                    e.handleDOMEvents != this._props.handleDOMEvents && go(this), this._props = e, e.plugins && (e.plugins.forEach(mi), this.directPlugins = e.plugins), this.updateStateInner(e.state, !0)
                }
                setProps(e) {
                    let t = {};
                    for (let e in this._props) t[e] = this._props[e];
                    t.state = this.state;
                    for (let n in e) t[n] = e[n];
                    this.update(t)
                }
                updateState(e) {
                    this.updateStateInner(e, this.state.plugins != e.plugins)
                }
                updateStateInner(e, t) {
                    let n = this.state,
                        r = !1,
                        o = !1;
                    if (e.storedMarks && this.composing && (Ao(this), o = !0), this.state = e, t) {
                        let e = fi(this);
                        (function(e, t) {
                            let n = 0,
                                r = 0;
                            for (let r in e) {
                                if (e[r] != t[r]) return !0;
                                n++
                            }
                            for (let e in t) r++;
                            return n != r
                        })(e, this.nodeViews) && (this.nodeViews = e, r = !0), go(this)
                    }
                    this.editable = hi(this), pi(this);
                    let i = ei(this),
                        s = di(this),
                        a = t ? "reset" : e.scrollToSelection > n.scrollToSelection ? "to selection" : "preserve",
                        l = r || !this.docView.matchesNode(e.doc, s, i);
                    !l && e.selection.eq(n.selection) || (o = !0);
                    let c = "preserve" == a && o && null == this.dom.style.overflowAnchor && function(e) {
                        let t, n, r = e.dom.getBoundingClientRect(),
                            o = Math.max(0, r.top);
                        for (let i = (r.left + r.right) / 2, s = o + 1; s < Math.min(innerHeight, r.bottom); s += 5) {
                            let r = e.root.elementFromPoint(i, s);
                            if (!r || r == e.dom || !e.dom.contains(r)) continue;
                            let a = r.getBoundingClientRect();
                            if (a.top >= o - 20) {
                                t = r, n = a.top;
                                break
                            }
                        }
                        return {
                            refDOM: t,
                            refTop: n,
                            stack: _n(e.dom)
                        }
                    }(this);
                    if (o) {
                        this.domObserver.stop();
                        let t = l && (vn || kn) && !this.composing && !n.selection.empty && !e.selection.empty && function(e, t) {
                            let n = Math.min(e.$anchor.sharedDepth(e.head), t.$anchor.sharedDepth(t.head));
                            return e.$anchor.start(n) != t.$anchor.start(n)
                        }(n.selection, e.selection);
                        if (l) {
                            let n = kn ? this.trackWrites = this.domSelection().focusNode : null;
                            !r && this.docView.update(e.doc, s, i, this) || (this.docView.updateOuterDeco([]), this.docView.destroy(), this.docView = hr(e.doc, s, i, this.dom, this)), n && !this.trackWrites && (t = !0)
                        }
                        t || !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelection()) && function(e) {
                            let t = e.docView.domFromPos(e.state.selection.anchor, 0),
                                n = e.domSelection();
                            return In(t.node, t.offset, n.anchorNode, n.anchorOffset)
                        }(this)) ? Ar(this, t) : (Br(this, e.selection), this.domObserver.setCurSelection()), this.domObserver.start()
                    }
                    if (this.updatePluginViews(n), "reset" == a) this.dom.scrollTop = 0;
                    else if ("to selection" == a) {
                        let t = this.domSelection().focusNode;
                        if (this.someProp("handleScrollToSelection", (e => e(this))));
                        else if (e.selection instanceof Jt) {
                            let n = this.docView.domAfterPos(e.selection.from);
                            1 == n.nodeType && $n(this, n.getBoundingClientRect(), t)
                        } else $n(this, this.coordsAtPos(e.selection.head, 1), t)
                    } else c && function({
                                             refDOM: e,
                                             refTop: t,
                                             stack: n
                                         }) {
                        let r = e ? e.getBoundingClientRect().top : 0;
                        Un(n, 0 == r ? 0 : r - t)
                    }(c)
                }
                destroyPluginViews() {
                    let e;
                    for (; e = this.pluginViews.pop();) e.destroy && e.destroy()
                }
                updatePluginViews(e) {
                    if (e && e.plugins == this.state.plugins && this.directPlugins == this.prevDirectPlugins)
                        for (let t = 0; t < this.pluginViews.length; t++) {
                            let n = this.pluginViews[t];
                            n.update && n.update(this, e)
                        } else {
                        this.prevDirectPlugins = this.directPlugins, this.destroyPluginViews();
                        for (let e = 0; e < this.directPlugins.length; e++) {
                            let t = this.directPlugins[e];
                            t.spec.view && this.pluginViews.push(t.spec.view(this))
                        }
                        for (let e = 0; e < this.state.plugins.length; e++) {
                            let t = this.state.plugins[e];
                            t.spec.view && this.pluginViews.push(t.spec.view(this))
                        }
                    }
                }
                someProp(e, t) {
                    let n, r = this._props && this._props[e];
                    if (null != r && (n = t ? t(r) : r)) return n;
                    for (let r = 0; r < this.directPlugins.length; r++) {
                        let o = this.directPlugins[r].props[e];
                        if (null != o && (n = t ? t(o) : o)) return n
                    }
                    let o = this.state.plugins;
                    if (o)
                        for (let r = 0; r < o.length; r++) {
                            let i = o[r].props[e];
                            if (null != i && (n = t ? t(i) : i)) return n
                        }
                }
                hasFocus() {
                    return this.root.activeElement == this.dom
                }
                focus() {
                    this.domObserver.stop(), this.editable && function(e) {
                        if (e.setActive) return e.setActive();
                        if (Wn) return e.focus(Wn);
                        let t = _n(e);
                        e.focus(null == Wn ? {
                            get preventScroll() {
                                return Wn = {
                                    preventScroll: !0
                                }, !0
                            }
                        } : void 0), Wn || (Wn = !1, Un(t, 0))
                    }(this.dom), Ar(this), this.domObserver.start()
                }
                get root() {
                    let e = this._root;
                    if (null == e)
                        for (let e = this.dom.parentNode; e; e = e.parentNode)
                            if (9 == e.nodeType || 11 == e.nodeType && e.host) return e.getSelection || (Object.getPrototypeOf(e).getSelection = () => e.ownerDocument.getSelection()), this._root = e;
                    return e || document
                }
                posAtCoords(e) {
                    return Zn(this, e)
                }
                coordsAtPos(e, t = 1) {
                    return Yn(this, e, t)
                }
                domAtPos(e, t = 0) {
                    return this.docView.domFromPos(e, t)
                }
                nodeDOM(e) {
                    let t = this.docView.descAt(e);
                    return t ? t.nodeDOM : null
                }
                posAtDOM(e, t, n = -1) {
                    let r = this.docView.posFromDOM(e, t, n);
                    if (null == r) throw new RangeError("DOM position not inside the editor");
                    return r
                }
                endOfTextblock(e, t) {
                    return ar(this, t || this.state, e)
                }
                destroy() {
                    this.docView && (! function(e) {
                        e.domObserver.stop();
                        for (let t in e.input.eventHandlers) e.dom.removeEventListener(t, e.input.eventHandlers[t]);
                        clearTimeout(e.input.composingTimeout), clearTimeout(e.input.lastIOSEnterFallbackTimeout)
                    }(this), this.destroyPluginViews(), this.mounted ? (this.docView.update(this.state.doc, [], ei(this), this), this.dom.textContent = "") : this.dom.parentNode && this.dom.parentNode.removeChild(this.dom), this.docView.destroy(), this.docView = null)
                }
                get isDestroyed() {
                    return null == this.docView
                }
                dispatchEvent(e) {
                    return function(e, t) {
                        vo(e, t) || !po[t.type] || !e.editable && t.type in ho || po[t.type](e, t)
                    }(this, e)
                }
                dispatch(e) {
                    let t = this._props.dispatchTransaction;
                    t ? t.call(this, e) : this.updateState(this.state.apply(e))
                }
                domSelection() {
                    return this.root.getSelection()
                }
            }

            function di(e) {
                let t = Object.create(null);
                return t.class = "ProseMirror", t.contenteditable = String(e.editable), t.translate = "no", e.someProp("attributes", (n => {
                    if ("function" == typeof n && (n = n(e.state)), n)
                        for (let e in n) "class" == e && (t.class += " " + n[e]), "style" == e ? t.style = (t.style ? t.style + ";" : "") + n[e] : t[e] || "contenteditable" == e || "nodeName" == e || (t[e] = String(n[e]))
                })), [Vo.node(0, e.state.doc.content.size, t)]
            }

            function pi(e) {
                if (e.markCursor) {
                    let t = document.createElement("img");
                    t.className = "ProseMirror-separator", t.setAttribute("mark-placeholder", "true"), t.setAttribute("alt", ""), e.cursorWrapper = {
                        dom: t,
                        deco: Vo.widget(e.state.selection.head, t, {
                            raw: !0,
                            marks: e.markCursor
                        })
                    }
                } else e.cursorWrapper = null
            }

            function hi(e) {
                return !e.someProp("editable", (t => !1 === t(e.state)))
            }

            function fi(e) {
                let t = Object.create(null);

                function n(e) {
                    for (let n in e) Object.prototype.hasOwnProperty.call(t, n) || (t[n] = e[n])
                }
                return e.someProp("nodeViews", n), e.someProp("markViews", n), t
            }

            function mi(e) {
                if (e.spec.state || e.spec.filterTransaction || e.spec.appendTransaction) throw new RangeError("Plugins passed directly to the view must not have a state component")
            }
            for (var gi = n(354), vi = n.n(gi), yi = {
                8: "Backspace",
                9: "Tab",
                10: "Enter",
                12: "NumLock",
                13: "Enter",
                16: "Shift",
                17: "Control",
                18: "Alt",
                20: "CapsLock",
                27: "Escape",
                32: " ",
                33: "PageUp",
                34: "PageDown",
                35: "End",
                36: "Home",
                37: "ArrowLeft",
                38: "ArrowUp",
                39: "ArrowRight",
                40: "ArrowDown",
                44: "PrintScreen",
                45: "Insert",
                46: "Delete",
                59: ";",
                61: "=",
                91: "Meta",
                92: "Meta",
                106: "*",
                107: "+",
                108: ",",
                109: "-",
                110: ".",
                111: "/",
                144: "NumLock",
                145: "ScrollLock",
                160: "Shift",
                161: "Shift",
                162: "Control",
                163: "Control",
                164: "Alt",
                165: "Alt",
                173: "-",
                186: ";",
                187: "=",
                188: ",",
                189: "-",
                190: ".",
                191: "/",
                192: "`",
                219: "[",
                220: "\\",
                221: "]",
                222: "'",
                229: "q"
            }, bi = {
                48: ")",
                49: "!",
                50: "@",
                51: "#",
                52: "$",
                53: "%",
                54: "^",
                55: "&",
                56: "*",
                57: "(",
                59: ":",
                61: "+",
                173: "_",
                186: ":",
                187: "+",
                188: "<",
                189: "_",
                190: ">",
                191: "?",
                192: "~",
                219: "{",
                220: "|",
                221: "}",
                222: '"',
                229: "Q"
            }, wi = "undefined" != typeof navigator && /Chrome\/(\d+)/.exec(navigator.userAgent), ki = "undefined" != typeof navigator && /Apple Computer/.test(navigator.vendor), xi = "undefined" != typeof navigator && /Gecko\/\d+/.test(navigator.userAgent), Ci = "undefined" != typeof navigator && /Mac/.test(navigator.platform), Ti = "undefined" != typeof navigator && /MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent), Mi = wi && (Ci || +wi[1] < 57) || xi && Ci, Si = 0; Si < 10; Si++) yi[48 + Si] = yi[96 + Si] = String(Si);
            for (Si = 1; Si <= 24; Si++) yi[Si + 111] = "F" + Si;
            for (Si = 65; Si <= 90; Si++) yi[Si] = String.fromCharCode(Si + 32), bi[Si] = String.fromCharCode(Si);
            for (var Ei in yi) bi.hasOwnProperty(Ei) || (bi[Ei] = yi[Ei]);
            const Ni = "undefined" != typeof navigator && /Mac|iP(hone|[oa]d)/.test(navigator.platform);

            function Oi(e) {
                let t, n, r, o, i = e.split(/-(?!$)/),
                    s = i[i.length - 1];
                "Space" == s && (s = " ");
                for (let e = 0; e < i.length - 1; e++) {
                    let s = i[e];
                    if (/^(cmd|meta|m)$/i.test(s)) o = !0;
                    else if (/^a(lt)?$/i.test(s)) t = !0;
                    else if (/^(c|ctrl|control)$/i.test(s)) n = !0;
                    else if (/^s(hift)?$/i.test(s)) r = !0;
                    else {
                        if (!/^mod$/i.test(s)) throw new Error("Unrecognized modifier name: " + s);
                        Ni ? o = !0 : n = !0
                    }
                }
                return t && (s = "Alt-" + s), n && (s = "Ctrl-" + s), o && (s = "Meta-" + s), r && (s = "Shift-" + s), s
            }

            function Di(e, t, n) {
                return t.altKey && (e = "Alt-" + e), t.ctrlKey && (e = "Ctrl-" + e), t.metaKey && (e = "Meta-" + e), !1 !== n && t.shiftKey && (e = "Shift-" + e), e
            }

            function Ai(e) {
                return new an({
                    props: {
                        handleKeyDown: Li(e)
                    }
                })
            }

            function Li(e) {
                let t = function(e) {
                    let t = Object.create(null);
                    for (let n in e) t[Oi(n)] = e[n];
                    return t
                }(e);
                return function(e, n) {
                    let r, o = function(e) {
                            var t = !(Mi && (e.ctrlKey || e.altKey || e.metaKey) || (ki || Ti) && e.shiftKey && e.key && 1 == e.key.length) && e.key || (e.shiftKey ? bi : yi)[e.keyCode] || e.key || "Unidentified";
                            return "Esc" == t && (t = "Escape"), "Del" == t && (t = "Delete"), "Left" == t && (t = "ArrowLeft"), "Up" == t && (t = "ArrowUp"), "Right" == t && (t = "ArrowRight"), "Down" == t && (t = "ArrowDown"), t
                        }(n),
                        i = 1 == o.length && " " != o,
                        s = t[Di(o, n, !i)];
                    if (s && s(e.state, e.dispatch, e)) return !0;
                    if (i && (n.shiftKey || n.altKey || n.metaKey || o.charCodeAt(0) > 127) && (r = yi[n.keyCode]) && r != o) {
                        let o = t[Di(r, n, !0)];
                        if (o && o(e.state, e.dispatch, e)) return !0
                    } else if (i && n.shiftKey) {
                        let r = t[Di(o, n, !0)];
                        if (r && r(e.state, e.dispatch, e)) return !0
                    }
                    return !1
                }
            }
            const Ii = (e, t) => !e.selection.empty && (t && t(e.tr.deleteSelection().scrollIntoView()), !0);

            function Ri(e, t, n = !1) {
                for (let r = e; r; r = "start" == t ? r.firstChild : r.lastChild) {
                    if (r.isTextblock) return !0;
                    if (n && 1 != r.childCount) return !1
                }
                return !1
            }

            function Pi(e) {
                if (!e.parent.type.spec.isolating)
                    for (let t = e.depth - 1; t >= 0; t--) {
                        if (e.index(t) > 0) return e.doc.resolve(e.before(t + 1));
                        if (e.node(t).type.spec.isolating) break
                    }
                return null
            }
            const Bi = (e, t, n) => {
                let {
                    $cursor: r
                } = e.selection;
                if (!r || (n ? !n.endOfTextblock("forward", e) : r.parentOffset < r.parent.content.size)) return !1;
                let o = Fi(r);
                if (!o) return !1;
                let i = o.nodeAfter;
                if ($i(e, o, t)) return !0;
                if (0 == r.parent.content.size && (Ri(i, "start") || Jt.isSelectable(i))) {
                    let n = Nt(e.doc, r.before(), r.after(), v.empty);
                    if (n && n.slice.size < n.to - n.from) {
                        if (t) {
                            let r = e.tr.step(n);
                            r.setSelection(Ri(i, "start") ? Vt.findFrom(r.doc.resolve(r.mapping.map(o.pos)), 1) : Jt.create(r.doc, r.mapping.map(o.pos))), t(r.scrollIntoView())
                        }
                        return !0
                    }
                }
                return !(!i.isAtom || o.depth != r.depth - 1) && (t && t(e.tr.delete(o.pos, o.pos + i.nodeSize).scrollIntoView()), !0)
            };

            function Fi(e) {
                if (!e.parent.type.spec.isolating)
                    for (let t = e.depth - 1; t >= 0; t--) {
                        let n = e.node(t);
                        if (e.index(t) + 1 < n.childCount) return e.doc.resolve(e.after(t + 1));
                        if (n.type.spec.isolating) break
                    }
                return null
            }
            const Hi = (e, t) => {
                let {
                    $head: n,
                    $anchor: r
                } = e.selection;
                return !(!n.parent.type.spec.code || !n.sameParent(r)) && (t && t(e.tr.insertText("\n").scrollIntoView()), !0)
            };

            function zi(e) {
                for (let t = 0; t < e.edgeCount; t++) {
                    let {
                        type: n
                    } = e.edge(t);
                    if (n.isTextblock && !n.hasRequiredAttrs()) return n
                }
                return null
            }
            const qi = (e, t) => {
                    let {
                        $head: n,
                        $anchor: r
                    } = e.selection;
                    if (!n.parent.type.spec.code || !n.sameParent(r)) return !1;
                    let o = n.node(-1),
                        i = n.indexAfter(-1),
                        s = zi(o.contentMatchAt(i));
                    if (!s || !o.canReplaceWith(i, i, s)) return !1;
                    if (t) {
                        let r = n.after(),
                            o = e.tr.replaceWith(r, r, s.createAndFill());
                        o.setSelection(Vt.near(o.doc.resolve(r), 1)), t(o.scrollIntoView())
                    }
                    return !0
                },
                Vi = (e, t) => {
                    let {
                        $from: n,
                        $to: r
                    } = e.selection;
                    if (e.selection instanceof Jt && e.selection.node.isBlock) return !(!n.parentOffset || !Mt(e.doc, n.pos)) && (t && t(e.tr.split(n.pos).scrollIntoView()), !0);
                    if (!n.parent.isBlock) return !1;
                    if (t) {
                        let o = r.parentOffset == r.parent.content.size,
                            i = e.tr;
                        (e.selection instanceof Ut || e.selection instanceof Kt) && i.deleteSelection();
                        let s = 0 == n.depth ? null : zi(n.node(-1).contentMatchAt(n.indexAfter(-1))),
                            a = o && s ? [{
                                type: s
                            }] : void 0,
                            l = Mt(i.doc, i.mapping.map(n.pos), 1, a);
                        if (a || l || !Mt(i.doc, i.mapping.map(n.pos), 1, s ? [{
                            type: s
                        }] : void 0) || (s && (a = [{
                            type: s
                        }]), l = !0), l && (i.split(i.mapping.map(n.pos), 1, a), !o && !n.parentOffset && n.parent.type != s)) {
                            let e = i.mapping.map(n.before()),
                                t = i.doc.resolve(e);
                            s && n.node(-1).canReplaceWith(t.index(), t.index() + 1, s) && i.setNodeMarkup(i.mapping.map(n.before()), s)
                        }
                        t(i.scrollIntoView())
                    }
                    return !0
                },
                ji = (e, t) => (t && t(e.tr.setSelection(new Kt(e.doc))), !0);

            function $i(e, t, n) {
                let r, o, i = t.nodeBefore,
                    s = t.nodeAfter;
                if (i.type.spec.isolating || s.type.spec.isolating) return !1;
                if (function(e, t, n) {
                    let r = t.nodeBefore,
                        o = t.nodeAfter,
                        i = t.index();
                    return !(!(r && o && r.type.compatibleContent(o.type)) || (!r.content.size && t.parent.canReplace(i - 1, i) ? (n && n(e.tr.delete(t.pos - r.nodeSize, t.pos).scrollIntoView()), 0) : !t.parent.canReplace(i, i + 1) || !o.isTextblock && !St(e.doc, t.pos) || (n && n(e.tr.clearIncompatible(t.pos, r.type, r.contentMatchAt(r.childCount)).join(t.pos).scrollIntoView()), 0)))
                }(e, t, n)) return !0;
                let a = t.parent.canReplace(t.index(), t.index() + 1);
                if (a && (r = (o = i.contentMatchAt(i.childCount)).findWrapping(s.type)) && o.matchType(r[0] || s.type).validEnd) {
                    if (n) {
                        let o = t.pos + s.nodeSize,
                            a = d.empty;
                        for (let e = r.length - 1; e >= 0; e--) a = d.from(r[e].create(null, a));
                        a = d.from(i.copy(a));
                        let l = e.tr.step(new wt(t.pos - 1, o, t.pos, o, new v(a, 1, 0), r.length, !0)),
                            c = o + 2 * r.length;
                        St(l.doc, c) && l.join(c), n(l.scrollIntoView())
                    }
                    return !0
                }
                let l = Vt.findFrom(t, 1),
                    c = l && l.$from.blockRange(l.$to),
                    u = c && Ct(c);
                if (null != u && u >= t.depth) return n && n(e.tr.lift(c, u).scrollIntoView()), !0;
                if (a && Ri(s, "start", !0) && Ri(i, "end")) {
                    let r = i,
                        o = [];
                    for (; o.push(r), !r.isTextblock;) r = r.lastChild;
                    let a = s,
                        l = 1;
                    for (; !a.isTextblock; a = a.firstChild) l++;
                    if (r.canReplace(r.childCount, r.childCount, a.content)) {
                        if (n) {
                            let r = d.empty;
                            for (let e = o.length - 1; e >= 0; e--) r = d.from(o[e].copy(r));
                            n(e.tr.step(new wt(t.pos - o.length, t.pos + s.nodeSize, t.pos + l, t.pos + s.nodeSize - l, new v(r, o.length, 0), 0, !0)).scrollIntoView())
                        }
                        return !0
                    }
                }
                return !1
            }

            function _i(e) {
                return function(t, n) {
                    let r = t.selection,
                        o = e < 0 ? r.$from : r.$to,
                        i = o.depth;
                    for (; o.node(i).isInline;) {
                        if (!i) return !1;
                        i--
                    }
                    return !!o.node(i).isTextblock && (n && n(t.tr.setSelection(Ut.create(t.doc, e < 0 ? o.start(i) : o.end(i)))), !0)
                }
            }
            const Ui = _i(-1),
                Wi = _i(1);

            function Ji(e, t = null) {
                return function(n, r) {
                    let {
                        $from: o,
                        $to: i
                    } = n.selection, s = o.blockRange(i), a = s && function(e, t, n = null, r = e) {
                        let o = function(e, t) {
                                let {
                                    parent: n,
                                    startIndex: r,
                                    endIndex: o
                                } = e, i = n.contentMatchAt(r).findWrapping(t);
                                if (!i) return null;
                                let s = i.length ? i[0] : t;
                                return n.canReplaceWith(r, o, s) ? i : null
                            }(e, t),
                            i = o && function(e, t) {
                                let {
                                    parent: n,
                                    startIndex: r,
                                    endIndex: o
                                } = e, i = n.child(r), s = t.contentMatch.findWrapping(i.type);
                                if (!s) return null;
                                let a = (s.length ? s[s.length - 1] : t).contentMatch;
                                for (let e = r; a && e < o; e++) a = a.matchType(n.child(e).type);
                                return a && a.validEnd ? s : null
                            }(r, t);
                        return i ? o.map(Tt).concat({
                            type: t,
                            attrs: n
                        }).concat(i.map(Tt)) : null
                    }(s, e, t);
                    return !!a && (r && r(n.tr.wrap(s, a).scrollIntoView()), !0)
                }
            }

            function Gi(e, t = null) {
                return function(n, r) {
                    let {
                        from: o,
                        to: i
                    } = n.selection, s = !1;
                    return n.doc.nodesBetween(o, i, ((r, o) => {
                        if (s) return !1;
                        if (r.isTextblock && !r.hasMarkup(e, t))
                            if (r.type == e) s = !0;
                            else {
                                let t = n.doc.resolve(o),
                                    r = t.index();
                                s = t.parent.canReplaceWith(r, r + 1, e)
                            }
                    })), !!s && (r && r(n.tr.setBlockType(o, i, e, t).scrollIntoView()), !0)
                }
            }

            function Ki(e, t = null) {
                return function(n, r) {
                    let {
                        empty: o,
                        $cursor: i,
                        ranges: s
                    } = n.selection;
                    if (o && !i || ! function(e, t, n) {
                        for (let r = 0; r < t.length; r++) {
                            let {
                                $from: o,
                                $to: i
                            } = t[r], s = 0 == o.depth && e.type.allowsMarkType(n);
                            if (e.nodesBetween(o.pos, i.pos, (e => {
                                if (s) return !1;
                                s = e.inlineContent && e.type.allowsMarkType(n)
                            })), s) return !0
                        }
                        return !1
                    }(n.doc, s, e)) return !1;
                    if (r)
                        if (i) e.isInSet(n.storedMarks || i.marks()) ? r(n.tr.removeStoredMark(e)) : r(n.tr.addStoredMark(e.create(t)));
                        else {
                            let o = !1,
                                i = n.tr;
                            for (let t = 0; !o && t < s.length; t++) {
                                let {
                                    $from: r,
                                    $to: i
                                } = s[t];
                                o = n.doc.rangeHasMark(r.pos, i.pos, e)
                            }
                            for (let n = 0; n < s.length; n++) {
                                let {
                                    $from: r,
                                    $to: a
                                } = s[n];
                                if (o) i.removeMark(r.pos, a.pos, e);
                                else {
                                    let n = r.pos,
                                        o = a.pos,
                                        s = r.nodeAfter,
                                        l = a.nodeBefore,
                                        c = s && s.isText ? /^\s*/.exec(s.text)[0].length : 0,
                                        u = l && l.isText ? /\s*$/.exec(l.text)[0].length : 0;
                                    n + c < o && (n += c, o -= u), i.addMark(n, o, e.create(t))
                                }
                            }
                            r(i.scrollIntoView())
                        } return !0
                }
            }

            function Zi(...e) {
                return function(t, n, r) {
                    for (let o = 0; o < e.length; o++)
                        if (e[o](t, n, r)) return !0;
                    return !1
                }
            }
            let Xi = Zi(Ii, ((e, t, n) => {
                    let {
                        $cursor: r
                    } = e.selection;
                    if (!r || (n ? !n.endOfTextblock("backward", e) : r.parentOffset > 0)) return !1;
                    let o = Pi(r);
                    if (!o) {
                        let n = r.blockRange(),
                            o = n && Ct(n);
                        return null != o && (t && t(e.tr.lift(n, o).scrollIntoView()), !0)
                    }
                    let i = o.nodeBefore;
                    if (!i.type.spec.isolating && $i(e, o, t)) return !0;
                    if (0 == r.parent.content.size && (Ri(i, "end") || Jt.isSelectable(i))) {
                        let n = Nt(e.doc, r.before(), r.after(), v.empty);
                        if (n && n.slice.size < n.to - n.from) {
                            if (t) {
                                let r = e.tr.step(n);
                                r.setSelection(Ri(i, "end") ? Vt.findFrom(r.doc.resolve(r.mapping.map(o.pos, -1)), -1) : Jt.create(r.doc, o.pos - i.nodeSize)), t(r.scrollIntoView())
                            }
                            return !0
                        }
                    }
                    return !(!i.isAtom || o.depth != r.depth - 1) && (t && t(e.tr.delete(o.pos - i.nodeSize, o.pos).scrollIntoView()), !0)
                }), ((e, t, n) => {
                    let {
                        $head: r,
                        empty: o
                    } = e.selection, i = r;
                    if (!o) return !1;
                    if (r.parent.isTextblock) {
                        if (n ? !n.endOfTextblock("backward", e) : r.parentOffset > 0) return !1;
                        i = Pi(r)
                    }
                    let s = i && i.nodeBefore;
                    return !(!s || !Jt.isSelectable(s)) && (t && t(e.tr.setSelection(Jt.create(e.doc, i.pos - s.nodeSize)).scrollIntoView()), !0)
                })),
                Qi = Zi(Ii, Bi, ((e, t, n) => {
                    let {
                        $head: r,
                        empty: o
                    } = e.selection, i = r;
                    if (!o) return !1;
                    if (r.parent.isTextblock) {
                        if (n ? !n.endOfTextblock("forward", e) : r.parentOffset < r.parent.content.size) return !1;
                        i = Fi(r)
                    }
                    let s = i && i.nodeAfter;
                    return !(!s || !Jt.isSelectable(s)) && (t && t(e.tr.setSelection(Jt.create(e.doc, i.pos)).scrollIntoView()), !0)
                }));
            const Yi = {
                    Enter: Zi(Hi, ((e, t) => {
                        let n = e.selection,
                            {
                                $from: r,
                                $to: o
                            } = n;
                        if (n instanceof Kt || r.parent.inlineContent || o.parent.inlineContent) return !1;
                        let i = zi(o.parent.contentMatchAt(o.indexAfter()));
                        if (!i || !i.isTextblock) return !1;
                        if (t) {
                            let n = (!r.parentOffset && o.index() < o.parent.childCount ? r : o).pos,
                                s = e.tr.insert(n, i.createAndFill());
                            s.setSelection(Ut.create(s.doc, n + 1)), t(s.scrollIntoView())
                        }
                        return !0
                    }), ((e, t) => {
                        let {
                            $cursor: n
                        } = e.selection;
                        if (!n || n.parent.content.size) return !1;
                        if (n.depth > 1 && n.after() != n.end(-1)) {
                            let r = n.before();
                            if (Mt(e.doc, r)) return t && t(e.tr.split(r).scrollIntoView()), !0
                        }
                        let r = n.blockRange(),
                            o = r && Ct(r);
                        return null != o && (t && t(e.tr.lift(r, o).scrollIntoView()), !0)
                    }), Vi),
                    "Mod-Enter": qi,
                    Backspace: Xi,
                    "Mod-Backspace": Xi,
                    "Shift-Backspace": Xi,
                    Delete: Qi,
                    "Mod-Delete": Qi,
                    "Mod-a": ji
                },
                es = {
                    "Ctrl-h": Yi.Backspace,
                    "Alt-Backspace": Yi["Mod-Backspace"],
                    "Ctrl-d": Yi.Delete,
                    "Ctrl-Alt-Backspace": Yi["Mod-Delete"],
                    "Alt-Delete": Yi["Mod-Delete"],
                    "Alt-d": Yi["Mod-Delete"],
                    "Ctrl-a": Ui,
                    "Ctrl-e": Wi
                };
            for (let e in Yi) es[e] = Yi[e];
            const ts = ("undefined" != typeof navigator ? /Mac|iP(hone|[oa]d)/.test(navigator.platform) : !("undefined" == typeof os || !os.platform) && "darwin" == os.platform()) ? es : Yi;
            class ns {
                constructor(e, t) {
                    var n;
                    this.match = e, this.match = e, this.handler = "string" == typeof t ? (n = t, function(e, t, r, o) {
                        let i = n;
                        if (t[1]) {
                            let e = t[0].lastIndexOf(t[1]);
                            i += t[0].slice(e + t[1].length);
                            let n = (r += e) - o;
                            n > 0 && (i = t[0].slice(e - n, e) + i, r = o)
                        }
                        return e.tr.insertText(i, r, o)
                    }) : t
                }
            }

            function rs({
                            rules: e
                        }) {
                let t = new an({
                    state: {
                        init: () => null,
                        apply(e, t) {
                            let n = e.getMeta(this);
                            return n || (e.selectionSet || e.docChanged ? null : t)
                        }
                    },
                    props: {
                        handleTextInput: (n, r, o, i) => is(n, r, o, i, e, t),
                        handleDOMEvents: {
                            compositionend: n => {
                                setTimeout((() => {
                                    let {
                                        $cursor: r
                                    } = n.state.selection;
                                    r && is(n, r.pos, r.pos, "", e, t)
                                }))
                            }
                        }
                    },
                    isInputRules: !0
                });
                return t
            }

            function is(e, t, n, r, o, i) {
                if (e.composing) return !1;
                let s = e.state,
                    a = s.doc.resolve(t);
                if (a.parent.type.spec.code) return !1;
                let l = a.parent.textBetween(Math.max(0, a.parentOffset - 500), a.parentOffset, null, "ï¿¼") + r;
                for (let a = 0; a < o.length; a++) {
                    let c = o[a].match.exec(l),
                        u = c && o[a].handler(s, c, t - (c[0].length - r.length), n);
                    if (u) return e.dispatch(u.setMeta(i, {
                        transform: u,
                        from: t,
                        to: n,
                        text: r
                    })), !0
                }
                return !1
            }
            const ss = (e, t) => {
                let n = e.plugins;
                for (let r = 0; r < n.length; r++) {
                    let o, i = n[r];
                    if (i.spec.isInputRules && (o = i.getState(e))) {
                        if (t) {
                            let n = e.tr,
                                r = o.transform;
                            for (let e = r.steps.length - 1; e >= 0; e--) n.step(r.steps[e].invert(r.docs[e]));
                            if (o.text) {
                                let t = n.doc.resolve(o.from).marks();
                                n.replaceWith(o.from, o.to, e.schema.text(o.text, t))
                            } else n.delete(o.from, o.to);
                            t(n)
                        }
                        return !0
                    }
                }
                return !1
            };
            new ns(/--$/, "â€”"), new ns(/\.\.\.$/, "â€¦"), new ns(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/, "â€œ"), new ns(/"$/, "â€"), new ns(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/, "â€˜"), new ns(/'$/, "â€™");
            var as = 200,
                ls = function() {};
            ls.prototype.append = function(e) {
                return e.length ? (e = ls.from(e), !this.length && e || e.length < as && this.leafAppend(e) || this.length < as && e.leafPrepend(this) || this.appendInner(e)) : this
            }, ls.prototype.prepend = function(e) {
                return e.length ? ls.from(e).append(this) : this
            }, ls.prototype.appendInner = function(e) {
                return new us(this, e)
            }, ls.prototype.slice = function(e, t) {
                return void 0 === e && (e = 0), void 0 === t && (t = this.length), e >= t ? ls.empty : this.sliceInner(Math.max(0, e), Math.min(this.length, t))
            }, ls.prototype.get = function(e) {
                if (!(e < 0 || e >= this.length)) return this.getInner(e)
            }, ls.prototype.forEach = function(e, t, n) {
                void 0 === t && (t = 0), void 0 === n && (n = this.length), t <= n ? this.forEachInner(e, t, n, 0) : this.forEachInvertedInner(e, t, n, 0)
            }, ls.prototype.map = function(e, t, n) {
                void 0 === t && (t = 0), void 0 === n && (n = this.length);
                var r = [];
                return this.forEach((function(t, n) {
                    return r.push(e(t, n))
                }), t, n), r
            }, ls.from = function(e) {
                return e instanceof ls ? e : e && e.length ? new cs(e) : ls.empty
            };
            var cs = function(e) {
                function t(t) {
                    e.call(this), this.values = t
                }
                e && (t.__proto__ = e), t.prototype = Object.create(e && e.prototype), t.prototype.constructor = t;
                var n = {
                    length: {
                        configurable: !0
                    },
                    depth: {
                        configurable: !0
                    }
                };
                return t.prototype.flatten = function() {
                    return this.values
                }, t.prototype.sliceInner = function(e, n) {
                    return 0 == e && n == this.length ? this : new t(this.values.slice(e, n))
                }, t.prototype.getInner = function(e) {
                    return this.values[e]
                }, t.prototype.forEachInner = function(e, t, n, r) {
                    for (var o = t; o < n; o++)
                        if (!1 === e(this.values[o], r + o)) return !1
                }, t.prototype.forEachInvertedInner = function(e, t, n, r) {
                    for (var o = t - 1; o >= n; o--)
                        if (!1 === e(this.values[o], r + o)) return !1
                }, t.prototype.leafAppend = function(e) {
                    if (this.length + e.length <= as) return new t(this.values.concat(e.flatten()))
                }, t.prototype.leafPrepend = function(e) {
                    if (this.length + e.length <= as) return new t(e.flatten().concat(this.values))
                }, n.length.get = function() {
                    return this.values.length
                }, n.depth.get = function() {
                    return 0
                }, Object.defineProperties(t.prototype, n), t
            }(ls);
            ls.empty = new cs([]);
            var us = function(e) {
                    function t(t, n) {
                        e.call(this), this.left = t, this.right = n, this.length = t.length + n.length, this.depth = Math.max(t.depth, n.depth) + 1
                    }
                    return e && (t.__proto__ = e), t.prototype = Object.create(e && e.prototype), t.prototype.constructor = t, t.prototype.flatten = function() {
                        return this.left.flatten().concat(this.right.flatten())
                    }, t.prototype.getInner = function(e) {
                        return e < this.left.length ? this.left.get(e) : this.right.get(e - this.left.length)
                    }, t.prototype.forEachInner = function(e, t, n, r) {
                        var o = this.left.length;
                        return !(t < o && !1 === this.left.forEachInner(e, t, Math.min(n, o), r)) && (!(n > o && !1 === this.right.forEachInner(e, Math.max(t - o, 0), Math.min(this.length, n) - o, r + o)) && void 0)
                    }, t.prototype.forEachInvertedInner = function(e, t, n, r) {
                        var o = this.left.length;
                        return !(t > o && !1 === this.right.forEachInvertedInner(e, t - o, Math.max(n, o) - o, r + o)) && (!(n < o && !1 === this.left.forEachInvertedInner(e, Math.min(t, o), n, r)) && void 0)
                    }, t.prototype.sliceInner = function(e, t) {
                        if (0 == e && t == this.length) return this;
                        var n = this.left.length;
                        return t <= n ? this.left.slice(e, t) : e >= n ? this.right.slice(e - n, t - n) : this.left.slice(e, n).append(this.right.slice(0, t - n))
                    }, t.prototype.leafAppend = function(e) {
                        var n = this.right.leafAppend(e);
                        if (n) return new t(this.left, n)
                    }, t.prototype.leafPrepend = function(e) {
                        var n = this.left.leafPrepend(e);
                        if (n) return new t(n, this.right)
                    }, t.prototype.appendInner = function(e) {
                        return this.left.depth >= Math.max(this.right.depth, e.depth) + 1 ? new t(this.left, new t(this.right, e)) : new t(this, e)
                    }, t
                }(ls),
                ds = ls;
            class ps {
                constructor(e, t) {
                    this.items = e, this.eventCount = t
                }
                popEvent(e, t) {
                    if (0 == this.eventCount) return null;
                    let n, r, o = this.items.length;
                    for (;; o--) {
                        if (this.items.get(o - 1).selection) {
                            --o;
                            break
                        }
                    }
                    t && (n = this.remapping(o, this.items.length), r = n.maps.length);
                    let i, s, a = e.tr,
                        l = [],
                        c = [];
                    return this.items.forEach(((e, t) => {
                        if (!e.step) return n || (n = this.remapping(o, t + 1), r = n.maps.length), r--, void c.push(e);
                        if (n) {
                            c.push(new hs(e.map));
                            let t, o = e.step.map(n.slice(r));
                            o && a.maybeStep(o).doc && (t = a.mapping.maps[a.mapping.maps.length - 1], l.push(new hs(t, void 0, void 0, l.length + c.length))), r--, t && n.appendMap(t, r)
                        } else a.maybeStep(e.step);
                        return e.selection ? (i = n ? e.selection.map(n.slice(r)) : e.selection, s = new ps(this.items.slice(0, o).append(c.reverse().concat(l)), this.eventCount - 1), !1) : void 0
                    }), this.items.length, 0), {
                        remaining: s,
                        transform: a,
                        selection: i
                    }
                }
                addTransform(e, t, n, r) {
                    let o = [],
                        i = this.eventCount,
                        s = this.items,
                        a = !r && s.length ? s.get(s.length - 1) : null;
                    for (let n = 0; n < e.steps.length; n++) {
                        let l, c = e.steps[n].invert(e.docs[n]),
                            u = new hs(e.mapping.maps[n], c, t);
                        (l = a && a.merge(u)) && (u = l, n ? o.pop() : s = s.slice(0, s.length - 1)), o.push(u), t && (i++, t = void 0), r || (a = u)
                    }
                    let l = i - n.depth;
                    return l > ms && (s = function(e, t) {
                        let n;
                        return e.forEach(((e, r) => {
                            if (e.selection && 0 == t--) return n = r, !1
                        })), e.slice(n)
                    }(s, l), i -= l), new ps(s.append(o), i)
                }
                remapping(e, t) {
                    let n = new pt;
                    return this.items.forEach(((t, r) => {
                        let o = null != t.mirrorOffset && r - t.mirrorOffset >= e ? n.maps.length - t.mirrorOffset : void 0;
                        n.appendMap(t.map, o)
                    }), e, t), n
                }
                addMaps(e) {
                    return 0 == this.eventCount ? this : new ps(this.items.append(e.map((e => new hs(e)))), this.eventCount)
                }
                rebased(e, t) {
                    if (!this.eventCount) return this;
                    let n = [],
                        r = Math.max(0, this.items.length - t),
                        o = e.mapping,
                        i = e.steps.length,
                        s = this.eventCount;
                    this.items.forEach((e => {
                        e.selection && s--
                    }), r);
                    let a = t;
                    this.items.forEach((t => {
                        let r = o.getMirror(--a);
                        if (null == r) return;
                        i = Math.min(i, r);
                        let l = o.maps[r];
                        if (t.step) {
                            let i = e.steps[r].invert(e.docs[r]),
                                c = t.selection && t.selection.map(o.slice(a + 1, r));
                            c && s++, n.push(new hs(l, i, c))
                        } else n.push(new hs(l))
                    }), r);
                    let l = [];
                    for (let e = t; e < i; e++) l.push(new hs(o.maps[e]));
                    let c = this.items.slice(0, r).append(l).append(n),
                        u = new ps(c, s);
                    return u.emptyItemCount() > 500 && (u = u.compress(this.items.length - n.length)), u
                }
                emptyItemCount() {
                    let e = 0;
                    return this.items.forEach((t => {
                        t.step || e++
                    })), e
                }
                compress(e = this.items.length) {
                    let t = this.remapping(0, e),
                        n = t.maps.length,
                        r = [],
                        o = 0;
                    return this.items.forEach(((i, s) => {
                        if (s >= e) r.push(i), i.selection && o++;
                        else if (i.step) {
                            let e = i.step.map(t.slice(n)),
                                s = e && e.getMap();
                            if (n--, s && t.appendMap(s, n), e) {
                                let a = i.selection && i.selection.map(t.slice(n));
                                a && o++;
                                let l, c = new hs(s.invert(), e, a),
                                    u = r.length - 1;
                                (l = r.length && r[u].merge(c)) ? r[u] = l: r.push(c)
                            }
                        } else i.map && n--
                    }), this.items.length, 0), new ps(ds.from(r.reverse()), o)
                }
            }
            ps.empty = new ps(ds.empty, 0);
            class hs {
                constructor(e, t, n, r) {
                    this.map = e, this.step = t, this.selection = n, this.mirrorOffset = r
                }
                merge(e) {
                    if (this.step && e.step && !e.selection) {
                        let t = e.step.merge(this.step);
                        if (t) return new hs(t.getMap().invert(), t, this.selection)
                    }
                }
            }
            class fs {
                constructor(e, t, n, r) {
                    this.done = e, this.undone = t, this.prevRanges = n, this.prevTime = r
                }
            }
            const ms = 20;

            function gs(e) {
                let t = [];
                return e.forEach(((e, n, r, o) => t.push(r, o))), t
            }

            function vs(e, t) {
                if (!e) return null;
                let n = [];
                for (let r = 0; r < e.length; r += 2) {
                    let o = t.map(e[r], 1),
                        i = t.map(e[r + 1], -1);
                    o <= i && n.push(o, i)
                }
                return n
            }

            function ys(e, t, n, r) {
                let o = ks(t),
                    i = xs.get(t).spec.config,
                    s = (r ? e.undone : e.done).popEvent(t, o);
                if (!s) return;
                let a = s.selection.resolve(s.transform.doc),
                    l = (r ? e.done : e.undone).addTransform(s.transform, t.selection.getBookmark(), i, o),
                    c = new fs(r ? l : s.remaining, r ? s.remaining : l, null, 0);
                n(s.transform.setSelection(a).setMeta(xs, {
                    redo: r,
                    historyState: c
                }).scrollIntoView())
            }
            let bs = !1,
                ws = null;

            function ks(e) {
                let t = e.plugins;
                if (ws != t) {
                    bs = !1, ws = t;
                    for (let e = 0; e < t.length; e++)
                        if (t[e].spec.historyPreserveItems) {
                            bs = !0;
                            break
                        }
                }
                return bs
            }
            const xs = new un("history"),
                Cs = new un("closeHistory");

            function Ts(e = {}) {
                return e = {
                    depth: e.depth || 100,
                    newGroupDelay: e.newGroupDelay || 500
                }, new an({
                    key: xs,
                    state: {
                        init: () => new fs(ps.empty, ps.empty, null, 0),
                        apply: (t, n, r) => function(e, t, n, r) {
                            let o, i = n.getMeta(xs);
                            if (i) return i.historyState;
                            n.getMeta(Cs) && (e = new fs(e.done, e.undone, null, 0));
                            let s = n.getMeta("appendedTransaction");
                            if (0 == n.steps.length) return e;
                            if (s && s.getMeta(xs)) return s.getMeta(xs).redo ? new fs(e.done.addTransform(n, void 0, r, ks(t)), e.undone, gs(n.mapping.maps[n.steps.length - 1]), e.prevTime) : new fs(e.done, e.undone.addTransform(n, void 0, r, ks(t)), null, e.prevTime);
                            if (!1 === n.getMeta("addToHistory") || s && !1 === s.getMeta("addToHistory")) return (o = n.getMeta("rebased")) ? new fs(e.done.rebased(n, o), e.undone.rebased(n, o), vs(e.prevRanges, n.mapping), e.prevTime) : new fs(e.done.addMaps(n.mapping.maps), e.undone.addMaps(n.mapping.maps), vs(e.prevRanges, n.mapping), e.prevTime);
                            {
                                let o = 0 == e.prevTime || !s && (e.prevTime < (n.time || 0) - r.newGroupDelay || ! function(e, t) {
                                        if (!t) return !1;
                                        if (!e.docChanged) return !0;
                                        let n = !1;
                                        return e.mapping.maps[0].forEach(((e, r) => {
                                            for (let o = 0; o < t.length; o += 2) e <= t[o + 1] && r >= t[o] && (n = !0)
                                        })), n
                                    }(n, e.prevRanges)),
                                    i = s ? vs(e.prevRanges, n.mapping) : gs(n.mapping.maps[n.steps.length - 1]);
                                return new fs(e.done.addTransform(n, o ? t.selection.getBookmark() : void 0, r, ks(t)), ps.empty, i, n.time)
                            }
                        }(n, r, t, e)
                    },
                    config: e,
                    props: {
                        handleDOMEvents: {
                            beforeinput(e, t) {
                                let n = t.inputType,
                                    r = "historyUndo" == n ? Ms : "historyRedo" == n ? Ss : null;
                                return !!r && (t.preventDefault(), r(e.state, e.dispatch))
                            }
                        }
                    }
                })
            }
            const Ms = (e, t) => {
                    let n = xs.getState(e);
                    return !(!n || 0 == n.done.eventCount) && (t && ys(n, e, t, !1), !0)
                },
                Ss = (e, t) => {
                    let n = xs.getState(e);
                    return !(!n || 0 == n.undone.eventCount) && (t && ys(n, e, t, !0), !0)
                };

            function Es(e, t) {
                var n = e.nodes.paragraph;
                return t ? n.create(null, Me()(t) ? e.text(t) : t) : n.createAndFill()
            }

            function Ns(e, t, n) {
                return e.text(t, n)
            }

            function Os(e, t, n) {
                void 0 === n && (n = t);
                var r = e.doc.content.size,
                    o = r > 0 ? r - 1 : 1;
                return Ut.create(e.doc, Math.min(t, o), Math.min(n, o))
            }

            function Ds(e, t, n) {
                var r = t.pos;
                return e.replaceWith(r, r, Es(n)), e.setSelection(Os(e, r + 1))
            }

            function As(e) {
                for (var t = e.state, n = e.from, r = e.startIndex, o = e.endIndex, i = e.createText, s = t.tr, a = t.doc, l = t.schema, c = r; c <= o; c += 1) {
                    var u = a.child(c),
                        p = u.nodeSize,
                        h = u.textContent,
                        f = u.content,
                        m = i(h),
                        g = m ? Ns(l, m) : d.empty,
                        v = s.mapping.map(n),
                        y = v + f.size;
                    s.replaceWith(v, y, g), n += p
                }
                return s
            }

            function Ls(e, t, n, r) {
                var o = n.length;
                e.split(t).delete(t - o, t).insert(e.mapping.map(t), r).setSelection(Os(e, e.mapping.map(t) - o))
            }

            function Is(e) {
                return e.sourcepos[0][0]
            }

            function Rs(e) {
                return e.sourcepos[1][0]
            }

            function Ps(e) {
                return e.sourcepos[0][1]
            }

            function Bs(e) {
                return e.sourcepos[1][1]
            }

            function Fs(e) {
                var t = e.type;
                return "strike" === t || "strong" === t || "emph" === t || "code" === t || "link" === t || "image" === t
            }

            function Hs(e) {
                return e && ("item" === e.type || "list" === e.type)
            }

            function zs(e) {
                return Hs(e) && "ordered" === e.listData.type
            }

            function qs(e) {
                return Hs(e) && "ordered" !== e.listData.type
            }

            function Vs(e) {
                return e && ("tableCell" === e.type || "tableDelimCell" === e.type)
            }

            function js(e, t, n) {
                for (void 0 === n && (n = !0), e = n ? e : e.parent; e && "document" !== e.type;) {
                    if (t(e)) return e;
                    e = e.parent
                }
                return null
            }

            function $s(e, t) {
                return [e[0], e[1] + t]
            }

            function _s(e, t) {
                return [e[0], t]
            }

            function Us(e) {
                var t = e.firstChild.literal;
                switch (e.type) {
                    case "emph":
                        return "*" + t + "*";
                    case "strong":
                        return "**" + t + "**";
                    case "strike":
                        return "~~" + t + "~~";
                    case "code":
                        return "`" + t + "`";
                    case "link":
                    case "image":
                        var n = e,
                            r = n.destination,
                            o = n.title;
                        return ("link" === e.type ? "" : "!") + "[" + t + "](" + r + (o ? ' "' + o + '"' : "") + ")";
                    default:
                        return null
                }
            }

            function Ws(e) {
                switch (e.type) {
                    case "document":
                    case "blockQuote":
                    case "list":
                    case "item":
                    case "paragraph":
                    case "heading":
                    case "emph":
                    case "strong":
                    case "strike":
                    case "link":
                    case "image":
                    case "table":
                    case "tableHead":
                    case "tableBody":
                    case "tableRow":
                    case "tableCell":
                    case "tableDelimRow":
                    case "customInline":
                        return !0;
                    default:
                        return !1
                }
            }

            function Js(e) {
                for (var t = [], n = e.walker(), r = null; r = n.next();) {
                    var o = r.node;
                    "text" === o.type && t.push(o.literal)
                }
                return t.join("")
            }
            var Gs = [],
                Ks = {},
                Zs = /\$\$widget\d+\s/;

            function Xs(e) {
                var t = e.search(Zs);
                if (-1 !== t) {
                    var n = e.substring(t).replace(Zs, "").replace("$$", "");
                    e = e.substring(0, t), e += Xs(n)
                }
                return e
            }

            function Qs(e, t) {
                return "$$" + e + " " + t + "$$"
            }

            function Ys(e, t) {
                var n = Ks[e],
                    r = n.rule,
                    o = n.toDOM,
                    i = Xs(t).match(r);
                return i && (t = i[0]), o(t)
            }

            function ea() {
                return Gs
            }

            function ta(e) {
                (Gs = e).forEach((function(e, t) {
                    Ks["widget" + t] = e
                }))
            }

            function na(e, t, n, r) {
                return e.concat(ra(t, n, r))
            }

            function ra(e, t, n) {
                void 0 === n && (n = 0);
                var r = [],
                    o = (Gs[n] || {}).rule,
                    i = n + 1;
                if (e = Xs(e), o && o.test(e)) {
                    for (var s = void 0; - 1 !== (s = e.search(o));) {
                        var a = e.substring(0, s);
                        a && (r = na(r, a, t, i));
                        var l = (e = e.substring(s)).match(o)[0],
                            c = "widget" + n;
                        r.push(t.nodes.widget.create({
                            info: c
                        }, t.text(Qs(c, l)))), e = e.substring(l.length)
                    }
                    e && (r = na(r, e, t, i))
                } else e && (r = n < Gs.length - 1 ? na(r, e, t, i) : [t.text(e)]);
                return r
            }

            function oa(e) {
                for (var t, n = "", r = e.walker(); t = r.next();) {
                    var o = t.node;
                    t.entering && (o !== e && "text" !== o.type ? (n += Us(o), r.resumeAt(e, !1), r.next()) : "text" === o.type && (n += o.literal))
                }
                return n
            }

            function ia() {
                return {
                    deleteSelection: function() {
                        return Ii
                    },
                    selectAll: function() {
                        return ji
                    },
                    undo: function() {
                        return Ms
                    },
                    redo: function() {
                        return Ss
                    }
                }
            }
            var sa = n(322),
                aa = n.n(sa),
                la = n(714),
                ca = n.n(la),
                ua = n(471),
                da = n.n(ua),
                pa = "[A-Za-z][A-Za-z0-9-]*",
                ha = "(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)",
                fa = "<(" + pa + ")(" + ha + ")*\\s*/?>",
                ma = "(?:" + fa + "|</([A-Za-z][A-Za-z0-9-]*)\\s*[>])",
                ga = new RegExp("^" + ma, "i"),
                va = /<br\s*\/*>/i,
                ya = /<! ---->|<!--(?:-?[^>-])(?:-?[^-])*-->/,
                ba = "</p><p>";

            function wa(e, t, n) {
                var r = parseInt(e.left, 10),
                    o = parseInt(e.top, 10),
                    i = parseInt(e.width, 10) + parseInt(e.paddingLeft, 10) + parseInt(e.paddingRight, 10),
                    s = parseInt(e.height, 10) + parseInt(e.paddingTop, 10) + parseInt(e.paddingBottom, 10);
                return t >= r && t <= r + i && n >= o && n <= o + s
            }
            var ka = "toastui-editor-";

            function xa() {
                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                for (var n = [], r = 0, o = e; r < o.length; r++) {
                    var i = o[r],
                        s = void 0;
                    (s = Array.isArray(i) ? i[0] ? i[1] : null : i) && n.push("" + ka + s)
                }
                return n.join(" ")
            }

            function Ca() {
                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                return e.map((function(e) {
                    return ka + "md-" + e
                })).join(" ")
            }

            function Ta(e) {
                return e && e.nodeType === Node.ELEMENT_NODE
            }

            function Ma(e) {
                e.parentNode && e.parentNode.removeChild(e)
            }

            function Sa(e, t, n) {
                Oe()(n) && (n = !ca()(e, t)), (n ? ke() : Ce())(e, t)
            }

            function Ea(e, t) {
                var n = document.createElement("div");
                Me()(e) ? n.innerHTML = e : n.appendChild(e);
                var r = n.firstChild;
                return t && t.appendChild(r), r
            }

            function Na(e) {
                var t = window.getComputedStyle(e);
                return ["margin-left", "margin-right"].reduce((function(e, n) {
                    return e + parseInt(t.getPropertyValue(n), 10)
                }), 0) + e.offsetWidth
            }

            function Oa(e, t) {
                var n;
                for (n = Me()(t) ? function(e) {
                    return da()(e, t)
                } : function(e) {
                    return e === t
                }; e && e !== document;) {
                    if (Ta(e) && n(e)) return e;
                    e = e.parentNode
                }
                return null
            }

            function Da(e, t) {
                for (var n = 0, r = 0; e && e !== t;) {
                    if (n += e.offsetTop, r += e.offsetLeft, e.offsetParent === t.offsetParent) break;
                    e = e.offsetParent
                }
                return {
                    offsetTop: n,
                    offsetLeft: r
                }
            }

            function Aa(e, t) {
                Object.keys(e).forEach((function(n) {
                    Qe(e[n]) ? t.removeAttribute(n) : t.setAttribute(n, e[n])
                }))
            }

            function La(e) {
                var t = e;
                return t = (t = t.replace(/<img class="ProseMirror-separator" alt="">/g, "")).replace(/ class="ProseMirror-trailingBreak"/g, "")
            }
            var Ia = new un("widget"),
                Ra = function() {
                    function e(e, t) {
                        var n = this;
                        this.popup = null, this.removeWidget = function() {
                            n.popup && (n.rootEl.removeChild(n.popup), n.popup = null)
                        }, this.rootEl = e.dom.parentElement, this.eventEmitter = t, this.eventEmitter.listen("blur", this.removeWidget), this.eventEmitter.listen("loadUI", (function() {
                            n.rootEl = Oa(e.dom.parentElement, "." + xa("defaultUI"))
                        })), this.eventEmitter.listen("removePopupWidget", this.removeWidget)
                    }
                    return e.prototype.update = function(e) {
                        var t = Ia.getState(e.state);
                        if (this.removeWidget(), t) {
                            var n = t.node,
                                r = t.style,
                                o = e.coordsAtPos(t.pos),
                                i = o.top,
                                s = o.left,
                                a = o.bottom - i,
                                l = this.rootEl.getBoundingClientRect(),
                                c = i - l.top;
                            be()(n, {
                                opacity: "0"
                            }), this.rootEl.appendChild(n), be()(n, {
                                position: "absolute",
                                left: s - l.left + 5 + "px",
                                top: ("bottom" === r ? c + a - 5 : c - a) + "px",
                                opacity: "1"
                            }), this.popup = n, e.focus()
                        }
                    }, e.prototype.destroy = function() {
                        this.eventEmitter.removeEventHandler("blur", this.removeWidget)
                    }, e
                }();

            function Pa(e) {
                return new an({
                    key: Ia,
                    state: {
                        init: function() {
                            return null
                        },
                        apply: function(e) {
                            return e.getMeta("widget")
                        }
                    },
                    view: function(t) {
                        return new Ra(t, e)
                    }
                })
            }
            var Ba = n(893),
                Fa = n.n(Ba);

            function Ha(e, t, n) {
                e.emit("addImageBlobHook", t, (function(n, r) {
                    e.emit("command", "addImage", {
                        imageUrl: n,
                        altText: r || t.name || "image"
                    })
                }), n)
            }

            function za(e) {
                var t = vi()(e).filter((function(e) {
                    return -1 !== e.type.indexOf("image")
                }));
                if (1 === t.length) {
                    var n = t[0];
                    if (n) return n.getAsFile()
                }
                return null
            }

            function qa(e) {
                var t = e.eventEmitter;
                return new an({
                    props: {
                        handleDOMEvents: {
                            drop: function(e, n) {
                                var r, o = null === (r = n.dataTransfer) || void 0 === r ? void 0 : r.files;
                                return o && Fa()(o, (function(e) {
                                    return -1 === e.type.indexOf("image") || (n.preventDefault(), n.stopPropagation(), Ha(t, e, n.type), !1)
                                })), !0
                            }
                        }
                    }
                })
            }
            var Va = function() {
                function e() {}
                return Object.defineProperty(e.prototype, "type", {
                    get: function() {
                        return "node"
                    },
                    enumerable: !1,
                    configurable: !0
                }), e.prototype.setContext = function(e) {
                    this.context = e
                }, e
            }();

            function ja(e) {
                var t = document.createElement("span"),
                    n = Ys(e.attrs.info, e.textContent);
                return t.className = "tui-widget", t.appendChild(n), {
                    dom: t
                }
            }

            function $a(e) {
                return "widget" === e.type.name
            }
            var _a = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "widget"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                attrs: {
                                    info: {
                                        default: null
                                    }
                                },
                                group: "inline",
                                inline: !0,
                                content: "text*",
                                selectable: !1,
                                atom: !0,
                                toDOM: function() {
                                    return ["span", {
                                        class: "tui-widget"
                                    }, 0]
                                },
                                parseDOM: [{
                                    tag: "span.tui-widget",
                                    getAttrs: function(e) {
                                        return {
                                            info: e.textContent.match(/\$\$(widget\d+)/)[1]
                                        }
                                    }
                                }]
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                Ua = function() {
                    function e(e) {
                        this.timer = null, this.el = document.createElement("div"), this.el.className = "toastui-editor", this.eventEmitter = e, this.placeholder = {
                            text: ""
                        }
                    }
                    return e.prototype.createState = function() {
                        return on.create({
                            schema: this.schema,
                            plugins: this.createPlugins()
                        })
                    }, e.prototype.initEvent = function() {
                        var e = this,
                            t = e.eventEmitter,
                            n = e.view,
                            r = e.editorType;
                        n.dom.addEventListener("focus", (function() {
                            return t.emit("focus", r)
                        })), n.dom.addEventListener("blur", (function() {
                            return t.emit("blur", r)
                        }))
                    }, e.prototype.emitChangeEvent = function(e) {
                        this.eventEmitter.emit("caretChange", this.editorType), e.docChanged && this.eventEmitter.emit("change", this.editorType)
                    }, Object.defineProperty(e.prototype, "defaultPlugins", {
                        get: function() {
                            var e, t = this.createInputRules(),
                                n = i(i([], this.keymaps), [Ai(o({
                                    "Shift-Enter": ts.Enter
                                }, ts)), Ts(), (e = this.placeholder, new an({
                                    props: {
                                        decorations: function(t) {
                                            var n = t.doc;
                                            if (e.text && 1 === n.childCount && n.firstChild.isTextblock && 0 === n.firstChild.content.size) {
                                                var r = document.createElement("span");
                                                return ke()(r, "placeholder"), e.className && ke()(r, e.className), r.textContent = e.text, _o.create(n, [Vo.widget(1, r)])
                                            }
                                            return null
                                        }
                                    }
                                })), Pa(this.eventEmitter), qa(this.context)]);
                            return t ? n.concat(t) : n
                        },
                        enumerable: !1,
                        configurable: !0
                    }), e.prototype.createInputRules = function() {
                        var e = ea().map((function(e) {
                            var t = e.rule;
                            return new ns(t, (function(e, n, r, o) {
                                var i = e.schema,
                                    s = e.tr,
                                    a = e.doc,
                                    l = n.input.match(new RegExp(t, "g")),
                                    c = a.resolve(r),
                                    u = c.parent,
                                    d = 0;
                                if ($a(u) && (u = c.node(c.depth - 1)), u.forEach((function(e) {
                                    return $a(e) && (d += 1)
                                })), l.length > d) {
                                    var p = et(l),
                                        h = ra(p, i);
                                    return s.replaceWith(o - p.length + 1, o, h)
                                }
                                return null
                            }))
                        }));
                        return e.length ? rs({
                            rules: e
                        }) : null
                    }, e.prototype.clearTimer = function() {
                        this.timer && (clearTimeout(this.timer), this.timer = null)
                    }, e.prototype.createSchema = function() {
                        return new Y({
                            nodes: this.specs.nodes,
                            marks: this.specs.marks
                        })
                    }, e.prototype.createKeymaps = function(e) {
                        var t = ia(),
                            n = t.undo,
                            r = t.redo,
                            o = this.specs.keymaps(e),
                            i = {
                                "Mod-z": n(),
                                "Shift-Mod-z": r()
                            };
                        return e ? o.concat(Ai(i)) : o
                    }, e.prototype.createCommands = function() {
                        return this.specs.commands(this.view)
                    }, e.prototype.createPluginProps = function() {
                        var e = this;
                        return this.extraPlugins.map((function(t) {
                            return t(e.eventEmitter)
                        }))
                    }, e.prototype.focus = function() {
                        var e = this;
                        this.clearTimer(), this.timer = setTimeout((function() {
                            e.view.focus(), e.view.dispatch(e.view.state.tr.scrollIntoView())
                        }))
                    }, e.prototype.blur = function() {
                        this.view.dom.blur()
                    }, e.prototype.destroy = function() {
                        var e = this;
                        this.clearTimer(), this.view.destroy(), Object.keys(this).forEach((function(t) {
                            delete e[t]
                        }))
                    }, e.prototype.moveCursorToStart = function(e) {
                        var t = this.view.state.tr;
                        this.view.dispatch(t.setSelection(Os(t, 1)).scrollIntoView()), e && this.focus()
                    }, e.prototype.moveCursorToEnd = function(e) {
                        var t = this.view.state.tr;
                        this.view.dispatch(t.setSelection(Os(t, t.doc.content.size - 1)).scrollIntoView()), e && this.focus()
                    }, e.prototype.setScrollTop = function(e) {
                        this.view.dom.scrollTop = e
                    }, e.prototype.getScrollTop = function() {
                        return this.view.dom.scrollTop
                    }, e.prototype.setPlaceholder = function(e) {
                        this.placeholder.text = e, this.view.dispatch(this.view.state.tr.scrollIntoView())
                    }, e.prototype.setHeight = function(e) {
                        be()(this.el, {
                            height: e + "px"
                        })
                    }, e.prototype.setMinHeight = function(e) {
                        be()(this.el, {
                            minHeight: e + "px"
                        })
                    }, e.prototype.getElement = function() {
                        return this.el
                    }, e
                }(),
                Wa = Ua,
                Ja = n(294),
                Ga = n.n(Ja),
                Ka = ["Enter", "Shift-Enter", "Mod-Enter", "Tab", "Shift-Tab", "Delete", "Backspace", "Mod-Delete", "Mod-Backspace", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Mod-d", "Mod-D", "Alt-ArrowUp", "Alt-ArrowDown"];

            function Za(e, t, n) {
                return e.focus(), t(n)(e.state, e.dispatch, e)
            }
            var Xa = function() {
                    function e(e) {
                        this.specs = e
                    }
                    return Object.defineProperty(e.prototype, "nodes", {
                        get: function() {
                            return this.specs.filter((function(e) {
                                return "node" === e.type
                            })).reduce((function(e, t) {
                                var n, r = t.name,
                                    i = t.schema;
                                return o(o({}, e), ((n = {})[r] = i, n))
                            }), {})
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(e.prototype, "marks", {
                        get: function() {
                            return this.specs.filter((function(e) {
                                return "mark" === e.type
                            })).reduce((function(e, t) {
                                var n, r = t.name,
                                    i = t.schema;
                                return o(o({}, e), ((n = {})[r] = i, n))
                            }), {})
                        },
                        enumerable: !1,
                        configurable: !0
                    }), e.prototype.commands = function(e, t) {
                        var n = this.specs.filter((function(e) {
                                return e.commands
                            })).reduce((function(t, n) {
                                var r = {},
                                    i = n.commands();
                                return Ga()(i) ? r[n.name] = function(t) {
                                    return Za(e, i, t)
                                } : Object.keys(i).forEach((function(t) {
                                    r[t] = function(n) {
                                        return Za(e, i[t], n)
                                    }
                                })), o(o({}, t), r)
                            }), {}),
                            r = ia();
                        return Object.keys(r).forEach((function(t) {
                            n[t] = function(n) {
                                return Za(e, r[t], n)
                            }
                        })), t && Object.keys(t).forEach((function(r) {
                            n[r] = function(n) {
                                return Za(e, t[r], n)
                            }
                        })), n
                    }, e.prototype.keymaps = function(e) {
                        return this.specs.filter((function(e) {
                            return e.keymaps
                        })).map((function(e) {
                            return e.keymaps()
                        })).map((function(t) {
                            return e || Object.keys(t).forEach((function(e) {
                                Ue(Ka, e) || delete t[e]
                            })), Ai(t)
                        }))
                    }, e.prototype.setContext = function(e) {
                        this.specs.forEach((function(t) {
                            t.setContext(e)
                        }))
                    }, e
                }(),
                Qa = Xa;

            function Ya(e) {
                var t = e.from,
                    n = e.to;
                return e instanceof Kt ? [t + 1, n - 1] : [t, n]
            }

            function el(e) {
                return e.index(0) + 1
            }

            function tl(e, t, n) {
                void 0 === n && (n = 1);
                var r = 0;
                return e.forEach((function(e, o) {
                    $a(e) && o + 2 < t && (r += 2 * n)
                })), r
            }

            function nl(e, t, n) {
                void 0 === n && (n = t);
                var r = t === n,
                    o = e.resolve(t),
                    i = el(o),
                    s = i,
                    a = o.start(1),
                    l = a;
                if (!r) {
                    var c = e.resolve(n === e.content.size ? n - 1 : n);
                    l = c.start(1), s = el(c), c.pos === e.content.size && (n = e.content.size - 2)
                }
                var u = Math.max(t - a + 1, 1),
                    d = Math.max(n - l + 1, 1);
                return [
                    [i, u + tl(e.child(i - 1), u, -1)],
                    [s, d + tl(e.child(s - 1), d, -1)]
                ]
            }

            function rl(e, t) {
                for (var n = [], r = 0, o = 0; r < t; r += 1) {
                    var i = e.child(r);
                    n[r] = o, o += i.nodeSize
                }
                return n
            }

            function ol(e, t, n) {
                var r = rl(e, n[0]),
                    o = t[0] - 1,
                    i = n[0] - 1,
                    s = e.child(o),
                    a = e.child(i),
                    l = r[o],
                    c = r[i];
                return l += t[1] + tl(s, t[1] - 1), c += n[1] + tl(a, n[1] - 1), [l, Math.min(c, e.content.size)]
            }

            function il(e) {
                var t = e.$from,
                    n = e.$to,
                    r = e.from,
                    o = e.to,
                    i = t.doc;
                return e instanceof Kt && (t = i.resolve(r + 1), n = i.resolve(o - 1)), 0 === t.depth && (n = t = i.resolve(r - 1)), {
                    startFromOffset: t.start(1),
                    endFromOffset: n.start(1),
                    startToOffset: t.end(1),
                    endToOffset: n.end(1),
                    startIndex: t.index(0),
                    endIndex: n.index(0),
                    from: t.pos,
                    to: n.pos
                }
            }

            function sl(e, t) {
                for (var n = 1, r = 1, o = 0, i = 0; o < e.childCount; o += 1) {
                    var s = e.child(o).nodeSize;
                    if (n = i + 1, r = i + s - 1, o === t) break;
                    i += s
                }
                return {
                    startOffset: n,
                    endOffset: r
                }
            }
            var al = "heading",
                ll = "link",
                cl = "code",
                ul = "meta",
                dl = "delimiter",
                pl = "markedText",
                hl = {
                    strong: 2,
                    emph: 1,
                    strike: 2
                };

            function fl(e, t, n, r) {
                return {
                    start: e,
                    end: t,
                    spec: {
                        type: n,
                        attrs: r
                    }
                }
            }

            function ml(e, t, n) {
                var r = e.type,
                    o = $s(t, hl[r]),
                    i = $s(n, -hl[r]);
                return [fl(o, i, r), fl(t, o, dl), fl(i, n, dl)]
            }

            function gl(e, t, n, r) {
                return [fl(e, t, ll), fl(_s(e, n[1] + 1), _s(t, r), ll, {
                    desc: !0
                }), fl(_s(t, r + 2), $s(t, -1), ll, {
                    url: !0
                })]
            }

            function vl(e, t, n, r) {
                var i = {
                    start: t,
                    end: n,
                    spec: {
                        attrs: {
                            className: r + "-line-background",
                            codeStart: t[0],
                            codeEnd: n[0]
                        }
                    },
                    lineBackground: !0
                };
                return "item" !== e.type && "blockQuote" !== e.type ? [o(o({}, i), {
                    end: t,
                    spec: {
                        attrs: {
                            className: r + "-line-background start"
                        }
                    }
                }), o(o({}, i), {
                    start: [Math.min(t[0] + 1, n[0]), t[1]]
                })] : null
            }

            function yl(e, t) {
                for (var n = []; e;) {
                    var r = e.type;
                    "paragraph" !== r && "codeBlock" !== r || n.push(fl([Is(e), Ps(e) - 1], [Rs(e), Bs(e) + 1], t)), e = e.next
                }
                return n
            }
            var bl = {
                    heading: function(e, t, n) {
                        var r = e.level,
                            o = e.headingType,
                            i = [fl(t, n, al, {
                                level: r
                            })];
                        return "atx" === o ? i.push(fl(t, $s(t, r), dl)) : i.push(fl(_s(n, 0), n, al, {
                            seText: !0
                        })), i
                    },
                    strong: ml,
                    emph: ml,
                    strike: ml,
                    link: function(e, t, n) {
                        var r = e.lastChild,
                            o = e.extendedAutolink,
                            i = r ? Bs(r) + 1 : 2;
                        return o ? [fl(t, n, ll, {
                            desc: !0
                        })] : gl(t, n, t, i)
                    },
                    image: function(e, t, n) {
                        var r = e.lastChild,
                            o = r ? Bs(r) + 1 : 3,
                            s = $s(t, 1);
                        return i([fl(t, s, ul)], gl(t, n, s, o))
                    },
                    code: function(e, t, n) {
                        var r = e.tickCount,
                            o = $s(t, r),
                            i = $s(n, -r);
                        return [fl(t, n, cl), fl(t, o, cl, {
                            start: !0
                        }), fl(o, i, cl, {
                            marked: !0
                        }), fl(i, n, cl, {
                            end: !0
                        })]
                    },
                    codeBlock: function(e, t, n, r) {
                        var o = e.fenceOffset,
                            i = e.fenceLength,
                            s = e.fenceChar,
                            a = e.info,
                            l = e.infoPadding,
                            c = e.parent,
                            u = o + i,
                            d = [fl(_s(t, 1), n, "codeBlock")];
                        s && d.push(fl(t, $s(t, u), dl)), a && d.push(fl($s(t, i), $s(t, i + l + a.length), ul)), new RegExp("^(\\s{0,4})(" + s + "{" + i + ",})").test(r) && d.push(fl(_s(n, 1), n, dl));
                        var p = vl(c, t, n, "code-block");
                        return p ? d.concat(p) : d
                    },
                    blockQuote: function(e, t, n) {
                        var r = e.parent && "blockQuote" !== e.parent.type ? [fl(t, n, "blockQuote")] : [];
                        if (e.firstChild) {
                            var o = [];
                            "paragraph" === e.firstChild.type ? o = function(e) {
                                for (var t = []; e;) t.push(fl([Is(e), Ps(e)], [Rs(e), Bs(e) + 1], pl)), e = e.next;
                                return t
                            }(e.firstChild.firstChild) : "list" === e.firstChild.type && (o = yl(e.firstChild, pl)), r = i(i([], r), o)
                        }
                        return r
                    },
                    item: function(e, t) {
                        var n = e.listData,
                            r = n.padding,
                            s = n.task,
                            a = function(e) {
                                for (var t = 0; e.parent.parent && "item" === e.parent.parent.type;) e = e.parent.parent, t += 1;
                                return ["listItem", o(o({}, [{
                                    odd: !0
                                }, {
                                    even: !0
                                }][t % 2]), {
                                    listStyle: !0
                                })]
                            }(e),
                            l = [fl.apply(void 0, i([t, $s(t, r)], a))];
                        return s && (l.push(fl($s(t, r), $s(t, r + 3), "taskDelimiter")), l.push(fl($s(t, r + 1), $s(t, r + 2), ul))), l.concat(yl(e.firstChild, pl))
                    },
                    customBlock: function(e, t, n) {
                        var r = e,
                            o = r.offset,
                            i = r.syntaxLength,
                            s = r.info,
                            a = r.parent,
                            l = o + i,
                            c = [fl(_s(t, 1), n, "customBlock")];
                        c.push(fl(t, $s(t, l), dl)), s && c.push(fl($s(t, l), $s(t, i + s.length), ul)), c.push(fl(_s(n, 1), n, dl));
                        var u = vl(a, t, n, "custom-block");
                        return u ? c.concat(u) : c
                    }
                },
                wl = {
                    thematicBreak: "thematicBreak",
                    table: "table",
                    tableCell: "tableCell",
                    htmlInline: "html"
                };

            function kl(e, t, n, r) {
                var o = e.type;
                return Ga()(bl[o]) ? bl[o](e, t, n, r) : wl[o] ? [fl(t, n, wl[o])] : null
            }
            var xl = {};

            function Cl(e) {
                var t = e.schema,
                    n = e.toastMark;
                return new an({
                    appendTransaction: function(e, r, o) {
                        var i = e[0],
                            s = o.tr;
                        if (i.docChanged) {
                            var a = [];
                            i.getMeta("editResult").forEach((function(e) {
                                var t = e.nodes,
                                    r = e.removedNodeRange;
                                if (t.length) {
                                    a = a.concat(function(e, t) {
                                        var n = e.doc,
                                            r = t[0].sourcepos[0],
                                            o = et(t).sourcepos[1],
                                            i = [r[0], r[1]],
                                            s = [o[0], o[1] + 1],
                                            a = [];
                                        return function(e, t, n) {
                                            var r = [];
                                            xl = {};
                                            for (var o = t[0] - 1; o < n[0]; o += 1) {
                                                var i = e.child(o),
                                                    s = i.attrs.codeEnd,
                                                    a = i.attrs.codeStart;
                                                if (a && s && !Ue(r, a)) {
                                                    r.push(a), s = Math.min(s, e.childCount);
                                                    for (var l = a - 1, c = n[0], u = l; u < c; u += 1) xl[u] = !0
                                                }
                                            }
                                        }(n, r, o), a.push({
                                            start: i,
                                            end: s
                                        }), a
                                    }(s, t));
                                    for (var o = 0, i = t; o < i.length; o++)
                                        for (var l = i[o].walker(), c = l.next(); c;) {
                                            var u = c.node;
                                            c.entering && (a = a.concat(Ml(u, n))), c = l.next()
                                        }
                                } else if (r)
                                    for (var d = s.doc.childCount - 1, p = r.line, h = p[0], f = p[1], m = Math.min(h, d), g = Math.min(f, d), v = m; v <= g; v += 1) xl[v] = !0
                            })),
                                function(e, t, n) {
                                    var r = e.doc,
                                        o = t.nodes.paragraph,
                                        i = rl(r, r.childCount);
                                    n.forEach((function(n) {
                                        var s = n.start,
                                            a = n.end,
                                            l = n.spec,
                                            c = n.lineBackground,
                                            u = Math.min(s[0], r.childCount) - 1,
                                            d = Math.min(a[0], r.childCount) - 1,
                                            p = r.child(u),
                                            h = r.child(d),
                                            f = i[u],
                                            m = i[d];
                                        (f += s[1] + tl(p, s[1] - 1), m += a[1] + tl(h, a[1] - 1), l) ? c ? function(e, t, n, r, o) {
                                            void 0 === o && (o = {});
                                            for (var i = r.startIndex, s = r.endIndex, a = r.from, l = r.to, c = !1, u = i; u <= s; u += 1) delete xl[u], c = Tl(t, u, o);
                                            c && e.setBlockType(a, l, n, o)
                                        }(e, r, o, {
                                            from: f,
                                            to: m,
                                            startIndex: u,
                                            endIndex: d
                                        }, l.attrs) : e.addMark(f, m, t.mark(l.type, l.attrs)): e.removeMark(f, m)
                                    })),
                                        function(e, t, n) {
                                            Object.keys(xl).forEach((function(r) {
                                                var o = Number(r),
                                                    i = Math.min(Number(r) + 1, e.doc.childCount - 1),
                                                    s = t[o],
                                                    a = t[i] - 1;
                                                o === i && (a += 2), e.setBlockType(s, a, n)
                                            }))
                                        }(e, i, o)
                                }(s, t, a)
                        }
                        return s.setMeta("widget", i.getMeta("widget"))
                    }
                })
            }

            function Tl(e, t, n) {
                return Object.keys(n).some((function(r) {
                    return n[r] !== e.child(t).attrs[r]
                }))
            }

            function Ml(e, t) {
                var n = t.getLineTexts(),
                    r = [Is(e), Ps(e)],
                    o = [Rs(e), Bs(e) + 1],
                    i = kl(e, r, o, n[o[0] - 1]);
                return null != i ? i : []
            }
            var Sl = ["taskList", "orderedList", "bulletList", "table", "strong", "emph", "strike", "heading", "thematicBreak", "blockQuote", "code", "codeBlock", "indent", "outdent"];

            function El(e) {
                var t = {
                        indent: {
                            active: !1,
                            disabled: !0
                        },
                        outdent: {
                            active: !1,
                            disabled: !0
                        }
                    },
                    n = !0;
                return function(e, t, n) {
                    for (void 0 === n && (n = !0), e = n ? e : e.parent; e && "document" !== e.type;) t(e), e = e.parent
                }(e, (function(e) {
                    var r = function(e) {
                        var t = e.type;
                        return Hs(e) ? e.listData.task ? "taskList" : "ordered" === e.listData.type ? "orderedList" : "bulletList" : -1 !== t.indexOf("table") ? "table" : Ue(Sl, t) ? t : null
                    }(e);
                    r && ("bulletList" === r || "orderedList" === r ? n && (t[r] = {
                        active: !0
                    }, t.indent.disabled = !1, t.outdent.disabled = !1, n = !1) : t[r] = {
                        active: !0
                    })
                })), t
            }

            function Nl(e) {
                var t = e.toastMark,
                    n = e.eventEmitter;
                return new an({
                    view: function() {
                        return {
                            update: function(e, r) {
                                var o = e.state,
                                    i = o.doc,
                                    s = o.selection;
                                if (!(r && r.doc.eq(i) && r.selection.eq(s))) {
                                    var a = s.from,
                                        l = o.doc.resolve(a).start(),
                                        c = a - l;
                                    a === l && (c += 1);
                                    var u = [o.doc.content.findIndex(a).index + 1, c],
                                        d = t.findNodeAtPosition(u),
                                        p = El(d);
                                    n.emit("changeToolbarState", {
                                        cursorPos: u,
                                        mdNode: d,
                                        toolbarState: p
                                    }), n.emit("setFocusedNode", d)
                                }
                            }
                        }
                    }
                })
            }
            var Ol = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "doc"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "block+"
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                Dl = function() {
                    function e() {}
                    return Object.defineProperty(e.prototype, "type", {
                        get: function() {
                            return "mark"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), e.prototype.setContext = function(e) {
                        this.context = e
                    }, e
                }(),
                Al = Dl;

            function Ll(e, t) {
                return Il(e, t - 1)
            }

            function Il(e, t) {
                return e.child(t).textContent
            }
            var Rl = /^\s*> ?/,
                Pl = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "blockQuote"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("block-quote")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.createBlockQuoteText = function(e, t) {
                        return t ? e.replace(Rl, "").trim() : "> " + e.trim()
                    }, n.prototype.extendBlockQuote = function() {
                        var e = this;
                        return function(t, n) {
                            var r = t.selection,
                                o = t.doc,
                                i = t.tr,
                                s = t.schema,
                                a = il(r),
                                l = a.endFromOffset,
                                c = a.endToOffset,
                                u = a.endIndex,
                                d = a.to,
                                p = Il(o, u);
                            if (Rl.test(p) && d > l && r.empty) {
                                if (!p.replace(Rl, "").trim()) i.deleteRange(l, c).split(i.mapping.map(c));
                                else {
                                    var h = p.slice(d - l).trim();
                                    Ls(i, c, h, Ns(s, e.createBlockQuoteText(h)))
                                }
                                return n(i), !0
                            }
                            return !1
                        }
                    }, n.prototype.commands = function() {
                        var e = this;
                        return function() {
                            return function(t, n) {
                                var r = t.selection,
                                    o = t.doc,
                                    i = il(r),
                                    s = i.startFromOffset,
                                    a = i.endToOffset,
                                    l = i.startIndex,
                                    c = i.endIndex,
                                    u = Rl.test(Il(o, l)),
                                    d = As({
                                        state: t,
                                        startIndex: l,
                                        endIndex: c,
                                        from: s,
                                        createText: function(t) {
                                            return e.createBlockQuoteText(t, u)
                                        }
                                    });
                                return n(d.setSelection(Os(d, d.mapping.map(a)))), !0
                            }
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "alt-q": e,
                            "alt-Q": e,
                            Enter: this.extendBlockQuote()
                        }
                    }, n
                }(Al),
                Bl = /(^\s*)([-*+] |[\d]+\. )/,
                Fl = /(^\s*)([\d])+\.( \[[ xX]])? /,
                Hl = /^(\s*)((\d+)([.)]\s(?:\[(?:x|\s)\]\s)?))(.*)/,
                zl = /(^\s*)([-*+]|[\d]+\.)( \[[ xX]])? /,
                ql = /^(\s*)([-*+]+(\s(?:\[(?:x|\s)\]\s)?))(.*)/,
                Vl = /(^\s*)([-*+] |[\d]+\. )(\[[ xX]] )/,
                jl = /(^\s*)([-*+])( \[[ xX]]) /;

            function $l(e) {
                return Fl.test(e) ? "ordered" : "bullet"
            }

            function _l(e) {
                for (var t = 0; e && "document" !== e.type;) "list" === e.type && (t += 1), e = e.parent;
                return t
            }

            function Ul(e, t, n, r) {
                for (var o = e.getLineTexts().length, i = [], s = t; r ? s < o : s > 1;) {
                    s = r ? s + 1 : s - 1;
                    var a = e.findFirstNodeAtLine(s),
                        l = _l(a);
                    if (l === n) i.push({
                        line: s,
                        depth: n,
                        mdNode: a
                    });
                    else if (l < n) break
                }
                return i
            }

            function Wl(e, t, n, r) {
                void 0 === r && (r = 0);
                var o = Number.MAX_VALUE,
                    i = 0,
                    s = t.map((function(t, s) {
                        var a = t.line;
                        o = Math.min(a - 1, o), i = Math.max(a - 1, i);
                        var l = Ll(e, a);
                        return l = "bullet" === n ? function(e) {
                            if (!Bl.test(e)) return "* " + e;
                            var t = $l(e);
                            return "bullet" === t && zl.test(e) ? e = e.replace(jl, "$1$2 ") : "ordered" === t && (e = e.replace(Fl, "$1* ")), e
                        }(l) : function(e, t) {
                            if (!Bl.test(e)) return t + ". " + e;
                            var n = $l(e);
                            if ("bullet" === n || "ordered" === n && zl.test(e)) e = e.replace(zl, "$1" + t + ". ");
                            else if ("ordered" === n) {
                                var r = Hl.exec(e)[3];
                                Number(r) !== t && (e = e.replace(Fl, "$1" + t + ". "))
                            }
                            return e
                        }(l, s + 1 + r), {
                            text: l,
                            line: a
                        }
                    }));
                return {
                    changedResults: s,
                    firstIndex: o,
                    lastIndex: i
                }
            }

            function Jl(e, t) {
                var n, r, o, i, s, a, l, c = (r = (n = t).toastMark, o = n.mdNode, i = n.line, s = _l(o), a = Ul(r, i, s, !1).reverse(), l = Ul(r, i, s, !0), a.concat([{
                    line: i,
                    depth: s,
                    mdNode: o
                }]).concat(l));
                return Wl(t.doc, c, e)
            }
            var Gl = {
                    bullet: function(e) {
                        return Jl("bullet", e)
                    },
                    ordered: function(e) {
                        return Jl("ordered", e)
                    },
                    task: function(e) {
                        var t = e.mdNode,
                            n = e.doc,
                            r = e.line,
                            o = Ll(n, r);
                        return t.listData.task ? o = o.replace(Vl, "$1$2") : Hs(t) && (o = o.replace(Bl, "$1$2[ ] ")), {
                            changedResults: [{
                                text: o,
                                line: r
                            }]
                        }
                    }
                },
                Kl = {
                    bullet: function(e) {
                        var t = e.doc,
                            n = e.line;
                        return {
                            changedResults: [{
                                text: "* " + Ll(t, n),
                                line: n
                            }]
                        }
                    },
                    ordered: function(e) {
                        for (var t = e.toastMark, n = e.doc, r = e.line, o = e.startLine, i = Ll(n, r), s = 1, a = o, l = 0, c = o - 1; c > 0; c -= 1) {
                            var u = t.findFirstNodeAtLine(c),
                                d = Ll(n, c) && !!js(u, (function(e) {
                                    return Hs(e)
                                })),
                                p = Hl.exec(Ll(n, c));
                            if (!p && !d) break;
                            if (p || !d) {
                                var h = p,
                                    f = h[1],
                                    m = h[3];
                                if (!f) {
                                    s = Number(m), a = c;
                                    break
                                }
                            } else l += 1
                        }
                        return {
                            changedResults: [{
                                text: s + r - a - l + ". " + i,
                                line: r
                            }]
                        }
                    },
                    task: function(e) {
                        var t = e.doc,
                            n = e.line;
                        return {
                            changedResults: [{
                                text: "* [ ] " + Ll(t, n),
                                line: n
                            }]
                        }
                    }
                },
                Zl = {
                    bullet: function(e) {
                        var t = e.line,
                            n = Ll(e.doc, t),
                            r = ql.exec(n);
                        return {
                            listSyntax: "" + r[1] + r[2]
                        }
                    },
                    ordered: function(e) {
                        var t = e.toastMark,
                            n = e.line,
                            r = e.mdNode,
                            i = e.doc,
                            s = _l(r),
                            a = Ll(i, n),
                            l = Hl.exec(a),
                            c = l[1],
                            u = l[3],
                            d = l[4],
                            p = Number(u) + 1,
                            h = "" + c + p + d,
                            f = Ul(t, n, s, !0).filter((function(e) {
                                var t = Hl.exec(Ll(i, e.line));
                                return t && t[1].length === c.length && !!js(e.mdNode, (function(e) {
                                    return zs(e)
                                }))
                            }));
                        return o({
                            listSyntax: h
                        }, Wl(i, f, "ordered", p))
                    }
                };

            function Xl(e, t, n, r, o) {
                for (var i = [], s = Ll(e, n), a = Hl.exec(s); a;) {
                    var l = a[1],
                        c = a[4],
                        u = a[5],
                        d = l.length;
                    if (d === o) i.push(Ns(t, "" + l + r + c + u)), r += 1, n += 1;
                    else if (d > o) {
                        var p = Xl(e, t, n, 1, d);
                        n = p.line, i = i.concat(p.nodes)
                    }
                    if (d < o || n > e.childCount) break;
                    s = Ll(e, n), a = Hl.exec(s)
                }
                return {
                    nodes: i,
                    line: n
                }
            }
            var Ql = /(^\s{1,4})(.*)/;

            function Yl(e, t, n) {
                return e < t || Bl.test(n) || Rl.test(n)
            }

            function ec(e, t, n) {
                var r = n.$from;
                0 === r.depth && (r = e.resolve(r.pos - 1));
                var o = r.node(1),
                    i = r.start(1),
                    s = o.content.size;
                return o.rangeHasMark(0, s, t.marks.table) && r.pos - i !== s && r.pos !== i
            }

            function tc(e, t) {
                var n = t.from,
                    r = t.to;
                if ("indent" === t.type) {
                    n += 4, r += 4 * (t.lineLen + 1)
                } else {
                    var o = t.spaceLenList;
                    n -= o[0];
                    for (var i = 0; i < o.length; i += 1) r -= o[i]
                }
                return Os(e, n, r)
            }
            var nc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "paragraph"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "inline*",
                                attrs: {
                                    className: {
                                        default: null
                                    },
                                    codeStart: {
                                        default: null
                                    },
                                    codeEnd: {
                                        default: null
                                    }
                                },
                                selectable: !1,
                                group: "block",
                                parseDOM: [{
                                    tag: "div"
                                }],
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return t.className ? ["div", {
                                        class: Ca(t.className)
                                    }, 0] : ["div", 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.reorderList = function(e, t) {
                        for (var n = this.context, r = n.view, o = n.toastMark, i = n.schema, s = r.state, a = s.tr, l = s.selection, c = s.doc, u = o.findFirstNodeAtLine(e), d = u; u && !qs(u) && "document" !== u.parent.type;)
                            if (zs(u = u.parent)) {
                                d = u;
                                break
                            } d && (e = d.sourcepos[0][0]);
                        var p = Hl.exec(Ll(c, e)),
                            h = p[1],
                            f = p[3],
                            m = h.length,
                            g = Xl(c, i, e, Number(f), m),
                            v = g.line,
                            y = g.nodes;
                        t = Math.max(t, v - 1);
                        for (var b = sl(c, e - 1).startOffset, w = e - 1; w <= t - 1; w += 1) {
                            var k = c.child(w),
                                x = k.nodeSize,
                                C = k.content,
                                T = a.mapping.map(b),
                                M = T + C.size;
                            a.replaceWith(T, M, y[w - e + 1]), b += x
                        }
                        var S = Os(a, l.from, l.to);
                        r.dispatch(a.setSelection(S))
                    }, n.prototype.indent = function(e) {
                        var t = this;
                        return void 0 === e && (e = !1),
                            function() {
                                return function(n, r) {
                                    var o = n.schema,
                                        i = n.selection,
                                        s = n.doc,
                                        a = il(i),
                                        l = a.from,
                                        c = a.to,
                                        u = a.startFromOffset,
                                        d = a.startIndex,
                                        p = a.endIndex;
                                    if (e && ec(s, o, i)) return !1;
                                    var h = Il(s, d);
                                    if (e && Yl(l, c, h) || !e && Bl.test(h)) {
                                        var f = As({
                                                state: n,
                                                from: u,
                                                startIndex: d,
                                                endIndex: p,
                                                createText: function(e) {
                                                    return "    " + e
                                                }
                                            }),
                                            m = {
                                                type: "indent",
                                                from: l,
                                                to: c,
                                                lineLen: p - d
                                            };
                                        r(f.setSelection(tc(f, m))), Hl.test(h) && t.reorderList(d + 1, p + 1)
                                    } else e && r(n.tr.insert(c, Ns(o, "    ")));
                                    return !0
                                }
                            }
                    }, n.prototype.outdent = function(e) {
                        var t = this;
                        return void 0 === e && (e = !1),
                            function() {
                                return function(n, r) {
                                    var o = n.selection,
                                        i = n.doc,
                                        s = n.schema,
                                        a = il(o),
                                        l = a.from,
                                        c = a.to,
                                        u = a.startFromOffset,
                                        d = a.startIndex,
                                        p = a.endIndex;
                                    if (e && ec(i, s, o)) return !1;
                                    var h = Il(i, d);
                                    if (e && Yl(l, c, h) || !e && Bl.test(h)) {
                                        var f = [],
                                            m = As({
                                                state: n,
                                                from: u,
                                                startIndex: d,
                                                endIndex: p,
                                                createText: function(e) {
                                                    var t = Ql.exec(e);
                                                    return f.push(t ? t[1].length : 0), e.replace(Ql, "$2")
                                                }
                                            }),
                                            g = {
                                                type: "outdent",
                                                from: l,
                                                to: c,
                                                spaceLenList: f
                                            };
                                        r(m.setSelection(tc(m, g))), Hl.test(h) && t.reorderList(d + 1, p + 1)
                                    } else if (e) {
                                        var v = h.slice(0, c - u),
                                            y = v.replace(/\s{1,4}$/, ""),
                                            b = c - (v.length - y.length);
                                        r(n.tr.delete(b, c))
                                    }
                                    return !0
                                }
                            }
                    }, n.prototype.deleteLines = function() {
                        var e = this;
                        return function(t, n) {
                            var r = e.context.view,
                                o = il(t.selection),
                                i = o.startFromOffset,
                                s = o.endToOffset;
                            return Zi((function() {
                                return n(t.tr.deleteRange(i, s)), !0
                            }), Bi)(t, n, r)
                        }
                    }, n.prototype.moveDown = function() {
                        return function(e, t) {
                            var n = e.doc,
                                r = e.tr,
                                o = e.selection,
                                i = e.schema,
                                s = il(o),
                                a = s.startFromOffset,
                                l = s.endToOffset,
                                c = s.endIndex;
                            if (c < n.content.childCount - 1) {
                                var u = n.child(c + 1),
                                    d = u.nodeSize,
                                    p = u.textContent;
                                return r.delete(l, l + d).split(a).insert(r.mapping.map(a) - 2, Ns(i, p)), t(r), !0
                            }
                            return !1
                        }
                    }, n.prototype.moveUp = function() {
                        return function(e, t) {
                            var n = e.tr,
                                r = e.doc,
                                o = e.selection,
                                i = e.schema,
                                s = il(o),
                                a = s.startFromOffset,
                                l = s.endToOffset,
                                c = s.startIndex;
                            if (c > 0) {
                                var u = r.child(c - 1),
                                    d = u.nodeSize,
                                    p = u.textContent;
                                return n.delete(a - d, a).split(n.mapping.map(l)).insert(n.mapping.map(l), Ns(i, p)), t(n), !0
                            }
                            return !1
                        }
                    }, n.prototype.commands = function() {
                        return {
                            indent: this.indent(),
                            outdent: this.outdent()
                        }
                    }, n.prototype.keymaps = function() {
                        return {
                            Tab: this.indent(!0)(),
                            "Shift-Tab": this.outdent(!0)(),
                            "Mod-d": this.deleteLines(),
                            "Mod-D": this.deleteLines(),
                            "Alt-ArrowUp": this.moveUp(),
                            "Alt-ArrowDown": this.moveDown()
                        }
                    }, n
                }(Va),
                rc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "text"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                group: "inline"
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                oc = /^#{1,6}\s/,
                ic = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "heading"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                attrs: {
                                    level: {
                                        default: 1
                                    },
                                    seText: {
                                        default: !1
                                    }
                                },
                                toDOM: function(e) {
                                    var t = e.attrs,
                                        n = "heading|heading" + t.level;
                                    return t.seText && (n += "|delimiter|setext"), ["span", {
                                        class: Ca.apply(void 0, n.split("|"))
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.createHeadingText = function(e, t, n) {
                        for (var r = t.replace(n, "").trim(), o = ""; e > 0;) o += "#", e -= 1;
                        return o + " " + r
                    }, n.prototype.commands = function() {
                        var e = this;
                        return function(t) {
                            return function(n, r) {
                                var o = t.level,
                                    i = il(n.selection),
                                    s = i.startFromOffset,
                                    a = i.endToOffset,
                                    l = As({
                                        state: n,
                                        from: s,
                                        startIndex: i.startIndex,
                                        endIndex: i.endIndex,
                                        createText: function(t) {
                                            var n = t.match(oc),
                                                r = n ? n[0] : "";
                                            return e.createHeadingText(o, t, r)
                                        }
                                    });
                                return r(l.setSelection(Os(l, l.mapping.map(a)))), !0
                            }
                        }
                    }, n
                }(Al),
                sc = "```",
                ac = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "codeBlock"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("code-block")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t) {
                                var n = e.selection,
                                    r = e.schema,
                                    o = e.tr,
                                    i = il(n),
                                    s = i.startFromOffset,
                                    a = i.endToOffset,
                                    l = Ns(r, sc);
                                return o.insert(s, l).split(s + sc.length), o.split(o.mapping.map(a)).insert(o.mapping.map(a), l), t(o.setSelection(Os(o, o.mapping.map(a) - (sc.length + 2)))), !0
                            }
                        }
                    }, n.prototype.keepIndentation = function() {
                        var e = this;
                        return function(t, n) {
                            var r = t.selection,
                                o = t.tr,
                                i = t.doc,
                                s = t.schema,
                                a = e.context.toastMark,
                                l = il(r),
                                c = l.startFromOffset,
                                u = l.endToOffset,
                                d = l.endIndex,
                                p = l.from,
                                h = l.to,
                                f = Il(i, d);
                            if (p === h && f.trim()) {
                                var m = f.match(/^\s+/);
                                if (function(e) {
                                    return e && "codeBlock" === e.type
                                }(a.findFirstNodeAtLine(d + 1)) && m) {
                                    var g = m[0],
                                        v = f.slice(h - c);
                                    return Ls(o, u, v, Ns(s, g + v)), n(o), !0
                                }
                            }
                            return !1
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "Shift-Mod-p": e,
                            "Shift-Mod-P": e,
                            Enter: this.keepIndentation()
                        }
                    }, n
                }(Al),
                lc = /\||\s/g;

            function cc(e, t) {
                for (var n = "|", r = 0; r < e; r += 1) n += t ? " --- |" : "  |";
                return n
            }
            var uc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "table"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("table")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.extendTable = function() {
                        var e = this;
                        return function(t, n) {
                            var r = t.selection,
                                o = t.doc,
                                i = t.tr,
                                s = t.schema;
                            if (!r.empty) return !1;
                            var a = il(r),
                                l = a.endFromOffset,
                                c = a.endToOffset,
                                u = a.endIndex,
                                d = a.to,
                                p = Il(o, u),
                                h = [u + 1, d - l + 1],
                                f = js(e.context.toastMark.findNodeAtPosition(h), (function(e) {
                                    return Vs(e) && ("tableDelimRow" === e.parent.type || "tableBody" === e.parent.parent.type)
                                }));
                            if (f) {
                                var m = !p.replace(lc, "").trim(),
                                    g = cc(f.parent.parent.parent.columns.length);
                                return m ? i.deleteRange(l, c).split(i.mapping.map(c)) : i.split(c).insert(i.mapping.map(c), Ns(s, g)).setSelection(Os(i, i.mapping.map(c) - 2)), n(i), !0
                            }
                            return !1
                        }
                    }, n.prototype.moveTableCell = function(e) {
                        var t = this;
                        return function(n, r) {
                            var o = n.selection,
                                i = n.tr,
                                s = il(o),
                                a = s.endFromOffset,
                                l = [s.endIndex + 1, s.to - a],
                                c = js(t.context.toastMark.findNodeAtPosition(l), (function(e) {
                                    return Vs(e)
                                }));
                            if (c) {
                                var u = c.parent,
                                    d = function(e) {
                                        return e ? {
                                            type: "next",
                                            parentType: "tableHead",
                                            childType: "firstChild"
                                        } : {
                                            type: "prev",
                                            parentType: "tableBody",
                                            childType: "lastChild"
                                        }
                                    }(e),
                                    p = d.type,
                                    h = d.parentType,
                                    f = d.childType,
                                    m = Bs(c);
                                if (c[p]) m = Bs(c[p]) - 1;
                                else {
                                    var g = u[p] || u.parent.type !== h ? u[p] : u.parent[p][f];
                                    if ("next" === p) m += (g ? Bs(g[f]) : 0) + 2;
                                    else "prev" === p && (m = g ? -4 : 0)
                                }
                                return r(i.setSelection(Os(i, a + m))), !0
                            }
                            return !1
                        }
                    }, n.prototype.addTable = function() {
                        return function(e) {
                            return function(t, n) {
                                var r = t.selection,
                                    o = t.tr,
                                    s = t.schema,
                                    a = e,
                                    l = a.columnCount,
                                    c = a.rowCount,
                                    u = il(r).endToOffset,
                                    d = function(e) {
                                        return [cc(e), cc(e, !0)]
                                    }(l),
                                    p = function(e, t) {
                                        for (var n = [], r = 0; r < t; r += 1) n.push(cc(e));
                                        return n
                                    }(l, c - 1);
                                return i(i([], d), p).forEach((function(e) {
                                    o.split(o.mapping.map(u)).insert(o.mapping.map(u), Ns(s, e))
                                })), n(o.setSelection(Os(o, u + 4))), !0
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            addTable: this.addTable()
                        }
                    }, n.prototype.keymaps = function() {
                        return {
                            Enter: this.extendTable(),
                            Tab: this.moveTableCell(!0),
                            "Shift-Tab": this.moveTableCell(!1)
                        }
                    }, n
                }(Al),
                dc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "thematicBreak"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("thematic-break")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.hr = function() {
                        return function() {
                            return function(e, t) {
                                var n = e.selection,
                                    r = e.schema,
                                    o = e.tr,
                                    i = il(n),
                                    s = i.from,
                                    a = i.to,
                                    l = i.endToOffset,
                                    c = Ns(r, "***");
                                return o.split(s).replaceWith(o.mapping.map(s), o.mapping.map(a), c).split(o.mapping.map(a)).setSelection(Os(o, o.mapping.map(l))), t(o), !0
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            hr: this.hr()
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.hr()();
                        return {
                            "Mod-l": e,
                            "Mod-L": e
                        }
                    }, n
                }(Al);

            function pc(e, t) {
                var n = e.type;
                return t <= e.sourcepos[0][0] && ("codeBlock" === n || "heading" === n || n.match("table"))
            }
            var hc = function(e) {
                function n() {
                    return null !== e && e.apply(this, arguments) || this
                }
                return t(n, e), Object.defineProperty(n.prototype, "name", {
                    get: function() {
                        return "listItem"
                    },
                    enumerable: !1,
                    configurable: !0
                }), Object.defineProperty(n.prototype, "schema", {
                    get: function() {
                        return {
                            attrs: {
                                odd: {
                                    default: !1
                                },
                                even: {
                                    default: !1
                                },
                                listStyle: {
                                    default: !1
                                }
                            },
                            toDOM: function(e) {
                                var t = e.attrs,
                                    n = t.odd,
                                    r = t.even,
                                    o = "list-item";
                                return t.listStyle && (o += "|list-item-style"), n && (o += "|list-item-odd"), r && (o += "|list-item-even"), ["span", {
                                    class: Ca.apply(void 0, o.split("|"))
                                }, 0]
                            }
                        }
                    },
                    enumerable: !1,
                    configurable: !0
                }), n.prototype.extendList = function() {
                    var e = this;
                    return function(t, n) {
                        var r = t.selection,
                            o = t.doc,
                            i = t.schema,
                            s = t.tr,
                            a = e.context.toastMark,
                            l = il(r),
                            c = l.to,
                            u = l.startFromOffset,
                            d = l.endFromOffset,
                            p = l.endIndex,
                            h = l.endToOffset,
                            f = Il(o, p);
                        if (!Bl.test(f) || r.from === u || !r.empty) return !1;
                        if (!f.replace(zl, "").trim()) s.deleteRange(d, h).split(s.mapping.map(h));
                        else {
                            var m = $l(f),
                                g = a.findFirstNodeAtLine(p + 1),
                                v = f.slice(c - d),
                                y = {
                                    toastMark: a,
                                    mdNode: g,
                                    doc: o,
                                    line: p + 1
                                },
                                b = Zl[m](y),
                                w = b.listSyntax,
                                k = b.changedResults;
                            if (null == k ? void 0 : k.length) {
                                s.split(c), k.unshift({
                                    text: w + v,
                                    line: p + 1
                                }), e.changeToListPerLine(s, k, {
                                    from: c,
                                    startLine: k[0].line,
                                    endLine: et(k).line
                                });
                                var x = s.mapping.map(h) - v.length;
                                s.setSelection(Os(s, x))
                            } else {
                                Ls(s, h, v, Ns(i, w + v))
                            }
                        }
                        return n(s), !0
                    }
                }, n.prototype.toList = function(e) {
                    var t = this;
                    return function() {
                        return function(n, r) {
                            for (var o = n.doc, i = n.tr, s = n.selection, a = t.context.toastMark, l = il(s), c = l.startIndex + 1, u = l.endIndex + 1, d = l.endToOffset, p = [], h = c; h <= u; h += 1) {
                                var f = a.findFirstNodeAtLine(h);
                                if (f && pc(f, h)) break;
                                if (-1 === p.indexOf(h)) {
                                    var m = {
                                            toastMark: a,
                                            mdNode: f,
                                            doc: o,
                                            line: h,
                                            startLine: c
                                        },
                                        g = (Hs(f) ? Gl[e](m) : Kl[e](m)).changedResults,
                                        v = t.changeToListPerLine(i, g, {
                                            from: sl(o, g[0].line - 1).startOffset,
                                            startLine: g[0].line,
                                            endLine: et(g).line,
                                            indexDiff: 1
                                        });
                                    d = Math.max(v, d), g && (p = p.concat(g.map((function(e) {
                                        return e.line
                                    }))))
                                }
                            }
                            return r(i.setSelection(Os(i, i.mapping.map(d)))), !0
                        }
                    }
                }, n.prototype.changeToListPerLine = function(e, t, n) {
                    for (var r = n.from, o = n.startLine, i = n.endLine, s = n.indexDiff, a = void 0 === s ? 0 : s, l = 0, c = function(n) {
                        var o = e.doc.child(n),
                            i = o.nodeSize,
                            s = o.content,
                            c = e.mapping.map(r),
                            d = c + s.size,
                            p = t.filter((function(e) {
                                return e.line - a === n
                            }))[0];
                        p && (e.replaceWith(c, d, Ns(u.context.schema, p.text)), l = Math.max(l, r + s.size)), r += i
                    }, u = this, d = o - a; d <= i - a; d += 1) c(d);
                    return l
                }, n.prototype.toggleTask = function() {
                    var e = this;
                    return function(t, n) {
                        for (var r = t.selection, o = t.tr, i = t.doc, s = t.schema, a = e.context.toastMark, l = il(r), c = l.startIndex, u = l.endIndex, d = null, p = c; p <= u; p += 1) {
                            var h = a.findFirstNodeAtLine(p + 1);
                            if (Hs(h) && h.listData.task) {
                                var f = h.listData,
                                    m = f.checked,
                                    g = f.padding,
                                    v = m ? " " : "x",
                                    y = h.sourcepos[0],
                                    b = sl(i, y[0] - 1).startOffset;
                                b += y[1] + g, d = o.replaceWith(b, b + 1, s.text(v))
                            }
                        }
                        return !!d && (n(d), !0)
                    }
                }, n.prototype.commands = function() {
                    return {
                        bulletList: this.toList("bullet"),
                        orderedList: this.toList("ordered"),
                        taskList: this.toList("task")
                    }
                }, n.prototype.keymaps = function() {
                    var e = this.toList("bullet")(),
                        t = this.toList("ordered")(),
                        n = this.toList("task")(),
                        r = this.toggleTask();
                    return {
                        "Mod-u": e,
                        "Mod-U": e,
                        "Mod-o": t,
                        "Mod-O": t,
                        "alt-t": n,
                        "alt-T": n,
                        "Shift-Ctrl-x": r,
                        "Shift-Ctrl-X": r,
                        Enter: this.extendList()
                    }
                }, n
            }(Al);

            function fc(e, t) {
                return function() {
                    return function(n, r) {
                        var o = n.tr,
                            i = n.selection,
                            s = Ga()(e) ? e : function(t) {
                                return e.test(t)
                            },
                            a = t.length,
                            l = o.doc,
                            c = Ya(i),
                            u = c[0],
                            d = c[1],
                            p = Math.max(u - a, 1),
                            h = Math.min(d + a, l.content.size - 1),
                            f = i.content(),
                            m = f.content.textBetween(0, f.content.size, "\n"),
                            g = l.textBetween(p, u, "\n"),
                            v = l.textBetween(d, h, "\n");
                        if (m = "" + g + m + v, g && v && s(m)) o.delete(h - a, h).delete(p, p + a);
                        else {
                            o.insertText(t, d).insertText(t, u);
                            var y = i.empty ? Os(o, u + a) : Os(o, u + a, d + a);
                            o.setSelection(y)
                        }
                        return r(o), !0
                    }
                }
            }
            var mc = /^(\*{2}|_{2}).*([\s\S]*)\1$/m,
                gc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "strong"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("strong")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.bold = function() {
                        return fc(mc, "**")
                    }, n.prototype.commands = function() {
                        return {
                            bold: this.bold()
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.bold()();
                        return {
                            "Mod-b": e,
                            "Mod-B": e
                        }
                    }, n
                }(Al),
                vc = /^(~{2}).*([\s\S]*)\1$/m,
                yc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "strike"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("strike")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return fc(vc, "~~")
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "Mod-s": e,
                            "Mod-S": e
                        }
                    }, n
                }(Al),
                bc = /^(\*|_).*([\s\S]*)\1$/m,
                wc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "emph"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("emph")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.italic = function() {
                        return fc(bc, "*")
                    }, n.prototype.commands = function() {
                        return {
                            italic: this.italic()
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.italic()();
                        return {
                            "Mod-i": e,
                            "Mod-I": e
                        }
                    }, n
                }(Al),
                kc = /^(`).*([\s\S]*)\1$/m,
                xc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "code"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                attrs: {
                                    start: {
                                        default: !1
                                    },
                                    end: {
                                        default: !1
                                    },
                                    marked: {
                                        default: !1
                                    }
                                },
                                toDOM: function(e) {
                                    var t = e.attrs,
                                        n = "code";
                                    return t.start && (n += "|delimiter|start"), t.end && (n += "|delimiter|end"), t.marked && (n += "|marked-text"), ["span", {
                                        class: Ca.apply(void 0, n.split("|"))
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return fc(kc, "`")
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "Shift-Mod-c": e,
                            "Shift-Mod-C": e
                        }
                    }, n
                }(Al),
                Cc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "link"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                attrs: {
                                    url: {
                                        default: !1
                                    },
                                    desc: {
                                        default: !1
                                    }
                                },
                                toDOM: function(e) {
                                    var t = e.attrs,
                                        n = "link";
                                    return t.url && (n += "|link-url|marked-text"), t.desc && (n += "|link-desc|marked-text"), ["span", {
                                        class: Ca.apply(void 0, n.split("|"))
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.addLinkOrImage = function(e) {
                        return function(t) {
                            return function(n, r) {
                                var o = n.selection,
                                    i = n.tr,
                                    s = n.schema,
                                    a = Ya(o),
                                    l = a[0],
                                    c = a[1],
                                    u = t,
                                    d = u.linkText,
                                    p = u.altText,
                                    h = u.linkUrl,
                                    f = u.imageUrl,
                                    m = d,
                                    g = h,
                                    v = "";
                                return "image" === e && (m = p, g = f, v = "!"), v += "[" + (m = Ze(m)) + "](" + g + ")", r(i.replaceWith(l, c, Ns(s, v))), !0
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            addImage: this.addLinkOrImage("image"),
                            addLink: this.addLinkOrImage("link")
                        }
                    }, n
                }(Al),
                Tc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "taskDelimiter"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("delimiter", "list-item")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Al),
                Mc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "delimiter"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("delimiter")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Al),
                Sc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "meta"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("meta")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Al),
                Ec = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "markedText"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("marked-text")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Al),
                Nc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "tableCell"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("table-cell")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Al),
                Oc = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "html"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("html")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Al),
                Dc = "$$",
                Ac = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "customBlock"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                toDOM: function() {
                                    return ["span", {
                                        class: Ca("custom-block")
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function(e) {
                            return function(t, n) {
                                var r = t.selection,
                                    o = t.schema,
                                    i = t.tr,
                                    s = il(r),
                                    a = s.startFromOffset,
                                    l = s.endToOffset;
                                if (!(null == e ? void 0 : e.info)) return !1;
                                var c = "$$" + e.info,
                                    u = Ns(o, c),
                                    d = Ns(o, Dc);
                                return i.insert(a, u).split(a + c.length), i.split(i.mapping.map(l)).insert(i.mapping.map(l), d), n(i.setSelection(Os(i, i.mapping.map(l) - (Dc.length + 2)))), !0
                            }
                        }
                    }, n
                }(Al),
                Lc = /x|backspace/i,
                Ic = /^\[(\s*)(x?)(\s*)\](?:\s+)/i;
            var Rc = "cut",
                Pc = /\r\n|\n|\r/,
                Bc = function(e) {
                    function n(t, n) {
                        var r = e.call(this, t) || this,
                            i = n.toastMark,
                            s = n.useCommandShortcut,
                            a = void 0 === s || s,
                            l = n.mdPlugins,
                            c = void 0 === l ? [] : l;
                        return r.editorType = "markdown", r.el.classList.add("md-mode"), r.toastMark = i, r.extraPlugins = c, r.specs = r.createSpecs(), r.schema = r.createSchema(), r.context = r.createContext(), r.keymaps = r.createKeymaps(a), r.view = r.createView(), r.commands = r.createCommands(), r.specs.setContext(o(o({}, r.context), {
                            view: r.view
                        })), r.createClipboard(), r.eventEmitter.listen("changePreviewTabWrite", (function(e) {
                            return r.toggleActive(!0, e)
                        })), r.eventEmitter.listen("changePreviewTabPreview", (function() {
                            return r.toggleActive(!1)
                        })), r.initEvent(), r
                    }
                    return t(n, e), n.prototype.toggleActive = function(e, t) {
                        Sa(this.el, "active", e), e ? t || this.focus() : this.blur()
                    }, n.prototype.createClipboard = function() {
                        var e = this;
                        this.clipboard = document.createElement("textarea"), this.clipboard.className = xa("pseudo-clipboard"), this.clipboard.addEventListener("paste", (function(t) {
                            var n = t.clipboardData || window.clipboardData,
                                r = n && n.items;
                            if (r) {
                                var o = vi()(r).some((function(e) {
                                    return "string" === e.kind && "text/rtf" === e.type
                                }));
                                if (!o) {
                                    var i = za(r);
                                    i && (t.preventDefault(), Ha(e.eventEmitter, i, t.type))
                                }
                            }
                        })), this.clipboard.addEventListener("input", (function(t) {
                            var n = t.target.value;
                            e.replaceSelection(n), t.preventDefault(), t.target.value = ""
                        })), this.el.insertBefore(this.clipboard, this.view.dom)
                    }, n.prototype.createContext = function() {
                        return {
                            toastMark: this.toastMark,
                            schema: this.schema,
                            eventEmitter: this.eventEmitter
                        }
                    }, n.prototype.createSpecs = function() {
                        return new Qa([new Ol, new nc, new _a, new rc, new ic, new Pl, new ac, new Ac, new uc, new Nc, new dc, new hc, new gc, new yc, new wc, new xc, new Cc, new Mc, new Tc, new Ec, new Sc, new Oc])
                    }, n.prototype.createPlugins = function() {
                        return i([Cl(this.context), Nl(this.context), (e = this.context, t = e.schema, n = e.toastMark, new an({
                            props: {
                                handleDOMEvents: {
                                    keyup: function(e, r) {
                                        var o, i = e.state,
                                            s = i.doc,
                                            a = i.tr,
                                            l = i.selection;
                                        if (l.empty && Lc.test(r.key)) {
                                            var c = il(l),
                                                u = c.startIndex,
                                                d = c.startFromOffset,
                                                p = [u + 1, c.from - d + 1],
                                                h = js(n.findNodeAtPosition(p), (function(e) {
                                                    var t;
                                                    return "paragraph" === e.type && "item" === (null === (t = e.parent) || void 0 === t ? void 0 : t.type)
                                                }));
                                            if (null === (o = null == h ? void 0 : h.firstChild) || void 0 === o ? void 0 : o.literal) {
                                                var f = h.firstChild,
                                                    m = f.literal.match(Ic);
                                                if (m) {
                                                    var g = f.sourcepos[0],
                                                        v = m[1],
                                                        y = m[2],
                                                        b = m[3],
                                                        w = v.length + b.length,
                                                        k = sl(s, g[0] - 1).startOffset,
                                                        x = g[1] + k;
                                                    if (y) {
                                                        var C = w ? w + 1 : 0;
                                                        a.replaceWith(x, C + x, t.text(y)), e.dispatch(a)
                                                    } else w || (a.insertText(" ", x), e.dispatch(a))
                                                }
                                            }
                                        }
                                        return !1
                                    }
                                }
                            }
                        }))], this.createPluginProps()).concat(this.defaultPlugins);
                        var e, t, n
                    }, n.prototype.createView = function() {
                        var e = this;
                        return new ui(this.el, {
                            state: this.createState(),
                            dispatchTransaction: function(t) {
                                e.updateMarkdown(t);
                                var n = e.view.state.applyTransaction(t).state;
                                e.view.updateState(n), e.emitChangeEvent(t)
                            },
                            handleKeyDown: function(t, n) {
                                return (n.metaKey || n.ctrlKey) && "V" === n.key.toUpperCase() && e.clipboard.focus(), e.eventEmitter.emit("keydown", e.editorType, n), !1
                            },
                            handleDOMEvents: {
                                copy: function(t, n) {
                                    return e.captureCopy(n)
                                },
                                cut: function(t, n) {
                                    return e.captureCopy(n, Rc)
                                },
                                scroll: function() {
                                    return e.eventEmitter.emit("scroll", "editor"), !0
                                },
                                keyup: function(t, n) {
                                    return e.eventEmitter.emit("keyup", e.editorType, n), !1
                                }
                            },
                            nodeViews: {
                                widget: ja
                            }
                        })
                    }, n.prototype.createCommands = function() {
                        return this.specs.commands(this.view)
                    }, n.prototype.captureCopy = function(e, t) {
                        e.preventDefault();
                        var n = this.view.state,
                            r = n.selection,
                            o = n.tr;
                        if (r.empty) return !0;
                        var i = this.getChanged(r.content());
                        return e.clipboardData ? e.clipboardData.setData("text/plain", i) : window.clipboardData.setData("Text", i), t === Rc && this.view.dispatch(o.deleteSelection().scrollIntoView().setMeta("uiEvent", Rc)), !0
                    }, n.prototype.updateMarkdown = function(e) {
                        var t = this;
                        e.docChanged && e.steps.forEach((function(n, r) {
                            if (n.slice && !(n instanceof wt)) {
                                var o = e.docs[r],
                                    i = [n.from, n.to],
                                    s = nl(o, i[0], i[1]),
                                    a = s[0],
                                    l = s[1],
                                    c = t.getChanged(n.slice);
                                a[0] === l[0] && a[1] === l[1] && "" === c && (c = "\n");
                                var u = t.toastMark.editMarkdown(a, l, c);
                                t.eventEmitter.emit("updatePreview", u), e.setMeta("editResult", u).scrollIntoView()
                            }
                        }))
                    }, n.prototype.getChanged = function(e) {
                        var t = "",
                            n = e.content.size;
                        return e.content.nodesBetween(0, n, (function(e, r) {
                            e.isText ? t += e.text.slice(Math.max(0, r) - r, n - r) : e.isBlock && r > 0 && (t += "\n")
                        })), t
                    }, n.prototype.setSelection = function(e, t) {
                        void 0 === t && (t = e);
                        var n = this.view.state.tr,
                            r = ol(n.doc, e, t),
                            o = r[0],
                            i = r[1];
                        this.view.dispatch(n.setSelection(Os(n, o, i)).scrollIntoView())
                    }, n.prototype.replaceSelection = function(e, t, n) {
                        var r, o = this.view.state,
                            i = o.tr,
                            s = o.schema,
                            a = o.doc,
                            l = e.split(Pc).map((function(e) {
                                return Es(s, ra(e, s))
                            })),
                            c = new v(d.from(l), 1, 1);
                        if (this.focus(), t && n) {
                            var u = ol(a, t, n),
                                p = u[0],
                                h = u[1];
                            r = i.replaceRange(p, h, c)
                        } else r = i.replaceSelection(c);
                        this.view.dispatch(r.scrollIntoView())
                    }, n.prototype.deleteSelection = function(e, t) {
                        var n, r = this.view.state,
                            o = r.tr,
                            i = r.doc;
                        if (e && t) {
                            var s = ol(i, e, t),
                                a = s[0],
                                l = s[1];
                            n = o.deleteRange(a, l)
                        } else n = o.deleteSelection();
                        this.view.dispatch(n.scrollIntoView())
                    }, n.prototype.getSelectedText = function(e, t) {
                        var n = this.view.state,
                            r = n.doc,
                            o = n.selection,
                            i = o.from,
                            s = o.to;
                        if (e && t) {
                            var a = ol(r, e, t);
                            i = a[0], s = a[1]
                        }
                        return r.textBetween(i, s, "\n")
                    }, n.prototype.getSelection = function() {
                        var e = this.view.state.selection,
                            t = e.from,
                            n = e.to;
                        return nl(this.view.state.tr.doc, t, n)
                    }, n.prototype.setMarkdown = function(e, t) {
                        void 0 === t && (t = !0);
                        var n = e.split(Pc),
                            r = this.view.state,
                            o = r.tr,
                            i = r.doc,
                            s = r.schema,
                            a = n.map((function(e) {
                                return Es(s, ra(e, s))
                            }));
                        this.view.dispatch(o.replaceWith(0, i.content.size, a)), t && this.moveCursorToEnd(!0)
                    }, n.prototype.addWidget = function(e, t, n) {
                        var r = this.view.state,
                            o = r.tr,
                            i = r.doc,
                            s = r.selection,
                            a = n ? ol(i, n, n)[0] : s.to;
                        this.view.dispatch(o.setMeta("widget", {
                            pos: a,
                            node: e,
                            style: t
                        }))
                    }, n.prototype.replaceWithWidget = function(e, t, n) {
                        var r = this.view.state,
                            o = r.tr,
                            i = r.schema,
                            s = ol(r.doc, e, t),
                            a = ra(n, i);
                        this.view.dispatch(o.replaceWith(s[0], s[1], a))
                    }, n.prototype.getRangeInfoOfNode = function(e) {
                        var t = this.view.state,
                            n = t.doc,
                            r = t.selection,
                            o = e || nl(n, r.from)[0],
                            i = this.toastMark.findNodeAtPosition(o);
                        return "text" === i.type && "paragraph" !== i.parent.type && (i = i.parent), i.sourcepos[1][1] += 1, {
                            range: i.sourcepos,
                            type: i.type
                        }
                    }, n.prototype.getMarkdown = function() {
                        return this.toastMark.getLineTexts().map((function(e) {
                            return Xs(e)
                        })).join("\n")
                    }, n.prototype.getToastMark = function() {
                        return this.toastMark
                    }, n
                }(Wa),
                Fc = Bc,
                Hc = n(349),
                zc = n.n(Hc),
                qc = n(348),
                Vc = n.n(qc),
                jc = function(e, t) {
                    return jc = Object.setPrototypeOf || {
                            __proto__: []
                        }
                        instanceof Array && function(e, t) {
                            e.__proto__ = t
                        } || function(e, t) {
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
                        }, jc(e, t)
                };

            function $c(e, t) {
                if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");

                function n() {
                    this.constructor = e
                }
                jc(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
            }
            var _c = function() {
                return _c = Object.assign || function(e) {
                    for (var t, n = 1, r = arguments.length; n < r; n++)
                        for (var o in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]);
                    return e
                }, _c.apply(this, arguments)
            };

            function Uc(e, t, n) {
                if (n || 2 === arguments.length)
                    for (var r, o = 0, i = t.length; o < i; o++) !r && o in t || (r || (r = Array.prototype.slice.call(t, 0, o)), r[o] = t[o]);
                return e.concat(r || Array.prototype.slice.call(t))
            }
            var Wc = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : void 0 !== n.g ? n.g : "undefined" != typeof self ? self : {},
                Jc = {};

            function Gc(e, t, n) {
                var r, o, i, s, a, l = "";
                for ("string" != typeof t && (n = t, t = Gc.defaultChars), void 0 === n && (n = !0), a = function(e) {
                    var t, n, r = Jc[e];
                    if (r) return r;
                    for (r = Jc[e] = [], t = 0; t < 128; t++) n = String.fromCharCode(t), /^[0-9a-z]$/i.test(n) ? r.push(n) : r.push("%" + ("0" + t.toString(16).toUpperCase()).slice(-2));
                    for (t = 0; t < e.length; t++) r[e.charCodeAt(t)] = e[t];
                    return r
                }(t), r = 0, o = e.length; r < o; r++)
                    if (i = e.charCodeAt(r), n && 37 === i && r + 2 < o && /^[0-9a-f]{2}$/i.test(e.slice(r + 1, r + 3))) l += e.slice(r, r + 3), r += 2;
                    else if (i < 128) l += a[i];
                    else if (i >= 55296 && i <= 57343) {
                        if (i >= 55296 && i <= 56319 && r + 1 < o && (s = e.charCodeAt(r + 1)) >= 56320 && s <= 57343) {
                            l += encodeURIComponent(e[r] + e[r + 1]), r++;
                            continue
                        }
                        l += "%EF%BF%BD"
                    } else l += encodeURIComponent(e[r]);
                return l
            }
            Gc.defaultChars = ";/?:@&=+$,-_.!~*'()#", Gc.componentChars = "-_.!~*'()";
            var Kc = Gc,
                Zc = {},
                Xc = {},
                Qc = {
                    Aacute: "Ã",
                    aacute: "Ã¡",
                    Abreve: "Ä‚",
                    abreve: "Äƒ",
                    ac: "âˆ¾",
                    acd: "âˆ¿",
                    acE: "âˆ¾Ì³",
                    Acirc: "Ã‚",
                    acirc: "Ã¢",
                    acute: "Â´",
                    Acy: "Ð",
                    acy: "Ð°",
                    AElig: "Ã†",
                    aelig: "Ã¦",
                    af: "â¡",
                    Afr: "ð”„",
                    afr: "ð”ž",
                    Agrave: "Ã€",
                    agrave: "Ã ",
                    alefsym: "â„µ",
                    aleph: "â„µ",
                    Alpha: "Î‘",
                    alpha: "Î±",
                    Amacr: "Ä€",
                    amacr: "Ä",
                    amalg: "â¨¿",
                    amp: "&",
                    AMP: "&",
                    andand: "â©•",
                    And: "â©“",
                    and: "âˆ§",
                    andd: "â©œ",
                    andslope: "â©˜",
                    andv: "â©š",
                    ang: "âˆ ",
                    ange: "â¦¤",
                    angle: "âˆ ",
                    angmsdaa: "â¦¨",
                    angmsdab: "â¦©",
                    angmsdac: "â¦ª",
                    angmsdad: "â¦«",
                    angmsdae: "â¦¬",
                    angmsdaf: "â¦­",
                    angmsdag: "â¦®",
                    angmsdah: "â¦¯",
                    angmsd: "âˆ¡",
                    angrt: "âˆŸ",
                    angrtvb: "âŠ¾",
                    angrtvbd: "â¦",
                    angsph: "âˆ¢",
                    angst: "Ã…",
                    angzarr: "â¼",
                    Aogon: "Ä„",
                    aogon: "Ä…",
                    Aopf: "ð”¸",
                    aopf: "ð•’",
                    apacir: "â©¯",
                    ap: "â‰ˆ",
                    apE: "â©°",
                    ape: "â‰Š",
                    apid: "â‰‹",
                    apos: "'",
                    ApplyFunction: "â¡",
                    approx: "â‰ˆ",
                    approxeq: "â‰Š",
                    Aring: "Ã…",
                    aring: "Ã¥",
                    Ascr: "ð’œ",
                    ascr: "ð’¶",
                    Assign: "â‰”",
                    ast: "*",
                    asymp: "â‰ˆ",
                    asympeq: "â‰",
                    Atilde: "Ãƒ",
                    atilde: "Ã£",
                    Auml: "Ã„",
                    auml: "Ã¤",
                    awconint: "âˆ³",
                    awint: "â¨‘",
                    backcong: "â‰Œ",
                    backepsilon: "Ï¶",
                    backprime: "â€µ",
                    backsim: "âˆ½",
                    backsimeq: "â‹",
                    Backslash: "âˆ–",
                    Barv: "â«§",
                    barvee: "âŠ½",
                    barwed: "âŒ…",
                    Barwed: "âŒ†",
                    barwedge: "âŒ…",
                    bbrk: "âŽµ",
                    bbrktbrk: "âŽ¶",
                    bcong: "â‰Œ",
                    Bcy: "Ð‘",
                    bcy: "Ð±",
                    bdquo: "â€ž",
                    becaus: "âˆµ",
                    because: "âˆµ",
                    Because: "âˆµ",
                    bemptyv: "â¦°",
                    bepsi: "Ï¶",
                    bernou: "â„¬",
                    Bernoullis: "â„¬",
                    Beta: "Î’",
                    beta: "Î²",
                    beth: "â„¶",
                    between: "â‰¬",
                    Bfr: "ð”…",
                    bfr: "ð”Ÿ",
                    bigcap: "â‹‚",
                    bigcirc: "â—¯",
                    bigcup: "â‹ƒ",
                    bigodot: "â¨€",
                    bigoplus: "â¨",
                    bigotimes: "â¨‚",
                    bigsqcup: "â¨†",
                    bigstar: "â˜…",
                    bigtriangledown: "â–½",
                    bigtriangleup: "â–³",
                    biguplus: "â¨„",
                    bigvee: "â‹",
                    bigwedge: "â‹€",
                    bkarow: "â¤",
                    blacklozenge: "â§«",
                    blacksquare: "â–ª",
                    blacktriangle: "â–´",
                    blacktriangledown: "â–¾",
                    blacktriangleleft: "â—‚",
                    blacktriangleright: "â–¸",
                    blank: "â£",
                    blk12: "â–’",
                    blk14: "â–‘",
                    blk34: "â–“",
                    block: "â–ˆ",
                    bne: "=âƒ¥",
                    bnequiv: "â‰¡âƒ¥",
                    bNot: "â«­",
                    bnot: "âŒ",
                    Bopf: "ð”¹",
                    bopf: "ð•“",
                    bot: "âŠ¥",
                    bottom: "âŠ¥",
                    bowtie: "â‹ˆ",
                    boxbox: "â§‰",
                    boxdl: "â”",
                    boxdL: "â••",
                    boxDl: "â•–",
                    boxDL: "â•—",
                    boxdr: "â”Œ",
                    boxdR: "â•’",
                    boxDr: "â•“",
                    boxDR: "â•”",
                    boxh: "â”€",
                    boxH: "â•",
                    boxhd: "â”¬",
                    boxHd: "â•¤",
                    boxhD: "â•¥",
                    boxHD: "â•¦",
                    boxhu: "â”´",
                    boxHu: "â•§",
                    boxhU: "â•¨",
                    boxHU: "â•©",
                    boxminus: "âŠŸ",
                    boxplus: "âŠž",
                    boxtimes: "âŠ ",
                    boxul: "â”˜",
                    boxuL: "â•›",
                    boxUl: "â•œ",
                    boxUL: "â•",
                    boxur: "â””",
                    boxuR: "â•˜",
                    boxUr: "â•™",
                    boxUR: "â•š",
                    boxv: "â”‚",
                    boxV: "â•‘",
                    boxvh: "â”¼",
                    boxvH: "â•ª",
                    boxVh: "â•«",
                    boxVH: "â•¬",
                    boxvl: "â”¤",
                    boxvL: "â•¡",
                    boxVl: "â•¢",
                    boxVL: "â•£",
                    boxvr: "â”œ",
                    boxvR: "â•ž",
                    boxVr: "â•Ÿ",
                    boxVR: "â• ",
                    bprime: "â€µ",
                    breve: "Ë˜",
                    Breve: "Ë˜",
                    brvbar: "Â¦",
                    bscr: "ð’·",
                    Bscr: "â„¬",
                    bsemi: "â",
                    bsim: "âˆ½",
                    bsime: "â‹",
                    bsolb: "â§…",
                    bsol: "\\",
                    bsolhsub: "âŸˆ",
                    bull: "â€¢",
                    bullet: "â€¢",
                    bump: "â‰Ž",
                    bumpE: "âª®",
                    bumpe: "â‰",
                    Bumpeq: "â‰Ž",
                    bumpeq: "â‰",
                    Cacute: "Ä†",
                    cacute: "Ä‡",
                    capand: "â©„",
                    capbrcup: "â©‰",
                    capcap: "â©‹",
                    cap: "âˆ©",
                    Cap: "â‹’",
                    capcup: "â©‡",
                    capdot: "â©€",
                    CapitalDifferentialD: "â……",
                    caps: "âˆ©ï¸€",
                    caret: "â",
                    caron: "Ë‡",
                    Cayleys: "â„­",
                    ccaps: "â©",
                    Ccaron: "ÄŒ",
                    ccaron: "Ä",
                    Ccedil: "Ã‡",
                    ccedil: "Ã§",
                    Ccirc: "Äˆ",
                    ccirc: "Ä‰",
                    Cconint: "âˆ°",
                    ccups: "â©Œ",
                    ccupssm: "â©",
                    Cdot: "ÄŠ",
                    cdot: "Ä‹",
                    cedil: "Â¸",
                    Cedilla: "Â¸",
                    cemptyv: "â¦²",
                    cent: "Â¢",
                    centerdot: "Â·",
                    CenterDot: "Â·",
                    cfr: "ð” ",
                    Cfr: "â„­",
                    CHcy: "Ð§",
                    chcy: "Ñ‡",
                    check: "âœ“",
                    checkmark: "âœ“",
                    Chi: "Î§",
                    chi: "Ï‡",
                    circ: "Ë†",
                    circeq: "â‰—",
                    circlearrowleft: "â†º",
                    circlearrowright: "â†»",
                    circledast: "âŠ›",
                    circledcirc: "âŠš",
                    circleddash: "âŠ",
                    CircleDot: "âŠ™",
                    circledR: "Â®",
                    circledS: "â“ˆ",
                    CircleMinus: "âŠ–",
                    CirclePlus: "âŠ•",
                    CircleTimes: "âŠ—",
                    cir: "â—‹",
                    cirE: "â§ƒ",
                    cire: "â‰—",
                    cirfnint: "â¨",
                    cirmid: "â«¯",
                    cirscir: "â§‚",
                    ClockwiseContourIntegral: "âˆ²",
                    CloseCurlyDoubleQuote: "â€",
                    CloseCurlyQuote: "â€™",
                    clubs: "â™£",
                    clubsuit: "â™£",
                    colon: ":",
                    Colon: "âˆ·",
                    Colone: "â©´",
                    colone: "â‰”",
                    coloneq: "â‰”",
                    comma: ",",
                    commat: "@",
                    comp: "âˆ",
                    compfn: "âˆ˜",
                    complement: "âˆ",
                    complexes: "â„‚",
                    cong: "â‰…",
                    congdot: "â©­",
                    Congruent: "â‰¡",
                    conint: "âˆ®",
                    Conint: "âˆ¯",
                    ContourIntegral: "âˆ®",
                    copf: "ð•”",
                    Copf: "â„‚",
                    coprod: "âˆ",
                    Coproduct: "âˆ",
                    copy: "Â©",
                    COPY: "Â©",
                    copysr: "â„—",
                    CounterClockwiseContourIntegral: "âˆ³",
                    crarr: "â†µ",
                    cross: "âœ—",
                    Cross: "â¨¯",
                    Cscr: "ð’ž",
                    cscr: "ð’¸",
                    csub: "â«",
                    csube: "â«‘",
                    csup: "â«",
                    csupe: "â«’",
                    ctdot: "â‹¯",
                    cudarrl: "â¤¸",
                    cudarrr: "â¤µ",
                    cuepr: "â‹ž",
                    cuesc: "â‹Ÿ",
                    cularr: "â†¶",
                    cularrp: "â¤½",
                    cupbrcap: "â©ˆ",
                    cupcap: "â©†",
                    CupCap: "â‰",
                    cup: "âˆª",
                    Cup: "â‹“",
                    cupcup: "â©Š",
                    cupdot: "âŠ",
                    cupor: "â©…",
                    cups: "âˆªï¸€",
                    curarr: "â†·",
                    curarrm: "â¤¼",
                    curlyeqprec: "â‹ž",
                    curlyeqsucc: "â‹Ÿ",
                    curlyvee: "â‹Ž",
                    curlywedge: "â‹",
                    curren: "Â¤",
                    curvearrowleft: "â†¶",
                    curvearrowright: "â†·",
                    cuvee: "â‹Ž",
                    cuwed: "â‹",
                    cwconint: "âˆ²",
                    cwint: "âˆ±",
                    cylcty: "âŒ­",
                    dagger: "â€ ",
                    Dagger: "â€¡",
                    daleth: "â„¸",
                    darr: "â†“",
                    Darr: "â†¡",
                    dArr: "â‡“",
                    dash: "â€",
                    Dashv: "â«¤",
                    dashv: "âŠ£",
                    dbkarow: "â¤",
                    dblac: "Ë",
                    Dcaron: "ÄŽ",
                    dcaron: "Ä",
                    Dcy: "Ð”",
                    dcy: "Ð´",
                    ddagger: "â€¡",
                    ddarr: "â‡Š",
                    DD: "â……",
                    dd: "â…†",
                    DDotrahd: "â¤‘",
                    ddotseq: "â©·",
                    deg: "Â°",
                    Del: "âˆ‡",
                    Delta: "Î”",
                    delta: "Î´",
                    demptyv: "â¦±",
                    dfisht: "â¥¿",
                    Dfr: "ð”‡",
                    dfr: "ð”¡",
                    dHar: "â¥¥",
                    dharl: "â‡ƒ",
                    dharr: "â‡‚",
                    DiacriticalAcute: "Â´",
                    DiacriticalDot: "Ë™",
                    DiacriticalDoubleAcute: "Ë",
                    DiacriticalGrave: "`",
                    DiacriticalTilde: "Ëœ",
                    diam: "â‹„",
                    diamond: "â‹„",
                    Diamond: "â‹„",
                    diamondsuit: "â™¦",
                    diams: "â™¦",
                    die: "Â¨",
                    DifferentialD: "â…†",
                    digamma: "Ï",
                    disin: "â‹²",
                    div: "Ã·",
                    divide: "Ã·",
                    divideontimes: "â‹‡",
                    divonx: "â‹‡",
                    DJcy: "Ð‚",
                    djcy: "Ñ’",
                    dlcorn: "âŒž",
                    dlcrop: "âŒ",
                    dollar: "$",
                    Dopf: "ð”»",
                    dopf: "ð••",
                    Dot: "Â¨",
                    dot: "Ë™",
                    DotDot: "âƒœ",
                    doteq: "â‰",
                    doteqdot: "â‰‘",
                    DotEqual: "â‰",
                    dotminus: "âˆ¸",
                    dotplus: "âˆ”",
                    dotsquare: "âŠ¡",
                    doublebarwedge: "âŒ†",
                    DoubleContourIntegral: "âˆ¯",
                    DoubleDot: "Â¨",
                    DoubleDownArrow: "â‡“",
                    DoubleLeftArrow: "â‡",
                    DoubleLeftRightArrow: "â‡”",
                    DoubleLeftTee: "â«¤",
                    DoubleLongLeftArrow: "âŸ¸",
                    DoubleLongLeftRightArrow: "âŸº",
                    DoubleLongRightArrow: "âŸ¹",
                    DoubleRightArrow: "â‡’",
                    DoubleRightTee: "âŠ¨",
                    DoubleUpArrow: "â‡‘",
                    DoubleUpDownArrow: "â‡•",
                    DoubleVerticalBar: "âˆ¥",
                    DownArrowBar: "â¤“",
                    downarrow: "â†“",
                    DownArrow: "â†“",
                    Downarrow: "â‡“",
                    DownArrowUpArrow: "â‡µ",
                    DownBreve: "Ì‘",
                    downdownarrows: "â‡Š",
                    downharpoonleft: "â‡ƒ",
                    downharpoonright: "â‡‚",
                    DownLeftRightVector: "â¥",
                    DownLeftTeeVector: "â¥ž",
                    DownLeftVectorBar: "â¥–",
                    DownLeftVector: "â†½",
                    DownRightTeeVector: "â¥Ÿ",
                    DownRightVectorBar: "â¥—",
                    DownRightVector: "â‡",
                    DownTeeArrow: "â†§",
                    DownTee: "âŠ¤",
                    drbkarow: "â¤",
                    drcorn: "âŒŸ",
                    drcrop: "âŒŒ",
                    Dscr: "ð’Ÿ",
                    dscr: "ð’¹",
                    DScy: "Ð…",
                    dscy: "Ñ•",
                    dsol: "â§¶",
                    Dstrok: "Ä",
                    dstrok: "Ä‘",
                    dtdot: "â‹±",
                    dtri: "â–¿",
                    dtrif: "â–¾",
                    duarr: "â‡µ",
                    duhar: "â¥¯",
                    dwangle: "â¦¦",
                    DZcy: "Ð",
                    dzcy: "ÑŸ",
                    dzigrarr: "âŸ¿",
                    Eacute: "Ã‰",
                    eacute: "Ã©",
                    easter: "â©®",
                    Ecaron: "Äš",
                    ecaron: "Ä›",
                    Ecirc: "ÃŠ",
                    ecirc: "Ãª",
                    ecir: "â‰–",
                    ecolon: "â‰•",
                    Ecy: "Ð­",
                    ecy: "Ñ",
                    eDDot: "â©·",
                    Edot: "Ä–",
                    edot: "Ä—",
                    eDot: "â‰‘",
                    ee: "â…‡",
                    efDot: "â‰’",
                    Efr: "ð”ˆ",
                    efr: "ð”¢",
                    eg: "âªš",
                    Egrave: "Ãˆ",
                    egrave: "Ã¨",
                    egs: "âª–",
                    egsdot: "âª˜",
                    el: "âª™",
                    Element: "âˆˆ",
                    elinters: "â§",
                    ell: "â„“",
                    els: "âª•",
                    elsdot: "âª—",
                    Emacr: "Ä’",
                    emacr: "Ä“",
                    empty: "âˆ…",
                    emptyset: "âˆ…",
                    EmptySmallSquare: "â—»",
                    emptyv: "âˆ…",
                    EmptyVerySmallSquare: "â–«",
                    emsp13: "â€„",
                    emsp14: "â€…",
                    emsp: "â€ƒ",
                    ENG: "ÅŠ",
                    eng: "Å‹",
                    ensp: "â€‚",
                    Eogon: "Ä˜",
                    eogon: "Ä™",
                    Eopf: "ð”¼",
                    eopf: "ð•–",
                    epar: "â‹•",
                    eparsl: "â§£",
                    eplus: "â©±",
                    epsi: "Îµ",
                    Epsilon: "Î•",
                    epsilon: "Îµ",
                    epsiv: "Ïµ",
                    eqcirc: "â‰–",
                    eqcolon: "â‰•",
                    eqsim: "â‰‚",
                    eqslantgtr: "âª–",
                    eqslantless: "âª•",
                    Equal: "â©µ",
                    equals: "=",
                    EqualTilde: "â‰‚",
                    equest: "â‰Ÿ",
                    Equilibrium: "â‡Œ",
                    equiv: "â‰¡",
                    equivDD: "â©¸",
                    eqvparsl: "â§¥",
                    erarr: "â¥±",
                    erDot: "â‰“",
                    escr: "â„¯",
                    Escr: "â„°",
                    esdot: "â‰",
                    Esim: "â©³",
                    esim: "â‰‚",
                    Eta: "Î—",
                    eta: "Î·",
                    ETH: "Ã",
                    eth: "Ã°",
                    Euml: "Ã‹",
                    euml: "Ã«",
                    euro: "â‚¬",
                    excl: "!",
                    exist: "âˆƒ",
                    Exists: "âˆƒ",
                    expectation: "â„°",
                    exponentiale: "â…‡",
                    ExponentialE: "â…‡",
                    fallingdotseq: "â‰’",
                    Fcy: "Ð¤",
                    fcy: "Ñ„",
                    female: "â™€",
                    ffilig: "ï¬ƒ",
                    fflig: "ï¬€",
                    ffllig: "ï¬„",
                    Ffr: "ð”‰",
                    ffr: "ð”£",
                    filig: "ï¬",
                    FilledSmallSquare: "â—¼",
                    FilledVerySmallSquare: "â–ª",
                    fjlig: "fj",
                    flat: "â™­",
                    fllig: "ï¬‚",
                    fltns: "â–±",
                    fnof: "Æ’",
                    Fopf: "ð”½",
                    fopf: "ð•—",
                    forall: "âˆ€",
                    ForAll: "âˆ€",
                    fork: "â‹”",
                    forkv: "â«™",
                    Fouriertrf: "â„±",
                    fpartint: "â¨",
                    frac12: "Â½",
                    frac13: "â…“",
                    frac14: "Â¼",
                    frac15: "â…•",
                    frac16: "â…™",
                    frac18: "â…›",
                    frac23: "â…”",
                    frac25: "â…–",
                    frac34: "Â¾",
                    frac35: "â…—",
                    frac38: "â…œ",
                    frac45: "â…˜",
                    frac56: "â…š",
                    frac58: "â…",
                    frac78: "â…ž",
                    frasl: "â„",
                    frown: "âŒ¢",
                    fscr: "ð’»",
                    Fscr: "â„±",
                    gacute: "Çµ",
                    Gamma: "Î“",
                    gamma: "Î³",
                    Gammad: "Ïœ",
                    gammad: "Ï",
                    gap: "âª†",
                    Gbreve: "Äž",
                    gbreve: "ÄŸ",
                    Gcedil: "Ä¢",
                    Gcirc: "Äœ",
                    gcirc: "Ä",
                    Gcy: "Ð“",
                    gcy: "Ð³",
                    Gdot: "Ä ",
                    gdot: "Ä¡",
                    ge: "â‰¥",
                    gE: "â‰§",
                    gEl: "âªŒ",
                    gel: "â‹›",
                    geq: "â‰¥",
                    geqq: "â‰§",
                    geqslant: "â©¾",
                    gescc: "âª©",
                    ges: "â©¾",
                    gesdot: "âª€",
                    gesdoto: "âª‚",
                    gesdotol: "âª„",
                    gesl: "â‹›ï¸€",
                    gesles: "âª”",
                    Gfr: "ð”Š",
                    gfr: "ð”¤",
                    gg: "â‰«",
                    Gg: "â‹™",
                    ggg: "â‹™",
                    gimel: "â„·",
                    GJcy: "Ðƒ",
                    gjcy: "Ñ“",
                    gla: "âª¥",
                    gl: "â‰·",
                    glE: "âª’",
                    glj: "âª¤",
                    gnap: "âªŠ",
                    gnapprox: "âªŠ",
                    gne: "âªˆ",
                    gnE: "â‰©",
                    gneq: "âªˆ",
                    gneqq: "â‰©",
                    gnsim: "â‹§",
                    Gopf: "ð”¾",
                    gopf: "ð•˜",
                    grave: "`",
                    GreaterEqual: "â‰¥",
                    GreaterEqualLess: "â‹›",
                    GreaterFullEqual: "â‰§",
                    GreaterGreater: "âª¢",
                    GreaterLess: "â‰·",
                    GreaterSlantEqual: "â©¾",
                    GreaterTilde: "â‰³",
                    Gscr: "ð’¢",
                    gscr: "â„Š",
                    gsim: "â‰³",
                    gsime: "âªŽ",
                    gsiml: "âª",
                    gtcc: "âª§",
                    gtcir: "â©º",
                    gt: ">",
                    GT: ">",
                    Gt: "â‰«",
                    gtdot: "â‹—",
                    gtlPar: "â¦•",
                    gtquest: "â©¼",
                    gtrapprox: "âª†",
                    gtrarr: "â¥¸",
                    gtrdot: "â‹—",
                    gtreqless: "â‹›",
                    gtreqqless: "âªŒ",
                    gtrless: "â‰·",
                    gtrsim: "â‰³",
                    gvertneqq: "â‰©ï¸€",
                    gvnE: "â‰©ï¸€",
                    Hacek: "Ë‡",
                    hairsp: "â€Š",
                    half: "Â½",
                    hamilt: "â„‹",
                    HARDcy: "Ðª",
                    hardcy: "ÑŠ",
                    harrcir: "â¥ˆ",
                    harr: "â†”",
                    hArr: "â‡”",
                    harrw: "â†­",
                    Hat: "^",
                    hbar: "â„",
                    Hcirc: "Ä¤",
                    hcirc: "Ä¥",
                    hearts: "â™¥",
                    heartsuit: "â™¥",
                    hellip: "â€¦",
                    hercon: "âŠ¹",
                    hfr: "ð”¥",
                    Hfr: "â„Œ",
                    HilbertSpace: "â„‹",
                    hksearow: "â¤¥",
                    hkswarow: "â¤¦",
                    hoarr: "â‡¿",
                    homtht: "âˆ»",
                    hookleftarrow: "â†©",
                    hookrightarrow: "â†ª",
                    hopf: "ð•™",
                    Hopf: "â„",
                    horbar: "â€•",
                    HorizontalLine: "â”€",
                    hscr: "ð’½",
                    Hscr: "â„‹",
                    hslash: "â„",
                    Hstrok: "Ä¦",
                    hstrok: "Ä§",
                    HumpDownHump: "â‰Ž",
                    HumpEqual: "â‰",
                    hybull: "âƒ",
                    hyphen: "â€",
                    Iacute: "Ã",
                    iacute: "Ã­",
                    ic: "â£",
                    Icirc: "ÃŽ",
                    icirc: "Ã®",
                    Icy: "Ð˜",
                    icy: "Ð¸",
                    Idot: "Ä°",
                    IEcy: "Ð•",
                    iecy: "Ðµ",
                    iexcl: "Â¡",
                    iff: "â‡”",
                    ifr: "ð”¦",
                    Ifr: "â„‘",
                    Igrave: "ÃŒ",
                    igrave: "Ã¬",
                    ii: "â…ˆ",
                    iiiint: "â¨Œ",
                    iiint: "âˆ­",
                    iinfin: "â§œ",
                    iiota: "â„©",
                    IJlig: "Ä²",
                    ijlig: "Ä³",
                    Imacr: "Äª",
                    imacr: "Ä«",
                    image: "â„‘",
                    ImaginaryI: "â…ˆ",
                    imagline: "â„",
                    imagpart: "â„‘",
                    imath: "Ä±",
                    Im: "â„‘",
                    imof: "âŠ·",
                    imped: "Æµ",
                    Implies: "â‡’",
                    incare: "â„…",
                    in: "âˆˆ",
                    infin: "âˆž",
                    infintie: "â§",
                    inodot: "Ä±",
                    intcal: "âŠº",
                    int: "âˆ«",
                    Int: "âˆ¬",
                    integers: "â„¤",
                    Integral: "âˆ«",
                    intercal: "âŠº",
                    Intersection: "â‹‚",
                    intlarhk: "â¨—",
                    intprod: "â¨¼",
                    InvisibleComma: "â£",
                    InvisibleTimes: "â¢",
                    IOcy: "Ð",
                    iocy: "Ñ‘",
                    Iogon: "Ä®",
                    iogon: "Ä¯",
                    Iopf: "ð•€",
                    iopf: "ð•š",
                    Iota: "Î™",
                    iota: "Î¹",
                    iprod: "â¨¼",
                    iquest: "Â¿",
                    iscr: "ð’¾",
                    Iscr: "â„",
                    isin: "âˆˆ",
                    isindot: "â‹µ",
                    isinE: "â‹¹",
                    isins: "â‹´",
                    isinsv: "â‹³",
                    isinv: "âˆˆ",
                    it: "â¢",
                    Itilde: "Ä¨",
                    itilde: "Ä©",
                    Iukcy: "Ð†",
                    iukcy: "Ñ–",
                    Iuml: "Ã",
                    iuml: "Ã¯",
                    Jcirc: "Ä´",
                    jcirc: "Äµ",
                    Jcy: "Ð™",
                    jcy: "Ð¹",
                    Jfr: "ð”",
                    jfr: "ð”§",
                    jmath: "È·",
                    Jopf: "ð•",
                    jopf: "ð•›",
                    Jscr: "ð’¥",
                    jscr: "ð’¿",
                    Jsercy: "Ðˆ",
                    jsercy: "Ñ˜",
                    Jukcy: "Ð„",
                    jukcy: "Ñ”",
                    Kappa: "Îš",
                    kappa: "Îº",
                    kappav: "Ï°",
                    Kcedil: "Ä¶",
                    kcedil: "Ä·",
                    Kcy: "Ðš",
                    kcy: "Ðº",
                    Kfr: "ð”Ž",
                    kfr: "ð”¨",
                    kgreen: "Ä¸",
                    KHcy: "Ð¥",
                    khcy: "Ñ…",
                    KJcy: "ÐŒ",
                    kjcy: "Ñœ",
                    Kopf: "ð•‚",
                    kopf: "ð•œ",
                    Kscr: "ð’¦",
                    kscr: "ð“€",
                    lAarr: "â‡š",
                    Lacute: "Ä¹",
                    lacute: "Äº",
                    laemptyv: "â¦´",
                    lagran: "â„’",
                    Lambda: "Î›",
                    lambda: "Î»",
                    lang: "âŸ¨",
                    Lang: "âŸª",
                    langd: "â¦‘",
                    langle: "âŸ¨",
                    lap: "âª…",
                    Laplacetrf: "â„’",
                    laquo: "Â«",
                    larrb: "â‡¤",
                    larrbfs: "â¤Ÿ",
                    larr: "â†",
                    Larr: "â†ž",
                    lArr: "â‡",
                    larrfs: "â¤",
                    larrhk: "â†©",
                    larrlp: "â†«",
                    larrpl: "â¤¹",
                    larrsim: "â¥³",
                    larrtl: "â†¢",
                    latail: "â¤™",
                    lAtail: "â¤›",
                    lat: "âª«",
                    late: "âª­",
                    lates: "âª­ï¸€",
                    lbarr: "â¤Œ",
                    lBarr: "â¤Ž",
                    lbbrk: "â²",
                    lbrace: "{",
                    lbrack: "[",
                    lbrke: "â¦‹",
                    lbrksld: "â¦",
                    lbrkslu: "â¦",
                    Lcaron: "Ä½",
                    lcaron: "Ä¾",
                    Lcedil: "Ä»",
                    lcedil: "Ä¼",
                    lceil: "âŒˆ",
                    lcub: "{",
                    Lcy: "Ð›",
                    lcy: "Ð»",
                    ldca: "â¤¶",
                    ldquo: "â€œ",
                    ldquor: "â€ž",
                    ldrdhar: "â¥§",
                    ldrushar: "â¥‹",
                    ldsh: "â†²",
                    le: "â‰¤",
                    lE: "â‰¦",
                    LeftAngleBracket: "âŸ¨",
                    LeftArrowBar: "â‡¤",
                    leftarrow: "â†",
                    LeftArrow: "â†",
                    Leftarrow: "â‡",
                    LeftArrowRightArrow: "â‡†",
                    leftarrowtail: "â†¢",
                    LeftCeiling: "âŒˆ",
                    LeftDoubleBracket: "âŸ¦",
                    LeftDownTeeVector: "â¥¡",
                    LeftDownVectorBar: "â¥™",
                    LeftDownVector: "â‡ƒ",
                    LeftFloor: "âŒŠ",
                    leftharpoondown: "â†½",
                    leftharpoonup: "â†¼",
                    leftleftarrows: "â‡‡",
                    leftrightarrow: "â†”",
                    LeftRightArrow: "â†”",
                    Leftrightarrow: "â‡”",
                    leftrightarrows: "â‡†",
                    leftrightharpoons: "â‡‹",
                    leftrightsquigarrow: "â†­",
                    LeftRightVector: "â¥Ž",
                    LeftTeeArrow: "â†¤",
                    LeftTee: "âŠ£",
                    LeftTeeVector: "â¥š",
                    leftthreetimes: "â‹‹",
                    LeftTriangleBar: "â§",
                    LeftTriangle: "âŠ²",
                    LeftTriangleEqual: "âŠ´",
                    LeftUpDownVector: "â¥‘",
                    LeftUpTeeVector: "â¥ ",
                    LeftUpVectorBar: "â¥˜",
                    LeftUpVector: "â†¿",
                    LeftVectorBar: "â¥’",
                    LeftVector: "â†¼",
                    lEg: "âª‹",
                    leg: "â‹š",
                    leq: "â‰¤",
                    leqq: "â‰¦",
                    leqslant: "â©½",
                    lescc: "âª¨",
                    les: "â©½",
                    lesdot: "â©¿",
                    lesdoto: "âª",
                    lesdotor: "âªƒ",
                    lesg: "â‹šï¸€",
                    lesges: "âª“",
                    lessapprox: "âª…",
                    lessdot: "â‹–",
                    lesseqgtr: "â‹š",
                    lesseqqgtr: "âª‹",
                    LessEqualGreater: "â‹š",
                    LessFullEqual: "â‰¦",
                    LessGreater: "â‰¶",
                    lessgtr: "â‰¶",
                    LessLess: "âª¡",
                    lesssim: "â‰²",
                    LessSlantEqual: "â©½",
                    LessTilde: "â‰²",
                    lfisht: "â¥¼",
                    lfloor: "âŒŠ",
                    Lfr: "ð”",
                    lfr: "ð”©",
                    lg: "â‰¶",
                    lgE: "âª‘",
                    lHar: "â¥¢",
                    lhard: "â†½",
                    lharu: "â†¼",
                    lharul: "â¥ª",
                    lhblk: "â–„",
                    LJcy: "Ð‰",
                    ljcy: "Ñ™",
                    llarr: "â‡‡",
                    ll: "â‰ª",
                    Ll: "â‹˜",
                    llcorner: "âŒž",
                    Lleftarrow: "â‡š",
                    llhard: "â¥«",
                    lltri: "â—º",
                    Lmidot: "Ä¿",
                    lmidot: "Å€",
                    lmoustache: "âŽ°",
                    lmoust: "âŽ°",
                    lnap: "âª‰",
                    lnapprox: "âª‰",
                    lne: "âª‡",
                    lnE: "â‰¨",
                    lneq: "âª‡",
                    lneqq: "â‰¨",
                    lnsim: "â‹¦",
                    loang: "âŸ¬",
                    loarr: "â‡½",
                    lobrk: "âŸ¦",
                    longleftarrow: "âŸµ",
                    LongLeftArrow: "âŸµ",
                    Longleftarrow: "âŸ¸",
                    longleftrightarrow: "âŸ·",
                    LongLeftRightArrow: "âŸ·",
                    Longleftrightarrow: "âŸº",
                    longmapsto: "âŸ¼",
                    longrightarrow: "âŸ¶",
                    LongRightArrow: "âŸ¶",
                    Longrightarrow: "âŸ¹",
                    looparrowleft: "â†«",
                    looparrowright: "â†¬",
                    lopar: "â¦…",
                    Lopf: "ð•ƒ",
                    lopf: "ð•",
                    loplus: "â¨­",
                    lotimes: "â¨´",
                    lowast: "âˆ—",
                    lowbar: "_",
                    LowerLeftArrow: "â†™",
                    LowerRightArrow: "â†˜",
                    loz: "â—Š",
                    lozenge: "â—Š",
                    lozf: "â§«",
                    lpar: "(",
                    lparlt: "â¦“",
                    lrarr: "â‡†",
                    lrcorner: "âŒŸ",
                    lrhar: "â‡‹",
                    lrhard: "â¥­",
                    lrm: "â€Ž",
                    lrtri: "âŠ¿",
                    lsaquo: "â€¹",
                    lscr: "ð“",
                    Lscr: "â„’",
                    lsh: "â†°",
                    Lsh: "â†°",
                    lsim: "â‰²",
                    lsime: "âª",
                    lsimg: "âª",
                    lsqb: "[",
                    lsquo: "â€˜",
                    lsquor: "â€š",
                    Lstrok: "Å",
                    lstrok: "Å‚",
                    ltcc: "âª¦",
                    ltcir: "â©¹",
                    lt: "<",
                    LT: "<",
                    Lt: "â‰ª",
                    ltdot: "â‹–",
                    lthree: "â‹‹",
                    ltimes: "â‹‰",
                    ltlarr: "â¥¶",
                    ltquest: "â©»",
                    ltri: "â—ƒ",
                    ltrie: "âŠ´",
                    ltrif: "â—‚",
                    ltrPar: "â¦–",
                    lurdshar: "â¥Š",
                    luruhar: "â¥¦",
                    lvertneqq: "â‰¨ï¸€",
                    lvnE: "â‰¨ï¸€",
                    macr: "Â¯",
                    male: "â™‚",
                    malt: "âœ ",
                    maltese: "âœ ",
                    Map: "â¤…",
                    map: "â†¦",
                    mapsto: "â†¦",
                    mapstodown: "â†§",
                    mapstoleft: "â†¤",
                    mapstoup: "â†¥",
                    marker: "â–®",
                    mcomma: "â¨©",
                    Mcy: "Ðœ",
                    mcy: "Ð¼",
                    mdash: "â€”",
                    mDDot: "âˆº",
                    measuredangle: "âˆ¡",
                    MediumSpace: "âŸ",
                    Mellintrf: "â„³",
                    Mfr: "ð”",
                    mfr: "ð”ª",
                    mho: "â„§",
                    micro: "Âµ",
                    midast: "*",
                    midcir: "â«°",
                    mid: "âˆ£",
                    middot: "Â·",
                    minusb: "âŠŸ",
                    minus: "âˆ’",
                    minusd: "âˆ¸",
                    minusdu: "â¨ª",
                    MinusPlus: "âˆ“",
                    mlcp: "â«›",
                    mldr: "â€¦",
                    mnplus: "âˆ“",
                    models: "âŠ§",
                    Mopf: "ð•„",
                    mopf: "ð•ž",
                    mp: "âˆ“",
                    mscr: "ð“‚",
                    Mscr: "â„³",
                    mstpos: "âˆ¾",
                    Mu: "Îœ",
                    mu: "Î¼",
                    multimap: "âŠ¸",
                    mumap: "âŠ¸",
                    nabla: "âˆ‡",
                    Nacute: "Åƒ",
                    nacute: "Å„",
                    nang: "âˆ âƒ’",
                    nap: "â‰‰",
                    napE: "â©°Ì¸",
                    napid: "â‰‹Ì¸",
                    napos: "Å‰",
                    napprox: "â‰‰",
                    natural: "â™®",
                    naturals: "â„•",
                    natur: "â™®",
                    nbsp: "Â ",
                    nbump: "â‰ŽÌ¸",
                    nbumpe: "â‰Ì¸",
                    ncap: "â©ƒ",
                    Ncaron: "Å‡",
                    ncaron: "Åˆ",
                    Ncedil: "Å…",
                    ncedil: "Å†",
                    ncong: "â‰‡",
                    ncongdot: "â©­Ì¸",
                    ncup: "â©‚",
                    Ncy: "Ð",
                    ncy: "Ð½",
                    ndash: "â€“",
                    nearhk: "â¤¤",
                    nearr: "â†—",
                    neArr: "â‡—",
                    nearrow: "â†—",
                    ne: "â‰ ",
                    nedot: "â‰Ì¸",
                    NegativeMediumSpace: "â€‹",
                    NegativeThickSpace: "â€‹",
                    NegativeThinSpace: "â€‹",
                    NegativeVeryThinSpace: "â€‹",
                    nequiv: "â‰¢",
                    nesear: "â¤¨",
                    nesim: "â‰‚Ì¸",
                    NestedGreaterGreater: "â‰«",
                    NestedLessLess: "â‰ª",
                    NewLine: "\n",
                    nexist: "âˆ„",
                    nexists: "âˆ„",
                    Nfr: "ð”‘",
                    nfr: "ð”«",
                    ngE: "â‰§Ì¸",
                    nge: "â‰±",
                    ngeq: "â‰±",
                    ngeqq: "â‰§Ì¸",
                    ngeqslant: "â©¾Ì¸",
                    nges: "â©¾Ì¸",
                    nGg: "â‹™Ì¸",
                    ngsim: "â‰µ",
                    nGt: "â‰«âƒ’",
                    ngt: "â‰¯",
                    ngtr: "â‰¯",
                    nGtv: "â‰«Ì¸",
                    nharr: "â†®",
                    nhArr: "â‡Ž",
                    nhpar: "â«²",
                    ni: "âˆ‹",
                    nis: "â‹¼",
                    nisd: "â‹º",
                    niv: "âˆ‹",
                    NJcy: "ÐŠ",
                    njcy: "Ñš",
                    nlarr: "â†š",
                    nlArr: "â‡",
                    nldr: "â€¥",
                    nlE: "â‰¦Ì¸",
                    nle: "â‰°",
                    nleftarrow: "â†š",
                    nLeftarrow: "â‡",
                    nleftrightarrow: "â†®",
                    nLeftrightarrow: "â‡Ž",
                    nleq: "â‰°",
                    nleqq: "â‰¦Ì¸",
                    nleqslant: "â©½Ì¸",
                    nles: "â©½Ì¸",
                    nless: "â‰®",
                    nLl: "â‹˜Ì¸",
                    nlsim: "â‰´",
                    nLt: "â‰ªâƒ’",
                    nlt: "â‰®",
                    nltri: "â‹ª",
                    nltrie: "â‹¬",
                    nLtv: "â‰ªÌ¸",
                    nmid: "âˆ¤",
                    NoBreak: "â ",
                    NonBreakingSpace: "Â ",
                    nopf: "ð•Ÿ",
                    Nopf: "â„•",
                    Not: "â«¬",
                    not: "Â¬",
                    NotCongruent: "â‰¢",
                    NotCupCap: "â‰­",
                    NotDoubleVerticalBar: "âˆ¦",
                    NotElement: "âˆ‰",
                    NotEqual: "â‰ ",
                    NotEqualTilde: "â‰‚Ì¸",
                    NotExists: "âˆ„",
                    NotGreater: "â‰¯",
                    NotGreaterEqual: "â‰±",
                    NotGreaterFullEqual: "â‰§Ì¸",
                    NotGreaterGreater: "â‰«Ì¸",
                    NotGreaterLess: "â‰¹",
                    NotGreaterSlantEqual: "â©¾Ì¸",
                    NotGreaterTilde: "â‰µ",
                    NotHumpDownHump: "â‰ŽÌ¸",
                    NotHumpEqual: "â‰Ì¸",
                    notin: "âˆ‰",
                    notindot: "â‹µÌ¸",
                    notinE: "â‹¹Ì¸",
                    notinva: "âˆ‰",
                    notinvb: "â‹·",
                    notinvc: "â‹¶",
                    NotLeftTriangleBar: "â§Ì¸",
                    NotLeftTriangle: "â‹ª",
                    NotLeftTriangleEqual: "â‹¬",
                    NotLess: "â‰®",
                    NotLessEqual: "â‰°",
                    NotLessGreater: "â‰¸",
                    NotLessLess: "â‰ªÌ¸",
                    NotLessSlantEqual: "â©½Ì¸",
                    NotLessTilde: "â‰´",
                    NotNestedGreaterGreater: "âª¢Ì¸",
                    NotNestedLessLess: "âª¡Ì¸",
                    notni: "âˆŒ",
                    notniva: "âˆŒ",
                    notnivb: "â‹¾",
                    notnivc: "â‹½",
                    NotPrecedes: "âŠ€",
                    NotPrecedesEqual: "âª¯Ì¸",
                    NotPrecedesSlantEqual: "â‹ ",
                    NotReverseElement: "âˆŒ",
                    NotRightTriangleBar: "â§Ì¸",
                    NotRightTriangle: "â‹«",
                    NotRightTriangleEqual: "â‹­",
                    NotSquareSubset: "âŠÌ¸",
                    NotSquareSubsetEqual: "â‹¢",
                    NotSquareSuperset: "âŠÌ¸",
                    NotSquareSupersetEqual: "â‹£",
                    NotSubset: "âŠ‚âƒ’",
                    NotSubsetEqual: "âŠˆ",
                    NotSucceeds: "âŠ",
                    NotSucceedsEqual: "âª°Ì¸",
                    NotSucceedsSlantEqual: "â‹¡",
                    NotSucceedsTilde: "â‰¿Ì¸",
                    NotSuperset: "âŠƒâƒ’",
                    NotSupersetEqual: "âŠ‰",
                    NotTilde: "â‰",
                    NotTildeEqual: "â‰„",
                    NotTildeFullEqual: "â‰‡",
                    NotTildeTilde: "â‰‰",
                    NotVerticalBar: "âˆ¤",
                    nparallel: "âˆ¦",
                    npar: "âˆ¦",
                    nparsl: "â«½âƒ¥",
                    npart: "âˆ‚Ì¸",
                    npolint: "â¨”",
                    npr: "âŠ€",
                    nprcue: "â‹ ",
                    nprec: "âŠ€",
                    npreceq: "âª¯Ì¸",
                    npre: "âª¯Ì¸",
                    nrarrc: "â¤³Ì¸",
                    nrarr: "â†›",
                    nrArr: "â‡",
                    nrarrw: "â†Ì¸",
                    nrightarrow: "â†›",
                    nRightarrow: "â‡",
                    nrtri: "â‹«",
                    nrtrie: "â‹­",
                    nsc: "âŠ",
                    nsccue: "â‹¡",
                    nsce: "âª°Ì¸",
                    Nscr: "ð’©",
                    nscr: "ð“ƒ",
                    nshortmid: "âˆ¤",
                    nshortparallel: "âˆ¦",
                    nsim: "â‰",
                    nsime: "â‰„",
                    nsimeq: "â‰„",
                    nsmid: "âˆ¤",
                    nspar: "âˆ¦",
                    nsqsube: "â‹¢",
                    nsqsupe: "â‹£",
                    nsub: "âŠ„",
                    nsubE: "â«…Ì¸",
                    nsube: "âŠˆ",
                    nsubset: "âŠ‚âƒ’",
                    nsubseteq: "âŠˆ",
                    nsubseteqq: "â«…Ì¸",
                    nsucc: "âŠ",
                    nsucceq: "âª°Ì¸",
                    nsup: "âŠ…",
                    nsupE: "â«†Ì¸",
                    nsupe: "âŠ‰",
                    nsupset: "âŠƒâƒ’",
                    nsupseteq: "âŠ‰",
                    nsupseteqq: "â«†Ì¸",
                    ntgl: "â‰¹",
                    Ntilde: "Ã‘",
                    ntilde: "Ã±",
                    ntlg: "â‰¸",
                    ntriangleleft: "â‹ª",
                    ntrianglelefteq: "â‹¬",
                    ntriangleright: "â‹«",
                    ntrianglerighteq: "â‹­",
                    Nu: "Î",
                    nu: "Î½",
                    num: "#",
                    numero: "â„–",
                    numsp: "â€‡",
                    nvap: "â‰âƒ’",
                    nvdash: "âŠ¬",
                    nvDash: "âŠ­",
                    nVdash: "âŠ®",
                    nVDash: "âŠ¯",
                    nvge: "â‰¥âƒ’",
                    nvgt: ">âƒ’",
                    nvHarr: "â¤„",
                    nvinfin: "â§ž",
                    nvlArr: "â¤‚",
                    nvle: "â‰¤âƒ’",
                    nvlt: "<âƒ’",
                    nvltrie: "âŠ´âƒ’",
                    nvrArr: "â¤ƒ",
                    nvrtrie: "âŠµâƒ’",
                    nvsim: "âˆ¼âƒ’",
                    nwarhk: "â¤£",
                    nwarr: "â†–",
                    nwArr: "â‡–",
                    nwarrow: "â†–",
                    nwnear: "â¤§",
                    Oacute: "Ã“",
                    oacute: "Ã³",
                    oast: "âŠ›",
                    Ocirc: "Ã”",
                    ocirc: "Ã´",
                    ocir: "âŠš",
                    Ocy: "Ðž",
                    ocy: "Ð¾",
                    odash: "âŠ",
                    Odblac: "Å",
                    odblac: "Å‘",
                    odiv: "â¨¸",
                    odot: "âŠ™",
                    odsold: "â¦¼",
                    OElig: "Å’",
                    oelig: "Å“",
                    ofcir: "â¦¿",
                    Ofr: "ð”’",
                    ofr: "ð”¬",
                    ogon: "Ë›",
                    Ograve: "Ã’",
                    ograve: "Ã²",
                    ogt: "â§",
                    ohbar: "â¦µ",
                    ohm: "Î©",
                    oint: "âˆ®",
                    olarr: "â†º",
                    olcir: "â¦¾",
                    olcross: "â¦»",
                    oline: "â€¾",
                    olt: "â§€",
                    Omacr: "ÅŒ",
                    omacr: "Å",
                    Omega: "Î©",
                    omega: "Ï‰",
                    Omicron: "ÎŸ",
                    omicron: "Î¿",
                    omid: "â¦¶",
                    ominus: "âŠ–",
                    Oopf: "ð•†",
                    oopf: "ð• ",
                    opar: "â¦·",
                    OpenCurlyDoubleQuote: "â€œ",
                    OpenCurlyQuote: "â€˜",
                    operp: "â¦¹",
                    oplus: "âŠ•",
                    orarr: "â†»",
                    Or: "â©”",
                    or: "âˆ¨",
                    ord: "â©",
                    order: "â„´",
                    orderof: "â„´",
                    ordf: "Âª",
                    ordm: "Âº",
                    origof: "âŠ¶",
                    oror: "â©–",
                    orslope: "â©—",
                    orv: "â©›",
                    oS: "â“ˆ",
                    Oscr: "ð’ª",
                    oscr: "â„´",
                    Oslash: "Ã˜",
                    oslash: "Ã¸",
                    osol: "âŠ˜",
                    Otilde: "Ã•",
                    otilde: "Ãµ",
                    otimesas: "â¨¶",
                    Otimes: "â¨·",
                    otimes: "âŠ—",
                    Ouml: "Ã–",
                    ouml: "Ã¶",
                    ovbar: "âŒ½",
                    OverBar: "â€¾",
                    OverBrace: "âž",
                    OverBracket: "âŽ´",
                    OverParenthesis: "âœ",
                    para: "Â¶",
                    parallel: "âˆ¥",
                    par: "âˆ¥",
                    parsim: "â«³",
                    parsl: "â«½",
                    part: "âˆ‚",
                    PartialD: "âˆ‚",
                    Pcy: "ÐŸ",
                    pcy: "Ð¿",
                    percnt: "%",
                    period: ".",
                    permil: "â€°",
                    perp: "âŠ¥",
                    pertenk: "â€±",
                    Pfr: "ð”“",
                    pfr: "ð”­",
                    Phi: "Î¦",
                    phi: "Ï†",
                    phiv: "Ï•",
                    phmmat: "â„³",
                    phone: "â˜Ž",
                    Pi: "Î ",
                    pi: "Ï€",
                    pitchfork: "â‹”",
                    piv: "Ï–",
                    planck: "â„",
                    planckh: "â„Ž",
                    plankv: "â„",
                    plusacir: "â¨£",
                    plusb: "âŠž",
                    pluscir: "â¨¢",
                    plus: "+",
                    plusdo: "âˆ”",
                    plusdu: "â¨¥",
                    pluse: "â©²",
                    PlusMinus: "Â±",
                    plusmn: "Â±",
                    plussim: "â¨¦",
                    plustwo: "â¨§",
                    pm: "Â±",
                    Poincareplane: "â„Œ",
                    pointint: "â¨•",
                    popf: "ð•¡",
                    Popf: "â„™",
                    pound: "Â£",
                    prap: "âª·",
                    Pr: "âª»",
                    pr: "â‰º",
                    prcue: "â‰¼",
                    precapprox: "âª·",
                    prec: "â‰º",
                    preccurlyeq: "â‰¼",
                    Precedes: "â‰º",
                    PrecedesEqual: "âª¯",
                    PrecedesSlantEqual: "â‰¼",
                    PrecedesTilde: "â‰¾",
                    preceq: "âª¯",
                    precnapprox: "âª¹",
                    precneqq: "âªµ",
                    precnsim: "â‹¨",
                    pre: "âª¯",
                    prE: "âª³",
                    precsim: "â‰¾",
                    prime: "â€²",
                    Prime: "â€³",
                    primes: "â„™",
                    prnap: "âª¹",
                    prnE: "âªµ",
                    prnsim: "â‹¨",
                    prod: "âˆ",
                    Product: "âˆ",
                    profalar: "âŒ®",
                    profline: "âŒ’",
                    profsurf: "âŒ“",
                    prop: "âˆ",
                    Proportional: "âˆ",
                    Proportion: "âˆ·",
                    propto: "âˆ",
                    prsim: "â‰¾",
                    prurel: "âŠ°",
                    Pscr: "ð’«",
                    pscr: "ð“…",
                    Psi: "Î¨",
                    psi: "Ïˆ",
                    puncsp: "â€ˆ",
                    Qfr: "ð””",
                    qfr: "ð”®",
                    qint: "â¨Œ",
                    qopf: "ð•¢",
                    Qopf: "â„š",
                    qprime: "â—",
                    Qscr: "ð’¬",
                    qscr: "ð“†",
                    quaternions: "â„",
                    quatint: "â¨–",
                    quest: "?",
                    questeq: "â‰Ÿ",
                    quot: '"',
                    QUOT: '"',
                    rAarr: "â‡›",
                    race: "âˆ½Ì±",
                    Racute: "Å”",
                    racute: "Å•",
                    radic: "âˆš",
                    raemptyv: "â¦³",
                    rang: "âŸ©",
                    Rang: "âŸ«",
                    rangd: "â¦’",
                    range: "â¦¥",
                    rangle: "âŸ©",
                    raquo: "Â»",
                    rarrap: "â¥µ",
                    rarrb: "â‡¥",
                    rarrbfs: "â¤ ",
                    rarrc: "â¤³",
                    rarr: "â†’",
                    Rarr: "â† ",
                    rArr: "â‡’",
                    rarrfs: "â¤ž",
                    rarrhk: "â†ª",
                    rarrlp: "â†¬",
                    rarrpl: "â¥…",
                    rarrsim: "â¥´",
                    Rarrtl: "â¤–",
                    rarrtl: "â†£",
                    rarrw: "â†",
                    ratail: "â¤š",
                    rAtail: "â¤œ",
                    ratio: "âˆ¶",
                    rationals: "â„š",
                    rbarr: "â¤",
                    rBarr: "â¤",
                    RBarr: "â¤",
                    rbbrk: "â³",
                    rbrace: "}",
                    rbrack: "]",
                    rbrke: "â¦Œ",
                    rbrksld: "â¦Ž",
                    rbrkslu: "â¦",
                    Rcaron: "Å˜",
                    rcaron: "Å™",
                    Rcedil: "Å–",
                    rcedil: "Å—",
                    rceil: "âŒ‰",
                    rcub: "}",
                    Rcy: "Ð ",
                    rcy: "Ñ€",
                    rdca: "â¤·",
                    rdldhar: "â¥©",
                    rdquo: "â€",
                    rdquor: "â€",
                    rdsh: "â†³",
                    real: "â„œ",
                    realine: "â„›",
                    realpart: "â„œ",
                    reals: "â„",
                    Re: "â„œ",
                    rect: "â–­",
                    reg: "Â®",
                    REG: "Â®",
                    ReverseElement: "âˆ‹",
                    ReverseEquilibrium: "â‡‹",
                    ReverseUpEquilibrium: "â¥¯",
                    rfisht: "â¥½",
                    rfloor: "âŒ‹",
                    rfr: "ð”¯",
                    Rfr: "â„œ",
                    rHar: "â¥¤",
                    rhard: "â‡",
                    rharu: "â‡€",
                    rharul: "â¥¬",
                    Rho: "Î¡",
                    rho: "Ï",
                    rhov: "Ï±",
                    RightAngleBracket: "âŸ©",
                    RightArrowBar: "â‡¥",
                    rightarrow: "â†’",
                    RightArrow: "â†’",
                    Rightarrow: "â‡’",
                    RightArrowLeftArrow: "â‡„",
                    rightarrowtail: "â†£",
                    RightCeiling: "âŒ‰",
                    RightDoubleBracket: "âŸ§",
                    RightDownTeeVector: "â¥",
                    RightDownVectorBar: "â¥•",
                    RightDownVector: "â‡‚",
                    RightFloor: "âŒ‹",
                    rightharpoondown: "â‡",
                    rightharpoonup: "â‡€",
                    rightleftarrows: "â‡„",
                    rightleftharpoons: "â‡Œ",
                    rightrightarrows: "â‡‰",
                    rightsquigarrow: "â†",
                    RightTeeArrow: "â†¦",
                    RightTee: "âŠ¢",
                    RightTeeVector: "â¥›",
                    rightthreetimes: "â‹Œ",
                    RightTriangleBar: "â§",
                    RightTriangle: "âŠ³",
                    RightTriangleEqual: "âŠµ",
                    RightUpDownVector: "â¥",
                    RightUpTeeVector: "â¥œ",
                    RightUpVectorBar: "â¥”",
                    RightUpVector: "â†¾",
                    RightVectorBar: "â¥“",
                    RightVector: "â‡€",
                    ring: "Ëš",
                    risingdotseq: "â‰“",
                    rlarr: "â‡„",
                    rlhar: "â‡Œ",
                    rlm: "â€",
                    rmoustache: "âŽ±",
                    rmoust: "âŽ±",
                    rnmid: "â«®",
                    roang: "âŸ­",
                    roarr: "â‡¾",
                    robrk: "âŸ§",
                    ropar: "â¦†",
                    ropf: "ð•£",
                    Ropf: "â„",
                    roplus: "â¨®",
                    rotimes: "â¨µ",
                    RoundImplies: "â¥°",
                    rpar: ")",
                    rpargt: "â¦”",
                    rppolint: "â¨’",
                    rrarr: "â‡‰",
                    Rrightarrow: "â‡›",
                    rsaquo: "â€º",
                    rscr: "ð“‡",
                    Rscr: "â„›",
                    rsh: "â†±",
                    Rsh: "â†±",
                    rsqb: "]",
                    rsquo: "â€™",
                    rsquor: "â€™",
                    rthree: "â‹Œ",
                    rtimes: "â‹Š",
                    rtri: "â–¹",
                    rtrie: "âŠµ",
                    rtrif: "â–¸",
                    rtriltri: "â§Ž",
                    RuleDelayed: "â§´",
                    ruluhar: "â¥¨",
                    rx: "â„ž",
                    Sacute: "Åš",
                    sacute: "Å›",
                    sbquo: "â€š",
                    scap: "âª¸",
                    Scaron: "Å ",
                    scaron: "Å¡",
                    Sc: "âª¼",
                    sc: "â‰»",
                    sccue: "â‰½",
                    sce: "âª°",
                    scE: "âª´",
                    Scedil: "Åž",
                    scedil: "ÅŸ",
                    Scirc: "Åœ",
                    scirc: "Å",
                    scnap: "âªº",
                    scnE: "âª¶",
                    scnsim: "â‹©",
                    scpolint: "â¨“",
                    scsim: "â‰¿",
                    Scy: "Ð¡",
                    scy: "Ñ",
                    sdotb: "âŠ¡",
                    sdot: "â‹…",
                    sdote: "â©¦",
                    searhk: "â¤¥",
                    searr: "â†˜",
                    seArr: "â‡˜",
                    searrow: "â†˜",
                    sect: "Â§",
                    semi: ";",
                    seswar: "â¤©",
                    setminus: "âˆ–",
                    setmn: "âˆ–",
                    sext: "âœ¶",
                    Sfr: "ð”–",
                    sfr: "ð”°",
                    sfrown: "âŒ¢",
                    sharp: "â™¯",
                    SHCHcy: "Ð©",
                    shchcy: "Ñ‰",
                    SHcy: "Ð¨",
                    shcy: "Ñˆ",
                    ShortDownArrow: "â†“",
                    ShortLeftArrow: "â†",
                    shortmid: "âˆ£",
                    shortparallel: "âˆ¥",
                    ShortRightArrow: "â†’",
                    ShortUpArrow: "â†‘",
                    shy: "Â­",
                    Sigma: "Î£",
                    sigma: "Ïƒ",
                    sigmaf: "Ï‚",
                    sigmav: "Ï‚",
                    sim: "âˆ¼",
                    simdot: "â©ª",
                    sime: "â‰ƒ",
                    simeq: "â‰ƒ",
                    simg: "âªž",
                    simgE: "âª ",
                    siml: "âª",
                    simlE: "âªŸ",
                    simne: "â‰†",
                    simplus: "â¨¤",
                    simrarr: "â¥²",
                    slarr: "â†",
                    SmallCircle: "âˆ˜",
                    smallsetminus: "âˆ–",
                    smashp: "â¨³",
                    smeparsl: "â§¤",
                    smid: "âˆ£",
                    smile: "âŒ£",
                    smt: "âªª",
                    smte: "âª¬",
                    smtes: "âª¬ï¸€",
                    SOFTcy: "Ð¬",
                    softcy: "ÑŒ",
                    solbar: "âŒ¿",
                    solb: "â§„",
                    sol: "/",
                    Sopf: "ð•Š",
                    sopf: "ð•¤",
                    spades: "â™ ",
                    spadesuit: "â™ ",
                    spar: "âˆ¥",
                    sqcap: "âŠ“",
                    sqcaps: "âŠ“ï¸€",
                    sqcup: "âŠ”",
                    sqcups: "âŠ”ï¸€",
                    Sqrt: "âˆš",
                    sqsub: "âŠ",
                    sqsube: "âŠ‘",
                    sqsubset: "âŠ",
                    sqsubseteq: "âŠ‘",
                    sqsup: "âŠ",
                    sqsupe: "âŠ’",
                    sqsupset: "âŠ",
                    sqsupseteq: "âŠ’",
                    square: "â–¡",
                    Square: "â–¡",
                    SquareIntersection: "âŠ“",
                    SquareSubset: "âŠ",
                    SquareSubsetEqual: "âŠ‘",
                    SquareSuperset: "âŠ",
                    SquareSupersetEqual: "âŠ’",
                    SquareUnion: "âŠ”",
                    squarf: "â–ª",
                    squ: "â–¡",
                    squf: "â–ª",
                    srarr: "â†’",
                    Sscr: "ð’®",
                    sscr: "ð“ˆ",
                    ssetmn: "âˆ–",
                    ssmile: "âŒ£",
                    sstarf: "â‹†",
                    Star: "â‹†",
                    star: "â˜†",
                    starf: "â˜…",
                    straightepsilon: "Ïµ",
                    straightphi: "Ï•",
                    strns: "Â¯",
                    sub: "âŠ‚",
                    Sub: "â‹",
                    subdot: "âª½",
                    subE: "â«…",
                    sube: "âŠ†",
                    subedot: "â«ƒ",
                    submult: "â«",
                    subnE: "â«‹",
                    subne: "âŠŠ",
                    subplus: "âª¿",
                    subrarr: "â¥¹",
                    subset: "âŠ‚",
                    Subset: "â‹",
                    subseteq: "âŠ†",
                    subseteqq: "â«…",
                    SubsetEqual: "âŠ†",
                    subsetneq: "âŠŠ",
                    subsetneqq: "â«‹",
                    subsim: "â«‡",
                    subsub: "â«•",
                    subsup: "â«“",
                    succapprox: "âª¸",
                    succ: "â‰»",
                    succcurlyeq: "â‰½",
                    Succeeds: "â‰»",
                    SucceedsEqual: "âª°",
                    SucceedsSlantEqual: "â‰½",
                    SucceedsTilde: "â‰¿",
                    succeq: "âª°",
                    succnapprox: "âªº",
                    succneqq: "âª¶",
                    succnsim: "â‹©",
                    succsim: "â‰¿",
                    SuchThat: "âˆ‹",
                    sum: "âˆ‘",
                    Sum: "âˆ‘",
                    sung: "â™ª",
                    sup1: "Â¹",
                    sup2: "Â²",
                    sup3: "Â³",
                    sup: "âŠƒ",
                    Sup: "â‹‘",
                    supdot: "âª¾",
                    supdsub: "â«˜",
                    supE: "â«†",
                    supe: "âŠ‡",
                    supedot: "â«„",
                    Superset: "âŠƒ",
                    SupersetEqual: "âŠ‡",
                    suphsol: "âŸ‰",
                    suphsub: "â«—",
                    suplarr: "â¥»",
                    supmult: "â«‚",
                    supnE: "â«Œ",
                    supne: "âŠ‹",
                    supplus: "â«€",
                    supset: "âŠƒ",
                    Supset: "â‹‘",
                    supseteq: "âŠ‡",
                    supseteqq: "â«†",
                    supsetneq: "âŠ‹",
                    supsetneqq: "â«Œ",
                    supsim: "â«ˆ",
                    supsub: "â«”",
                    supsup: "â«–",
                    swarhk: "â¤¦",
                    swarr: "â†™",
                    swArr: "â‡™",
                    swarrow: "â†™",
                    swnwar: "â¤ª",
                    szlig: "ÃŸ",
                    Tab: "\t",
                    target: "âŒ–",
                    Tau: "Î¤",
                    tau: "Ï„",
                    tbrk: "âŽ´",
                    Tcaron: "Å¤",
                    tcaron: "Å¥",
                    Tcedil: "Å¢",
                    tcedil: "Å£",
                    Tcy: "Ð¢",
                    tcy: "Ñ‚",
                    tdot: "âƒ›",
                    telrec: "âŒ•",
                    Tfr: "ð”—",
                    tfr: "ð”±",
                    there4: "âˆ´",
                    therefore: "âˆ´",
                    Therefore: "âˆ´",
                    Theta: "Î˜",
                    theta: "Î¸",
                    thetasym: "Ï‘",
                    thetav: "Ï‘",
                    thickapprox: "â‰ˆ",
                    thicksim: "âˆ¼",
                    ThickSpace: "âŸâ€Š",
                    ThinSpace: "â€‰",
                    thinsp: "â€‰",
                    thkap: "â‰ˆ",
                    thksim: "âˆ¼",
                    THORN: "Ãž",
                    thorn: "Ã¾",
                    tilde: "Ëœ",
                    Tilde: "âˆ¼",
                    TildeEqual: "â‰ƒ",
                    TildeFullEqual: "â‰…",
                    TildeTilde: "â‰ˆ",
                    timesbar: "â¨±",
                    timesb: "âŠ ",
                    times: "Ã—",
                    timesd: "â¨°",
                    tint: "âˆ­",
                    toea: "â¤¨",
                    topbot: "âŒ¶",
                    topcir: "â«±",
                    top: "âŠ¤",
                    Topf: "ð•‹",
                    topf: "ð•¥",
                    topfork: "â«š",
                    tosa: "â¤©",
                    tprime: "â€´",
                    trade: "â„¢",
                    TRADE: "â„¢",
                    triangle: "â–µ",
                    triangledown: "â–¿",
                    triangleleft: "â—ƒ",
                    trianglelefteq: "âŠ´",
                    triangleq: "â‰œ",
                    triangleright: "â–¹",
                    trianglerighteq: "âŠµ",
                    tridot: "â—¬",
                    trie: "â‰œ",
                    triminus: "â¨º",
                    TripleDot: "âƒ›",
                    triplus: "â¨¹",
                    trisb: "â§",
                    tritime: "â¨»",
                    trpezium: "â¢",
                    Tscr: "ð’¯",
                    tscr: "ð“‰",
                    TScy: "Ð¦",
                    tscy: "Ñ†",
                    TSHcy: "Ð‹",
                    tshcy: "Ñ›",
                    Tstrok: "Å¦",
                    tstrok: "Å§",
                    twixt: "â‰¬",
                    twoheadleftarrow: "â†ž",
                    twoheadrightarrow: "â† ",
                    Uacute: "Ãš",
                    uacute: "Ãº",
                    uarr: "â†‘",
                    Uarr: "â†Ÿ",
                    uArr: "â‡‘",
                    Uarrocir: "â¥‰",
                    Ubrcy: "ÐŽ",
                    ubrcy: "Ñž",
                    Ubreve: "Å¬",
                    ubreve: "Å­",
                    Ucirc: "Ã›",
                    ucirc: "Ã»",
                    Ucy: "Ð£",
                    ucy: "Ñƒ",
                    udarr: "â‡…",
                    Udblac: "Å°",
                    udblac: "Å±",
                    udhar: "â¥®",
                    ufisht: "â¥¾",
                    Ufr: "ð”˜",
                    ufr: "ð”²",
                    Ugrave: "Ã™",
                    ugrave: "Ã¹",
                    uHar: "â¥£",
                    uharl: "â†¿",
                    uharr: "â†¾",
                    uhblk: "â–€",
                    ulcorn: "âŒœ",
                    ulcorner: "âŒœ",
                    ulcrop: "âŒ",
                    ultri: "â—¸",
                    Umacr: "Åª",
                    umacr: "Å«",
                    uml: "Â¨",
                    UnderBar: "_",
                    UnderBrace: "âŸ",
                    UnderBracket: "âŽµ",
                    UnderParenthesis: "â",
                    Union: "â‹ƒ",
                    UnionPlus: "âŠŽ",
                    Uogon: "Å²",
                    uogon: "Å³",
                    Uopf: "ð•Œ",
                    uopf: "ð•¦",
                    UpArrowBar: "â¤’",
                    uparrow: "â†‘",
                    UpArrow: "â†‘",
                    Uparrow: "â‡‘",
                    UpArrowDownArrow: "â‡…",
                    updownarrow: "â†•",
                    UpDownArrow: "â†•",
                    Updownarrow: "â‡•",
                    UpEquilibrium: "â¥®",
                    upharpoonleft: "â†¿",
                    upharpoonright: "â†¾",
                    uplus: "âŠŽ",
                    UpperLeftArrow: "â†–",
                    UpperRightArrow: "â†—",
                    upsi: "Ï…",
                    Upsi: "Ï’",
                    upsih: "Ï’",
                    Upsilon: "Î¥",
                    upsilon: "Ï…",
                    UpTeeArrow: "â†¥",
                    UpTee: "âŠ¥",
                    upuparrows: "â‡ˆ",
                    urcorn: "âŒ",
                    urcorner: "âŒ",
                    urcrop: "âŒŽ",
                    Uring: "Å®",
                    uring: "Å¯",
                    urtri: "â—¹",
                    Uscr: "ð’°",
                    uscr: "ð“Š",
                    utdot: "â‹°",
                    Utilde: "Å¨",
                    utilde: "Å©",
                    utri: "â–µ",
                    utrif: "â–´",
                    uuarr: "â‡ˆ",
                    Uuml: "Ãœ",
                    uuml: "Ã¼",
                    uwangle: "â¦§",
                    vangrt: "â¦œ",
                    varepsilon: "Ïµ",
                    varkappa: "Ï°",
                    varnothing: "âˆ…",
                    varphi: "Ï•",
                    varpi: "Ï–",
                    varpropto: "âˆ",
                    varr: "â†•",
                    vArr: "â‡•",
                    varrho: "Ï±",
                    varsigma: "Ï‚",
                    varsubsetneq: "âŠŠï¸€",
                    varsubsetneqq: "â«‹ï¸€",
                    varsupsetneq: "âŠ‹ï¸€",
                    varsupsetneqq: "â«Œï¸€",
                    vartheta: "Ï‘",
                    vartriangleleft: "âŠ²",
                    vartriangleright: "âŠ³",
                    vBar: "â«¨",
                    Vbar: "â««",
                    vBarv: "â«©",
                    Vcy: "Ð’",
                    vcy: "Ð²",
                    vdash: "âŠ¢",
                    vDash: "âŠ¨",
                    Vdash: "âŠ©",
                    VDash: "âŠ«",
                    Vdashl: "â«¦",
                    veebar: "âŠ»",
                    vee: "âˆ¨",
                    Vee: "â‹",
                    veeeq: "â‰š",
                    vellip: "â‹®",
                    verbar: "|",
                    Verbar: "â€–",
                    vert: "|",
                    Vert: "â€–",
                    VerticalBar: "âˆ£",
                    VerticalLine: "|",
                    VerticalSeparator: "â˜",
                    VerticalTilde: "â‰€",
                    VeryThinSpace: "â€Š",
                    Vfr: "ð”™",
                    vfr: "ð”³",
                    vltri: "âŠ²",
                    vnsub: "âŠ‚âƒ’",
                    vnsup: "âŠƒâƒ’",
                    Vopf: "ð•",
                    vopf: "ð•§",
                    vprop: "âˆ",
                    vrtri: "âŠ³",
                    Vscr: "ð’±",
                    vscr: "ð“‹",
                    vsubnE: "â«‹ï¸€",
                    vsubne: "âŠŠï¸€",
                    vsupnE: "â«Œï¸€",
                    vsupne: "âŠ‹ï¸€",
                    Vvdash: "âŠª",
                    vzigzag: "â¦š",
                    Wcirc: "Å´",
                    wcirc: "Åµ",
                    wedbar: "â©Ÿ",
                    wedge: "âˆ§",
                    Wedge: "â‹€",
                    wedgeq: "â‰™",
                    weierp: "â„˜",
                    Wfr: "ð”š",
                    wfr: "ð”´",
                    Wopf: "ð•Ž",
                    wopf: "ð•¨",
                    wp: "â„˜",
                    wr: "â‰€",
                    wreath: "â‰€",
                    Wscr: "ð’²",
                    wscr: "ð“Œ",
                    xcap: "â‹‚",
                    xcirc: "â—¯",
                    xcup: "â‹ƒ",
                    xdtri: "â–½",
                    Xfr: "ð”›",
                    xfr: "ð”µ",
                    xharr: "âŸ·",
                    xhArr: "âŸº",
                    Xi: "Îž",
                    xi: "Î¾",
                    xlarr: "âŸµ",
                    xlArr: "âŸ¸",
                    xmap: "âŸ¼",
                    xnis: "â‹»",
                    xodot: "â¨€",
                    Xopf: "ð•",
                    xopf: "ð•©",
                    xoplus: "â¨",
                    xotime: "â¨‚",
                    xrarr: "âŸ¶",
                    xrArr: "âŸ¹",
                    Xscr: "ð’³",
                    xscr: "ð“",
                    xsqcup: "â¨†",
                    xuplus: "â¨„",
                    xutri: "â–³",
                    xvee: "â‹",
                    xwedge: "â‹€",
                    Yacute: "Ã",
                    yacute: "Ã½",
                    YAcy: "Ð¯",
                    yacy: "Ñ",
                    Ycirc: "Å¶",
                    ycirc: "Å·",
                    Ycy: "Ð«",
                    ycy: "Ñ‹",
                    yen: "Â¥",
                    Yfr: "ð”œ",
                    yfr: "ð”¶",
                    YIcy: "Ð‡",
                    yicy: "Ñ—",
                    Yopf: "ð•",
                    yopf: "ð•ª",
                    Yscr: "ð’´",
                    yscr: "ð“Ž",
                    YUcy: "Ð®",
                    yucy: "ÑŽ",
                    yuml: "Ã¿",
                    Yuml: "Å¸",
                    Zacute: "Å¹",
                    zacute: "Åº",
                    Zcaron: "Å½",
                    zcaron: "Å¾",
                    Zcy: "Ð—",
                    zcy: "Ð·",
                    Zdot: "Å»",
                    zdot: "Å¼",
                    zeetrf: "â„¨",
                    ZeroWidthSpace: "â€‹",
                    Zeta: "Î–",
                    zeta: "Î¶",
                    zfr: "ð”·",
                    Zfr: "â„¨",
                    ZHcy: "Ð–",
                    zhcy: "Ð¶",
                    zigrarr: "â‡",
                    zopf: "ð•«",
                    Zopf: "â„¤",
                    Zscr: "ð’µ",
                    zscr: "ð“",
                    zwj: "â€",
                    zwnj: "â€Œ"
                },
                Yc = {
                    Aacute: "Ã",
                    aacute: "Ã¡",
                    Acirc: "Ã‚",
                    acirc: "Ã¢",
                    acute: "Â´",
                    AElig: "Ã†",
                    aelig: "Ã¦",
                    Agrave: "Ã€",
                    agrave: "Ã ",
                    amp: "&",
                    AMP: "&",
                    Aring: "Ã…",
                    aring: "Ã¥",
                    Atilde: "Ãƒ",
                    atilde: "Ã£",
                    Auml: "Ã„",
                    auml: "Ã¤",
                    brvbar: "Â¦",
                    Ccedil: "Ã‡",
                    ccedil: "Ã§",
                    cedil: "Â¸",
                    cent: "Â¢",
                    copy: "Â©",
                    COPY: "Â©",
                    curren: "Â¤",
                    deg: "Â°",
                    divide: "Ã·",
                    Eacute: "Ã‰",
                    eacute: "Ã©",
                    Ecirc: "ÃŠ",
                    ecirc: "Ãª",
                    Egrave: "Ãˆ",
                    egrave: "Ã¨",
                    ETH: "Ã",
                    eth: "Ã°",
                    Euml: "Ã‹",
                    euml: "Ã«",
                    frac12: "Â½",
                    frac14: "Â¼",
                    frac34: "Â¾",
                    gt: ">",
                    GT: ">",
                    Iacute: "Ã",
                    iacute: "Ã­",
                    Icirc: "ÃŽ",
                    icirc: "Ã®",
                    iexcl: "Â¡",
                    Igrave: "ÃŒ",
                    igrave: "Ã¬",
                    iquest: "Â¿",
                    Iuml: "Ã",
                    iuml: "Ã¯",
                    laquo: "Â«",
                    lt: "<",
                    LT: "<",
                    macr: "Â¯",
                    micro: "Âµ",
                    middot: "Â·",
                    nbsp: "Â ",
                    not: "Â¬",
                    Ntilde: "Ã‘",
                    ntilde: "Ã±",
                    Oacute: "Ã“",
                    oacute: "Ã³",
                    Ocirc: "Ã”",
                    ocirc: "Ã´",
                    Ograve: "Ã’",
                    ograve: "Ã²",
                    ordf: "Âª",
                    ordm: "Âº",
                    Oslash: "Ã˜",
                    oslash: "Ã¸",
                    Otilde: "Ã•",
                    otilde: "Ãµ",
                    Ouml: "Ã–",
                    ouml: "Ã¶",
                    para: "Â¶",
                    plusmn: "Â±",
                    pound: "Â£",
                    quot: '"',
                    QUOT: '"',
                    raquo: "Â»",
                    reg: "Â®",
                    REG: "Â®",
                    sect: "Â§",
                    shy: "Â­",
                    sup1: "Â¹",
                    sup2: "Â²",
                    sup3: "Â³",
                    szlig: "ÃŸ",
                    THORN: "Ãž",
                    thorn: "Ã¾",
                    times: "Ã—",
                    Uacute: "Ãš",
                    uacute: "Ãº",
                    Ucirc: "Ã›",
                    ucirc: "Ã»",
                    Ugrave: "Ã™",
                    ugrave: "Ã¹",
                    uml: "Â¨",
                    Uuml: "Ãœ",
                    uuml: "Ã¼",
                    Yacute: "Ã",
                    yacute: "Ã½",
                    yen: "Â¥",
                    yuml: "Ã¿"
                },
                eu = {
                    amp: "&",
                    apos: "'",
                    gt: ">",
                    lt: "<",
                    quot: '"'
                },
                tu = {},
                nu = Wc && Wc.__importDefault || function(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                };
            Object.defineProperty(tu, "__esModule", {
                value: !0
            });
            var ru = nu({
                    0: 65533,
                    128: 8364,
                    130: 8218,
                    131: 402,
                    132: 8222,
                    133: 8230,
                    134: 8224,
                    135: 8225,
                    136: 710,
                    137: 8240,
                    138: 352,
                    139: 8249,
                    140: 338,
                    142: 381,
                    145: 8216,
                    146: 8217,
                    147: 8220,
                    148: 8221,
                    149: 8226,
                    150: 8211,
                    151: 8212,
                    152: 732,
                    153: 8482,
                    154: 353,
                    155: 8250,
                    156: 339,
                    158: 382,
                    159: 376
                }),
                ou = String.fromCodePoint || function(e) {
                    var t = "";
                    return e > 65535 && (e -= 65536, t += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t += String.fromCharCode(e)
                };
            tu.default = function(e) {
                return e >= 55296 && e <= 57343 || e > 1114111 ? "ï¿½" : (e in ru.default && (e = ru.default[e]), ou(e))
            };
            var iu = Wc && Wc.__importDefault || function(e) {
                return e && e.__esModule ? e : {
                    default: e
                }
            };
            Object.defineProperty(Xc, "__esModule", {
                value: !0
            }), Xc.decodeHTML = Xc.decodeHTMLStrict = Xc.decodeXML = void 0;
            var su = iu(Qc),
                au = iu(Yc),
                lu = iu(eu),
                cu = iu(tu),
                uu = /&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;

            function du(e) {
                var t = hu(e);
                return function(e) {
                    return String(e).replace(uu, t)
                }
            }
            Xc.decodeXML = du(lu.default), Xc.decodeHTMLStrict = du(su.default);
            var pu = function(e, t) {
                return e < t ? 1 : -1
            };

            function hu(e) {
                return function(t) {
                    if ("#" === t.charAt(1)) {
                        var n = t.charAt(2);
                        return "X" === n || "x" === n ? cu.default(parseInt(t.substr(3), 16)) : cu.default(parseInt(t.substr(2), 10))
                    }
                    return e[t.slice(1, -1)] || t
                }
            }
            Xc.decodeHTML = function() {
                for (var e = Object.keys(au.default).sort(pu), t = Object.keys(su.default).sort(pu), n = 0, r = 0; n < t.length; n++) e[r] === t[n] ? (t[n] += ";?", r++) : t[n] += ";";
                var o = new RegExp("&(?:" + t.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"),
                    i = hu(su.default);

                function s(e) {
                    return ";" !== e.substr(-1) && (e += ";"), i(e)
                }
                return function(e) {
                    return String(e).replace(o, s)
                }
            }();
            var fu = {},
                mu = Wc && Wc.__importDefault || function(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                };
            Object.defineProperty(fu, "__esModule", {
                value: !0
            }), fu.escapeUTF8 = fu.escape = fu.encodeNonAsciiHTML = fu.encodeHTML = fu.encodeXML = void 0;
            var gu = xu(mu(eu).default),
                vu = Cu(gu);
            fu.encodeXML = Nu(gu);
            var yu, bu, wu = xu(mu(Qc).default),
                ku = Cu(wu);

            function xu(e) {
                return Object.keys(e).sort().reduce((function(t, n) {
                    return t[e[n]] = "&" + n + ";", t
                }), {})
            }

            function Cu(e) {
                for (var t = [], n = [], r = 0, o = Object.keys(e); r < o.length; r++) {
                    var i = o[r];
                    1 === i.length ? t.push("\\" + i) : n.push(i)
                }
                t.sort();
                for (var s = 0; s < t.length - 1; s++) {
                    for (var a = s; a < t.length - 1 && t[a].charCodeAt(1) + 1 === t[a + 1].charCodeAt(1);) a += 1;
                    var l = 1 + a - s;
                    l < 3 || t.splice(s, l, t[s] + "-" + t[a])
                }
                return n.unshift("[" + t.join("") + "]"), new RegExp(n.join("|"), "g")
            }
            fu.encodeHTML = (yu = wu, bu = ku, function(e) {
                return e.replace(bu, (function(e) {
                    return yu[e]
                })).replace(Tu, Su)
            }), fu.encodeNonAsciiHTML = Nu(wu);
            var Tu = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,
                Mu = null != String.prototype.codePointAt ? function(e) {
                    return e.codePointAt(0)
                } : function(e) {
                    return 1024 * (e.charCodeAt(0) - 55296) + e.charCodeAt(1) - 56320 + 65536
                };

            function Su(e) {
                return "&#x" + (e.length > 1 ? Mu(e) : e.charCodeAt(0)).toString(16).toUpperCase() + ";"
            }
            var Eu = new RegExp(vu.source + "|" + Tu.source, "g");

            function Nu(e) {
                return function(t) {
                    return t.replace(Eu, (function(t) {
                        return e[t] || Su(t)
                    }))
                }
            }
            fu.escape = function(e) {
                return e.replace(Eu, Su)
            }, fu.escapeUTF8 = function(e) {
                return e.replace(vu, Su)
            },
                function(e) {
                    Object.defineProperty(e, "__esModule", {
                        value: !0
                    }), e.decodeXMLStrict = e.decodeHTML5Strict = e.decodeHTML4Strict = e.decodeHTML5 = e.decodeHTML4 = e.decodeHTMLStrict = e.decodeHTML = e.decodeXML = e.encodeHTML5 = e.encodeHTML4 = e.escapeUTF8 = e.escape = e.encodeNonAsciiHTML = e.encodeHTML = e.encodeXML = e.encode = e.decodeStrict = e.decode = void 0;
                    var t = Xc,
                        n = fu;
                    e.decode = function(e, n) {
                        return (!n || n <= 0 ? t.decodeXML : t.decodeHTML)(e)
                    }, e.decodeStrict = function(e, n) {
                        return (!n || n <= 0 ? t.decodeXML : t.decodeHTMLStrict)(e)
                    }, e.encode = function(e, t) {
                        return (!t || t <= 0 ? n.encodeXML : n.encodeHTML)(e)
                    };
                    var r = fu;
                    Object.defineProperty(e, "encodeXML", {
                        enumerable: !0,
                        get: function() {
                            return r.encodeXML
                        }
                    }), Object.defineProperty(e, "encodeHTML", {
                        enumerable: !0,
                        get: function() {
                            return r.encodeHTML
                        }
                    }), Object.defineProperty(e, "encodeNonAsciiHTML", {
                        enumerable: !0,
                        get: function() {
                            return r.encodeNonAsciiHTML
                        }
                    }), Object.defineProperty(e, "escape", {
                        enumerable: !0,
                        get: function() {
                            return r.escape
                        }
                    }), Object.defineProperty(e, "escapeUTF8", {
                        enumerable: !0,
                        get: function() {
                            return r.escapeUTF8
                        }
                    }), Object.defineProperty(e, "encodeHTML4", {
                        enumerable: !0,
                        get: function() {
                            return r.encodeHTML
                        }
                    }), Object.defineProperty(e, "encodeHTML5", {
                        enumerable: !0,
                        get: function() {
                            return r.encodeHTML
                        }
                    });
                    var o = Xc;
                    Object.defineProperty(e, "decodeXML", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeXML
                        }
                    }), Object.defineProperty(e, "decodeHTML", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeHTML
                        }
                    }), Object.defineProperty(e, "decodeHTMLStrict", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeHTMLStrict
                        }
                    }), Object.defineProperty(e, "decodeHTML4", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeHTML
                        }
                    }), Object.defineProperty(e, "decodeHTML5", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeHTML
                        }
                    }), Object.defineProperty(e, "decodeHTML4Strict", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeHTMLStrict
                        }
                    }), Object.defineProperty(e, "decodeHTML5Strict", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeHTMLStrict
                        }
                    }), Object.defineProperty(e, "decodeXMLStrict", {
                        enumerable: !0,
                        get: function() {
                            return o.decodeXML
                        }
                    })
                }(Zc);
            var Ou = "&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});",
                Du = /[\\&]/,
                Au = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]",
                Lu = new RegExp("\\\\" + Au + "|" + Ou, "gi"),
                Iu = new RegExp('[&<>"]', "g"),
                Ru = function(e) {
                    return 92 === e.charCodeAt(0) ? e.charAt(1) : Zc.decodeHTML(e)
                };

            function Pu(e) {
                return Du.test(e) ? e.replace(Lu, Ru) : e
            }

            function Bu(e) {
                try {
                    return Kc(e)
                } catch (t) {
                    return e
                }
            }

            function Fu(e) {
                switch (e) {
                    case "&":
                        return "&amp;";
                    case "<":
                        return "&lt;";
                    case ">":
                        return "&gt;";
                    case '"':
                        return "&quot;";
                    default:
                        return e
                }
            }

            function Hu(e) {
                return Iu.test(e) ? e.replace(Iu, Fu) : e
            }

            function zu(e, t) {
                for (var n = [], r = 0; r < t; r++) n.push(e);
                return n.join("")
            }

            function qu(e) {
                return !e || !/[^ \t]+/.test(e)
            }
            var Vu = function() {
                function e(e) {
                    this.current = e, this.root = e, this.entering = !0
                }
                return e.prototype.next = function() {
                    var e = this.current,
                        t = this.entering;
                    if (null === e) return null;
                    var n = ju(e);
                    return t && n ? e.firstChild ? (this.current = e.firstChild, this.entering = !0) : this.entering = !1 : e === this.root ? this.current = null : null === e.next ? (this.current = e.parent, this.entering = !1) : (this.current = e.next, this.entering = !0), {
                        entering: t,
                        node: e
                    }
                }, e.prototype.resumeAt = function(e, t) {
                    this.current = e, this.entering = !0 === t
                }, e
            }();

            function ju(e) {
                switch (e.type) {
                    case "document":
                    case "blockQuote":
                    case "list":
                    case "item":
                    case "paragraph":
                    case "heading":
                    case "emph":
                    case "strong":
                    case "strike":
                    case "link":
                    case "image":
                    case "table":
                    case "tableHead":
                    case "tableBody":
                    case "tableRow":
                    case "tableCell":
                    case "tableDelimRow":
                    case "customInline":
                        return !0;
                    default:
                        return !1
                }
            }
            var $u = 1,
                _u = {};

            function Uu(e) {
                delete _u[e]
            }
            var Wu = function() {
                    function e(e, t) {
                        this.parent = null, this.prev = null, this.next = null, this.firstChild = null, this.lastChild = null, this.literal = null, this.id = "document" === e ? -1 : $u++, this.type = e, this.sourcepos = t, _u[this.id] = this
                    }
                    return e.prototype.isContainer = function() {
                        return ju(this)
                    }, e.prototype.unlink = function() {
                        this.prev ? this.prev.next = this.next : this.parent && (this.parent.firstChild = this.next), this.next ? this.next.prev = this.prev : this.parent && (this.parent.lastChild = this.prev), this.parent = null, this.next = null, this.prev = null
                    }, e.prototype.replaceWith = function(e) {
                        this.insertBefore(e), this.unlink()
                    }, e.prototype.insertAfter = function(e) {
                        e.unlink(), e.next = this.next, e.next && (e.next.prev = e), e.prev = this, this.next = e, this.parent && (e.parent = this.parent, e.next || (e.parent.lastChild = e))
                    }, e.prototype.insertBefore = function(e) {
                        e.unlink(), e.prev = this.prev, e.prev && (e.prev.next = e), e.next = this, this.prev = e, e.parent = this.parent, e.prev || (e.parent.firstChild = e)
                    }, e.prototype.appendChild = function(e) {
                        e.unlink(), e.parent = this, this.lastChild ? (this.lastChild.next = e, e.prev = this.lastChild, this.lastChild = e) : (this.firstChild = e, this.lastChild = e)
                    }, e.prototype.prependChild = function(e) {
                        e.unlink(), e.parent = this, this.firstChild ? (this.firstChild.prev = e, e.next = this.firstChild, this.firstChild = e) : (this.firstChild = e, this.lastChild = e)
                    }, e.prototype.walker = function() {
                        return new Vu(this)
                    }, e
                }(),
                Ju = function(e) {
                    function t(t, n) {
                        var r = e.call(this, t, n) || this;
                        return r.open = !0, r.lineOffsets = null, r.stringContent = null, r.lastLineBlank = !1, r.lastLineChecked = !1, r.type = t, r
                    }
                    return $c(t, e), t
                }(Wu),
                Gu = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.listData = null, t
                    }
                    return $c(t, e), t
                }(Ju),
                Ku = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.level = 0, t.headingType = "atx", t
                    }
                    return $c(t, e), t
                }(Ju),
                Zu = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.isFenced = !1, t.fenceChar = null, t.fenceLength = 0, t.fenceOffset = -1, t.info = null, t.infoPadding = 0, t
                    }
                    return $c(t, e), t
                }(Ju),
                Xu = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.columns = [], t
                    }
                    return $c(t, e), t
                }(Ju),
                Qu = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.startIdx = 0, t.endIdx = 0, t.paddingLeft = 0, t.paddingRight = 0, t.ignored = !1, t
                    }
                    return $c(t, e), t
                }(Ju),
                Yu = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.title = "", t.dest = "", t.label = "", t
                    }
                    return $c(t, e), t
                }(Ju),
                ed = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.syntaxLength = 0, t.offset = -1, t.info = "", t
                    }
                    return $c(t, e), t
                }(Ju),
                td = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.htmlBlockType = -1, t
                    }
                    return $c(t, e), t
                }(Ju),
                nd = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.destination = null, t.title = null, t.extendedAutolink = !1, t
                    }
                    return $c(t, e), t
                }(Wu),
                rd = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.tickCount = 0, t
                    }
                    return $c(t, e), t
                }(Wu),
                od = function(e) {
                    function t() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.info = "", t
                    }
                    return $c(t, e), t
                }(Wu);

            function id(e, t) {
                switch (e) {
                    case "heading":
                        return new Ku(e, t);
                    case "list":
                    case "item":
                        return new Gu(e, t);
                    case "link":
                    case "image":
                        return new nd(e, t);
                    case "codeBlock":
                        return new Zu(e, t);
                    case "htmlBlock":
                        return new td(e, t);
                    case "table":
                        return new Xu(e, t);
                    case "tableCell":
                        return new Qu(e, t);
                    case "document":
                    case "paragraph":
                    case "blockQuote":
                    case "thematicBreak":
                    case "tableRow":
                    case "tableBody":
                    case "tableHead":
                    case "frontMatter":
                        return new Ju(e, t);
                    case "code":
                        return new rd(e, t);
                    case "refDef":
                        return new Yu(e, t);
                    case "customBlock":
                        return new ed(e, t);
                    case "customInline":
                        return new od(e, t);
                    default:
                        return new Wu(e, t)
                }
            }

            function sd(e) {
                return "codeBlock" === e.type
            }

            function ad(e) {
                return "list" === e.type
            }

            function ld(e) {
                return "refDef" === e.type
            }

            function cd(e) {
                return "customBlock" === e.type
            }

            function ud(e, t) {
                var n = id("text", t);
                return n.literal = e, n
            }
            var dd, pd = "[A-Za-z][A-Za-z0-9-]*",
                hd = "<" + pd + "(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>",
                fd = "</" + pd + "\\s*[>]",
                md = new RegExp("^(?:<[A-Za-z][A-Za-z0-9-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>|</[A-Za-z][A-Za-z0-9-]*\\s*[>]|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|[<][?].*?[?][>]|<![A-Z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)", "i");
            if (String.fromCodePoint) dd = function(e) {
                try {
                    return String.fromCodePoint(e)
                } catch (e) {
                    if (e instanceof RangeError) return String.fromCharCode(65533);
                    throw e
                }
            };
            else {
                var gd = String.fromCharCode,
                    vd = Math.floor;
                dd = function() {
                    for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                    var n, r, o = 16384,
                        i = [],
                        s = -1,
                        a = e.length;
                    if (!a) return "";
                    for (var l = ""; ++s < a;) {
                        var c = Number(e[s]);
                        if (!isFinite(c) || c < 0 || c > 1114111 || vd(c) !== c) return String.fromCharCode(65533);
                        c <= 65535 ? i.push(c) : (n = 55296 + ((c -= 65536) >> 10), r = c % 1024 + 56320, i.push(n, r)), (s + 1 === a || i.length > o) && (l += gd.apply(void 0, i), i.length = 0)
                    }
                    return l
                }
            }
            var yd = dd;

            function bd(e) {
                var t = /\)+$/.exec(e);
                if (t) {
                    for (var n = 0, r = 0, o = e; r < o.length; r++) {
                        var i = o[r];
                        "(" === i ? n < 0 ? n = 1 : n += 1 : ")" === i && (n -= 1)
                    }
                    if (n < 0) {
                        var s = Math.min(-n, t[0].length);
                        return e.substring(0, e.length - s)
                    }
                }
                return e
            }

            function wd(e) {
                return e.replace(/&[A-Za-z0-9]+;$/, "")
            }

            function kd(e) {
                return Uc(Uc([], function(e) {
                    for (var t, n = new RegExp("(www|https?://).(?:[w-]+.)*[A-Za-z0-9-]+.[A-Za-z0-9-]+[^<\\s]*[^<?!.,:*_?~\\s]", "g"), r = []; t = n.exec(e);) {
                        var o = wd(bd(t[0])),
                            i = "www" === t[1] ? "http://" : "";
                        r.push({
                            text: o,
                            range: [t.index, t.index + o.length - 1],
                            url: "" + i + o
                        })
                    }
                    return r
                }(e)), function(e) {
                    for (var t, n = new RegExp("[\\w.+-]+@(?:[\\w-]+\\.)+[\\w-]+", "g"), r = []; t = n.exec(e);) {
                        var o = t[0];
                        /[_-]+$/.test(o) || r.push({
                            text: o,
                            range: [t.index, t.index + o.length - 1],
                            url: "mailto:" + o
                        })
                    }
                    return r
                }(e)).sort((function(e, t) {
                    return e.range[0] - t.range[0]
                }))
            }

            function xd(e) {
                return e[e.length - 1]
            }

            function Cd(e) {
                return e.slice(1, e.length - 1).trim().replace(/[ \t\r\n]+/, " ").toLowerCase().toUpperCase()
            }

            function Td(e, t) {
                Object.keys(e).forEach((function(n) {
                    t(n, e[n])
                }))
            }

            function Md(e) {
                return !Object.keys(e).length
            }
            var Sd = 126,
                Ed = 39,
                Nd = 34,
                Od = 36,
                Dd = "\\\\" + Au,
                Ad = new RegExp(/[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/),
                Ld = new RegExp('^(?:"(' + Dd + '|[^"\\x00])*"|\'(' + Dd + "|[^'\\x00])*'|\\((" + Dd + "|[^()\\x00])*\\))"),
                Id = /^(?:<(?:[^<>\n\\\x00]|\\.)*>)/,
                Rd = new RegExp("^" + Au),
                Pd = new RegExp("^" + Ou, "i"),
                Bd = /`+/,
                Fd = /^`+/,
                Hd = /\.\.\./g,
                zd = /--+/g,
                qd = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,
                Vd = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i,
                jd = /^ *(?:\n *)?/,
                $d = /^[ \t\n\x0b\x0c\x0d]/,
                _d = /^\s/,
                Ud = / *$/,
                Wd = /^ */,
                Jd = /^ *(?:\n|$)/,
                Gd = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/,
                Kd = /^[^\n`\[\]\\!<&*_'"~$]+/m,
                Zd = function() {
                    function e(e) {
                        this.subject = "", this.delimiters = null, this.brackets = null, this.pos = 0, this.lineStartNum = 0, this.lineIdx = 0, this.lineOffsets = [0], this.linePosOffset = 0, this.refMap = {}, this.refLinkCandidateMap = {}, this.refDefCandidateMap = {}, this.options = e
                    }
                    return e.prototype.sourcepos = function(e, t) {
                        var n = this.linePosOffset + this.lineOffsets[this.lineIdx],
                            r = this.lineStartNum + this.lineIdx,
                            o = [r, e + n];
                        return "number" == typeof t ? [o, [r, t + n]] : o
                    }, e.prototype.nextLine = function() {
                        this.lineIdx += 1, this.linePosOffset = -this.pos
                    }, e.prototype.match = function(e) {
                        var t = e.exec(this.subject.slice(this.pos));
                        return null === t ? null : (this.pos += t.index + t[0].length, t[0])
                    }, e.prototype.peek = function() {
                        return this.pos < this.subject.length ? this.subject.charCodeAt(this.pos) : -1
                    }, e.prototype.spnl = function() {
                        return this.match(jd), !0
                    }, e.prototype.parseBackticks = function(e) {
                        var t = this.pos + 1,
                            n = this.match(Fd);
                        if (null === n) return !1;
                        for (var r, o = this.pos; null !== (r = this.match(Bd));)
                            if (r === n) {
                                var i = this.subject.slice(o, this.pos - n.length),
                                    s = this.sourcepos(t, this.pos),
                                    a = i.split("\n");
                                if (a.length > 1) {
                                    var l = xd(a);
                                    this.lineIdx += a.length - 1, this.linePosOffset = -(this.pos - l.length - n.length), s[1] = this.sourcepos(this.pos), i = a.join(" ")
                                }
                                var c = id("code", s);
                                return i.length > 0 && null !== i.match(/[^ ]/) && " " == i[0] && " " == i[i.length - 1] ? c.literal = i.slice(1, i.length - 1) : c.literal = i, c.tickCount = n.length, e.appendChild(c), !0
                            } return this.pos = o, e.appendChild(ud(n, this.sourcepos(t, this.pos - 1))), !0
                    }, e.prototype.parseBackslash = function(e) {
                        var t, n = this.subject;
                        this.pos += 1;
                        var r = this.pos;
                        return 10 === this.peek() ? (this.pos += 1, t = id("linebreak", this.sourcepos(this.pos - 1, this.pos)), e.appendChild(t), this.nextLine()) : Rd.test(n.charAt(this.pos)) ? (e.appendChild(ud(n.charAt(this.pos), this.sourcepos(r, this.pos))), this.pos += 1) : e.appendChild(ud("\\", this.sourcepos(r, r))), !0
                    }, e.prototype.parseAutolink = function(e) {
                        var t, n, r, o = this.pos + 1;
                        return (t = this.match(qd)) ? (n = t.slice(1, t.length - 1), (r = id("link", this.sourcepos(o, this.pos))).destination = Bu("mailto:" + n), r.title = "", r.appendChild(ud(n, this.sourcepos(o + 1, this.pos - 1))), e.appendChild(r), !0) : !!(t = this.match(Vd)) && (n = t.slice(1, t.length - 1), (r = id("link", this.sourcepos(o, this.pos))).destination = Bu(n), r.title = "", r.appendChild(ud(n, this.sourcepos(o + 1, this.pos - 1))), e.appendChild(r), !0)
                    }, e.prototype.parseHtmlTag = function(e) {
                        var t = this.pos + 1,
                            n = this.match(md);
                        if (null === n) return !1;
                        var r = id("htmlInline", this.sourcepos(t, this.pos));
                        return r.literal = n, e.appendChild(r), !0
                    }, e.prototype.scanDelims = function(e) {
                        var t = 0,
                            n = this.pos;
                        if (e === Ed || e === Nd) t++, this.pos++;
                        else
                            for (; this.peek() === e;) t++, this.pos++;
                        if (0 === t || t < 2 && (e === Sd || e === Od)) return this.pos = n, null;
                        var r, o = 0 === n ? "\n" : this.subject.charAt(n - 1),
                            i = this.peek();
                        r = -1 === i ? "\n" : yd(i);
                        var s, a, l = _d.test(r),
                            c = Ad.test(r),
                            u = _d.test(o),
                            d = Ad.test(o),
                            p = !l && (!c || u || d),
                            h = !u && (!d || l || c);
                        return 95 === e ? (s = p && (!h || d), a = h && (!p || c)) : e === Ed || e === Nd ? (s = p && !h, a = h) : e === Od ? (s = !l, a = !u) : (s = p, a = h), this.pos = n, {
                            numdelims: t,
                            canOpen: s,
                            canClose: a
                        }
                    }, e.prototype.handleDelim = function(e, t) {
                        var n = this.scanDelims(e);
                        if (!n) return !1;
                        var r = n.numdelims,
                            o = this.pos + 1;
                        this.pos += r;
                        var i = ud(e === Ed ? "â€™" : e === Nd ? "â€œ" : this.subject.slice(o - 1, this.pos), this.sourcepos(o, this.pos));
                        return t.appendChild(i), (n.canOpen || n.canClose) && (this.options.smart || e !== Ed && e !== Nd) && (this.delimiters = {
                            cc: e,
                            numdelims: r,
                            origdelims: r,
                            node: i,
                            previous: this.delimiters,
                            next: null,
                            canOpen: n.canOpen,
                            canClose: n.canClose
                        }, this.delimiters.previous && (this.delimiters.previous.next = this.delimiters)), !0
                    }, e.prototype.removeDelimiter = function(e) {
                        null !== e.previous && (e.previous.next = e.next), null === e.next ? this.delimiters = e.previous : e.next.previous = e.previous
                    }, e.prototype.removeDelimitersBetween = function(e, t) {
                        e.next !== t && (e.next = t, t.previous = e)
                    }, e.prototype.processEmphasis = function(e) {
                        var t, n, r, o, i, s, a, l = !1,
                            c = ((t = {})[95] = [e, e, e], t[42] = [e, e, e], t[39] = [e], t[34] = [e], t[126] = [e], t[36] = [e], t);
                        for (r = this.delimiters; null !== r && r.previous !== e;) r = r.previous;
                        for (; null !== r;) {
                            var u = r.cc,
                                d = 95 === u || 42 === u;
                            if (r.canClose) {
                                for (n = r.previous, a = !1; null !== n && n !== e && n !== c[u][d ? r.origdelims % 3 : 0];) {
                                    if (l = d && (r.canOpen || n.canClose) && r.origdelims % 3 != 0 && (n.origdelims + r.origdelims) % 3 == 0, n.cc === r.cc && n.canOpen && !l) {
                                        a = !0;
                                        break
                                    }
                                    n = n.previous
                                }
                                if (o = r, d || u === Sd || u === Od)
                                    if (a) {
                                        if (n) {
                                            var p = r.numdelims >= 2 && n.numdelims >= 2 ? 2 : 1,
                                                h = d ? 0 : 1;
                                            i = n.node, s = r.node;
                                            var f = d ? 1 === p ? "emph" : "strong" : "strike";
                                            u === Od && (f = "customInline");
                                            var m = id(f),
                                                g = i.sourcepos[1],
                                                v = s.sourcepos[0];
                                            m.sourcepos = [
                                                [g[0], g[1] - p + 1],
                                                [v[0], v[1] + p - 1]
                                            ], i.sourcepos[1][1] -= p, s.sourcepos[0][1] += p, i.literal = i.literal.slice(p), s.literal = s.literal.slice(p), n.numdelims -= p, r.numdelims -= p;
                                            for (var y = i.next, b = void 0; y && y !== s;) b = y.next, y.unlink(), m.appendChild(y), y = b;
                                            if (u === Od) {
                                                var w = m.firstChild,
                                                    k = w.literal || "",
                                                    x = k.split(/\s/)[0];
                                                m.info = x, k.length <= x.length ? w.unlink() : (w.sourcepos[0][1] += x.length, w.literal = k.replace(x + " ", ""))
                                            }
                                            if (i.insertAfter(m), this.removeDelimitersBetween(n, r), n.numdelims <= h && (0 === n.numdelims && i.unlink(), this.removeDelimiter(n)), r.numdelims <= h) {
                                                0 === r.numdelims && s.unlink();
                                                var C = r.next;
                                                this.removeDelimiter(r), r = C
                                            }
                                        }
                                    } else r = r.next;
                                else u === Ed ? (r.node.literal = "â€™", a && (n.node.literal = "â€˜"), r = r.next) : u === Nd && (r.node.literal = "â€", a && (n.node.literal = "â€œ"), r = r.next);
                                a || (c[u][d ? o.origdelims % 3 : 0] = o.previous, o.canOpen || this.removeDelimiter(o))
                            } else r = r.next
                        }
                        for (; null !== this.delimiters && this.delimiters !== e;) this.removeDelimiter(this.delimiters)
                    }, e.prototype.parseLinkTitle = function() {
                        var e = this.match(Ld);
                        return null === e ? null : Pu(e.substr(1, e.length - 2))
                    }, e.prototype.parseLinkDestination = function() {
                        var e = this.match(Id);
                        if (null === e) {
                            if (60 === this.peek()) return null;
                            for (var t = this.pos, n = 0, r = void 0; - 1 !== (r = this.peek());)
                                if (92 === r && Rd.test(this.subject.charAt(this.pos + 1))) this.pos += 1, -1 !== this.peek() && (this.pos += 1);
                                else if (40 === r) this.pos += 1, n += 1;
                                else if (41 === r) {
                                    if (n < 1) break;
                                    this.pos += 1, n -= 1
                                } else {
                                    if (null !== $d.exec(yd(r))) break;
                                    this.pos += 1
                                }
                            return this.pos === t && 41 !== r || 0 !== n ? null : Bu(Pu(e = this.subject.substr(t, this.pos - t)))
                        }
                        return Bu(Pu(e.substr(1, e.length - 2)))
                    }, e.prototype.parseLinkLabel = function() {
                        var e = this.match(Gd);
                        return null === e || e.length > 1001 ? 0 : e.length
                    }, e.prototype.parseOpenBracket = function(e) {
                        var t = this.pos;
                        this.pos += 1;
                        var n = ud("[", this.sourcepos(this.pos, this.pos));
                        return e.appendChild(n), this.addBracket(n, t, !1), !0
                    }, e.prototype.parseBang = function(e) {
                        var t = this.pos;
                        if (this.pos += 1, 91 === this.peek()) {
                            this.pos += 1;
                            var n = ud("![", this.sourcepos(this.pos - 1, this.pos));
                            e.appendChild(n), this.addBracket(n, t + 1, !0)
                        } else {
                            n = ud("!", this.sourcepos(this.pos, this.pos));
                            e.appendChild(n)
                        }
                        return !0
                    }, e.prototype.parseCloseBracket = function(e) {
                        var t = null,
                            n = null,
                            r = !1;
                        this.pos += 1;
                        var o = this.pos,
                            i = this.brackets;
                        if (null === i) return e.appendChild(ud("]", this.sourcepos(o, o))), !0;
                        if (!i.active) return e.appendChild(ud("]", this.sourcepos(o, o))), this.removeBracket(), !0;
                        var s = i.image,
                            a = this.pos;
                        40 === this.peek() && (this.pos++, this.spnl() && null !== (t = this.parseLinkDestination()) && this.spnl() && ($d.test(this.subject.charAt(this.pos - 1)) && (n = this.parseLinkTitle()), 1) && this.spnl() && 41 === this.peek() ? (this.pos += 1, r = !0) : this.pos = a);
                        var l = "";
                        if (!r) {
                            var c = this.pos,
                                u = this.parseLinkLabel();
                            if (u > 2 ? l = this.subject.slice(c, c + u) : i.bracketAfter || (l = this.subject.slice(i.index, o)), 0 === u && (this.pos = a), l) {
                                l = Cd(l);
                                var d = this.refMap[l];
                                d && (t = d.destination, n = d.title, r = !0)
                            }
                        }
                        if (r) {
                            var p = id(s ? "image" : "link");
                            p.destination = t, p.title = n || "", p.sourcepos = [i.startpos, this.sourcepos(this.pos)];
                            for (var h = i.node.next, f = void 0; h;) f = h.next, h.unlink(), p.appendChild(h), h = f;
                            if (e.appendChild(p), this.processEmphasis(i.previousDelimiter), this.removeBracket(), i.node.unlink(), !s)
                                for (i = this.brackets; null !== i;) i.image || (i.active = !1), i = i.previous;
                            return this.options.referenceDefinition && (this.refLinkCandidateMap[e.id] = {
                                node: e,
                                refLabel: l
                            }), !0
                        }
                        return this.removeBracket(), this.pos = o, e.appendChild(ud("]", this.sourcepos(o, o))), this.options.referenceDefinition && (this.refLinkCandidateMap[e.id] = {
                            node: e,
                            refLabel: l
                        }), !0
                    }, e.prototype.addBracket = function(e, t, n) {
                        null !== this.brackets && (this.brackets.bracketAfter = !0), this.brackets = {
                            node: e,
                            startpos: this.sourcepos(t + (n ? 0 : 1)),
                            previous: this.brackets,
                            previousDelimiter: this.delimiters,
                            index: t,
                            image: n,
                            active: !0
                        }
                    }, e.prototype.removeBracket = function() {
                        this.brackets && (this.brackets = this.brackets.previous)
                    }, e.prototype.parseEntity = function(e) {
                        var t, n = this.pos + 1;
                        return !!(t = this.match(Pd)) && (e.appendChild(ud(Zc.decodeHTML(t), this.sourcepos(n, this.pos))), !0)
                    }, e.prototype.parseString = function(e) {
                        var t, n = this.pos + 1;
                        if (t = this.match(Kd)) {
                            if (this.options.smart) {
                                var r = t.replace(Hd, "â€¦").replace(zd, (function(e) {
                                    var t = 0,
                                        n = 0;
                                    return e.length % 3 == 0 ? n = e.length / 3 : e.length % 2 == 0 ? t = e.length / 2 : e.length % 3 == 2 ? (t = 1, n = (e.length - 2) / 3) : (t = 2, n = (e.length - 4) / 3), zu("â€”", n) + zu("â€“", t)
                                }));
                                e.appendChild(ud(r, this.sourcepos(n, this.pos)))
                            } else {
                                var o = ud(t, this.sourcepos(n, this.pos));
                                e.appendChild(o)
                            }
                            return !0
                        }
                        return !1
                    }, e.prototype.parseNewline = function(e) {
                        this.pos += 1;
                        var t = e.lastChild;
                        if (t && "text" === t.type && " " === t.literal[t.literal.length - 1]) {
                            var n = " " === t.literal[t.literal.length - 2],
                                r = t.literal.length;
                            t.literal = t.literal.replace(Ud, "");
                            var o = r - t.literal.length;
                            t.sourcepos[1][1] -= o, e.appendChild(id(n ? "linebreak" : "softbreak", this.sourcepos(this.pos - o, this.pos)))
                        } else e.appendChild(id("softbreak", this.sourcepos(this.pos, this.pos)));
                        return this.nextLine(), this.match(Wd), !0
                    }, e.prototype.parseReference = function(e, t) {
                        if (!this.options.referenceDefinition) return 0;
                        this.subject = e.stringContent, this.pos = 0;
                        var n = null,
                            r = this.pos,
                            o = this.parseLinkLabel();
                        if (0 === o) return 0;
                        var i = this.subject.substr(0, o);
                        if (58 !== this.peek()) return this.pos = r, 0;
                        this.pos++, this.spnl();
                        var s = this.parseLinkDestination();
                        if (null === s) return this.pos = r, 0;
                        var a = this.pos;
                        this.spnl(), this.pos !== a && (n = this.parseLinkTitle()), null === n && (n = "", this.pos = a);
                        var l = !0;
                        if (null === this.match(Jd) && ("" === n ? l = !1 : (n = "", this.pos = a, l = null !== this.match(Jd))), !l) return this.pos = r, 0;
                        var c = Cd(i);
                        if ("" === c) return this.pos = r, 0;
                        var u = this.getReferenceDefSourcepos(e);
                        e.sourcepos[0][0] = u[1][0] + 1;
                        var d = id("refDef", u);
                        return d.title = n, d.dest = s, d.label = c, e.insertBefore(d), t[c] ? this.refDefCandidateMap[d.id] = d : t[c] = $p(d), this.pos - r
                    }, e.prototype.mergeTextNodes = function(e) {
                        for (var t, n = []; t = e.next();) {
                            var r = t.entering,
                                o = t.node;
                            if (r && "text" === o.type) n.push(o);
                            else if (1 === n.length) n = [];
                            else if (n.length > 1) {
                                var i = n[0],
                                    s = n[n.length - 1];
                                i.sourcepos && s.sourcepos && (i.sourcepos[1] = s.sourcepos[1]), i.next = s.next, i.next && (i.next.prev = i);
                                for (var a = 1; a < n.length; a += 1) i.literal += n[a].literal, n[a].unlink();
                                n = []
                            }
                        }
                    }, e.prototype.getReferenceDefSourcepos = function(e) {
                        for (var t = e.stringContent.split(/\n|\r\n/), n = !1, r = 0, o = {
                            line: 0,
                            ch: 0
                        }, i = 0; i < t.length; i += 1) {
                            var s = t[i];
                            if ($d.test(s)) break;
                            if (/\:/.test(s) && 0 === r) {
                                if (n) break;
                                var a = s.indexOf(":") === s.length - 1 ? i + 1 : i;
                                o = {
                                    line: a,
                                    ch: t[a].length
                                }, n = !0
                            }
                            var l = s.match(/'|"/g);
                            if (l && (r += l.length), 2 === r) {
                                o = {
                                    line: i,
                                    ch: s.length
                                };
                                break
                            }
                        }
                        return [
                            [e.sourcepos[0][0], e.sourcepos[0][1]],
                            [e.sourcepos[0][0] + o.line, o.ch]
                        ]
                    }, e.prototype.parseInline = function(e) {
                        var t, n = !1,
                            r = this.peek();
                        if (-1 === r) return !1;
                        switch (r) {
                            case 10:
                                n = this.parseNewline(e);
                                break;
                            case 92:
                                n = this.parseBackslash(e);
                                break;
                            case 96:
                                n = this.parseBackticks(e);
                                break;
                            case 42:
                            case 95:
                            case Sd:
                            case Od:
                                n = this.handleDelim(r, e);
                                break;
                            case Ed:
                            case Nd:
                                n = !!(null === (t = this.options) || void 0 === t ? void 0 : t.smart) && this.handleDelim(r, e);
                                break;
                            case 91:
                                n = this.parseOpenBracket(e);
                                break;
                            case 33:
                                n = this.parseBang(e);
                                break;
                            case 93:
                                n = this.parseCloseBracket(e);
                                break;
                            case 60:
                                n = this.parseAutolink(e) || this.parseHtmlTag(e);
                                break;
                            case 38:
                                e.disabledEntityParse || (n = this.parseEntity(e));
                                break;
                            default:
                                n = this.parseString(e)
                        }
                        return n || (this.pos += 1, e.appendChild(ud(yd(r), this.sourcepos(this.pos, this.pos + 1)))), !0
                    }, e.prototype.parse = function(e) {
                        for (this.subject = e.stringContent.trim(), this.pos = 0, this.delimiters = null, this.brackets = null, this.lineOffsets = e.lineOffsets || [0], this.lineIdx = 0, this.linePosOffset = 0, this.lineStartNum = e.sourcepos[0][0], function(e) {
                            return "heading" === e.type
                        }(e) && (this.lineOffsets[0] += e.level + 1); this.parseInline(e););
                        e.stringContent = null, this.processEmphasis(null), this.mergeTextNodes(e.walker());
                        var t = this.options,
                            n = t.extendedAutolinks,
                            r = t.customParser;
                        if (n && function(e, t) {
                            var n;
                            "boolean" == typeof t && (t = kd);
                            for (var r = function() {
                                var e = n.entering,
                                    r = n.node;
                                if (e && "text" === r.type && "link" !== r.parent.type) {
                                    var o = r.literal,
                                        i = t(o);
                                    if (!i || !i.length) return "continue";
                                    for (var s = 0, a = r.sourcepos[0], l = a[0], c = a[1], u = function(e, t) {
                                        return [
                                            [l, c + e],
                                            [l, c + t]
                                        ]
                                    }, d = [], p = 0, h = i; p < h.length; p++) {
                                        var f = h[p],
                                            m = f.range,
                                            g = f.url,
                                            v = f.text;
                                        m[0] > s && d.push(ud(o.substring(s, m[0]), u(s, m[0] - 1)));
                                        var y = id("link", u.apply(void 0, m));
                                        y.appendChild(ud(v, u.apply(void 0, m))), y.destination = g, y.extendedAutolink = !0, d.push(y), s = m[1] + 1
                                    }
                                    s < o.length && d.push(ud(o.substring(s), u(s, o.length - 1)));
                                    for (var b = 0, w = d; b < w.length; b++) {
                                        var k = w[b];
                                        r.insertBefore(k)
                                    }
                                    r.unlink()
                                }
                            }; n = e.next();) r()
                        }(e.walker(), n), r && e.firstChild)
                            for (var o, i = e.firstChild.walker(); o = i.next();) {
                                var s = o.node,
                                    a = o.entering;
                                r[s.type] && r[s.type](s, {
                                    entering: a,
                                    options: this.options
                                })
                            }
                    }, e
                }(),
                Xd = /^\[([ \txX])\][ \t]+/;
            var Qd = /[^ \t\f\v\r\n]/,
                Yd = /^(?:`{3,}|~{3,})(?= *$)/;

            function ep(e) {
                for (var t = e; t;) {
                    if (t.lastLineBlank) return !0;
                    var n = t.type;
                    if (t.lastLineChecked || "list" !== n && "item" !== n) {
                        t.lastLineChecked = !0;
                        break
                    }
                    t.lastLineChecked = !0, t = t.lastChild
                }
                return !1
            }

            function tp(e, t) {
                return t < e.length ? e.charCodeAt(t) : -1
            }

            function np(e) {
                return !Qd.test(e)
            }

            function rp(e) {
                return 32 === e || 9 === e
            }
            var op = /^\$\$$/,
                ip = {
                    continue: function(e, t) {
                        var n = e.currentLine,
                            r = n.match(op);
                        if (r) return e.lastLineLength = r[0].length, e.finalize(t, e.lineNumber), 2;
                        for (var o = t.offset; o > 0 && rp(tp(n, e.offset));) e.advanceOffset(1, !0), o--;
                        return 0
                    },
                    finalize: function(e, t) {
                        if (null !== t.stringContent) {
                            var n = t.stringContent,
                                r = n.indexOf("\n"),
                                o = n.slice(0, r),
                                i = n.slice(r + 1),
                                s = o.match(/^(\s*)(.*)/);
                            t.info = Pu(s[2].trim()), t.literal = i, t.stringContent = null
                        }
                    },
                    canContain: function() {
                        return !1
                    },
                    acceptsLines: !0
                },
                sp = {
                    continue: function() {
                        return 1
                    },
                    finalize: function() {},
                    canContain: function() {
                        return !1
                    },
                    acceptsLines: !0
                },
                ap = {
                    continue: function() {
                        return 0
                    },
                    finalize: function(e, t) {
                        for (var n = t.firstChild; n;) {
                            if (ep(n) && n.next) {
                                t.listData.tight = !1;
                                break
                            }
                            for (var r = n.firstChild; r;) {
                                if (ep(r) && (n.next || r.next)) {
                                    t.listData.tight = !1;
                                    break
                                }
                                r = r.next
                            }
                            n = n.next
                        }
                    },
                    canContain: function(e) {
                        return "item" === e
                    },
                    acceptsLines: !1
                },
                lp = {
                    continue: function(e, t) {
                        if (e.blank) {
                            if (null === t.firstChild) return 1;
                            e.advanceNextNonspace()
                        } else {
                            if (!(e.indent >= t.listData.markerOffset + t.listData.padding)) return 1;
                            e.advanceOffset(t.listData.markerOffset + t.listData.padding, !0)
                        }
                        return 0
                    },
                    finalize: function(e, t) {
                        if (t.firstChild && "paragraph" === t.firstChild.type) {
                            var n = t.firstChild,
                                r = n.stringContent.match(Xd);
                            if (r) {
                                var o = r[0].length;
                                n.stringContent = n.stringContent.substring(o - 1), n.sourcepos[0][1] += o, n.lineOffsets[0] += o, t.listData.task = !0, t.listData.checked = /[xX]/.test(r[1])
                            }
                        }
                    },
                    canContain: function(e) {
                        return "item" !== e
                    },
                    acceptsLines: !1
                },
                cp = {
                    continue: function(e, t) {
                        var n = e.currentLine,
                            r = e.indent;
                        if (t.isFenced) {
                            var o = r <= 3 && n.charAt(e.nextNonspace) === t.fenceChar && n.slice(e.nextNonspace).match(Yd);
                            if (o && o[0].length >= t.fenceLength) return e.lastLineLength = e.offset + r + o[0].length, e.finalize(t, e.lineNumber), 2;
                            for (var i = t.fenceOffset; i > 0 && rp(tp(n, e.offset));) e.advanceOffset(1, !0), i--
                        } else if (r >= 4) e.advanceOffset(4, !0);
                        else {
                            if (!e.blank) return 1;
                            e.advanceNextNonspace()
                        }
                        return 0
                    },
                    finalize: function(e, t) {
                        var n;
                        if (null !== t.stringContent) {
                            if (t.isFenced) {
                                var r = t.stringContent,
                                    o = r.indexOf("\n"),
                                    i = r.slice(0, o),
                                    s = r.slice(o + 1),
                                    a = i.match(/^(\s*)(.*)/);
                                t.infoPadding = a[1].length, t.info = Pu(a[2].trim()), t.literal = s
                            } else t.literal = null === (n = t.stringContent) || void 0 === n ? void 0 : n.replace(/(\n *)+$/, "\n");
                            t.stringContent = null
                        }
                    },
                    canContain: function() {
                        return !1
                    },
                    acceptsLines: !0
                },
                up = {
                    continue: function(e) {
                        return e.blank ? 1 : 0
                    },
                    finalize: function(e, t) {
                        if (null !== t.stringContent) {
                            for (var n, r = !1; 91 === tp(t.stringContent, 0) && (n = e.inlineParser.parseReference(t, e.refMap));) t.stringContent = t.stringContent.slice(n), r = !0;
                            r && np(t.stringContent) && t.unlink()
                        }
                    },
                    canContain: function() {
                        return !1
                    },
                    acceptsLines: !0
                },
                dp = {
                    document: {
                        continue: function() {
                            return 0
                        },
                        finalize: function() {},
                        canContain: function(e) {
                            return "item" !== e
                        },
                        acceptsLines: !1
                    },
                    list: ap,
                    blockQuote: {
                        continue: function(e) {
                            var t = e.currentLine;
                            return e.indented || 62 !== tp(t, e.nextNonspace) ? 1 : (e.advanceNextNonspace(), e.advanceOffset(1, !1), rp(tp(t, e.offset)) && e.advanceOffset(1, !0), 0)
                        },
                        finalize: function() {},
                        canContain: function(e) {
                            return "item" !== e
                        },
                        acceptsLines: !1
                    },
                    item: lp,
                    heading: {
                        continue: function() {
                            return 1
                        },
                        finalize: function() {},
                        canContain: function() {
                            return !1
                        },
                        acceptsLines: !1
                    },
                    thematicBreak: {
                        continue: function() {
                            return 1
                        },
                        finalize: function() {},
                        canContain: function() {
                            return !1
                        },
                        acceptsLines: !1
                    },
                    codeBlock: cp,
                    htmlBlock: {
                        continue: function(e, t) {
                            return !e.blank || 6 !== t.htmlBlockType && 7 !== t.htmlBlockType ? 0 : 1
                        },
                        finalize: function(e, t) {
                            var n;
                            t.literal = (null === (n = t.stringContent) || void 0 === n ? void 0 : n.replace(/(\n *)+$/, "")) || null, t.stringContent = null
                        },
                        canContain: function() {
                            return !1
                        },
                        acceptsLines: !0
                    },
                    paragraph: up,
                    table: {
                        continue: function() {
                            return 0
                        },
                        finalize: function() {},
                        canContain: function(e) {
                            return "tableHead" === e || "tableBody" === e
                        },
                        acceptsLines: !1
                    },
                    tableBody: {
                        continue: function() {
                            return 0
                        },
                        finalize: function() {},
                        canContain: function(e) {
                            return "tableRow" === e
                        },
                        acceptsLines: !1
                    },
                    tableHead: {
                        continue: function() {
                            return 1
                        },
                        finalize: function() {},
                        canContain: function(e) {
                            return "tableRow" === e || "tableDelimRow" === e
                        },
                        acceptsLines: !1
                    },
                    tableRow: {
                        continue: function() {
                            return 1
                        },
                        finalize: function() {},
                        canContain: function(e) {
                            return "tableCell" === e
                        },
                        acceptsLines: !1
                    },
                    tableCell: {
                        continue: function() {
                            return 1
                        },
                        finalize: function() {},
                        canContain: function() {
                            return !1
                        },
                        acceptsLines: !1
                    },
                    tableDelimRow: {
                        continue: function() {
                            return 1
                        },
                        finalize: function() {},
                        canContain: function(e) {
                            return "tableDelimCell" === e
                        },
                        acceptsLines: !1
                    },
                    tableDelimCell: {
                        continue: function() {
                            return 1
                        },
                        finalize: function() {},
                        canContain: function() {
                            return !1
                        },
                        acceptsLines: !1
                    },
                    refDef: sp,
                    customBlock: ip,
                    frontMatter: sp
                };

            function pp(e) {
                for (var t = 0, n = 0, r = [], o = 0; o < e.length; o += 1)
                    if ("|" === e[o] && "\\" !== e[o - 1]) {
                        var i = e.substring(t, o);
                        0 === t && qu(i) ? n = o + 1 : r.push(i), t = o + 1
                    } t < e.length && (qu(i = e.substring(t, e.length)) || r.push(i));
                return [n, r]
            }

            function hp(e, t, n, r) {
                for (var o = [], i = 0, s = t; i < s.length; i++) {
                    var a = s[i],
                        l = a.match(/^[ \t]+/),
                        c = l ? l[0].length : 0,
                        u = void 0,
                        d = void 0;
                    if (c === a.length) c = 0, u = 0, d = "";
                    else {
                        var p = a.match(/[ \t]+$/);
                        u = p ? p[0].length : 0, d = a.slice(c, a.length - u)
                    }
                    var h = r + c,
                        f = id(e, [
                            [n, r],
                            [n, r + a.length - 1]
                        ]);
                    f.stringContent = d.replace(/\\\|/g, "|"), f.startIdx = o.length, f.endIdx = o.length, f.lineOffsets = [h - 1], f.paddingLeft = c, f.paddingRight = u, o.push(f), r += a.length + 1
                }
                return o
            }

            function fp(e) {
                var t = null,
                    n = e.stringContent,
                    r = n[0];
                return ":" === n[n.length - 1] ? t = ":" === r ? "center" : "right" : ":" === r && (t = "left"), {
                    align: t
                }
            }
            var mp = /^(\$\$)(\s*[a-zA-Z])+/,
                gp = /^(\$\$)(\s*[a-zA-Z])+.*(\$\$)/,
                vp = /^`{3,}(?!.*`)|^~{3,}/,
                yp = [/./, /^<(?:script|pre|style)(?:\s|>|$)/i, /^<!--/, /^<[?]/, /^<![A-Z]/, /^<!\[CDATA\[/, /^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[123456]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|[/]?[>]|$)/i, new RegExp("^(?:" + hd + "|" + fd + ")\\s*$", "i")],
                bp = /^(?:=+|-+)[ \t]*$/,
                wp = /^#{1,6}(?:[ \t]+|$)/,
                kp = /^(?:(?:\*[ \t]*){3,}|(?:_[ \t]*){3,}|(?:-[ \t]*){3,})[ \t]*$/,
                xp = /^[*+-]/,
                Cp = /^(\d{1,9})([.)])/;

            function Tp(e, t) {
                return e.options.disallowDeepHeading && ("blockQuote" === t.type || "item" === t.type)
            }
            var Mp = [function(e) {
                    return e.indented || 62 !== tp(e.currentLine, e.nextNonspace) ? 0 : (e.advanceNextNonspace(), e.advanceOffset(1, !1), rp(tp(e.currentLine, e.offset)) && e.advanceOffset(1, !0), e.closeUnmatchedBlocks(), e.addChild("blockQuote", e.nextNonspace), 1)
                }, function(e, t) {
                    var n;
                    if (!e.indented && !Tp(e, t) && (n = e.currentLine.slice(e.nextNonspace).match(wp))) {
                        e.advanceNextNonspace(), e.advanceOffset(n[0].length, !1), e.closeUnmatchedBlocks();
                        var r = e.addChild("heading", e.nextNonspace);
                        return r.level = n[0].trim().length, r.headingType = "atx", r.stringContent = e.currentLine.slice(e.offset).replace(/^[ \t]*#+[ \t]*$/, "").replace(/[ \t]+#+[ \t]*$/, ""), e.advanceOffset(e.currentLine.length - e.offset), 2
                    }
                    return 0
                }, function(e) {
                    var t;
                    if (!e.indented && (t = e.currentLine.slice(e.nextNonspace).match(vp))) {
                        var n = t[0].length;
                        e.closeUnmatchedBlocks();
                        var r = e.addChild("codeBlock", e.nextNonspace);
                        return r.isFenced = !0, r.fenceLength = n, r.fenceChar = t[0][0], r.fenceOffset = e.indent, e.advanceNextNonspace(), e.advanceOffset(n, !1), 2
                    }
                    return 0
                }, function(e, t) {
                    if (!e.indented && 60 === tp(e.currentLine, e.nextNonspace)) {
                        var n = e.currentLine.slice(e.nextNonspace),
                            r = e.options.disallowedHtmlBlockTags,
                            o = void 0;
                        for (o = 1; o <= 7; o++) {
                            var i = n.match(yp[o]);
                            if (i) {
                                if (7 === o) {
                                    if ("paragraph" === t.type) return 0;
                                    if (r.length > 0)
                                        if (new RegExp("</?(?:" + r.join("|") + ")", "i").test(i[0])) return 0
                                }
                                return e.closeUnmatchedBlocks(), e.addChild("htmlBlock", e.offset).htmlBlockType = o, 2
                            }
                        }
                    }
                    return 0
                }, function(e, t) {
                    var n;
                    if (null !== t.stringContent && !e.indented && "paragraph" === t.type && !Tp(e, t.parent) && (n = e.currentLine.slice(e.nextNonspace).match(bp))) {
                        e.closeUnmatchedBlocks();
                        for (var r = void 0; 91 === tp(t.stringContent, 0) && (r = e.inlineParser.parseReference(t, e.refMap));) t.stringContent = t.stringContent.slice(r);
                        if (t.stringContent.length > 0) {
                            var o = id("heading", t.sourcepos);
                            return o.level = "=" === n[0][0] ? 1 : 2, o.headingType = "setext", o.stringContent = t.stringContent, t.insertAfter(o), t.unlink(), e.tip = o, e.advanceOffset(e.currentLine.length - e.offset, !1), 2
                        }
                        return 0
                    }
                    return 0
                }, function(e) {
                    return !e.indented && kp.test(e.currentLine.slice(e.nextNonspace)) ? (e.closeUnmatchedBlocks(), e.addChild("thematicBreak", e.nextNonspace), e.advanceOffset(e.currentLine.length - e.offset, !1), 2) : 0
                }, function(e, t) {
                    var n, r, o, i = t;
                    return e.indented && "list" !== t.type || !(n = function(e, t) {
                        var n, r, o = e.currentLine.slice(e.nextNonspace),
                            i = {
                                type: "bullet",
                                tight: !0,
                                bulletChar: "",
                                start: 0,
                                delimiter: "",
                                padding: 0,
                                markerOffset: e.indent,
                                task: !1,
                                checked: !1
                            };
                        if (e.indent >= 4) return null;
                        if (n = o.match(xp)) i.type = "bullet", i.bulletChar = n[0][0];
                        else {
                            if (!(n = o.match(Cp)) || "paragraph" === t.type && "1" !== n[1]) return null;
                            i.type = "ordered", i.start = parseInt(n[1], 10), i.delimiter = n[2]
                        }
                        if (-1 !== (r = tp(e.currentLine, e.nextNonspace + n[0].length)) && 9 !== r && 32 !== r) return null;
                        if ("paragraph" === t.type && !e.currentLine.slice(e.nextNonspace + n[0].length).match(Qd)) return null;
                        e.advanceNextNonspace(), e.advanceOffset(n[0].length, !0);
                        var s = e.column,
                            a = e.offset;
                        do {
                            e.advanceOffset(1, !0), r = tp(e.currentLine, e.offset)
                        } while (e.column - s < 5 && rp(r));
                        var l = -1 === tp(e.currentLine, e.offset),
                            c = e.column - s;
                        return c >= 5 || c < 1 || l ? (i.padding = n[0].length + 1, e.column = s, e.offset = a, rp(tp(e.currentLine, e.offset)) && e.advanceOffset(1, !0)) : i.padding = n[0].length + c, i
                    }(e, i)) ? 0 : (e.closeUnmatchedBlocks(), "list" === e.tip.type && (r = i.listData, o = n, r.type === o.type && r.delimiter === o.delimiter && r.bulletChar === o.bulletChar) || ((i = e.addChild("list", e.nextNonspace)).listData = n), (i = e.addChild("item", e.nextNonspace)).listData = n, 1)
                }, function(e) {
                    return e.indented && "paragraph" !== e.tip.type && !e.blank ? (e.advanceOffset(4, !0), e.closeUnmatchedBlocks(), e.addChild("codeBlock", e.offset), 2) : 0
                }, function(e, t) {
                    var n = t.stringContent;
                    if ("paragraph" === t.type && !e.indented && !e.blank) {
                        var r = n.length - 1,
                            o = n.lastIndexOf("\n", r - 1) + 1,
                            i = n.slice(o, r),
                            s = e.currentLine.slice(e.nextNonspace),
                            a = pp(i),
                            l = a[0],
                            c = a[1],
                            u = pp(s),
                            d = u[0],
                            p = u[1],
                            h = /^[ \t]*:?-+:?[ \t]*$/;
                        if (!c.length || !p.length || p.some((function(e) {
                            return !h.test(e)
                        })) || 1 === p.length && 0 !== s.indexOf("|")) return 0;
                        var f = t.lineOffsets,
                            m = e.lineNumber - 1,
                            g = xd(f) + 1,
                            v = id("table", [
                                [m, g],
                                [e.lineNumber, e.offset]
                            ]);
                        if (v.columns = p.map((function() {
                            return {
                                align: null
                            }
                        })), t.insertAfter(v), 1 === f.length) t.unlink();
                        else {
                            t.stringContent = n.slice(0, o);
                            var y = o - (n.lastIndexOf("\n", o - 2) + 1) - 1;
                            e.lastLineLength = f[f.length - 2] + y, e.finalize(t, m - 1)
                        }
                        e.advanceOffset(e.currentLine.length - e.offset, !1);
                        var b = id("tableHead", [
                            [m, g],
                            [e.lineNumber, e.offset]
                        ]);
                        v.appendChild(b);
                        var w = id("tableRow", [
                                [m, g],
                                [m, g + i.length - 1]
                            ]),
                            k = id("tableDelimRow", [
                                [e.lineNumber, e.nextNonspace + 1],
                                [e.lineNumber, e.offset]
                            ]);
                        b.appendChild(w), b.appendChild(k), hp("tableCell", c, m, g + l).forEach((function(e) {
                            w.appendChild(e)
                        }));
                        var x = hp("tableDelimCell", p, e.lineNumber, e.nextNonspace + 1 + d);
                        return x.forEach((function(e) {
                            k.appendChild(e)
                        })), v.columns = x.map(fp), e.tip = v, 2
                    }
                    return 0
                }, function(e, t) {
                    if ("table" !== t.type && "tableBody" !== t.type || !e.blank && -1 === e.currentLine.indexOf("|")) return 0;
                    if (e.advanceOffset(e.currentLine.length - e.offset, !1), e.blank) {
                        var n = t;
                        return "tableBody" === t.type && (n = t.parent, e.finalize(t, e.lineNumber - 1)), e.finalize(n, e.lineNumber - 1), 0
                    }
                    var r = t;
                    "table" === t.type && ((r = e.addChild("tableBody", e.nextNonspace)).stringContent = null);
                    var o = id("tableRow", [
                        [e.lineNumber, e.nextNonspace + 1],
                        [e.lineNumber, e.currentLine.length]
                    ]);
                    r.appendChild(o);
                    var i = r.parent,
                        s = pp(e.currentLine.slice(e.nextNonspace)),
                        a = s[0];
                    return hp("tableCell", s[1], e.lineNumber, e.nextNonspace + 1 + a).forEach((function(e, t) {
                        t >= i.columns.length && (e.ignored = !0), o.appendChild(e)
                    })), 2
                }, function(e) {
                    var t;
                    if (!e.indented && !gp.test(e.currentLine) && (t = e.currentLine.match(mp))) {
                        var n = t[1].length;
                        e.closeUnmatchedBlocks();
                        var r = e.addChild("customBlock", e.nextNonspace);
                        return r.syntaxLength = n, r.offset = e.indent, e.advanceNextNonspace(), e.advanceOffset(n, !1), 2
                    }
                    return 0
                }],
                Sp = /^(-{3}|\+{3}|;{3})$/,
                Ep = function(e, t) {
                    var n = e.currentLine,
                        r = e.lineNumber,
                        o = e.indented;
                    return 1 === r && !o && "document" === t.type && Sp.test(n) ? (e.closeUnmatchedBlocks(), e.addChild("frontMatter", e.nextNonspace).stringContent = n, e.advanceNextNonspace(), e.advanceOffset(n.length, !1), 2) : 0
                },
                Np = {
                    continue: function(e, t) {
                        var n = e.currentLine,
                            r = n.match(Sp);
                        return "frontMatter" === t.type && r ? (t.stringContent += n, e.lastLineLength = r[0].length, e.finalize(t, e.lineNumber), 2) : 0
                    },
                    finalize: function(e, t) {
                        null !== t.stringContent && (t.literal = t.stringContent, t.stringContent = null)
                    },
                    canContain: function() {
                        return !1
                    },
                    acceptsLines: !0
                },
                Op = [/./, /<\/(?:script|pre|style)>/i, /-->/, /\?>/, />/, /\]\]>/],
                Dp = /^[#`~*+_=<>0-9-;$]/,
                Ap = /\r\n|\n|\r/;

            function Lp() {
                return id("document", [
                    [1, 1],
                    [0, 0]
                ])
            }
            var Ip = {
                    smart: !1,
                    tagFilter: !1,
                    extendedAutolinks: !1,
                    disallowedHtmlBlockTags: [],
                    referenceDefinition: !1,
                    disallowDeepHeading: !1,
                    customParser: null,
                    frontMatter: !1
                },
                Rp = function() {
                    function e(e) {
                        this.options = _c(_c({}, Ip), e), this.doc = Lp(), this.tip = this.doc, this.oldtip = this.doc, this.lineNumber = 0, this.offset = 0, this.column = 0, this.nextNonspace = 0, this.nextNonspaceColumn = 0, this.indent = 0, this.currentLine = "", this.indented = !1, this.blank = !1, this.partiallyConsumedTab = !1, this.allClosed = !0, this.lastMatchedContainer = this.doc, this.refMap = {}, this.refLinkCandidateMap = {}, this.refDefCandidateMap = {}, this.lastLineLength = 0, this.lines = [], this.options.frontMatter && (dp.frontMatter = Np, Mp.unshift(Ep)), this.inlineParser = new Zd(this.options)
                    }
                    return e.prototype.advanceOffset = function(e, t) {
                        void 0 === t && (t = !1);
                        for (var n, r, o, i = this.currentLine; e > 0 && (o = i[this.offset]);) "\t" === o ? (n = 4 - this.column % 4, t ? (this.partiallyConsumedTab = n > e, r = n > e ? e : n, this.column += r, this.offset += this.partiallyConsumedTab ? 0 : 1, e -= r) : (this.partiallyConsumedTab = !1, this.column += n, this.offset += 1, e -= 1)) : (this.partiallyConsumedTab = !1, this.offset += 1, this.column += 1, e -= 1)
                    }, e.prototype.advanceNextNonspace = function() {
                        this.offset = this.nextNonspace, this.column = this.nextNonspaceColumn, this.partiallyConsumedTab = !1
                    }, e.prototype.findNextNonspace = function() {
                        for (var e, t = this.currentLine, n = this.offset, r = this.column;
                             "" !== (e = t.charAt(n));)
                            if (" " === e) n++, r++;
                            else {
                                if ("\t" !== e) break;
                                n++, r += 4 - r % 4
                            } this.blank = "\n" === e || "\r" === e || "" === e, this.nextNonspace = n, this.nextNonspaceColumn = r, this.indent = this.nextNonspaceColumn - this.column, this.indented = this.indent >= 4
                    }, e.prototype.addLine = function() {
                        if (this.partiallyConsumedTab) {
                            this.offset += 1;
                            var e = 4 - this.column % 4;
                            this.tip.stringContent += zu(" ", e)
                        }
                        this.tip.lineOffsets ? this.tip.lineOffsets.push(this.offset) : this.tip.lineOffsets = [this.offset], this.tip.stringContent += this.currentLine.slice(this.offset) + "\n"
                    }, e.prototype.addChild = function(e, t) {
                        for (; !dp[this.tip.type].canContain(e);) this.finalize(this.tip, this.lineNumber - 1);
                        var n = t + 1,
                            r = id(e, [
                                [this.lineNumber, n],
                                [0, 0]
                            ]);
                        return r.stringContent = "", this.tip.appendChild(r), this.tip = r, r
                    }, e.prototype.closeUnmatchedBlocks = function() {
                        if (!this.allClosed) {
                            for (; this.oldtip !== this.lastMatchedContainer;) {
                                var e = this.oldtip.parent;
                                this.finalize(this.oldtip, this.lineNumber - 1), this.oldtip = e
                            }
                            this.allClosed = !0
                        }
                    }, e.prototype.finalize = function(e, t) {
                        var n = e.parent;
                        e.open = !1, e.sourcepos[1] = [t, this.lastLineLength], dp[e.type].finalize(this, e), this.tip = n
                    }, e.prototype.processInlines = function(e) {
                        var t, n = this.options.customParser,
                            r = e.walker();
                        for (this.inlineParser.refMap = this.refMap, this.inlineParser.refLinkCandidateMap = this.refLinkCandidateMap, this.inlineParser.refDefCandidateMap = this.refDefCandidateMap, this.inlineParser.options = this.options; t = r.next();) {
                            var o = t.node,
                                i = t.entering,
                                s = o.type;
                            n && n[s] && n[s](o, {
                                entering: i,
                                options: this.options
                            }), i || "paragraph" !== s && "heading" !== s && ("tableCell" !== s || o.ignored) || this.inlineParser.parse(o)
                        }
                    }, e.prototype.incorporateLine = function(e) {
                        var t = this.doc;
                        this.oldtip = this.tip, this.offset = 0, this.column = 0, this.blank = !1, this.partiallyConsumedTab = !1, this.lineNumber += 1, -1 !== e.indexOf("\0") && (e = e.replace(/\0/g, "ï¿½")), this.currentLine = e;
                        for (var n, r = !0;
                             (n = t.lastChild) && n.open;) {
                            switch (t = n, this.findNextNonspace(), dp[t.type].continue(this, t)) {
                                case 0:
                                    break;
                                case 1:
                                    r = !1;
                                    break;
                                case 2:
                                    return void(this.lastLineLength = e.length);
                                default:
                                    throw new Error("continue returned illegal value, must be 0, 1, or 2")
                            }
                            if (!r) {
                                t = t.parent;
                                break
                            }
                        }
                        this.allClosed = t === this.oldtip, this.lastMatchedContainer = t;
                        for (var o = "paragraph" !== t.type && dp[t.type].acceptsLines, i = Mp.length; !o;) {
                            if (this.findNextNonspace(), "table" !== t.type && "tableBody" !== t.type && "paragraph" !== t.type && !this.indented && !Dp.test(e.slice(this.nextNonspace))) {
                                this.advanceNextNonspace();
                                break
                            }
                            for (var s = 0; s < i;) {
                                var a = Mp[s](this, t);
                                if (1 === a) {
                                    t = this.tip;
                                    break
                                }
                                if (2 === a) {
                                    t = this.tip, o = !0;
                                    break
                                }
                                s++
                            }
                            if (s === i) {
                                this.advanceNextNonspace();
                                break
                            }
                        }
                        if (this.allClosed || this.blank || "paragraph" !== this.tip.type) {
                            this.closeUnmatchedBlocks(), this.blank && t.lastChild && (t.lastChild.lastLineBlank = !0);
                            for (var l = t.type, c = this.blank && !("blockQuote" === l || sd(t) && t.isFenced || "item" === l && !t.firstChild && t.sourcepos[0][0] === this.lineNumber), u = t; u;) u.lastLineBlank = c, u = u.parent;
                            dp[l].acceptsLines ? (this.addLine(), function(e) {
                                return "htmlBlock" === e.type
                            }(t) && t.htmlBlockType >= 1 && t.htmlBlockType <= 5 && Op[t.htmlBlockType].test(this.currentLine.slice(this.offset)) && (this.lastLineLength = e.length, this.finalize(t, this.lineNumber))) : this.offset < e.length && !this.blank && (t = this.addChild("paragraph", this.offset), this.advanceNextNonspace(), this.addLine())
                        } else this.addLine();
                        this.lastLineLength = e.length
                    }, e.prototype.parse = function(e, t) {
                        this.doc = Lp(), this.tip = this.doc, this.lineNumber = 0, this.lastLineLength = 0, this.offset = 0, this.column = 0, this.lastMatchedContainer = this.doc, this.currentLine = "";
                        var n = e.split(Ap),
                            r = n.length;
                        this.lines = t || n, this.options.referenceDefinition && this.clearRefMaps(), 10 === e.charCodeAt(e.length - 1) && (r -= 1);
                        for (var o = 0; o < r; o++) this.incorporateLine(n[o]);
                        for (; this.tip;) this.finalize(this.tip, r);
                        return this.processInlines(this.doc), this.doc
                    }, e.prototype.partialParseStart = function(e, t) {
                        this.doc = Lp(), this.tip = this.doc, this.lineNumber = e - 1, this.lastLineLength = 0, this.offset = 0, this.column = 0, this.lastMatchedContainer = this.doc, this.currentLine = "";
                        for (var n = t.length, r = 0; r < n; r++) this.incorporateLine(t[r]);
                        return this.doc
                    }, e.prototype.partialParseExtends = function(e) {
                        for (var t = 0; t < e.length; t++) this.incorporateLine(e[t])
                    }, e.prototype.partialParseFinish = function() {
                        for (; this.tip;) this.finalize(this.tip, this.lineNumber);
                        this.processInlines(this.doc)
                    }, e.prototype.setRefMaps = function(e, t, n) {
                        this.refMap = e, this.refLinkCandidateMap = t, this.refDefCandidateMap = n
                    }, e.prototype.clearRefMaps = function() {
                        [this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap].forEach((function(e) {
                            var t;
                            t = e, Object.keys(t).forEach((function(e) {
                                delete t[e]
                            }))
                        }))
                    }, e
                }();

            function Pp(e, t) {
                return e[0] < t[0] ? 1 : e[0] > t[0] ? -1 : e[1] < t[1] ? 1 : e[1] > t[1] ? -1 : 0
            }

            function Bp(e, t) {
                var n = e[0];
                return 1 === Pp(e[1], t) ? 1 : -1 === Pp(n, t) ? -1 : 0
            }

            function Fp(e, t) {
                for (var n = 0, r = t; n < r.length; n++) {
                    var o = r[n];
                    e.insertBefore(o)
                }
            }

            function Hp(e, t) {
                var n = e[0];
                return e[1][0] < t ? 1 : n[0] > t ? -1 : 0
            }

            function zp(e, t) {
                for (var n = e.firstChild; n;) {
                    var r = Hp(n.sourcepos, t);
                    if (0 === r) return n;
                    if (-1 === r) return n.prev || n;
                    n = n.next
                }
                return e.lastChild
            }

            function qp(e) {
                return function(e) {
                    return _u[e]
                }(e) || null
            }

            function Vp(e, t, n) {
                if (void 0 === n && (n = null), t)
                    for (var r = t.walker(); t && t !== n;) {
                        e(t);
                        var o = r.next();
                        if (!o) break;
                        t = o.node
                    }
            }
            var jp = /\r\n|\n|\r/;

            function $p(e) {
                return {
                    id: e.id,
                    title: e.title,
                    sourcepos: e.sourcepos,
                    unlinked: !1,
                    destination: e.dest
                }
            }
            var _p = function() {
                    function e(e, t) {
                        this.refMap = {}, this.refLinkCandidateMap = {}, this.refDefCandidateMap = {}, this.referenceDefinition = !!(null == t ? void 0 : t.referenceDefinition), this.parser = new Rp(t), this.parser.setRefMaps(this.refMap, this.refLinkCandidateMap, this.refDefCandidateMap), this.eventHandlerMap = {
                            change: []
                        }, e = e || "", this.lineTexts = e.split(jp), this.root = this.parser.parse(e, this.lineTexts)
                    }
                    return e.prototype.updateLineTexts = function(e, t, n) {
                        var r, o = e[0],
                            i = e[1],
                            s = t[0],
                            a = t[1],
                            l = n.split(jp),
                            c = l.length,
                            u = this.lineTexts[o - 1],
                            d = this.lineTexts[s - 1];
                        l[0] = u.slice(0, i - 1) + l[0], l[c - 1] = l[c - 1] + d.slice(a - 1);
                        var p = s - o + 1;
                        return (r = this.lineTexts).splice.apply(r, Uc([o - 1, p], l)), c - p
                    }, e.prototype.updateRootNodeState = function() {
                        if (1 === this.lineTexts.length && "" === this.lineTexts[0]) return this.root.lastLineBlank = !0, void(this.root.sourcepos = [
                            [1, 1],
                            [1, 0]
                        ]);
                        this.root.lastChild && (this.root.lastLineBlank = this.root.lastChild.lastLineBlank);
                        for (var e = this.lineTexts, t = e.length - 1;
                             "" === e[t];) t -= 1;
                        e.length - 2 > t && (t += 1), this.root.sourcepos[1] = [t + 1, e[t].length]
                    }, e.prototype.replaceRangeNodes = function(e, t, n) {
                        e ? (Fp(e, n), function(e, t) {
                            if (e.parent === t.parent && e !== t) {
                                for (var n = e.next; n && n !== t;) {
                                    for (var r = n.next, o = 0, i = ["parent", "prev", "next"]; o < i.length; o++) {
                                        var s = i[o];
                                        n[s] && (Uu(n[s].id), n[s] = null)
                                    }
                                    n = r
                                }
                                e.next = t.next, t.next ? t.next.prev = e : e.parent.lastChild = e
                            }
                        }(e, t), [e.id, t.id].forEach((function(e) {
                            return Uu(e)
                        })), e.unlink()) : t ? (Fp(t, n), Uu(t.id), t.unlink()) : function(e, t) {
                            for (var n = t.length - 1; n >= 0; n -= 1) e.prependChild(t[n])
                        }(this.root, n)
                    }, e.prototype.getNodeRange = function(e, t) {
                        var n = zp(this.root, e[0]),
                            r = zp(this.root, t[0]);
                        return r && r.next && t[0] + 1 === r.next.sourcepos[0][0] && (r = r.next), [n, r]
                    }, e.prototype.trigger = function(e, t) {
                        this.eventHandlerMap[e].forEach((function(e) {
                            e(t)
                        }))
                    }, e.prototype.extendEndLine = function(e) {
                        for (;
                            "" === this.lineTexts[e];) e += 1;
                        return e
                    }, e.prototype.parseRange = function(e, t, n, r) {
                        var o;
                        e && e.prev && (ad(e.prev) && function(e) {
                            var t = e.match(/^[ \t]+/);
                            if (t && (t[0].length >= 2 || /\t/.test(t[0]))) return !0;
                            var n = t ? e.slice(t.length) : e;
                            return xp.test(n) || Cp.test(n)
                        }(this.lineTexts[n - 1]) || function(e) {
                            return "table" === e.type
                        }(e.prev) && (!np(o = this.lineTexts[n - 1]) && -1 !== o.indexOf("|"))) && (n = (e = e.prev).sourcepos[0][0]);
                        for (var i = this.lineTexts.slice(n - 1, r), s = this.parser.partialParseStart(n, i), a = t ? t.next : this.root.firstChild, l = s.lastChild, c = l && sd(l) && l.open, u = l && cd(l) && l.open, d = l && ad(l);
                             (c || u) && a || d && a && ("list" === a.type || a.sourcepos[0][1] >= 2);) {
                            var p = this.extendEndLine(a.sourcepos[1][0]);
                            this.parser.partialParseExtends(this.lineTexts.slice(r, p)), e || (e = t), t = a, r = p, a = a.next
                        }
                        return this.parser.partialParseFinish(), {
                            newNodes: function(e) {
                                for (var t = [], n = e.firstChild; n;) t.push(n), n = n.next;
                                return t
                            }(s),
                            extStartNode: e,
                            extEndNode: t
                        }
                    }, e.prototype.getRemovedNodeRange = function(e, t) {
                        return !e || e && ld(e) || t && ld(t) ? null : {
                            id: [e.id, t.id],
                            line: [e.sourcepos[0][0] - 1, t.sourcepos[1][0] - 1]
                        }
                    }, e.prototype.markDeletedRefMap = function(e, t) {
                        var n = this;
                        if (!Md(this.refMap)) {
                            var r = function(e) {
                                if (ld(e)) {
                                    var t = n.refMap[e.label];
                                    t && e.id === t.id && (t.unlinked = !0)
                                }
                            };
                            e && Vp(r, e.parent, t), t && Vp(r, t)
                        }
                    }, e.prototype.replaceWithNewRefDefState = function(e) {
                        var t = this;
                        if (!Md(this.refMap)) {
                            var n = function(e) {
                                if (ld(e)) {
                                    var n = e.label,
                                        r = t.refMap[n];
                                    r && !r.unlinked || (t.refMap[n] = $p(e))
                                }
                            };
                            e.forEach((function(e) {
                                Vp(n, e)
                            }))
                        }
                    }, e.prototype.replaceWithRefDefCandidate = function() {
                        var e = this;
                        Md(this.refDefCandidateMap) || Td(this.refDefCandidateMap, (function(t, n) {
                            var r = n.label,
                                o = n.sourcepos,
                                i = e.refMap[r];
                            (!i || i.unlinked || i.sourcepos[0][0] > o[0][0]) && (e.refMap[r] = $p(n))
                        }))
                    }, e.prototype.getRangeWithRefDef = function(e, t, n, r, o) {
                        if (this.referenceDefinition && !Md(this.refMap)) {
                            var i = zp(this.root, e - 1),
                                s = zp(this.root, t + 1);
                            i && ld(i) && i !== n && i !== r && (e = (n = i).sourcepos[0][0]), s && ld(s) && s !== n && s !== r && (r = s, t = this.extendEndLine(r.sourcepos[1][0] + o))
                        }
                        return [n, r, e, t]
                    }, e.prototype.parse = function(e, t, n) {
                        void 0 === n && (n = 0);
                        var r = this.getNodeRange(e, t),
                            o = r[0],
                            i = r[1],
                            s = o ? Math.min(o.sourcepos[0][0], e[0]) : e[0],
                            a = this.extendEndLine((i ? Math.max(i.sourcepos[1][0], t[0]) : t[0]) + n),
                            l = this.parseRange.apply(this, this.getRangeWithRefDef(s, a, o, i, n)),
                            c = l.newNodes,
                            u = l.extStartNode,
                            d = l.extEndNode,
                            p = this.getRemovedNodeRange(u, d),
                            h = d ? d.next : this.root.firstChild;
                        return this.referenceDefinition ? (this.markDeletedRefMap(u, d), this.replaceRangeNodes(u, d, c), this.replaceWithNewRefDefState(c)) : this.replaceRangeNodes(u, d, c), {
                            nodes: c,
                            removedNodeRange: p,
                            nextNode: h
                        }
                    }, e.prototype.parseRefLink = function() {
                        var e = this,
                            t = [];
                        return Md(this.refMap) || Td(this.refMap, (function(n, r) {
                            r.unlinked && delete e.refMap[n], Td(e.refLinkCandidateMap, (function(r, o) {
                                var i = o.node;
                                o.refLabel === n && t.push(e.parse(i.sourcepos[0], i.sourcepos[1]))
                            }))
                        })), t
                    }, e.prototype.removeUnlinkedCandidate = function() {
                        Md(this.refDefCandidateMap) || [this.refLinkCandidateMap, this.refDefCandidateMap].forEach((function(e) {
                            Td(e, (function(t) {
                                (function(e) {
                                    var t = qp(e);
                                    if (!t) return !0;
                                    for (; t && "document" !== t.type;) {
                                        if (!t.parent && !t.prev && !t.next) return !0;
                                        t = t.parent
                                    }
                                    return !1
                                })(t) && delete e[t]
                            }))
                        }))
                    }, e.prototype.editMarkdown = function(e, t, n) {
                        var r = this.updateLineTexts(e, t, n),
                            o = this.parse(e, t, r),
                            i = function(e) {
                                for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
                                var r = _c({}, e);
                                return t.forEach((function(e) {
                                    delete r[e]
                                })), r
                            }(o, "nextNode");
                        ! function(e, t) {
                            if (e && e.parent && 0 !== t) {
                                var n, r = e.parent.walker();
                                for (r.resumeAt(e, !0); n = r.next();) {
                                    var o = n.node;
                                    n.entering && (o.sourcepos[0][0] += t, o.sourcepos[1][0] += t)
                                }
                            }
                        }(o.nextNode, r), this.updateRootNodeState();
                        var s = [i];
                        return this.referenceDefinition && (this.removeUnlinkedCandidate(), this.replaceWithRefDefCandidate(), s = s.concat(this.parseRefLink())), this.trigger("change", s), s
                    }, e.prototype.getLineTexts = function() {
                        return this.lineTexts
                    }, e.prototype.getRootNode = function() {
                        return this.root
                    }, e.prototype.findNodeAtPosition = function(e) {
                        var t = function(e, t) {
                            for (var n = e, r = null; n;) {
                                var o = Bp(n.sourcepos, t);
                                if (0 === o) {
                                    if (!n.firstChild) return n;
                                    r = n, n = n.firstChild
                                } else {
                                    if (-1 === o) return r;
                                    if (!n.next) return r;
                                    n = n.next
                                }
                            }
                            return n
                        }(this.root, e);
                        return t && t !== this.root ? t : null
                    }, e.prototype.findFirstNodeAtLine = function(e) {
                        return function(e, t) {
                            for (var n = e.firstChild, r = null; n;) {
                                var o = Hp(n.sourcepos, t);
                                if (0 === o) {
                                    if (n.sourcepos[0][0] === t || !n.firstChild) return n;
                                    r = n, n = n.firstChild
                                } else {
                                    if (-1 === o) break;
                                    r = n, n = n.next
                                }
                            }
                            return r ? function(e) {
                                for (; e.parent && "document" !== e.parent.type && e.parent.sourcepos[0][0] === e.sourcepos[0][0];) e = e.parent;
                                return e
                            }(function(e) {
                                for (; e.lastChild;) e = e.lastChild;
                                return e
                            }(r)) : null
                        }(this.root, e)
                    }, e.prototype.on = function(e, t) {
                        this.eventHandlerMap[e].push(t)
                    }, e.prototype.off = function(e, t) {
                        var n = this.eventHandlerMap[e],
                            r = n.indexOf(t);
                        n.splice(r, 1)
                    }, e.prototype.findNodeById = function(e) {
                        return qp(e)
                    }, e.prototype.removeAllNode = function() {
                        _u = {}
                    }, e
                }(),
                Up = new RegExp("<(/?(?:" + ["title", "textarea", "style", "xmp", "iframe", "noembed", "noframes", "script", "plaintext"].join("|") + ")[^>]*>)", "ig");

            function Wp(e) {
                return Up.test(e) ? e.replace(Up, (function(e, t) {
                    return "&lt;" + t
                })) : e
            }
            var Jp = {
                    heading: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "h" + e.level,
                            outerNewLine: !0
                        }
                    },
                    text: function(e) {
                        return {
                            type: "text",
                            content: e.literal
                        }
                    },
                    softbreak: function(e, t) {
                        return {
                            type: "html",
                            content: t.options.softbreak
                        }
                    },
                    linebreak: function() {
                        return {
                            type: "html",
                            content: "<br />\n"
                        }
                    },
                    emph: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "em"
                        }
                    },
                    strong: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "strong"
                        }
                    },
                    paragraph: function(e, t) {
                        var n, r = t.entering,
                            o = null === (n = e.parent) || void 0 === n ? void 0 : n.parent;
                        return o && "list" === o.type && o.listData.tight ? null : {
                            type: r ? "openTag" : "closeTag",
                            tagName: "p",
                            outerNewLine: !0
                        }
                    },
                    thematicBreak: function() {
                        return {
                            type: "openTag",
                            tagName: "hr",
                            outerNewLine: !0,
                            selfClose: !0
                        }
                    },
                    blockQuote: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "blockquote",
                            outerNewLine: !0,
                            innerNewLine: !0
                        }
                    },
                    list: function(e, t) {
                        var n = t.entering,
                            r = e.listData,
                            o = r.type,
                            i = r.start,
                            s = "bullet" === o ? "ul" : "ol",
                            a = {};
                        return "ol" === s && null !== i && 1 !== i && (a.start = i.toString()), {
                            type: n ? "openTag" : "closeTag",
                            tagName: s,
                            attributes: a,
                            outerNewLine: !0
                        }
                    },
                    item: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "li",
                            outerNewLine: !0
                        }
                    },
                    htmlInline: function(e, t) {
                        return {
                            type: "html",
                            content: t.options.tagFilter ? Wp(e.literal) : e.literal
                        }
                    },
                    htmlBlock: function(e, t) {
                        var n = t.options,
                            r = n.tagFilter ? Wp(e.literal) : e.literal;
                        return n.nodeId ? [{
                            type: "openTag",
                            tagName: "div",
                            outerNewLine: !0
                        }, {
                            type: "html",
                            content: r
                        }, {
                            type: "closeTag",
                            tagName: "div",
                            outerNewLine: !0
                        }] : {
                            type: "html",
                            content: r,
                            outerNewLine: !0
                        }
                    },
                    code: function(e) {
                        return [{
                            type: "openTag",
                            tagName: "code"
                        }, {
                            type: "text",
                            content: e.literal
                        }, {
                            type: "closeTag",
                            tagName: "code"
                        }]
                    },
                    codeBlock: function(e) {
                        var t = e.info,
                            n = t ? t.split(/\s+/) : [],
                            r = [];
                        return n.length > 0 && n[0].length > 0 && r.push("language-" + Hu(n[0])), [{
                            type: "openTag",
                            tagName: "pre",
                            outerNewLine: !0
                        }, {
                            type: "openTag",
                            tagName: "code",
                            classNames: r
                        }, {
                            type: "text",
                            content: e.literal
                        }, {
                            type: "closeTag",
                            tagName: "code"
                        }, {
                            type: "closeTag",
                            tagName: "pre",
                            outerNewLine: !0
                        }]
                    },
                    link: function(e, t) {
                        if (t.entering) {
                            var n = e,
                                r = n.title,
                                o = n.destination;
                            return {
                                type: "openTag",
                                tagName: "a",
                                attributes: _c({
                                    href: Hu(o)
                                }, r && {
                                    title: Hu(r)
                                })
                            }
                        }
                        return {
                            type: "closeTag",
                            tagName: "a"
                        }
                    },
                    image: function(e, t) {
                        var n = t.getChildrenText,
                            r = t.skipChildren,
                            o = e,
                            i = o.title,
                            s = o.destination;
                        return r(), {
                            type: "openTag",
                            tagName: "img",
                            selfClose: !0,
                            attributes: _c({
                                src: Hu(s),
                                alt: n(e)
                            }, i && {
                                title: Hu(i)
                            })
                        }
                    },
                    customBlock: function(e, t, n) {
                        var r = e.info.trim().toLowerCase(),
                            o = n[r];
                        if (o) try {
                            return o(e, t)
                        } catch (e) {
                            console.warn("[@toast-ui/editor] - The error occurred when " + r + " block node was parsed in markdown renderer: " + e)
                        }
                        return [{
                            type: "openTag",
                            tagName: "div",
                            outerNewLine: !0
                        }, {
                            type: "text",
                            content: e.literal
                        }, {
                            type: "closeTag",
                            tagName: "div",
                            outerNewLine: !0
                        }]
                    },
                    frontMatter: function(e) {
                        return [{
                            type: "openTag",
                            tagName: "div",
                            outerNewLine: !0,
                            attributes: {
                                style: "white-space: pre; display: none;"
                            }
                        }, {
                            type: "text",
                            content: e.literal
                        }, {
                            type: "closeTag",
                            tagName: "div",
                            outerNewLine: !0
                        }]
                    },
                    customInline: function(e, t, n) {
                        var r = e,
                            o = r.info,
                            i = r.firstChild,
                            s = o.trim().toLowerCase(),
                            a = n[s],
                            l = t.entering;
                        if (a) try {
                            return a(e, t)
                        } catch (e) {
                            console.warn("[@toast-ui/editor] - The error occurred when " + s + " inline node was parsed in markdown renderer: " + e)
                        }
                        return l ? [{
                            type: "openTag",
                            tagName: "span"
                        }, {
                            type: "text",
                            content: "$$" + o + (i ? " " : "")
                        }] : [{
                            type: "text",
                            content: "$$"
                        }, {
                            type: "closeTag",
                            tagName: "span"
                        }]
                    }
                },
                Gp = {
                    strike: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "del"
                        }
                    },
                    item: function(e, t) {
                        var n = t.entering,
                            r = e.listData,
                            o = r.checked,
                            i = r.task;
                        if (n) {
                            var s = {
                                type: "openTag",
                                tagName: "li",
                                outerNewLine: !0
                            };
                            return i ? [s, {
                                type: "openTag",
                                tagName: "input",
                                selfClose: !0,
                                attributes: _c(_c({}, o && {
                                    checked: ""
                                }), {
                                    disabled: "",
                                    type: "checkbox"
                                })
                            }, {
                                type: "text",
                                content: " "
                            }] : s
                        }
                        return {
                            type: "closeTag",
                            tagName: "li",
                            outerNewLine: !0
                        }
                    },
                    table: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "table",
                            outerNewLine: !0
                        }
                    },
                    tableHead: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "thead",
                            outerNewLine: !0
                        }
                    },
                    tableBody: function(e, t) {
                        return {
                            type: t.entering ? "openTag" : "closeTag",
                            tagName: "tbody",
                            outerNewLine: !0
                        }
                    },
                    tableRow: function(e, t) {
                        if (t.entering) return {
                            type: "openTag",
                            tagName: "tr",
                            outerNewLine: !0
                        };
                        var n = [];
                        if (e.lastChild)
                            for (var r = e.parent.parent.columns.length, o = e.lastChild.endIdx + 1; o < r; o += 1) n.push({
                                type: "openTag",
                                tagName: "td",
                                outerNewLine: !0
                            }, {
                                type: "closeTag",
                                tagName: "td",
                                outerNewLine: !0
                            });
                        return n.push({
                            type: "closeTag",
                            tagName: "tr",
                            outerNewLine: !0
                        }), n
                    },
                    tableCell: function(e, t) {
                        var n = t.entering;
                        if (e.ignored) return {
                            type: "text",
                            content: ""
                        };
                        var r = e.parent.parent,
                            o = "tableHead" === r.type ? "th" : "td",
                            i = r.parent.columns[e.startIdx],
                            s = (null == i ? void 0 : i.align) ? {
                                align: i.align
                            } : null;
                        return n ? _c({
                            type: "openTag",
                            tagName: o,
                            outerNewLine: !0
                        }, s && {
                            attributes: s
                        }) : {
                            type: "closeTag",
                            tagName: o,
                            outerNewLine: !0
                        }
                    }
                },
                Kp = {
                    softbreak: "\n",
                    gfm: !1,
                    tagFilter: !1,
                    nodeId: !1
                };

            function Zp(e) {
                for (var t = [], n = e.walker(), r = null; r = n.next();) {
                    var o = r.node;
                    "text" === o.type && t.push(o.literal)
                }
                return t.join("")
            }
            var Xp = function() {
                    function e(e) {
                        this.buffer = [], this.options = _c(_c({}, Kp), e), this.convertors = this.createConvertors(), delete this.options.convertors
                    }
                    return e.prototype.createConvertors = function() {
                        var e = _c({}, Jp);
                        if (this.options.gfm && (e = _c(_c({}, e), Gp)), this.options.convertors) {
                            var t = this.options.convertors,
                                n = Object.keys(t),
                                r = _c(_c({}, Jp), Gp);
                            n.forEach((function(n) {
                                var o = e[n],
                                    i = t[n],
                                    s = -1 === Object.keys(r).indexOf(n) ? n.toLowerCase() : n;
                                e[s] = o ? function(e, t, n) {
                                    return t.origin = function() {
                                        return o(e, t, n)
                                    }, i(e, t)
                                } : i
                            }))
                        }
                        return e
                    }, e.prototype.getConvertors = function() {
                        return this.convertors
                    }, e.prototype.getOptions = function() {
                        return this.options
                    }, e.prototype.render = function(e) {
                        var t = this;
                        this.buffer = [];
                        for (var n = e.walker(), r = null, o = function() {
                            var e = r.node,
                                o = r.entering,
                                s = i.convertors[e.type];
                            if (!s) return "continue";
                            var a = !1,
                                l = {
                                    entering: o,
                                    leaf: !ju(e),
                                    options: i.options,
                                    getChildrenText: Zp,
                                    skipChildren: function() {
                                        a = !0
                                    }
                                },
                                c = cd(e) || function(e) {
                                    return "customInline" === e.type
                                }(e) ? s(e, l, i.convertors) : s(e, l);
                            c && ((Array.isArray(c) ? c : [c]).forEach((function(n, r) {
                                "openTag" === n.type && t.options.nodeId && 0 === r && (n.attributes || (n.attributes = {}), n.attributes["data-nodeid"] = String(e.id)), t.renderHTMLNode(n)
                            })), a && (n.resumeAt(e, !1), n.next()))
                        }, i = this; r = n.next();) o();
                        return this.addNewLine(), this.buffer.join("")
                    }, e.prototype.renderHTMLNode = function(e) {
                        switch (e.type) {
                            case "openTag":
                            case "closeTag":
                                this.renderElementNode(e);
                                break;
                            case "text":
                                this.renderTextNode(e);
                                break;
                            case "html":
                                this.renderRawHtmlNode(e)
                        }
                    }, e.prototype.generateOpenTagString = function(e) {
                        var t = this,
                            n = e.tagName,
                            r = e.classNames,
                            o = e.attributes;
                        this.buffer.push("<" + n), r && r.length > 0 && this.buffer.push(' class="' + r.join(" ") + '"'), o && Object.keys(o).forEach((function(e) {
                            var n = o[e];
                            t.buffer.push(" " + e + '="' + n + '"')
                        })), e.selfClose && this.buffer.push(" /"), this.buffer.push(">")
                    }, e.prototype.generateCloseTagString = function(e) {
                        var t = e.tagName;
                        this.buffer.push("</" + t + ">")
                    }, e.prototype.addNewLine = function() {
                        this.buffer.length && "\n" !== xd(xd(this.buffer)) && this.buffer.push("\n")
                    }, e.prototype.addOuterNewLine = function(e) {
                        e.outerNewLine && this.addNewLine()
                    }, e.prototype.addInnerNewLine = function(e) {
                        e.innerNewLine && this.addNewLine()
                    }, e.prototype.renderTextNode = function(e) {
                        this.buffer.push(Hu(e.content))
                    }, e.prototype.renderRawHtmlNode = function(e) {
                        this.addOuterNewLine(e), this.buffer.push(e.content), this.addOuterNewLine(e)
                    }, e.prototype.renderElementNode = function(e) {
                        "openTag" === e.type ? (this.addOuterNewLine(e), this.generateOpenTagString(e), e.selfClose ? this.addOuterNewLine(e) : this.addInnerNewLine(e)) : (this.addInnerNewLine(e), this.generateCloseTagString(e), this.addOuterNewLine(e))
                    }, e
                }(),
                Qp = n(368),
                Yp = n.n(Qp),
                eh = ["iframe", "embed"],
                th = [];

            function nh(e) {
                Ue(eh, e) && th.push(e.toLowerCase())
            }

            function rh(e, t) {
                return Yp().sanitize(e, o({
                    ADD_TAGS: th,
                    ADD_ATTR: ["rel", "target", "hreflang", "type"],
                    FORBID_TAGS: ["input", "script", "textarea", "form", "button", "select", "meta", "style", "link", "title", "object", "base"]
                }, t))
            }

            function oh(e, t) {
                return e.literal.replace(new RegExp("(<\\s*" + t + "[^>]*>)|(</" + t + "\\s*[>])", "ig"), "").trim()
            }

            function ih(e) {
                var t = (e = e.match(ga)[0]).match(new RegExp(ha, "g"));
                return t ? t.reduce((function(e, t) {
                    var n = t.trim().split("="),
                        r = n[0],
                        o = n.slice(1);
                    return o.length && (e[r] = o.join("=").replace(/'|"/g, "").trim()), e
                }), {}) : {}
            }

            function sh(e) {
                return vi()(e.attributes).reduce((function(e, t) {
                    return e[t.nodeName] = t.nodeValue, e
                }), {})
            }

            function ah(e, t, n, r) {
                var o = r.getToDOMNode(t)(e),
                    i = n(o.outerHTML),
                    s = document.createElement("div");
                return s.innerHTML = i, {
                    dom: o = s.firstChild,
                    htmlAttrs: sh(o)
                }
            }
            var lh = {
                htmlBlock: function(e, t, n) {
                    return {
                        atom: !0,
                        content: "block+",
                        group: "block",
                        attrs: {
                            htmlAttrs: {
                                default: {}
                            },
                            childrenHTML: {
                                default: ""
                            },
                            htmlBlock: {
                                default: !0
                            }
                        },
                        parseDOM: [{
                            tag: e,
                            getAttrs: function(e) {
                                return {
                                    htmlAttrs: sh(e),
                                    childrenHTML: e.innerHTML
                                }
                            }
                        }],
                        toDOM: function(r) {
                            var o = ah(r, e, t, n),
                                s = o.dom,
                                a = o.htmlAttrs;
                            return a.class = a.class ? a.class + " html-block" : "html-block", i([e, a], vi()(s.childNodes))
                        }
                    }
                },
                htmlInline: function(e, t, n) {
                    return {
                        attrs: {
                            htmlAttrs: {
                                default: {}
                            },
                            htmlInline: {
                                default: !0
                            }
                        },
                        parseDOM: [{
                            tag: e,
                            getAttrs: function(e) {
                                return {
                                    htmlAttrs: sh(e)
                                }
                            }
                        }],
                        toDOM: function(r) {
                            var o = ah(r, e, t, n).htmlAttrs;
                            return [e, o, 0]
                        }
                    }
                }
            };
            var ch = /^\s*<\s*\//,
                uh = {
                    paragraph: function(e, t) {
                        var n = t.entering,
                            r = t.origin;
                        return t.options.nodeId ? {
                            type: n ? "openTag" : "closeTag",
                            outerNewLine: !0,
                            tagName: "p"
                        } : r()
                    },
                    softbreak: function(e) {
                        return {
                            type: "html",
                            content: e.prev && "htmlInline" === e.prev.type && /<br ?\/?>/.test(e.prev.literal) ? "\n" : "<br>\n"
                        }
                    },
                    item: function(e, t) {
                        if (t.entering) {
                            var n = {},
                                r = [];
                            return e.listData.task && (n["data-task"] = "", r.push("task-list-item"), e.listData.checked && (r.push("checked"), n["data-task-checked"] = "")), {
                                type: "openTag",
                                tagName: "li",
                                classNames: r,
                                attributes: n,
                                outerNewLine: !0
                            }
                        }
                        return {
                            type: "closeTag",
                            tagName: "li",
                            outerNewLine: !0
                        }
                    },
                    code: function(e) {
                        return [{
                            type: "openTag",
                            tagName: "code",
                            attributes: {
                                "data-backticks": String(e.tickCount)
                            }
                        }, {
                            type: "text",
                            content: e.literal
                        }, {
                            type: "closeTag",
                            tagName: "code"
                        }]
                    },
                    codeBlock: function(e) {
                        var t = e,
                            n = t.fenceLength,
                            r = t.info,
                            o = r ? r.split(/\s+/) : [],
                            i = [],
                            s = {};
                        if (n > 3 && (s["data-backticks"] = n), o.length > 0 && o[0].length > 0) {
                            var a = o[0];
                            i.push("lang-" + a), s["data-language"] = a
                        }
                        return [{
                            type: "openTag",
                            tagName: "pre",
                            classNames: i
                        }, {
                            type: "openTag",
                            tagName: "code",
                            attributes: s
                        }, {
                            type: "text",
                            content: e.literal
                        }, {
                            type: "closeTag",
                            tagName: "code"
                        }, {
                            type: "closeTag",
                            tagName: "pre"
                        }]
                    },
                    customInline: function(e, t) {
                        var n = t.origin,
                            r = t.entering,
                            o = t.skipChildren,
                            i = e.info;
                        return -1 !== i.indexOf("widget") && r ? (o(), [{
                            type: "openTag",
                            tagName: "span",
                            classNames: ["tui-widget"]
                        }, {
                            type: "html",
                            content: Ys(i, oa(e)).outerHTML
                        }, {
                            type: "closeTag",
                            tagName: "span"
                        }]) : n()
                    }
                };

            function dh(e, t) {
                var n = o({}, uh);
                return e && (n.link = function(t, n) {
                    var r = n.entering,
                        i = (0, n.origin)();
                    return r && (i.attributes = o(o({}, i.attributes), e)), i
                }), t && Object.keys(t).forEach((function(e) {
                    var r = n[e],
                        i = t[e];
                    r && Ga()(i) ? n[e] = function(e, t) {
                        var n = o({}, t);
                        return n.origin = function() {
                            return r(e, t)
                        }, i(e, n)
                    } : Ue(["htmlBlock", "htmlInline"], e) && !Ga()(i) ? n[e] = function(e, t) {
                        var n = e.literal.match(ga);
                        if (n) {
                            var r = n[0],
                                s = n[1],
                                a = n[3],
                                l = (s || a).toLowerCase(),
                                c = i[l],
                                u = oh(e, l);
                            if (c) {
                                var d = o({}, e);
                                return d.attrs = ih(r), d.childrenHTML = u, d.type = l, t.entering = !ch.test(e.literal), c(d, t)
                            }
                        }
                        return t.origin()
                    } : n[e] = i
                })), n
            }
            var ph = ["list", "item", "blockQuote"],
                hh = ["UL", "OL", "BLOCKQUOTE"];

            function fh(e, t) {
                var n, r = e.child(t);
                return !r.childCount || 1 === r.childCount && !(null === (n = r.firstChild.text) || void 0 === n ? void 0 : n.trim())
            }

            function mh(e, t, n) {
                var r = Is(t) - 1,
                    o = Rs(t) - 1,
                    i = n[r].getBoundingClientRect(),
                    s = n[o].offsetTop - n[r].offsetTop + n[o].clientHeight;
                return {
                    height: s <= 0 ? n[r].clientHeight : s + gh(e, n, Math.min(o + 1, e.childCount - 1)),
                    rect: i
                }
            }

            function gh(e, t, n) {
                for (var r = e.childCount - 1, o = 0; n <= r && fh(e, n);) o += t[n].clientHeight, n += 1;
                return o
            }

            function vh(e, t) {
                for (var n = 0; e && e !== t && (Ue(hh, e.tagName) || (n += e.offsetTop), e.offsetParent !== t.offsetParent);) e = e.parentElement;
                return n
            }

            function yh(e, t, n) {
                return e && t > n + e.offsetTop ? yh(e.nextElementSibling, t, n) || e : null
            }

            function bh(e, t) {
                for (var n = e.querySelector('[data-nodeid="' + t.id + '"]'); !n || Fs(t);) t = t.parent, n = e.querySelector('[data-nodeid="' + t.id + '"]');
                return function(e) {
                    var t = e.mdNode,
                        n = e.el;
                    for (;
                        (Ue(ph, t.type) || "table" === t.type) && t.firstChild;) t = t.firstChild, n = n.firstElementChild;
                    return {
                        mdNode: t,
                        el: n
                    }
                }({
                    mdNode: t,
                    el: n
                })
            }
            var wh = {};

            function kh(e) {
                e && (delete wh[Number(e.getAttribute("data-nodeid"))], vi()(e.children).forEach((function(e) {
                    kh(e)
                })))
            }

            function xh(e, t, n) {
                var r, o = wh[r = n] && wh[r].height,
                    i = function(e) {
                        return wh[e] && wh[e].offsetTop
                    }(n),
                    s = o || e.clientHeight,
                    a = i || vh(e, t) || e.offsetTop;
                return o || function(e, t) {
                    wh[e] = wh[e] || {}, wh[e].height = t
                }(n, s), i || function(e, t) {
                    wh[e] = wh[e] || {}, wh[e].offsetTop = t
                }(n, a), {
                    nodeHeight: s,
                    offsetTop: a
                }
            }
            var Ch = xa("md-preview-highlight");
            var Th = function() {
                    function e(e, t) {
                        var n = document.createElement("div");
                        this.el = n, this.eventEmitter = e, this.isViewer = !!t.isViewer, this.el.className = xa("md-preview");
                        var r = t.linkAttributes,
                            o = t.customHTMLRenderer,
                            i = t.sanitizer,
                            s = t.highlight,
                            a = void 0 !== s && s;
                        this.renderer = new Xp({
                            gfm: !0,
                            nodeId: !0,
                            convertors: dh(r, o)
                        }), this.cursorNodeId = null, this.sanitizer = i, this.initEvent(a), this.initContentSection(), this.isViewer && (this.previewContent.style.overflowWrap = "break-word")
                    }
                    return e.prototype.initContentSection = function() {
                        this.previewContent = Ea('<div class="' + xa("contents") + '"></div>'), this.isViewer || this.el.appendChild(this.previewContent)
                    }, e.prototype.toggleActive = function(e) {
                        Sa(this.el, "active", e)
                    }, e.prototype.initEvent = function(e) {
                        var t = this;
                        this.eventEmitter.listen("updatePreview", this.update.bind(this)), this.isViewer || (e && (this.eventEmitter.listen("changeToolbarState", (function(e) {
                            var n = e.mdNode,
                                r = e.cursorPos;
                            t.updateCursorNode(n, r)
                        })), this.eventEmitter.listen("blur", (function() {
                            t.removeHighlight()
                        }))), Vc()(this.el, "scroll", (function(e) {
                            t.eventEmitter.emit("scroll", "preview", function(e, t) {
                                for (var n = t, r = null; n;) {
                                    var o = n.firstElementChild;
                                    if (!o) break;
                                    r = n, n = yh(o, e, vh(n, t))
                                }
                                var i = n || r;
                                return i === t ? null : i
                            }(e.target.scrollTop, t.previewContent))
                        })), this.eventEmitter.listen("changePreviewTabPreview", (function() {
                            return t.toggleActive(!0)
                        })), this.eventEmitter.listen("changePreviewTabWrite", (function() {
                            return t.toggleActive(!1)
                        })))
                    }, e.prototype.removeHighlight = function() {
                        if (this.cursorNodeId) {
                            var e = this.getElementByNodeId(this.cursorNodeId);
                            e && Ce()(e, Ch)
                        }
                    }, e.prototype.updateCursorNode = function(e, t) {
                        e && ("tableRow" === (e = js(e, (function(e) {
                            return ! function(e) {
                                switch (e.type) {
                                    case "code":
                                    case "text":
                                    case "emph":
                                    case "strong":
                                    case "strike":
                                    case "link":
                                    case "image":
                                    case "htmlInline":
                                    case "linebreak":
                                    case "softbreak":
                                    case "customInline":
                                        return !0;
                                    default:
                                        return !1
                                }
                            }(e)
                        }))).type ? e = function(e, t) {
                            for (var n = e.firstChild; n && n.next && !(Ps(n.next) > t + 1);) n = n.next;
                            return n
                        }(e, t[1]) : "tableBody" === e.type && (e = null));
                        var n = e ? e.id : null;
                        if (this.cursorNodeId !== n) {
                            var r = this.getElementByNodeId(this.cursorNodeId),
                                o = this.getElementByNodeId(n);
                            r && Ce()(r, Ch), o && ke()(o, Ch), this.cursorNodeId = n
                        }
                    }, e.prototype.getElementByNodeId = function(e) {
                        return e ? this.previewContent.querySelector('[data-nodeid="' + e + '"]') : null
                    }, e.prototype.update = function(e) {
                        var t = this;
                        e.forEach((function(e) {
                            return t.replaceRangeNodes(e)
                        })), this.eventEmitter.emit("afterPreviewRender", this)
                    }, e.prototype.replaceRangeNodes = function(e) {
                        var t = this,
                            n = e.nodes,
                            r = e.removedNodeRange,
                            o = this.previewContent,
                            i = this.eventEmitter.emitReduce("beforePreviewRender", this.sanitizer(n.map((function(e) {
                                return t.renderer.render(e)
                            })).join("")));
                        if (r) {
                            var s = r.id,
                                a = s[0],
                                l = s[1],
                                c = this.getElementByNodeId(a),
                                u = this.getElementByNodeId(l);
                            if (c) {
                                c.insertAdjacentHTML("beforebegin", i);
                                for (var d = c; d && d !== u;) {
                                    var p = d.nextElementSibling;
                                    Ma(d), kh(d), d = p
                                }(null == d ? void 0 : d.parentNode) && (Ma(d), kh(d))
                            }
                        } else o.insertAdjacentHTML("afterbegin", i)
                    }, e.prototype.getRenderer = function() {
                        return this.renderer
                    }, e.prototype.destroy = function() {
                        zc()(this.el, "scroll"), this.el = null
                    }, e.prototype.getElement = function() {
                        return this.el
                    }, e.prototype.getHTML = function() {
                        return La(this.previewContent.innerHTML)
                    }, e.prototype.setHTML = function(e) {
                        this.previewContent.innerHTML = e
                    }, e.prototype.setHeight = function(e) {
                        be()(this.el, {
                            height: e + "px"
                        })
                    }, e.prototype.setMinHeight = function(e) {
                        be()(this.el, {
                            minHeight: e + "px"
                        })
                    }, e
                }(),
                Mh = Th;

            function Sh(e, t) {
                for (var n = e.depth; n;) {
                    var r = e.node(n);
                    if (t(r, n)) return {
                        node: r,
                        depth: n,
                        offset: n > 0 ? e.before(n) : 0
                    };
                    n -= 1
                }
                return null
            }

            function Eh(e) {
                return !!Sh(e, (function(e) {
                    var t = e.type;
                    return "listItem" === t.name || "bulletList" === t.name || "orderedList" === t.name
                }))
            }

            function Nh(e) {
                return !!Sh(e, (function(e) {
                    var t = e.type;
                    return "tableHeadCell" === t.name || "tableBodyCell" === t.name
                }))
            }

            function Oh(e) {
                return Sh(e, (function(e) {
                    return "listItem" === e.type.name
                }))
            }

            function Dh(e) {
                return {
                    tag: e,
                    getAttrs: function(e) {
                        var t = e.getAttribute("data-raw-html");
                        return o({}, t && {
                            rawHTML: t
                        })
                    }
                }
            }

            function Ah(e) {
                return Object.keys(e).reduce((function(t, n) {
                    return "rawHTML" !== n && e[n] && (t[n = "className" === n ? "class" : n] = e[n]), t
                }), {})
            }

            function Lh(e) {
                return {
                    tag: e,
                    getAttrs: function(e) {
                        return ["rawHTML", "colspan", "rowspan", "extended"].reduce((function(t, n) {
                            var r = "rawHTML" === n ? "data-raw-html" : n,
                                o = e.getAttribute(r);
                            return o && (t[n] = Ue(["rawHTML", "extended"], n) ? o : Number(o)), t
                        }), {})
                    }
                }
            }

            function Ih(e) {
                var t = e.htmlAttrs,
                    n = e.classNames;
                return o(o({}, t), {
                    class: n ? n.join(" ") : null
                })
            }

            function Rh(e, t, n, r) {
                var o = t.$from,
                    i = t.$to,
                    s = t.depth,
                    a = t,
                    l = !1;
                if (s >= 2 && o.node(s - 1).type.compatibleContent(n) && 0 === t.startIndex && o.index(s - 1)) {
                    var c = e.doc.resolve(t.start - 2);
                    a = new I(c, c, s), t.endIndex < t.parent.childCount && (t = new I(o, e.doc.resolve(i.end(s)), s)), l = !0
                }
                var u = function(e, t, n, r) {
                    var o = function(e, t) {
                            var n = e.parent,
                                r = e.startIndex,
                                o = e.endIndex,
                                i = n.contentMatchAt(r).findWrapping(t);
                            if (i) {
                                var s = i.length ? i[0] : t;
                                return n.canReplaceWith(r, o, s) ? i : null
                            }
                            return null
                        }(e, n),
                        i = function(e, t) {
                            var n = e.parent,
                                r = e.startIndex,
                                o = e.endIndex,
                                i = n.child(r),
                                s = t.contentMatch.findWrapping(i.type);
                            if (s) {
                                for (var a = (s.length ? s[s.length - 1] : t).contentMatch, l = r; a && l < o; l += 1) a = a.matchType(n.child(l).type);
                                if (a && a.validEnd) return s
                            }
                            return null
                        }(t, n);
                    if (o && i) {
                        var s = o.map((function(e) {
                                return {
                                    type: e
                                }
                            })),
                            a = i.map((function(e) {
                                return {
                                    type: e,
                                    attrs: r
                                }
                            }));
                        return s.concat({
                            type: n
                        }).concat(a)
                    }
                    return null
                }(a, t, n, r);
                return u ? function(e, t, n, r, o) {
                    for (var i = t.start, s = t.end, a = t.startIndex, l = t.endIndex, c = t.parent, u = d.empty, p = n.length - 1; p >= 0; p -= 1) u = d.from(n[p].type.create(n[p].attrs, u));
                    e.step(new wt(i - (r ? 2 : 0), s, i, s, new v(u, 0, 0), n.length, !0));
                    var h = 0;
                    for (p = 0; p < n.length; p += 1)
                        if (n[p].type === o) {
                            h = p + 1;
                            break
                        } for (var f = n.length - h, m = i + n.length - (r ? 2 : 0), g = (p = a, l); p < g; p += 1) !(p === a) && Mt(e.doc, m, f) && (e.split(m, f), m += 2 * f), m += c.child(p).nodeSize;
                    return e
                }(e, t, u, l, n) : e
            }

            function Ph(e, t) {
                for (var n = e.resolve(t);
                     "paragraph" !== n.node().type.name;) t -= 2, n = e.resolve(t);
                return Oh(n)
            }

            function Bh(e) {
                return function(t, n) {
                    var r = t.selection,
                        o = t.tr,
                        i = r.$from,
                        s = r.$to,
                        a = i.blockRange(s);
                    if (a) {
                        var l = Eh(i) ? function(e, t, n) {
                            var r = t.$from,
                                o = t.$to,
                                i = Oh(r),
                                s = Oh(o);
                            if (i && s)
                                for (; s;) {
                                    var a = s.offset,
                                        l = s.node,
                                        c = s.depth;
                                    l.attrs.task && e.setNodeMarkup(a, null, {
                                        task: !1,
                                        checked: !1
                                    });
                                    var u = e.doc.resolve(a);
                                    if (u.parent.type !== n) {
                                        var d = u.before(c - 1);
                                        e.setNodeMarkup(d, n)
                                    }
                                    if (a === i.offset) break;
                                    s = Ph(e.doc, a)
                                }
                            return e
                        }(o, a, e) : Rh(o, a, e);
                        return n(l), !0
                    }
                    return !1
                }
            }

            function Fh() {
                return function(e, t) {
                    var n = e.selection,
                        r = e.tr,
                        o = e.schema,
                        i = n.$from,
                        s = n.$to,
                        a = i.blockRange(s);
                    if (a) {
                        var l = Eh(i) ? function(e, t) {
                            var n = t.$from,
                                r = t.$to,
                                o = Oh(n),
                                i = Oh(r);
                            if (o && i)
                                for (; i;) {
                                    var s = i.offset,
                                        a = {
                                            task: !i.node.attrs.task,
                                            checked: !1
                                        };
                                    if (e.setNodeMarkup(s, null, a), s === o.offset) break;
                                    i = Ph(e.doc, s)
                                }
                            return e
                        }(r, a) : Rh(r, a, o.nodes.bulletList, {
                            task: !0
                        });
                        return t(l), !0
                    }
                    return !1
                }
            }

            function Hh(e) {
                return function(t, n) {
                    var r = t.tr,
                        o = t.selection,
                        i = o.$from,
                        s = o.$to,
                        a = i.blockRange(s, (function(t) {
                            var n = t.childCount,
                                r = t.firstChild;
                            return !!n && r.type === e
                        }));
                    if (a) {
                        var l = i.node(a.depth - 1).type === e ? function(e, t, n) {
                            var r = t.$from,
                                o = t.$to,
                                i = t.end,
                                s = t.depth,
                                a = t.parent,
                                l = o.end(s);
                            return i < l && (e.step(new wt(i - 1, l, i, l, new v(d.from(n.create(null, a.copy())), 1, 0), 1, !0)), t = new I(e.doc.resolve(r.pos), e.doc.resolve(l), s)), e.lift(t, Ct(t)), e
                        }(r, a, e) : function(e, t) {
                            for (var n = t.parent, r = t.end, o = t.endIndex - 1, i = t.startIndex; o > i; o -= 1) r -= n.child(o).nodeSize, e.delete(r - 1, r + 1);
                            var s = e.doc.resolve(t.start),
                                a = s.nodeAfter,
                                l = 0 === t.startIndex,
                                c = t.endIndex === n.childCount,
                                u = s.node(-1),
                                p = s.index(-1),
                                h = u.canReplace(p + (l ? 0 : 1), p + 1, null == a ? void 0 : a.content.append(c ? d.empty : d.from(n)));
                            if (a && h) {
                                var f = s.pos,
                                    m = f + a.nodeSize;
                                e.step(new wt(f - (l ? 1 : 0), m + (c ? 1 : 0), f + 1, m - 1, new v((l ? d.empty : d.from(n.copy(d.empty))).append(c ? d.empty : d.from(n.copy(d.empty))), l ? 0 : 1, c ? 0 : 1), l ? 0 : 1))
                            }
                            return e
                        }(r, a);
                        return n(l), !0
                    }
                    return !1
                }
            }

            function zh() {
                return function() {
                    return function(e, t) {
                        var n = e.selection,
                            r = e.schema,
                            o = n.$from,
                            i = n.$to;
                        return !(!o.blockRange(i) || !Eh(o)) && function(e) {
                            return function(t, n) {
                                var r = t.tr,
                                    o = t.selection,
                                    i = o.$from,
                                    s = o.$to,
                                    a = i.blockRange(s, (function(t) {
                                        var n = t.childCount,
                                            r = t.firstChild;
                                        return !!n && r.type === e
                                    }));
                                if (a && a.startIndex > 0) {
                                    var l = a.parent,
                                        c = l.child(a.startIndex - 1);
                                    if (c.type !== e) return !1;
                                    var u = c.lastChild && c.lastChild.type === l.type,
                                        p = u ? d.from(e.create()) : null,
                                        h = new v(d.from(e.create(null, d.from(l.type.create(null, p)))), u ? 3 : 1, 0),
                                        f = a.start,
                                        m = a.end;
                                    return r.step(new wt(f - (u ? 3 : 1), m, f, m, h, 1, !0)), n(r), !0
                                }
                                return !1
                            }
                        }(r.nodes.listItem)(e, t)
                    }
                }
            }

            function qh() {
                return {
                    indent: zh(),
                    outdent: function() {
                        return function(e, t) {
                            var n = e.selection,
                                r = e.schema,
                                o = n.$from,
                                i = n.$to;
                            return !(!o.blockRange(i) || !Eh(o)) && Hh(r.nodes.listItem)(e, t)
                        }
                    }
                }
            }
            var Vh = new Map,
                jh = function() {
                    function e(e, t, n, r) {
                        this.table = e, this.tableRows = t, this.tableStartPos = n, this.rowInfo = r
                    }
                    return e.create = function(t) {
                        var n = Sh(t, (function(e) {
                            return "table" === e.type.name
                        }));
                        if (n) {
                            var r = n.node,
                                o = n.depth,
                                i = n.offset,
                                s = Vh.get(r);
                            if ((null == s ? void 0 : s.tableStartPos) === i + 1) return s;
                            var a = [],
                                l = t.start(o),
                                c = r.child(0),
                                u = r.child(1),
                                d = $h(c, l),
                                p = $h(u, l + c.nodeSize);
                            c.forEach((function(e) {
                                return a.push(e)
                            })), u.forEach((function(e) {
                                return a.push(e)
                            }));
                            var h = new e(r, a, l, d.concat(p));
                            return Vh.set(r, h), h
                        }
                        return null
                    }, Object.defineProperty(e.prototype, "totalRowCount", {
                        get: function() {
                            return this.rowInfo.length
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(e.prototype, "totalColumnCount", {
                        get: function() {
                            return this.rowInfo[0].length
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(e.prototype, "tableStartOffset", {
                        get: function() {
                            return this.tableStartPos
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(e.prototype, "tableEndOffset", {
                        get: function() {
                            return this.tableStartPos + this.table.nodeSize - 1
                        },
                        enumerable: !1,
                        configurable: !0
                    }), e.prototype.getCellInfo = function(e, t) {
                        return this.rowInfo[e][t]
                    }, e.prototype.posAt = function(e, t) {
                        for (var n = 0, r = this.tableStartPos;; n += 1) {
                            var o = r + this.tableRows[n].nodeSize;
                            if (n === e) {
                                for (var i = t; i < this.totalColumnCount && this.rowInfo[n][i].offset < r;) i += 1;
                                return i === this.totalColumnCount ? o : this.rowInfo[n][i].offset
                            }
                            r = o
                        }
                    }, e.prototype.getNodeAndPos = function(e, t) {
                        var n = this.rowInfo[e][t];
                        return {
                            node: this.table.nodeAt(n.offset - this.tableStartOffset),
                            pos: n.offset
                        }
                    }, e.prototype.extendedRowspan = function(e, t) {
                        return !1
                    }, e.prototype.extendedColspan = function(e, t) {
                        return !1
                    }, e.prototype.getRowspanCount = function(e, t) {
                        return 0
                    }, e.prototype.getColspanCount = function(e, t) {
                        return 0
                    }, e.prototype.decreaseColspanCount = function(e, t) {
                        return 0
                    }, e.prototype.decreaseRowspanCount = function(e, t) {
                        return 0
                    }, e.prototype.getColspanStartInfo = function(e, t) {
                        return null
                    }, e.prototype.getRowspanStartInfo = function(e, t) {
                        return null
                    }, e.prototype.getCellStartOffset = function(e, t) {
                        var n = this.rowInfo[e][t].offset;
                        return this.extendedRowspan(e, t) ? this.posAt(e, t) : n
                    }, e.prototype.getCellEndOffset = function(e, t) {
                        var n = this.rowInfo[e][t],
                            r = n.offset,
                            o = n.nodeSize;
                        return this.extendedRowspan(e, t) ? this.posAt(e, t) : r + o
                    }, e.prototype.getCellIndex = function(e) {
                        for (var t = 0; t < this.totalRowCount; t += 1)
                            for (var n = this.rowInfo[t], r = 0; r < this.totalColumnCount; r += 1)
                                if (n[r].offset + 1 > e.pos) return [t, r];
                        return [0, 0]
                    }, e.prototype.getRectOffsets = function(e, t) {
                        var n, r, o;
                        void 0 === t && (t = e), e.pos > t.pos && (e = (n = [t, e])[0], t = n[1]);
                        var i = this.getCellIndex(e),
                            s = i[0],
                            a = i[1],
                            l = this.getCellIndex(t),
                            c = l[0],
                            u = l[1];
                        return s = (r = st(s, c))[0], c = r[1], a = (o = st(a, u))[0], u = o[1], this.getSpannedOffsets({
                            startRowIdx: s,
                            startColIdx: a,
                            endRowIdx: c,
                            endColIdx: u
                        })
                    }, e.prototype.getSpannedOffsets = function(e) {
                        return e
                    }, e
                }(),
                $h = function(e, t) {
                    var n = [];
                    return e.forEach((function(e, r) {
                        var o = {
                            rowspanMap: {},
                            colspanMap: {},
                            length: 0
                        };
                        e.forEach((function(e, n) {
                            for (var i = e.nodeSize, s = 0; o[s];) s += 1;
                            o[s] = {
                                offset: t + r + n + 2,
                                nodeSize: i
                            }, o.length += 1
                        })), n.push(o)
                    })), n
                };

            function _h(e, t) {
                return it(jh.prototype, e), $h = t, jh
            }
            var Uh = function(e) {
                    function n(t, n) {
                        void 0 === n && (n = t);
                        var r = this,
                            o = t.node(0),
                            i = jh.create(t),
                            s = i.getRectOffsets(t, n),
                            a = function(e, t, n) {
                                for (var r = n.startRowIdx, o = n.startColIdx, i = n.endRowIdx, s = n.endColIdx, a = [], l = r; l <= i; l += 1)
                                    for (var c = o; c <= s; c += 1) {
                                        var u = t.getCellInfo(l, c),
                                            d = u.offset,
                                            p = u.nodeSize;
                                        a.push(new jt(e.resolve(d + 1), e.resolve(d + p - 1)))
                                    }
                                return a
                            }(o, i, s);
                        return (r = e.call(this, a[0].$from, a[0].$to, a) || this).startCell = t, r.endCell = n, r.offsetMap = i, r.isCellSelection = !0, r.visible = !1, r
                    }
                    return t(n, e), n.prototype.map = function(e, t) {
                        var r = this.startCell.pos,
                            o = this.endCell.pos,
                            i = e.resolve(t.map(r)),
                            s = e.resolve(t.map(o)),
                            a = jh.create(i);
                        if (this.offsetMap.totalColumnCount > a.totalColumnCount || this.offsetMap.totalRowCount > a.totalRowCount) {
                            var l = {
                                    tableBody: 1,
                                    tableRow: 2,
                                    tableCell: 3,
                                    paragraph: 4
                                } [s.parent.type.name],
                                c = s.end(s.depth - l),
                                u = Math.min(c - 4, s.pos);
                            return Ut.create(e, u)
                        }
                        return new n(i, s)
                    }, n.prototype.eq = function(e) {
                        return e instanceof n && e.startCell.pos === this.startCell.pos && e.endCell.pos === this.endCell.pos
                    }, n.prototype.content = function() {
                        for (var e = this.startCell.node(-2), t = this.startCell.start(-2), n = e.child(1).firstChild, r = e.child(0).type.create(), o = e.child(1).type.create(), i = jh.create(this.startCell), s = i.getRectOffsets(this.startCell, this.endCell), a = s.startRowIdx, l = s.startColIdx, c = s.endRowIdx, u = s.endColIdx, p = !1, h = a; h <= c; h += 1) {
                            for (var f = [], m = l; m <= u; m += 1) {
                                var g = i.getCellInfo(h, m).offset,
                                    y = e.nodeAt(g - t);
                                y && (p = "tableHeadCell" === y.type.name, i.extendedRowspan(h, m) || i.extendedColspan(h, m) ? f.push(y.type.create({
                                    extended: !0
                                })) : f.push(y.copy(y.content)))
                            }
                            var b = n.copy(d.from(f)),
                                w = p ? r : o;
                            w.content = w.content.append(d.from(b))
                        }
                        return new v(function(e, t) {
                            var n = [];
                            return e.childCount && n.push(e), t.childCount && n.push(t), d.from(n)
                        }(r, o), 1, 1)
                    }, n.prototype.toJSON = function() {
                        return JSON.stringify(this)
                    }, n
                }(Vt),
                Wh = Uh;

            function Jh(e, t, n, r) {
                for (var o = n.nodes, i = o.tableRow, s = o.tableBodyCell, a = o.paragraph, l = [], c = 0; c < e; c += 1) {
                    for (var u = [], d = 0; d < t; d += 1) {
                        var p = r && r[c * t + d],
                            h = a.create(null, p ? n.text(p) : []);
                        u.push(s.create(null, h))
                    }
                    l.push(i.create(null, u))
                }
                return l
            }

            function Gh(e, t, n, r) {
                void 0 === r && (r = null);
                for (var o = n.nodes, i = o.tableHeadCell, s = o.tableBodyCell, a = o.paragraph, l = 0 === t ? i : s, c = [], u = 0; u < e; u += 1) c.push(l.create(r, a.create()));
                return c
            }

            function Kh(e, t) {
                for (; e && e !== t;) {
                    if ("TD" === e.nodeName || "TH" === e.nodeName) return e;
                    e = e.parentNode
                }
                return null
            }

            function Zh(e) {
                return Sh(e, (function(e) {
                    var t = e.type;
                    return "tableHeadCell" === t.name || "tableBodyCell" === t.name
                }))
            }

            function Xh(e) {
                if (e instanceof Ut) {
                    var t = e.$anchor,
                        n = Zh(t);
                    if (n) {
                        var r = t.node(0).resolve(t.before(n.depth));
                        return {
                            anchor: r,
                            head: r
                        }
                    }
                }
                var o = e;
                return {
                    anchor: o.startCell,
                    head: o.endCell
                }
            }

            function Qh(e) {
                var t;
                if (e.size) {
                    var n = e.content,
                        r = e.openStart,
                        o = e.openEnd;
                    if (1 !== n.childCount) return null;
                    for (; 1 === n.childCount && (r > 0 && o > 0 || "table" === (null === (t = n.firstChild) || void 0 === t ? void 0 : t.type.name));) r -= 1, o -= 1, n = n.firstChild.content;
                    if ("tableHead" === n.firstChild.type.name || "tableBody" === n.firstChild.type.name) return n
                }
                return null
            }

            function Yh(e) {
                var t = e.startRowIdx,
                    n = e.startColIdx;
                return {
                    rowCount: e.endRowIdx - t + 1,
                    columnCount: e.endColIdx - n + 1
                }
            }

            function ef(e, t) {
                return o(o({}, e.attrs), t)
            }
            var tf = new un("cellSelection"),
                nf = function() {
                    function e(e) {
                        this.view = e, this.handlers = {
                            mousedown: this.handleMousedown.bind(this),
                            mousemove: this.handleMousemove.bind(this),
                            mouseup: this.handleMouseup.bind(this)
                        }, this.startCellPos = null, this.init()
                    }
                    return e.prototype.init = function() {
                        this.view.dom.addEventListener("mousedown", this.handlers.mousedown)
                    }, e.prototype.handleMousedown = function(e) {
                        var t = Kh(e.target, this.view.dom);
                        if (2 !== e.button) {
                            if (t) {
                                var n = this.getCellPos(e);
                                n && (this.startCellPos = n), this.bindEvent()
                            }
                        } else e.preventDefault()
                    }, e.prototype.handleMousemove = function(e) {
                        var t, n = tf.getState(this.view.state),
                            r = this.getCellPos(e),
                            o = this.startCellPos;
                        n ? t = this.view.state.doc.resolve(n) : o !== r && (t = o), t && o && r && this.setCellSelection(o, r)
                    }, e.prototype.handleMouseup = function() {
                        this.startCellPos = null, this.unbindEvent(), null !== tf.getState(this.view.state) && this.view.dispatch(this.view.state.tr.setMeta(tf, -1))
                    }, e.prototype.bindEvent = function() {
                        var e = this.view.dom;
                        e.addEventListener("mousemove", this.handlers.mousemove), e.addEventListener("mouseup", this.handlers.mouseup)
                    }, e.prototype.unbindEvent = function() {
                        var e = this.view.dom;
                        e.removeEventListener("mousemove", this.handlers.mousemove), e.removeEventListener("mouseup", this.handlers.mouseup)
                    }, e.prototype.getCellPos = function(e) {
                        var t = e.clientX,
                            n = e.clientY,
                            r = this.view.posAtCoords({
                                left: t,
                                top: n
                            });
                        if (r) {
                            var o = this.view.state.doc,
                                i = o.resolve(r.pos),
                                s = Zh(i);
                            if (s) {
                                var a = i.before(s.depth);
                                return o.resolve(a)
                            }
                        }
                        return null
                    }, e.prototype.setCellSelection = function(e, t) {
                        var n = this.view.state,
                            r = n.selection,
                            o = n.tr,
                            i = null === tf.getState(this.view.state),
                            s = new Wh(e, t);
                        if (i || !r.eq(s)) {
                            var a = o.setSelection(s);
                            i && a.setMeta(tf, t.pos), this.view.dispatch(a)
                        }
                    }, e.prototype.destroy = function() {
                        this.view.dom.removeEventListener("mousedown", this.handlers.mousedown)
                    }, e
                }(),
                rf = nf,
                of = xa("cell-selected");

            function sf(e) {
                var t = e.selection,
                    n = e.doc;
                if (t instanceof Wh) {
                    var r = [];
                    return t.ranges.forEach((function(e) {
                        var t = e.$from,
                            n = e.$to;
                        r.push(Vo.node(t.pos - 1, n.pos + 1, {
                            class: of
                        }))
                    })), _o.create(n, r)
                }
                return null
            }
            var af = n(928),
                lf = n.n(af),
                cf = function() {
                    function e() {
                        this.keys = [], this.values = []
                    }
                    return e.prototype.getKeyIndex = function(e) {
                        return lf()(e, this.keys)
                    }, e.prototype.get = function(e) {
                        return this.values[this.getKeyIndex(e)]
                    }, e.prototype.set = function(e, t) {
                        var n = this.getKeyIndex(e);
                        return n > -1 ? this.values[n] = t : (this.keys.push(e), this.values.push(t)), this
                    }, e.prototype.has = function(e) {
                        return this.getKeyIndex(e) > -1
                    }, e.prototype.delete = function(e) {
                        var t = this.getKeyIndex(e);
                        return t > -1 && (this.keys.splice(t, 1), this.values.splice(t, 1), !0)
                    }, e.prototype.forEach = function(e, t) {
                        var n = this;
                        void 0 === t && (t = this), this.values.forEach((function(r, o) {
                            r && n.keys[o] && e.call(t, r, n.keys[o], n)
                        }))
                    }, e.prototype.clear = function() {
                        this.keys = [], this.values = []
                    }, e
                }(),
                uf = cf,
                df = "en-US",
                pf = function() {
                    function e() {
                        this.code = df, this.langs = new uf
                    }
                    return e.prototype.setCode = function(e) {
                        this.code = e || df
                    }, e.prototype.setLanguage = function(e, t) {
                        var n = this;
                        (e = [].concat(e)).forEach((function(e) {
                            if (n.langs.has(e)) {
                                var r = n.langs.get(e);
                                n.langs.set(e, ve()(r, t))
                            } else n.langs.set(e, t)
                        }))
                    }, e.prototype.get = function(e, t) {
                        t || (t = this.code);
                        var n = this.langs.get(t);
                        n || (n = this.langs.get(df));
                        var r = n[e];
                        if (!r) throw new Error('There is no text key "' + e + '" in ' + t);
                        return r
                    }, e
                }(),
                hf = new pf,
                ff = [
                    [{
                        action: "Add row to up",
                        command: "addRowToUp",
                        disableInThead: !0,
                        className: "add-row-up"
                    }, {
                        action: "Add row to down",
                        command: "addRowToDown",
                        disableInThead: !0,
                        className: "add-row-down"
                    }, {
                        action: "Remove row",
                        command: "removeRow",
                        disableInThead: !0,
                        className: "remove-row"
                    }],
                    [{
                        action: "Add column to left",
                        command: "addColumnToLeft",
                        className: "add-column-left"
                    }, {
                        action: "Add column to right",
                        command: "addColumnToRight",
                        className: "add-column-right"
                    }, {
                        action: "Remove column",
                        command: "removeColumn",
                        className: "remove-column"
                    }],
                    [{
                        action: "Align column to left",
                        command: "alignColumn",
                        payload: {
                            align: "left"
                        },
                        className: "align-column-left"
                    }, {
                        action: "Align column to center",
                        command: "alignColumn",
                        payload: {
                            align: "center"
                        },
                        className: "align-column-center"
                    }, {
                        action: "Align column to right",
                        command: "alignColumn",
                        payload: {
                            align: "right"
                        },
                        className: "align-column-right"
                    }],
                    [{
                        action: "Remove table",
                        command: "removeTable",
                        className: "remove-table"
                    }]
                ];

            function mf(e, t) {
                return ff.map((function(n) {
                    return n.map((function(n) {
                        var r = n.action,
                            o = n.command,
                            i = n.payload,
                            s = n.disableInThead,
                            a = n.className;
                        return {
                            label: hf.get(r),
                            onClick: function() {
                                e.emit("command", o, i)
                            },
                            disabled: t && !!s,
                            className: a
                        }
                    }))
                })).concat()
            }

            function gf(e) {
                return new an({
                    props: {
                        handleDOMEvents: {
                            contextmenu: function(t, n) {
                                var r = Kh(n.target, t.dom);
                                if (r) {
                                    n.preventDefault();
                                    var o = n,
                                        i = o.clientX,
                                        s = o.clientY,
                                        a = t.dom.parentNode.getBoundingClientRect(),
                                        l = a.left,
                                        c = a.top,
                                        u = "TH" === r.nodeName;
                                    return e.emit("contextmenu", {
                                        pos: {
                                            left: i - l + 10 + "px",
                                            top: s - c + 30 + "px"
                                        },
                                        menuGroups: mf(e, u),
                                        tableCell: r
                                    }), !0
                                }
                                return !1
                            }
                        }
                    }
                })
            }
            var vf = ["image", "link", "customBlock", "frontMatter"],
                yf = ["strong", "strike", "emph", "code"],
                bf = ["bulletList", "orderedList", "taskList"];

            function wf(e, t, n) {
                var r = e.$from,
                    o = e.$to,
                    i = e.from,
                    s = e.to,
                    a = {
                        indent: {
                            active: !1,
                            disabled: !0
                        },
                        outdent: {
                            active: !1,
                            disabled: !0
                        }
                    };
                return t.nodesBetween(i, s, (function(e, t, i) {
                    var s = function(e, t) {
                        var n = e.type.name;
                        return "listItem" === n ? e.attrs.task ? "taskList" : t.type.name : -1 !== n.indexOf("table") ? "table" : n
                    }(e, i);
                    Ue(vf, s) || (Ue(bf, s) ? (! function(e, t) {
                        t[e] = {
                            active: !0
                        }, bf.filter((function(t) {
                            return t !== e
                        })).forEach((function(e) {
                            t[e] && delete t[e]
                        }))
                    }(s, a), a.indent.disabled = !1, a.outdent.disabled = !1) : "paragraph" === s || "text" === s ? function(e, t, n, r) {
                        yf.forEach((function(o) {
                            var i = n.marks[o],
                                s = e.marksAcross(t) || [];
                            i.isInSet(s) && (r[o] = {
                                active: !0
                            })
                        }))
                    }(r, o, n, a) : a[s] = {
                        active: !0
                    })
                })), a
            }

            function kf(e) {
                return new an({
                    view: function() {
                        return {
                            update: function(t) {
                                var n = t.state,
                                    r = n.selection,
                                    o = n.doc,
                                    i = n.schema;
                                e.emit("changeToolbarState", {
                                    toolbarState: wf(r, o, i)
                                })
                            }
                        }
                    }
                })
            }
            var xf = function() {
                    function e(e, t, n, r) {
                        var o = this;
                        this.openEditor = function() {
                            if (o.innerEditorView) throw new Error("The editor is already opened.");
                            o.dom.draggable = !1, o.wrapper.style.display = "none", o.innerViewContainer.style.display = "block", o.innerEditorView = new ui(o.innerViewContainer, {
                                state: on.create({
                                    doc: o.node,
                                    plugins: [Ai({
                                        "Mod-z": function() {
                                            return Ms(o.innerEditorView.state, o.innerEditorView.dispatch)
                                        },
                                        "Shift-Mod-z": function() {
                                            return Ss(o.innerEditorView.state, o.innerEditorView.dispatch)
                                        },
                                        Tab: function(e, t) {
                                            return t(e.tr.insertText("\t")), !0
                                        },
                                        Enter: Hi,
                                        Escape: function() {
                                            return o.cancelEditing(), !0
                                        },
                                        "Ctrl-Enter": function() {
                                            return o.saveAndFinishEditing(), !0
                                        }
                                    }), Ts()]
                                }),
                                dispatchTransaction: function(e) {
                                    return o.dispatchInner(e)
                                },
                                handleDOMEvents: {
                                    mousedown: function() {
                                        return o.editorView.hasFocus() && o.innerEditorView.focus(), !0
                                    },
                                    blur: function() {
                                        return o.saveAndFinishEditing(), !0
                                    }
                                }
                            }), o.innerEditorView.focus()
                        }, this.node = e, this.editorView = t, this.getPos = n, this.toDOMAdaptor = r, this.innerEditorView = null, this.canceled = !1, this.dom = document.createElement("div"), this.dom.className = xa("custom-block"), this.wrapper = document.createElement("div"), this.wrapper.className = xa("custom-block-view"), this.createInnerViewContainer(), this.renderCustomBlock(), this.dom.appendChild(this.innerViewContainer), this.dom.appendChild(this.wrapper)
                    }
                    return e.prototype.renderToolArea = function() {
                        var e = this,
                            t = document.createElement("div"),
                            n = document.createElement("span"),
                            r = document.createElement("button");
                        t.className = "tool", n.textContent = this.node.attrs.info, n.className = "info", r.type = "button", r.addEventListener("click", (function() {
                            return e.openEditor()
                        })), t.appendChild(n), t.appendChild(r), this.wrapper.appendChild(t)
                    }, e.prototype.renderCustomBlock = function() {
                        var e = this.toDOMAdaptor.getToDOMNode(this.node.attrs.info);
                        if (e) {
                            for (var t = e(this.node); this.wrapper.hasChildNodes();) this.wrapper.removeChild(this.wrapper.lastChild);
                            t && this.wrapper.appendChild(t), this.renderToolArea()
                        }
                    }, e.prototype.createInnerViewContainer = function() {
                        this.innerViewContainer = document.createElement("div"), this.innerViewContainer.className = xa("custom-block-editor"), this.innerViewContainer.style.display = "none"
                    }, e.prototype.closeEditor = function() {
                        this.innerEditorView && (this.innerEditorView.destroy(), this.innerEditorView = null, this.innerViewContainer.style.display = "none"), this.wrapper.style.display = "block"
                    }, e.prototype.saveAndFinishEditing = function() {
                        var e = this.editorView.state.selection.to,
                            t = this.editorView.state;
                        this.editorView.dispatch(t.tr.setSelection(Os(t.tr, e))), this.editorView.focus(), this.renderCustomBlock(), this.closeEditor()
                    }, e.prototype.cancelEditing = function() {
                        var e = function(e) {
                            let t = xs.getState(e);
                            return t ? t.done.eventCount : 0
                        }(this.innerEditorView.state);
                        for (this.canceled = !0; e--;) Ms(this.innerEditorView.state, this.innerEditorView.dispatch), Ms(this.editorView.state, this.editorView.dispatch);
                        this.canceled = !1;
                        var t = this.editorView.state.selection.to,
                            n = this.editorView.state;
                        this.editorView.dispatch(n.tr.setSelection(Ut.create(n.doc, t))), this.editorView.focus(), this.closeEditor()
                    }, e.prototype.dispatchInner = function(e) {
                        var t = this.innerEditorView.state.applyTransaction(e),
                            n = t.state,
                            r = t.transactions;
                        if (this.innerEditorView.updateState(n), !this.canceled && Ga()(this.getPos)) {
                            for (var o = this.editorView.state.tr, i = dt.offset(this.getPos() + 1), s = 0; s < r.length; s += 1)
                                for (var a = r[s].steps, l = 0; l < a.length; l += 1) o.step(a[l].map(i));
                            o.docChanged && this.editorView.dispatch(o)
                        }
                    }, e.prototype.update = function(e) {
                        return !!e.sameMarkup(this.node) && (this.node = e, this.innerEditorView || this.renderCustomBlock(), !0)
                    }, e.prototype.stopEvent = function(e) {
                        return !!this.innerEditorView && !!e.target && this.innerEditorView.dom.contains(e.target)
                    }, e.prototype.ignoreMutation = function() {
                        return !0
                    }, e.prototype.destroy = function() {
                        this.dom.removeEventListener("dblclick", this.openEditor), this.closeEditor()
                    }, e
                }(),
                Cf = "image-link",
                Tf = function() {
                    function e(e, t, n, r) {
                        var o, i = this;
                        this.handleMousedown = function(e) {
                            e.preventDefault();
                            var t = e.target,
                                n = e.offsetX,
                                r = e.offsetY;
                            if (i.imageLink && Ga()(i.getPos) && ca()(t, Cf)) {
                                var o = getComputedStyle(t, ":before");
                                if (e.stopPropagation(), wa(o, n, r)) {
                                    var s = i.view.state.tr,
                                        a = i.getPos();
                                    s.setSelection(Os(s, a, a + 1)), i.view.dispatch(s), i.eventEmitter.emit("openPopup", "link", i.imageLink.attrs)
                                }
                            }
                        }, this.node = e, this.view = t, this.getPos = n, this.eventEmitter = r, this.imageLink = null !== (o = e.marks.filter((function(e) {
                            return "link" === e.type.name
                        }))[0]) && void 0 !== o ? o : null, this.dom = this.createElement(), this.bindEvent()
                    }
                    return e.prototype.createElement = function() {
                        var e = this.createImageElement(this.node);
                        if (this.imageLink) {
                            var t = document.createElement("span");
                            return t.className = Cf, t.appendChild(e), t
                        }
                        return e
                    }, e.prototype.createImageElement = function(e) {
                        var t = document.createElement("img"),
                            n = e.attrs,
                            r = n.imageUrl,
                            o = n.altText,
                            i = Ih(e.attrs);
                        return t.src = r, o && (t.alt = o), Aa(i, t), t
                    }, e.prototype.bindEvent = function() {
                        this.imageLink && this.dom.addEventListener("mousedown", this.handleMousedown)
                    }, e.prototype.stopEvent = function() {
                        return !0
                    }, e.prototype.destroy = function() {
                        this.imageLink && this.dom.removeEventListener("mousedown", this.handleMousedown)
                    }, e
                }(),
                Mf = function() {
                    function e(e, t, n, r) {
                        var o = this;
                        this.contentDOM = null, this.input = null, this.timer = null, this.handleMousedown = function(e) {
                            var t = e.target;
                            if ("none" !== getComputedStyle(t, ":after").backgroundImage && Ga()(o.getPos)) {
                                var n = o.view.coordsAtPos(o.getPos()),
                                    r = n.top,
                                    i = n.right;
                                o.createLanguageEditor({
                                    top: r,
                                    right: i
                                })
                            }
                        }, this.handleKeydown = function(e) {
                            "Enter" === e.key && o.input && (e.preventDefault(), o.changeLanguage())
                        }, this.node = e, this.view = t, this.getPos = n, this.eventEmitter = r, this.createElement(), this.bindDOMEvent(), this.bindEvent()
                    }
                    return e.prototype.createElement = function() {
                        var e = this.node.attrs.language,
                            t = document.createElement("div");
                        t.setAttribute("data-language", e || "text"), t.className = "toastui-editor-ww-code-block";
                        var n = this.createCodeBlockElement(),
                            r = n.firstChild;
                        t.appendChild(n), this.dom = t, this.contentDOM = r
                    }, e.prototype.createCodeBlockElement = function() {
                        var e = document.createElement("pre"),
                            t = document.createElement("code"),
                            n = this.node.attrs.language,
                            r = Ih(this.node.attrs);
                        return n && t.setAttribute("data-language", n), Aa(r, e), e.appendChild(t), e
                    }, e.prototype.createLanguageEditor = function(e) {
                        var t = this,
                            n = e.top,
                            r = e.right,
                            o = document.createElement("span");
                        o.className = "toastui-editor-ww-code-block-language";
                        var i = document.createElement("input");
                        i.type = "text", i.value = this.node.attrs.language, o.appendChild(i), this.view.dom.parentElement.appendChild(o);
                        var s = o.clientWidth;
                        be()(o, {
                            top: n + 10 + "px",
                            left: r - s - 10 + "px",
                            width: s + "px"
                        }), this.input = i, this.input.addEventListener("blur", (function() {
                            return t.changeLanguage()
                        })), this.input.addEventListener("keydown", this.handleKeydown), this.clearTimer(), this.timer = setTimeout((function() {
                            t.input.focus()
                        }))
                    }, e.prototype.bindDOMEvent = function() {
                        this.dom && this.dom.addEventListener("click", this.handleMousedown)
                    }, e.prototype.bindEvent = function() {
                        var e = this;
                        this.eventEmitter.listen("scroll", (function() {
                            e.input && e.reset()
                        }))
                    }, e.prototype.changeLanguage = function() {
                        if (this.input && Ga()(this.getPos)) {
                            var e = this.input.value;
                            this.reset();
                            var t = this.getPos(),
                                n = this.view.state.tr;
                            n.setNodeMarkup(t, null, {
                                language: e
                            }), this.view.dispatch(n)
                        }
                    }, e.prototype.reset = function() {
                        var e;
                        if (null === (e = this.input) || void 0 === e ? void 0 : e.parentElement) {
                            var t = this.input.parentElement;
                            this.input = null, Ma(t)
                        }
                    }, e.prototype.clearTimer = function() {
                        this.timer && (clearTimeout(this.timer), this.timer = null)
                    }, e.prototype.stopEvent = function() {
                        return !0
                    }, e.prototype.update = function(e) {
                        return !!e.sameMarkup(this.node) && (this.node = e, !0)
                    }, e.prototype.destroy = function() {
                        this.reset(), this.clearTimer(), this.dom && this.dom.removeEventListener("click", this.handleMousedown)
                    }, e
                }(),
                Sf = /MsoListParagraph/,
                Ef = /style=(.|\n)*mso-/,
                Nf = /mso-list:(.*)/,
                Of = /O:P/,
                Df = /^(n|u|l)/;

            function Af(e) {
                for (var t = [], n = document.createTreeWalker(e, 1, null, !1); n.nextNode();) {
                    var r = n.currentNode;
                    if (Ta(r)) {
                        var o = r,
                            i = o.outerHTML,
                            s = o.textContent,
                            a = Ef.test(i),
                            l = Nf.test(i);
                        a && !l && s ? t.push([r, !0]) : (Of.test(r.nodeName) || a && !s || l) && t.push([r, !1])
                    }
                }
                return t.forEach((function(e) {
                    var t = e[0];
                    e[1] ? function(e) {
                        for (var t = []; e.firstChild;) t.push(e.firstChild), e.parentNode && e.parentNode.insertBefore(e.firstChild, e);
                        Ma(e)
                    }(t) : Ma(t)
                })), e.innerHTML.trim()
            }

            function Lf(e) {
                var t = [];
                return e.forEach((function(e, n) {
                    var r = t[n - 1],
                        o = function(e, t) {
                            var n = e.getAttribute("style");
                            if (n) {
                                var r = n.match(Nf)[1].trim().split(" ")[1];
                                return {
                                    id: t,
                                    level: parseInt(r.replace("level", ""), 10),
                                    prev: null,
                                    parent: null,
                                    children: [],
                                    unordered: Df.test(e.textContent || ""),
                                    contents: Af(e)
                                }
                            }
                            return null
                        }(e, n);
                    o && (r && function(e, t) {
                        if (t.level < e.level) t.children.push(e), e.parent = t;
                        else {
                            for (; t && t.level !== e.level;) t = t.parent;
                            t && (e.prev = t, e.parent = t.parent, e.parent && e.parent.children.push(e))
                        }
                    }(o, r), t.push(o))
                })), t
            }

            function If(e) {
                var t = e[0].unordered ? "ul" : "ol",
                    n = document.createElement(t);
                return e.forEach((function(e) {
                    var t = e.children,
                        r = e.contents,
                        o = document.createElement("li");
                    o.innerHTML = r, n.appendChild(o), t.length && n.appendChild(If(t))
                })), n
            }

            function Rf(e) {
                return If(Lf(e).filter((function(e) {
                    return !e.parent
                })))
            }

            function Pf(e) {
                var t = document.createElement("div");
                t.innerHTML = e;
                var n, r, o, i = [],
                    s = (n = t, r = "p.MsoListParagraph", (o = vi()(n.querySelectorAll(r))).length ? o : []);
                return s.forEach((function(e) {
                    var n = function(e) {
                        for (; e && !Ta(e);) e = e.nextSibling;
                        return !e || !Sf.test(e.className)
                    }(e.nextSibling);
                    if (i.push(e), n) {
                        var r = Rf(i),
                            o = e.nextSibling;
                        o ? function(e, t) {
                            t.parentNode && t.parentNode.insertBefore(e, t)
                        }(r, o) : function(e, t) {
                            (t = aa()(t) ? vi()(t) : [t]).forEach((function(t) {
                                e.appendChild(t)
                            }))
                        }(t, r), i = []
                    }
                    Ma(e)
                })), "" + (s.length ? "<p></p>" : "") + t.innerHTML
            }
            var Bf = "\x3c!--StartFragment--\x3e";

            function Ff(e) {
                return function(e) {
                    return Ef.test(e)
                }(e = function(e) {
                    return /<\/td>((?!<\/tr>)[\s\S])*$/i.test(e) && (e = "<tr>" + e + "</tr>"), /<\/tr>((?!<\/table>)[\s\S])*$/i.test(e) && (e = "<table>" + e + "</table>"), e
                }(e = function(e) {
                    var t = e.indexOf(Bf),
                        n = e.lastIndexOf("\x3c!--EndFragment--\x3e");
                    return t > -1 && n > -1 && (e = e.slice(t + Bf.length, n)), e.replace(/<br[^>]*>/g, ba)
                }(e))) && (e = Pf(e)), e
            }

            function Hf(e, t, n) {
                for (var r = [], o = e.childCount, i = 0; i < o; i += 1)
                    if (!e.child(i).attrs.extended) {
                        var s = i < o ? n.create(e.child(i).attrs, e.child(i).content) : n.createAndFill();
                        r.push(s)
                    } return r
            }

            function zf(e, t, n) {
                var r = n.nodes,
                    o = r.tableRow,
                    i = Hf(e, 0, r.tableHeadCell);
                return o.create(null, i)
            }

            function qf(e, t, n) {
                var r = n.nodes,
                    o = r.tableRow,
                    i = Hf(e, 0, r.tableBodyCell);
                return o.create(null, i)
            }

            function Vf(e) {
                var t = [],
                    n = [];
                "tableHead" === e.firstChild.type.name && e.firstChild.forEach((function(e) {
                    return t.push(e)
                }));
                "tableBody" === e.lastChild.type.name && e.lastChild.forEach((function(e) {
                    return n.push(e)
                }));
                return i(i([], t), n)
            }

            function jf(e, t, n) {
                var r = zf(e, 0, n);
                return n.nodes.tableHead.create(null, r)
            }

            function $f(e, t, n) {
                var r = e.map((function(e) {
                    return qf(e, 0, n)
                }));
                if (!e.length) {
                    var o = function(e, t) {
                        for (var n = t.nodes, r = n.tableRow, o = n.tableBodyCell, i = [], s = 0; s < e; s += 1) {
                            var a = o.createAndFill();
                            i.push(a)
                        }
                        return r.create({
                            dummyRowForPasting: !0
                        }, i)
                    }(t, n);
                    r.push(o)
                }
                return n.nodes.tableBody.create(null, r)
            }

            function _f(e, t, n) {
                var r = [],
                    o = e.content,
                    i = e.openStart,
                    s = e.openEnd;
                return o.forEach((function(e) {
                    if ("table" === e.type.name) {
                        var o = Qh(new v(d.from(e), 0, 0));
                        if (o) {
                            var i = Vf(o),
                                s = "tableBody" === o.firstChild.type.name,
                                a = function(e, t, n, r) {
                                    var o = function(e) {
                                        return e.reduce((function(e, t) {
                                            return e.childCount > t.childCount ? e : t
                                        })).childCount
                                    }(e);
                                    if (n && r) return t.nodes.table.create(null, [$f(e, o, t)]);
                                    var i = e[0],
                                        s = e.slice(1),
                                        a = [jf(i, 0, t)];
                                    return s.length && a.push($f(s, o, t)), t.nodes.table.create(null, a)
                                }(i, t, s, n);
                            r.push(a)
                        }
                    } else r.push(e)
                })), new v(d.from(r), i, s)
            }

            function Uf(e) {
                return 4 * e
            }

            function Wf(e, t) {
                var n = e.state,
                    r = n.selection,
                    o = n.schema,
                    i = n.tr,
                    s = Xh(r),
                    a = s.anchor,
                    l = s.head;
                if (a && l) {
                    var c = Qh(t);
                    if (!c) return !1;
                    var u = jh.create(a),
                        d = u.getRectOffsets(a, l),
                        p = function(e, t, n) {
                            var r = [],
                                o = Vf(e),
                                i = (o[0].childCount, o.length),
                                s = 0 === t.startRowIdx,
                                a = o.slice(0, i);
                            if (s) {
                                var l = a.shift();
                                if (l) {
                                    var c = zf(l, 0, n).content;
                                    r.push(c)
                                }
                            }
                            return a.forEach((function(e) {
                                if (!e.attrs.dummyRowForPasting) {
                                    var t = qf(e, 0, n).content;
                                    r.push(t)
                                }
                            })), r
                        }(c, d, o),
                        h = function(e, t, n) {
                            for (var r = t.startRowIdx, o = t.startColIdx, i = n.length, s = 0, a = function(e) {
                                var t = n[e].childCount;
                                n[e].forEach((function(e) {
                                    var n = e.attrs.colspan;
                                    n > 1 && (t += n - 1)
                                })), s = Math.max(s, t)
                            }, l = 0; l < i; l += 1) a(l);
                            var c = r + i - 1,
                                u = o + s - 1;
                            return {
                                startRowIdx: r,
                                startColIdx: o,
                                endRowIdx: c,
                                endColIdx: u,
                                addedRowCount: Math.max(c + 1 - e.totalRowCount, 0),
                                addedColumnCount: Math.max(u + 1 - e.totalColumnCount, 0)
                            }
                        }(u, d, p),
                        f = [];
                    return function(e, t) {
                        var n = Yh(e.getSpannedOffsets(t)),
                            r = n.rowCount,
                            o = n.columnCount,
                            i = Yh(t),
                            s = i.rowCount,
                            a = i.columnCount;
                        return r === s && o === a
                    }(u, h) && (function(e, t) {
                        for (var n = e.startRowIdx, r = e.startColIdx, o = e.endRowIdx, i = e.endColIdx, s = e.addedRowCount, a = e.addedColumnCount, l = n; l <= o - s; l += 1) t.push({
                            rowIdx: l,
                            startColIdx: r,
                            endColIdx: i - a
                        })
                    }(h, f), h.addedColumnCount && function(e, t, n, r, o) {
                        for (var i = r.startRowIdx, s = r.startColIdx, a = r.endRowIdx, l = r.endColIdx, c = r.addedRowCount, u = r.addedColumnCount, d = n.totalRowCount, p = 0, h = 0; h < d; h += 1) {
                            var f = n.getCellInfo(h, l - u),
                                m = f.offset,
                                g = f.nodeSize,
                                v = e.mapping.map(m + g),
                                y = Gh(u, h, t);
                            if (e.insert(v, y), h >= i && h <= a - c) {
                                var b = n.getCellInfo(h, l - u),
                                    w = e.mapping.map(b.offset),
                                    k = v + Uf(u);
                                o[p] = {
                                    rowIdx: h,
                                    startColIdx: s,
                                    endColIdx: l,
                                    dummyOffsets: [w, k]
                                }, p += 1
                            }
                        }
                    }(i, o, u, h, f), h.addedRowCount && function(e, t, n, r, o) {
                        var i = r.addedRowCount,
                            s = r.addedColumnCount,
                            a = r.startColIdx,
                            l = r.endColIdx,
                            c = e.mapping.maps.length,
                            u = n.tableEndOffset - 2,
                            d = Jh(i, n.totalColumnCount + s, t),
                            p = u;
                        e.insert(e.mapping.slice(c).map(p), d);
                        for (var h = 0; h < i; h += 1) {
                            var f = p + Uf(a) + 1,
                                m = p + Uf(l + 1) + 1,
                                g = p + Uf(n.totalColumnCount + s) + 2;
                            o.push({
                                rowIdx: h + n.totalRowCount,
                                startColIdx: a,
                                endColIdx: l,
                                dummyOffsets: [f, m]
                            }), p = g
                        }
                    }(i, o, u, h, f), function(e, t, n, r) {
                        var o = e.mapping.maps.length;
                        n.forEach((function(n, i) {
                            var s = n.rowIdx,
                                a = n.startColIdx,
                                l = n.endColIdx,
                                c = n.dummyOffsets,
                                u = e.mapping.slice(o),
                                d = new v(t[i], 0, 0),
                                p = c ? c[0] : r.getCellStartOffset(s, a),
                                h = c ? c[1] : r.getCellEndOffset(s, l);
                            e.replace(u.map(p), u.map(h), d)
                        }))
                    }(i, p, f, u), e.dispatch(i), function(e, t, n) {
                        var r = e.state,
                            o = r.tr,
                            i = r.doc,
                            s = jh.create(i.resolve(n)),
                            a = t[0],
                            l = a.rowIdx,
                            c = a.startColIdx,
                            u = et(t),
                            d = u.rowIdx,
                            p = u.endColIdx,
                            h = s.getCellInfo(l, c).offset,
                            f = s.getCellInfo(d, p).offset;
                        e.dispatch(o.setSelection(new Wh(i.resolve(h), i.resolve(f))))
                    }(e, f, u.getCellInfo(0, 0).offset)), !0
                }
                return !1
            }
            var Jf, Gf = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "doc"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "block+"
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                Kf = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "paragraph"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "inline*",
                                group: "block",
                                attrs: o({}, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [{
                                    tag: "p"
                                }],
                                toDOM: function(e) {
                                    return ["p", Ih(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                Zf = /\s{1,4}$/,
                Xf = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "text"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                group: "inline"
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.addSpaces = function() {
                        return function(e, t) {
                            var n = e.selection,
                                r = e.tr,
                                o = n.$from,
                                i = n.$to;
                            return !(!o.blockRange(i) || Eh(o) || Nh(o)) && (t(r.insertText("    ", o.pos, i.pos)), !0)
                        }
                    }, n.prototype.removeSpaces = function() {
                        return function(e, t) {
                            var n = e.selection,
                                r = e.tr,
                                o = n.$from,
                                i = n.$to,
                                s = n.from;
                            if (o.blockRange(i) && !Eh(o) && !Nh(o)) {
                                var a = o.nodeBefore;
                                if (a && a.isText) {
                                    var l = a.text,
                                        c = l.replace(Zf, ""),
                                        u = l.length - c.length;
                                    return t(r.delete(s - u, s)), !0
                                }
                            }
                            return !1
                        }
                    }, n.prototype.keymaps = function() {
                        return {
                            Tab: this.addSpaces(),
                            "Shift-Tab": this.removeSpaces()
                        }
                    }, n
                }(Va),
                Qf = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "heading"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "levels", {
                        get: function() {
                            return [1, 2, 3, 4, 5, 6]
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            var e = this.levels.map((function(e) {
                                return {
                                    tag: "h" + e,
                                    getAttrs: function(t) {
                                        var n = t.getAttribute("data-raw-html");
                                        return o({
                                            level: e
                                        }, n && {
                                            rawHTML: n
                                        })
                                    }
                                }
                            }));
                            return {
                                attrs: o({
                                    level: {
                                        default: 1
                                    },
                                    headingType: {
                                        default: "atx"
                                    },
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                content: "inline*",
                                group: "block",
                                defining: !0,
                                parseDOM: e,
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return ["h" + t.level, Ih(t), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function(e) {
                            return function(t, n) {
                                return Gi(t.schema.nodes[e.level ? "heading" : "paragraph"], e)(t, n)
                            }
                        }
                    }, n
                }(Va),
                Yf = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "codeBlock"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "text*",
                                group: "block",
                                attrs: o({
                                    language: {
                                        default: null
                                    },
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                code: !0,
                                defining: !0,
                                marks: "",
                                parseDOM: [{
                                    tag: "pre",
                                    preserveWhitespace: "full",
                                    getAttrs: function(e) {
                                        var t = e.getAttribute("data-raw-html"),
                                            n = e.firstElementChild;
                                        return o({
                                            language: (null == n ? void 0 : n.getAttribute("data-language")) || null
                                        }, t && {
                                            rawHTML: t
                                        })
                                    }
                                }],
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return [t.rawHTML || "pre", ["code", o({
                                        "data-language": t.language
                                    }, Ih(t)), 0]]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t) {
                                return Gi(e.schema.nodes.codeBlock)(e, t)
                            }
                        }
                    }, n.prototype.moveCursor = function(e) {
                        var t = this;
                        return function(n, r) {
                            var o, i, s = n.tr,
                                a = n.doc,
                                l = n.schema,
                                c = n.selection.$from;
                            if (t.context.view.endOfTextblock(e) && "codeBlock" === c.node().type.name) {
                                var u = c.parent.textContent.split("\n"),
                                    d = "up" === e ? c.start() : c.end(),
                                    p = "up" === e ? [d, u[0].length + d] : [d - et(u).length, d],
                                    h = a.resolve("up" === e ? c.before() : c.after()),
                                    f = "up" === e ? h.nodeBefore : h.nodeAfter;
                                if (o = c.pos, i = p[1], o >= p[0] && o <= i && !f) {
                                    var m = Ds(s, h, l);
                                    if (m) return r(m), !0
                                }
                            }
                            return !1
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "Shift-Mod-p": e,
                            "Shift-Mod-P": e,
                            ArrowUp: this.moveCursor("up"),
                            ArrowDown: this.moveCursor("down")
                        }
                    }, n
                }(Va),
                em = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "bulletList"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "listItem+",
                                group: "block",
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [Dh("ul")],
                                toDOM: function(e) {
                                    return ["ul", Ih(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.changeList = function() {
                        return function(e, t) {
                            return Bh(e.schema.nodes.bulletList)(e, t)
                        }
                    }, n.prototype.commands = function() {
                        return {
                            bulletList: this.changeList,
                            taskList: Fh
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.changeList(),
                            t = qh(),
                            n = t.indent,
                            r = t.outdent;
                        return {
                            "Mod-u": e,
                            "Mod-U": e,
                            Tab: n(),
                            "Shift-Tab": r()
                        }
                    }, n
                }(Va),
                tm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "orderedList"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "listItem+",
                                group: "block",
                                attrs: o({
                                    order: {
                                        default: 1
                                    },
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [{
                                    tag: "ol",
                                    getAttrs: function(e) {
                                        var t = e.getAttribute("start"),
                                            n = e.getAttribute("data-raw-html");
                                        return o({
                                            order: e.hasAttribute("start") ? Number(t) : 1
                                        }, n && {
                                            rawHTML: n
                                        })
                                    }
                                }],
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return [t.rawHTML || "ol", o({
                                        start: 1 === t.order ? null : t.order
                                    }, Ih(t)), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t) {
                                return Bh(e.schema.nodes.orderedList)(e, t)
                            }
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()(),
                            t = qh(),
                            n = t.indent,
                            r = t.outdent;
                        return {
                            "Mod-o": e,
                            "Mod-O": e,
                            Tab: n(),
                            "Shift-Tab": r()
                        }
                    }, n
                }(Va),
                nm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "listItem"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "paragraph block*",
                                selectable: !1,
                                attrs: {
                                    task: {
                                        default: !1
                                    },
                                    checked: {
                                        default: !1
                                    },
                                    rawHTML: {
                                        default: null
                                    }
                                },
                                defining: !0,
                                parseDOM: [{
                                    tag: "li",
                                    getAttrs: function(e) {
                                        var t = e.getAttribute("data-raw-html");
                                        return o({
                                            task: e.hasAttribute("data-task"),
                                            checked: e.hasAttribute("data-task-checked")
                                        }, t && {
                                            rawHTML: t
                                        })
                                    }
                                }],
                                toDOM: function(e) {
                                    var t = e.attrs,
                                        n = t.task,
                                        r = t.checked;
                                    if (!n) return [t.rawHTML || "li", 0];
                                    var i = ["task-list-item"];
                                    return r && i.push("checked"), [t.rawHTML || "li", o({
                                        class: i.join(" "),
                                        "data-task": n
                                    }, r && {
                                        "data-task-checked": r
                                    }), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.liftToPrevListItem = function() {
                        return function(e, t) {
                            var n = e.selection,
                                r = e.tr,
                                o = e.schema,
                                i = n.$from,
                                s = n.empty,
                                a = o.nodes.listItem,
                                l = i.parent,
                                c = i.node(-1);
                            if (s && !l.childCount && c.type === a) {
                                if (i.index(-2) >= 1) return r.delete(i.start(-1) - 1, i.end(-1)), t(r), !0;
                                if (i.node(-3).type === a) return r.delete(i.start(-2) - 1, i.end(-1)), t(r), !0
                            }
                            return !1
                        }
                    }, n.prototype.keymaps = function() {
                        return {
                            Backspace: this.liftToPrevListItem(),
                            Enter: function(e, t) {
                                return function(e) {
                                    return function(t, n) {
                                        var r = t.tr,
                                            o = t.selection,
                                            i = o.$from,
                                            s = o.$to;
                                        if (i.depth < 2 || !i.sameParent(s)) return !1;
                                        var a = i.node(-1);
                                        if (a.type !== e) return !1;
                                        if (0 === i.parent.content.size && i.node(-1).childCount === i.indexAfter(-1)) {
                                            if (2 === i.depth || i.node(-3).type !== e || i.index(-2) !== i.node(-2).childCount - 1) return !1;
                                            for (var l = i.index(-1) > 0, c = d.empty, u = i.depth - (l ? 1 : 2); u >= i.depth - 3; u -= 1) c = d.from(i.node(u).copy(c));
                                            return c = c.append(d.from(e.createAndFill())), r.replace(l ? i.before() : i.before(-1), i.after(-3), new v(c, l ? 3 : 2, 2)), r.setSelection(Vt.near(r.doc.resolve(i.pos + (l ? 3 : 2)))), n(r), !0
                                        }
                                        var p = s.pos === i.end() ? a.contentMatchAt(0).defaultType : null,
                                            h = p && [null, {
                                                type: p
                                            }];
                                        return r.delete(i.pos, s.pos), !!Mt(r.doc, i.pos, 2, h) && (r.split(i.pos, 2, h), n(r), !0)
                                    }
                                }(e.schema.nodes.listItem)(e, t)
                            }
                        }
                    }, n
                }(Va),
                rm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "blockQuote"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                content: "block+",
                                group: "block",
                                parseDOM: [Dh("blockquote")],
                                toDOM: function(e) {
                                    return ["blockquote", Ih(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t) {
                                return Ji(e.schema.nodes.blockQuote)(e, t)
                            }
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "Alt-q": e,
                            "Alt-Q": e
                        }
                    }, n
                }(Va),
                om = {
                    left: function(e, t) {
                        var n = e[0],
                            r = e[1],
                            o = t.totalColumnCount,
                            i = 0 === r;
                        if (0 !== n || !i) {
                            r -= 1, i && (n -= 1, r = o - 1);
                            var s = t.getCellInfo(n, r),
                                a = s.offset,
                                l = s.nodeSize;
                            return a + l - 2
                        }
                        return null
                    },
                    right: function(e, t) {
                        var n = e[0],
                            r = e[1],
                            o = t.totalRowCount,
                            i = t.totalColumnCount,
                            s = r === i - 1;
                        if (n !== o - 1 || !s) {
                            var a = r + 1,
                                l = t.getColspanStartInfo(n, r);
                            return (null == l ? void 0 : l.count) > 1 && (a += l.count - 1), (s || a === i) && (n += 1, a = 0), t.getCellInfo(n, a).offset + 2
                        }
                        return null
                    },
                    up: function(e, t) {
                        var n = e[0],
                            r = e[1];
                        if (n > 0) {
                            var o = t.getCellInfo(n - 1, r),
                                i = o.offset,
                                s = o.nodeSize;
                            return i + s - 2
                        }
                        return null
                    },
                    down: function(e, t) {
                        var n = e[0],
                            r = e[1],
                            o = t.totalRowCount;
                        if (n < o - 1) {
                            var i = n + 1,
                                s = t.getRowspanStartInfo(n, r);
                            return (null == s ? void 0 : s.count) > 1 && (i += s.count - 1), t.getCellInfo(i, r).offset + 2
                        }
                        return null
                    }
                };

            function im(e, t, n, r) {
                var o = t[0],
                    i = t[1],
                    s = o + 3,
                    a = i >= s,
                    l = a ? o + 1 : i,
                    c = function(e, t, n, r, o) {
                        var i = t[0],
                            s = t[1],
                            a = t[2];
                        if (e === Jf.LEFT || e === Jf.UP) {
                            if (o && ! function(e, t, n) {
                                var r = n[0],
                                    o = n[1],
                                    i = t.resolve(e.before(r - 1));
                                return o === r && !i.nodeBefore
                            }(n, r, [i, s])) return !1;
                            var l = n.before(a);
                            if (r.resolve(l).nodeBefore) return !1
                        }
                        return !0
                    }(e, [i, s, l], n, r, a),
                    u = function(e, t, n, r, o) {
                        if (e === Jf.RIGHT || e === Jf.DOWN) {
                            if (o && ! function(e) {
                                for (var t, n, r = e.depth; r && "tableBodyCell" !== (n = e.node(r)).type.name;) {
                                    if ("listItem" === n.type.name) {
                                        var o = e.node(r - 1).lastChild === n,
                                            i = "paragraph" !== (null === (t = n.lastChild) || void 0 === t ? void 0 : t.type.name);
                                        return !!o && !i
                                    }
                                    r -= 1
                                }
                                return !1
                            }(n)) return !1;
                            var i = n.after(t);
                            if (r.resolve(i).nodeAfter) return !1
                        }
                        return !0
                    }(e, l, n, r, a);
                return c && u
            }

            function sm(e, t, n) {
                var r = n[0],
                    o = n[1],
                    i = t.getRowspanStartInfo(r, o),
                    s = e === Jf.UP && 0 === r,
                    a = e === Jf.DOWN && ((null == i ? void 0 : i.count) > 1 ? r + i.count - 1 : r) === t.totalRowCount - 1;
                return s || a
            }

            function am(e, t, n, r) {
                void 0 === r && (r = !1);
                var o = e.doc.resolve(t.tableEndOffset);
                return r || !o.nodeAfter ? Ds(e, o, n) : e.setSelection(Vt.near(o, 1))
            }

            function lm(e, t, n, r) {
                var o = (0, om[e])(n, r);
                if (o) {
                    var i = e === Jf.RIGHT || e === Jf.DOWN ? 1 : -1;
                    return t.setSelection(Vt.near(t.doc.resolve(o), i))
                }
                return null
            }

            function cm(e, t, n) {
                var r = e.getCellInfo(t, 0).offset,
                    o = e.getCellInfo(t, n - 1);
                return {
                    from: r,
                    to: o.offset + o.nodeSize
                }
            }! function(e) {
                e.LEFT = "left", e.RIGHT = "right", e.UP = "up", e.DOWN = "down"
            }(Jf || (Jf = {}));
            var um = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "table"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "tableHead{1} tableBody{1}",
                                group: "block",
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [Dh("table")],
                                toDOM: function(e) {
                                    return ["table", Ih(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.addTable = function() {
                        return function(e) {
                            return void 0 === e && (e = {
                                rowCount: 2,
                                columnCount: 1,
                                data: []
                            }),
                                function(t, n) {
                                    var r = e.rowCount,
                                        o = e.columnCount,
                                        i = e.data,
                                        s = t.schema,
                                        a = t.selection,
                                        l = t.tr,
                                        c = a.from,
                                        u = a.to,
                                        d = a.$from;
                                    if (c === u && !Nh(d)) {
                                        var p = s.nodes,
                                            h = p.tableHead,
                                            f = p.tableBody,
                                            m = null == i ? void 0 : i.slice(0, o),
                                            g = null == i ? void 0 : i.slice(o, i.length),
                                            v = function(e, t, n) {
                                                for (var r = t.nodes, o = r.tableRow, i = r.tableHeadCell, s = r.paragraph, a = [], l = 0; l < e; l += 1) {
                                                    var c = n && n[l],
                                                        u = s.create(null, c ? t.text(c) : []);
                                                    a.push(i.create(null, u))
                                                }
                                                return [o.create(null, a)]
                                            }(o, s, m),
                                            y = Jh(r - 1, o, s, g),
                                            b = s.nodes.table.create(null, [h.create(null, v), f.create(null, y)]);
                                        return n(l.replaceSelectionWith(b)), !0
                                    }
                                    return !1
                                }
                        }
                    }, n.prototype.removeTable = function() {
                        return function() {
                            return function(e, t) {
                                var n = e.selection,
                                    r = e.tr,
                                    o = jh.create(n.$anchor);
                                if (o) {
                                    var i = o.tableStartOffset,
                                        s = o.tableEndOffset,
                                        a = i - 1,
                                        l = Os(r.delete(a, s), a);
                                    return t(r.setSelection(l)), !0
                                }
                                return !1
                            }
                        }
                    }, n.prototype.addColumn = function(e) {
                        return function() {
                            return function(t, n) {
                                var r = t.selection,
                                    o = t.tr,
                                    i = t.schema,
                                    s = Xh(r),
                                    a = s.anchor,
                                    l = s.head;
                                if (a && l) {
                                    for (var c = jh.create(a), u = c.getRectOffsets(a, l), d = e === Jf.LEFT ? u.startColIdx : u.endColIdx + 1, p = Yh(u).columnCount, h = c.totalRowCount, f = 0; f < h; f += 1) {
                                        var m = Gh(p, f, i);
                                        o.insert(o.mapping.map(c.posAt(f, d)), m)
                                    }
                                    return n(o), !0
                                }
                                return !1
                            }
                        }
                    }, n.prototype.removeColumn = function() {
                        return function() {
                            return function(e, t) {
                                var n = e.selection,
                                    r = e.tr,
                                    o = Xh(n),
                                    i = o.anchor,
                                    s = o.head;
                                if (i && s) {
                                    var a = jh.create(i),
                                        l = a.getRectOffsets(i, s),
                                        c = a.totalColumnCount,
                                        u = a.totalRowCount;
                                    if (Yh(l).columnCount === c) return !1;
                                    for (var d = l.startColIdx, p = l.endColIdx, h = r.mapping.maps.length, f = 0; f < u; f += 1)
                                        for (var m = p; m >= d; m -= 1) {
                                            var g = a.getCellInfo(f, m),
                                                v = g.offset,
                                                y = g.nodeSize,
                                                b = r.mapping.slice(h).map(v),
                                                w = b + y;
                                            r.delete(b, w)
                                        }
                                    return t(r), !0
                                }
                                return !1
                            }
                        }
                    }, n.prototype.addRow = function(e) {
                        return function() {
                            return function(t, n) {
                                var r = t.selection,
                                    o = t.schema,
                                    i = t.tr,
                                    s = Xh(r),
                                    a = s.anchor,
                                    l = s.head;
                                if (a && l) {
                                    var c = jh.create(a),
                                        u = c.totalColumnCount,
                                        d = c.getRectOffsets(a, l),
                                        p = Yh(d).rowCount,
                                        h = function(e, t, n) {
                                            var r, o, i;
                                            return e === Jf.UP ? (r = n.startRowIdx, o = 0, i = -1) : (r = n.endRowIdx, o = t.totalColumnCount - 1, i = t.getCellInfo(r, o).nodeSize + 1), {
                                                targetRowIdx: r,
                                                insertColIdx: o,
                                                nodeSize: i
                                            }
                                        }(e, c, d),
                                        f = h.targetRowIdx,
                                        m = h.insertColIdx,
                                        g = h.nodeSize;
                                    if (!(0 === f)) {
                                        for (var v = [], y = i.mapping.map(c.posAt(f, m)) + g, b = [], w = 0; w < u; w += 1) b = b.concat(Gh(1, f, o));
                                        for (var k = 0; k < p; k += 1) v.push(o.nodes.tableRow.create(null, b));
                                        return n(i.insert(y, v)), !0
                                    }
                                }
                                return !1
                            }
                        }
                    }, n.prototype.removeRow = function() {
                        return function() {
                            return function(e, t) {
                                var n = e.selection,
                                    r = e.tr,
                                    o = Xh(n),
                                    i = o.anchor,
                                    s = o.head;
                                if (i && s) {
                                    var a = jh.create(i),
                                        l = a.totalRowCount,
                                        c = a.totalColumnCount,
                                        u = a.getRectOffsets(i, s),
                                        d = Yh(u).rowCount,
                                        p = u.startRowIdx,
                                        h = u.endRowIdx;
                                    if (d === l - 1 || 0 === p) return !1;
                                    for (var f = h; f >= p; f -= 1) {
                                        var m = cm(a, f, c),
                                            g = m.from,
                                            v = m.to;
                                        r.delete(g - 1, v + 1)
                                    }
                                    return t(r), !0
                                }
                                return !1
                            }
                        }
                    }, n.prototype.alignColumn = function() {
                        return function(e) {
                            return void 0 === e && (e = {
                                align: "center"
                            }),
                                function(t, n) {
                                    var r = e.align,
                                        o = t.selection,
                                        i = t.tr,
                                        s = Xh(o),
                                        a = s.anchor,
                                        l = s.head;
                                    if (a && l) {
                                        for (var c = jh.create(a), u = c.totalRowCount, d = c.getRectOffsets(a, l), p = d.startColIdx, h = d.endColIdx, f = 0; f < u; f += 1)
                                            for (var m = p; m <= h; m += 1)
                                                if (!c.extendedRowspan(f, m) && !c.extendedColspan(f, m)) {
                                                    var g = c.getNodeAndPos(f, m),
                                                        v = g.node,
                                                        y = g.pos,
                                                        b = ef(v, {
                                                            align: r
                                                        });
                                                    i.setNodeMarkup(y, null, b)
                                                } return n(i), !0
                                    }
                                    return !1
                                }
                        }
                    }, n.prototype.moveToCell = function(e) {
                        return function(t, n) {
                            var r = t.selection,
                                o = t.tr,
                                i = t.schema,
                                s = Xh(r),
                                a = s.anchor,
                                l = s.head;
                            if (a && l) {
                                var c = jh.create(a),
                                    u = c.getCellIndex(a),
                                    d = void 0;
                                if (d = sm(e, c, u) ? am(o, c, i) : lm(e, o, u, c)) return n(d), !0
                            }
                            return !1
                        }
                    }, n.prototype.moveInCell = function(e) {
                        var t = this;
                        return function(n, r) {
                            var o = n.selection,
                                i = n.tr,
                                s = n.doc,
                                a = n.schema,
                                l = o.$from;
                            if (!t.context.view.endOfTextblock(e)) return !1;
                            var c = Sh(l, (function(e) {
                                var t = e.type;
                                return "tableHeadCell" === t.name || "tableBodyCell" === t.name
                            }));
                            if (c) {
                                var u = Sh(l, (function(e) {
                                        return "paragraph" === e.type.name
                                    })),
                                    d = c.depth;
                                if (u && im(e, [d, u.depth], l, s)) {
                                    var p = Xh(o).anchor,
                                        h = jh.create(p),
                                        f = h.getCellIndex(p),
                                        m = void 0;
                                    if (! function(e, t, n) {
                                        var r = n[0],
                                            o = n[1];
                                        if (e === Jf.UP || e === Jf.DOWN) return !1;
                                        var i = t.tableStartOffset,
                                            s = t.tableEndOffset,
                                            a = t.getCellInfo(r, o),
                                            l = a.offset,
                                            c = a.nodeSize;
                                        return (e === Jf.LEFT ? i : s) === (e === Jf.LEFT ? l - 2 : l + c + 3)
                                    }(e, h, f) ? sm(e, h, f) ? e === Jf.UP ? m = function(e, t, n) {
                                        var r = e.doc.resolve(t.tableStartOffset - 1);
                                        return r.nodeBefore ? e.setSelection(Vt.near(r, -1)) : Ds(e, r, n)
                                    }(i, h, a) : e === Jf.DOWN && (m = am(i, h, a)) : m = lm(e, i, f, h) : m = function(e, t, n) {
                                        var r = e.doc.resolve(t.before(n - 3));
                                        return e.setSelection(new Jt(r))
                                    }(i, l, d), m) return r(m), !0
                                }
                            }
                            return !1
                        }
                    }, n.prototype.deleteCells = function() {
                        return function(e, t) {
                            var n = e.schema,
                                r = e.selection,
                                o = e.tr,
                                i = Xh(r),
                                s = i.anchor,
                                a = i.head;
                            if (s && a && !(r instanceof Ut)) {
                                for (var l = jh.create(s), c = l.getRectOffsets(s, a), u = c.startRowIdx, d = c.startColIdx, p = c.endRowIdx, h = c.endColIdx, f = u; f <= p; f += 1)
                                    for (var m = d; m <= h; m += 1)
                                        if (!l.extendedRowspan(f, m) && !l.extendedColspan(f, m)) {
                                            var g = l.getNodeAndPos(f, m),
                                                v = g.node,
                                                y = g.pos,
                                                b = Gh(1, f, n, v.attrs);
                                            o.replaceWith(o.mapping.map(y), o.mapping.map(y + v.nodeSize), b)
                                        } return t(o), !0
                            }
                            return !1
                        }
                    }, n.prototype.exitTable = function() {
                        return function(e, t) {
                            var n = e.selection,
                                r = e.tr,
                                o = e.schema,
                                i = n.$from;
                            if (Sh(i, (function(e) {
                                var t = e.type;
                                return "tableHeadCell" === t.name || "tableBodyCell" === t.name
                            })) && Sh(i, (function(e) {
                                return "paragraph" === e.type.name
                            }))) {
                                var s = Xh(n).anchor;
                                return t(am(r, jh.create(s), o, !0)), !0
                            }
                            return !1
                        }
                    }, n.prototype.commands = function() {
                        return {
                            addTable: this.addTable(),
                            removeTable: this.removeTable(),
                            addColumnToLeft: this.addColumn(Jf.LEFT),
                            addColumnToRight: this.addColumn(Jf.RIGHT),
                            removeColumn: this.removeColumn(),
                            addRowToUp: this.addRow(Jf.UP),
                            addRowToDown: this.addRow(Jf.DOWN),
                            removeRow: this.removeRow(),
                            alignColumn: this.alignColumn()
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.deleteCells();
                        return {
                            Tab: this.moveToCell(Jf.RIGHT),
                            "Shift-Tab": this.moveToCell(Jf.LEFT),
                            ArrowUp: this.moveInCell(Jf.UP),
                            ArrowDown: this.moveInCell(Jf.DOWN),
                            ArrowLeft: this.moveInCell(Jf.LEFT),
                            ArrowRight: this.moveInCell(Jf.RIGHT),
                            Backspace: e,
                            "Mod-Backspace": e,
                            Delete: e,
                            "Mod-Delete": e,
                            "Mod-Enter": this.exitTable()
                        }
                    }, n
                }(Va),
                dm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "tableHead"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "tableRow{1}",
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [Dh("thead")],
                                toDOM: function(e) {
                                    return ["thead", Ih(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                pm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "tableBody"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "tableRow+",
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [{
                                    tag: "tbody",
                                    getAttrs: function(e) {
                                        var t = e.querySelectorAll("tr")[0].children.length,
                                            n = e.getAttribute("data-raw-html");
                                        return !!t && o({}, n && {
                                            rawHTML: n
                                        })
                                    }
                                }],
                                toDOM: function(e) {
                                    return ["tbody", Ih(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                hm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "tableRow"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "(tableHeadCell | tableBodyCell)*",
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [{
                                    tag: "tr",
                                    getAttrs: function(e) {
                                        var t = e.children.length,
                                            n = e.getAttribute("data-raw-html");
                                        return !!t && o({}, n && {
                                            rawHTML: n
                                        })
                                    }
                                }],
                                toDOM: function(e) {
                                    return ["tr", Ih(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                fm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "tableHeadCell"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "paragraph+",
                                attrs: o({
                                    align: {
                                        default: null
                                    },
                                    className: {
                                        default: null
                                    },
                                    rawHTML: {
                                        default: null
                                    },
                                    colspan: {
                                        default: null
                                    },
                                    extended: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                isolating: !0,
                                parseDOM: [Lh("th")],
                                toDOM: function(e) {
                                    var t = e.attrs,
                                        n = Ah(t);
                                    return ["th", o(o({}, n), Ih(t)), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                mm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "tableBodyCell"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "(paragraph | bulletList | orderedList)+",
                                attrs: {
                                    align: {
                                        default: null
                                    },
                                    className: {
                                        default: null
                                    },
                                    rawHTML: {
                                        default: null
                                    },
                                    colspan: {
                                        default: null
                                    },
                                    rowspan: {
                                        default: null
                                    },
                                    extended: {
                                        default: null
                                    }
                                },
                                isolating: !0,
                                parseDOM: [Lh("td")],
                                toDOM: function(e) {
                                    return ["td", Ah(e.attrs), 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n
                }(Va),
                gm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "image"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                inline: !0,
                                attrs: o({
                                    imageUrl: {
                                        default: ""
                                    },
                                    altText: {
                                        default: null
                                    },
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                group: "inline",
                                selectable: !1,
                                parseDOM: [{
                                    tag: "img[src]",
                                    getAttrs: function(e) {
                                        var t = rh(e, {
                                                RETURN_DOM_FRAGMENT: !0
                                            }).firstChild,
                                            n = t.getAttribute("src") || "",
                                            r = t.getAttribute("data-raw-html"),
                                            i = t.getAttribute("alt");
                                        return o({
                                            imageUrl: n,
                                            altText: i
                                        }, r && {
                                            rawHTML: r
                                        })
                                    }
                                }],
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return [t.rawHTML || "img", o(o({
                                        src: _e(t.imageUrl)
                                    }, t.altText && {
                                        alt: t.altText
                                    }), Ih(t))]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.addImage = function() {
                        return function(e) {
                            return function(t, n) {
                                var r = t.schema,
                                    i = t.tr,
                                    s = e,
                                    a = s.imageUrl,
                                    l = s.altText;
                                if (!a) return !1;
                                var c = r.nodes.image.createAndFill(o({
                                    imageUrl: a
                                }, l && {
                                    altText: l
                                }));
                                return n(i.replaceSelectionWith(c).scrollIntoView()), !0
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            addImage: this.addImage()
                        }
                    }, n
                }(Va),
                vm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "thematicBreak"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                group: "block",
                                parseDOM: [{
                                    tag: "hr"
                                }],
                                selectable: !1,
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return ["div", Ih(t), [t.rawHTML || "hr"]]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.hr = function() {
                        var e = this;
                        return function() {
                            return function(t, n) {
                                var r, o = t.selection,
                                    i = o.$from;
                                if (i === o.$to) {
                                    var s = t.doc,
                                        a = t.schema.nodes,
                                        l = a.thematicBreak,
                                        c = a.paragraph,
                                        u = [l.create()],
                                        d = i.node(1),
                                        p = s.child(s.childCount - 1) === d,
                                        h = s.resolve(i.after(1)),
                                        f = (null === (r = i.nodeAfter) || void 0 === r ? void 0 : r.type.name) === e.name;
                                    return (p || f) && u.push(c.create()), n(t.tr.insert(h.pos, u).scrollIntoView()), !0
                                }
                                return !1
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            hr: this.hr()
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.hr()();
                        return {
                            "Mod-l": e,
                            "Mod-L": e
                        }
                    }, n
                }(Va),
                ym = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "strong"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            var e = ["b", "strong"].map((function(e) {
                                return {
                                    tag: e,
                                    getAttrs: function(e) {
                                        var t = e.getAttribute("data-raw-html");
                                        return o({}, t && {
                                            rawHTML: t
                                        })
                                    }
                                }
                            }));
                            return {
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: e,
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return [t.rawHTML || "strong", Ih(t)]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.bold = function() {
                        return function() {
                            return function(e, t) {
                                return Ki(e.schema.marks.strong)(e, t)
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            bold: this.bold()
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.bold()();
                        return {
                            "Mod-b": e,
                            "Mod-B": e
                        }
                    }, n
                }(Al),
                bm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "emph"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            var e = ["i", "em"].map((function(e) {
                                return {
                                    tag: e,
                                    getAttrs: function(e) {
                                        var t = e.getAttribute("data-raw-html");
                                        return o({}, t && {
                                            rawHTML: t
                                        })
                                    }
                                }
                            }));
                            return {
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: e,
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return [t.rawHTML || "em", Ih(t)]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.italic = function() {
                        return function() {
                            return function(e, t) {
                                return Ki(e.schema.marks.emph)(e, t)
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            italic: this.italic()
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.italic()();
                        return {
                            "Mod-i": e,
                            "Mod-I": e
                        }
                    }, n
                }(Al),
                wm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "strike"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            var e = ["s", "del"].map((function(e) {
                                return {
                                    tag: e,
                                    getAttrs: function(e) {
                                        var t = e.getAttribute("data-raw-html");
                                        return o({}, t && {
                                            rawHTML: t
                                        })
                                    }
                                }
                            }));
                            return {
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: e,
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return [t.rawHTML || "del", Ih(t)]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t) {
                                return Ki(e.schema.marks.strike)(e, t)
                            }
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "Mod-s": e,
                            "Mod-S": e
                        }
                    }, n
                }(Al),
                km = function(e) {
                    function n(t) {
                        var n = e.call(this) || this;
                        return n.linkAttributes = t, n
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "link"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            var e = this;
                            return {
                                attrs: o({
                                    linkUrl: {
                                        default: ""
                                    },
                                    title: {
                                        default: null
                                    },
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                inclusive: !1,
                                parseDOM: [{
                                    tag: "a[href]",
                                    getAttrs: function(e) {
                                        var t = rh(e, {
                                                RETURN_DOM_FRAGMENT: !0
                                            }).firstChild,
                                            n = t.getAttribute("href") || "",
                                            r = t.getAttribute("title") || "",
                                            i = t.getAttribute("data-raw-html");
                                        return o({
                                            linkUrl: n,
                                            title: r
                                        }, i && {
                                            rawHTML: i
                                        })
                                    }
                                }],
                                toDOM: function(t) {
                                    var n = t.attrs;
                                    return [n.rawHTML || "a", o(o({
                                        href: _e(n.linkUrl)
                                    }, e.linkAttributes), Ih(n))]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.addLink = function() {
                        return function(e) {
                            return function(t, n) {
                                var r = e,
                                    o = r.linkUrl,
                                    i = r.linkText,
                                    s = void 0 === i ? "" : i,
                                    a = t.schema,
                                    l = t.tr,
                                    c = t.selection,
                                    u = c.empty,
                                    d = c.from,
                                    p = c.to;
                                if (d && p && o) {
                                    var h = {
                                            linkUrl: o
                                        },
                                        f = a.mark("link", h);
                                    if (u && s) {
                                        var m = Ns(a, s, f);
                                        l.replaceRangeWith(d, p, m)
                                    } else l.addMark(d, p, f);
                                    return n(l.scrollIntoView()), !0
                                }
                                return !1
                            }
                        }
                    }, n.prototype.toggleLink = function() {
                        return function(e) {
                            return function(t, n) {
                                return Ki(t.schema.marks.link, e)(t, n)
                            }
                        }
                    }, n.prototype.commands = function() {
                        return {
                            addLink: this.addLink(),
                            toggleLink: this.toggleLink()
                        }
                    }, n
                }(Al),
                xm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "code"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                attrs: o({
                                    rawHTML: {
                                        default: null
                                    }
                                }, {
                                    htmlAttrs: {
                                        default: null
                                    },
                                    classNames: {
                                        default: null
                                    }
                                }),
                                parseDOM: [{
                                    tag: "code",
                                    getAttrs: function(e) {
                                        var t = e.getAttribute("data-raw-html");
                                        return o({}, t && {
                                            rawHTML: t
                                        })
                                    }
                                }],
                                toDOM: function(e) {
                                    var t = e.attrs;
                                    return [t.rawHTML || "code", Ih(t)]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t) {
                                return Ki(e.schema.marks.code)(e, t)
                            }
                        }
                    }, n.prototype.keymaps = function() {
                        var e = this.commands()();
                        return {
                            "Shift-Mod-c": e,
                            "Shift-Mod-C": e
                        }
                    }, n
                }(Al),
                Cm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "customBlock"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "text*",
                                group: "block",
                                attrs: {
                                    info: {
                                        default: null
                                    }
                                },
                                atom: !0,
                                code: !0,
                                defining: !0,
                                parseDOM: [{
                                    tag: "div[data-custom-info]",
                                    getAttrs: function(e) {
                                        return {
                                            info: e.getAttribute("data-custom-info")
                                        }
                                    }
                                }],
                                toDOM: function(e) {
                                    return ["div", {
                                        "data-custom-info": e.attrs.info || null
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function(e) {
                            return function(t, n) {
                                return !!(null == e ? void 0 : e.info) && Gi(t.schema.nodes.customBlock, e)(t, n)
                            }
                        }
                    }, n
                }(Va),
                Tm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "frontMatter"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "text*",
                                group: "block",
                                code: !0,
                                defining: !0,
                                parseDOM: [{
                                    preserveWhitespace: "full",
                                    tag: "div[data-front-matter]"
                                }],
                                toDOM: function() {
                                    return ["div", {
                                        "data-front-matter": "true"
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t, n) {
                                var r = e.selection.$from;
                                return !(!n.endOfTextblock("down") || "frontMatter" !== r.node().type.name) && qi(e, t)
                            }
                        }
                    }, n.prototype.keymaps = function() {
                        return {
                            Enter: this.commands()()
                        }
                    }, n
                }(Va),
                Mm = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), Object.defineProperty(n.prototype, "name", {
                        get: function() {
                            return "htmlComment"
                        },
                        enumerable: !1,
                        configurable: !0
                    }), Object.defineProperty(n.prototype, "schema", {
                        get: function() {
                            return {
                                content: "text*",
                                group: "block",
                                code: !0,
                                defining: !0,
                                parseDOM: [{
                                    preserveWhitespace: "full",
                                    tag: "div[data-html-comment]"
                                }],
                                toDOM: function() {
                                    return ["div", {
                                        "data-html-comment": "true"
                                    }, 0]
                                }
                            }
                        },
                        enumerable: !1,
                        configurable: !0
                    }), n.prototype.commands = function() {
                        return function() {
                            return function(e, t, n) {
                                var r = e.selection.$from;
                                return !(!n.endOfTextblock("down") || "htmlComment" !== r.node().type.name) && qi(e, t)
                            }
                        }
                    }, n.prototype.keymaps = function() {
                        return {
                            Enter: this.commands()()
                        }
                    }, n
                }(Va);
            var Sm = xa("contents"),
                Em = function(e) {
                    function n(t, n) {
                        var r = e.call(this, t) || this,
                            i = n.toDOMAdaptor,
                            s = n.htmlSchemaMap,
                            a = void 0 === s ? {} : s,
                            l = n.linkAttributes,
                            c = void 0 === l ? {} : l,
                            u = n.useCommandShortcut,
                            d = void 0 === u || u,
                            p = n.wwPlugins,
                            h = void 0 === p ? [] : p,
                            f = n.wwNodeViews,
                            m = void 0 === f ? {} : f;
                        return r.editorType = "wysiwyg", r.el.classList.add("ww-mode"), r.toDOMAdaptor = i, r.linkAttributes = c, r.extraPlugins = h, r.pluginNodeViews = m, r.specs = r.createSpecs(), r.schema = r.createSchema(a), r.context = r.createContext(), r.keymaps = r.createKeymaps(d), r.view = r.createView(), r.commands = r.createCommands(), r.specs.setContext(o(o({}, r.context), {
                            view: r.view
                        })), r.initEvent(), r
                    }
                    return t(n, e), n.prototype.createSpecs = function() {
                        return e = this.linkAttributes, new Qa([new Gf, new Kf, new Xf, new Qf, new Yf, new em, new tm, new nm, new rm, new um, new dm, new pm, new hm, new fm, new mm, new gm, new vm, new ym, new bm, new wm, new km(e), new xm, new Cm, new Tm, new _a, new Mm]);
                        var e
                    }, n.prototype.createContext = function() {
                        return {
                            schema: this.schema,
                            eventEmitter: this.eventEmitter
                        }
                    }, n.prototype.createSchema = function(e) {
                        return new Y({
                            nodes: o(o({}, this.specs.nodes), e.nodes),
                            marks: o(o({}, this.specs.marks), e.marks)
                        })
                    }, n.prototype.createPlugins = function() {
                        return i([new an({
                            key: tf,
                            state: {
                                init: function() {
                                    return null
                                },
                                apply: function(e, t) {
                                    var n = e.getMeta(tf);
                                    if (n) return -1 === n ? null : n;
                                    if (Ae()(t) || !e.docChanged) return t;
                                    var r = e.mapping.mapResult(t),
                                        o = r.deleted,
                                        i = r.pos;
                                    return o ? null : i
                                }
                            },
                            props: {
                                decorations: sf,
                                createSelectionBetween: function(e) {
                                    var t = e.state;
                                    return Ae()(tf.getState(t)) ? null : t.selection
                                }
                            },
                            view: function(e) {
                                return new rf(e)
                            }
                        }), gf(this.eventEmitter), new an({
                            props: {
                                handleDOMEvents: {
                                    mousedown: function(e, t) {
                                        var n = t,
                                            r = n.clientX,
                                            i = n.clientY,
                                            s = e.posAtCoords({
                                                left: r,
                                                top: i
                                            });
                                        if (s) {
                                            var a = e.state,
                                                l = a.doc,
                                                c = a.tr,
                                                u = l.resolve(s.pos),
                                                d = Oh(u),
                                                p = t.target,
                                                h = getComputedStyle(p, ":before"),
                                                f = t,
                                                m = f.offsetX,
                                                g = f.offsetY;
                                            if (!d || !wa(h, m, g)) return !1;
                                            t.preventDefault();
                                            var v = u.before(d.depth),
                                                y = d.node.attrs;
                                            return c.setNodeMarkup(v, null, o(o({}, y), {
                                                checked: !y.checked
                                            })), e.dispatch(c), !0
                                        }
                                        return !1
                                    }
                                }
                            }
                        }), kf(this.eventEmitter)], this.createPluginProps()).concat(this.defaultPlugins)
                    }, n.prototype.createPluginNodeViews = function() {
                        var e = this.eventEmitter,
                            t = this.pluginNodeViews,
                            n = {};
                        return t && Object.keys(t).forEach((function(r) {
                            n[r] = function(n, o, i) {
                                return t[r](n, o, i, e)
                            }
                        })), n
                    }, n.prototype.createView = function() {
                        var e = this,
                            t = this.toDOMAdaptor,
                            n = this.eventEmitter;
                        return new ui(this.el, {
                            state: this.createState(),
                            attributes: {
                                class: Sm
                            },
                            nodeViews: o({
                                customBlock: function(e, n, r) {
                                    return new xf(e, n, r, t)
                                },
                                image: function(e, t, r) {
                                    return new Tf(e, t, r, n)
                                },
                                codeBlock: function(e, t, r) {
                                    return new Mf(e, t, r, n)
                                },
                                widget: ja
                            }, this.createPluginNodeViews()),
                            dispatchTransaction: function(t) {
                                var n = e.view.state.applyTransaction(t).state;
                                e.view.updateState(n), e.emitChangeEvent(t.scrollIntoView()), e.eventEmitter.emit("setFocusedNode", n.selection.$from.node(1))
                            },
                            transformPastedHTML: Ff,
                            transformPasted: function(t) {
                                return _f(t, e.schema, Nh(e.view.state.selection.$from))
                            },
                            handlePaste: function(e, t, n) {
                                return Wf(e, n)
                            },
                            handleKeyDown: function(t, n) {
                                return e.eventEmitter.emit("keydown", e.editorType, n), !1
                            },
                            handleDOMEvents: {
                                paste: function(t, n) {
                                    var r = n.clipboardData || window.clipboardData,
                                        o = null == r ? void 0 : r.items;
                                    if (o) {
                                        var i = vi()(o).some((function(e) {
                                            return "string" === e.kind && "text/rtf" === e.type
                                        }));
                                        if (!i) {
                                            var s = za(o);
                                            s && (n.preventDefault(), Ha(e.eventEmitter, s, n.type))
                                        }
                                    }
                                    return !1
                                },
                                keyup: function(t, n) {
                                    return e.eventEmitter.emit("keyup", e.editorType, n), !1
                                },
                                scroll: function() {
                                    return e.eventEmitter.emit("scroll", "editor"), !0
                                }
                            }
                        })
                    }, n.prototype.createCommands = function() {
                        return this.specs.commands(this.view, qh())
                    }, n.prototype.getHTML = function() {
                        return La(this.view.dom.innerHTML)
                    }, n.prototype.getModel = function() {
                        return this.view.state.doc
                    }, n.prototype.getSelection = function() {
                        var e = this.view.state.selection;
                        return [e.from, e.to]
                    }, n.prototype.getSchema = function() {
                        return this.view.state.schema
                    }, n.prototype.replaceSelection = function(e, t, n) {
                        var r = this.view.state,
                            o = r.schema,
                            i = r.tr,
                            s = e.split("\n").map((function(e) {
                                return Es(o, ra(e, o))
                            })),
                            a = new v(d.from(s), 1, 1),
                            l = Ee()(t) && Ee()(n) ? i.replaceRange(t, n, a) : i.replaceSelection(a);
                        this.view.dispatch(l), this.focus()
                    }, n.prototype.deleteSelection = function(e, t) {
                        var n = this.view.state.tr,
                            r = Ee()(e) && Ee()(t) ? n.deleteRange(e, t) : n.deleteSelection();
                        this.view.dispatch(r.scrollIntoView())
                    }, n.prototype.getSelectedText = function(e, t) {
                        var n = this.view.state,
                            r = n.doc,
                            o = n.selection,
                            i = o.from,
                            s = o.to;
                        return Ee()(e) && Ee()(t) && (i = e, s = t), r.textBetween(i, s, "\n")
                    }, n.prototype.setModel = function(e, t) {
                        void 0 === t && (t = !1);
                        var n = this.view.state,
                            r = n.tr,
                            o = n.doc;
                        this.view.dispatch(r.replaceWith(0, o.content.size, e)), t && this.moveCursorToEnd(!0)
                    }, n.prototype.setSelection = function(e, t) {
                        void 0 === t && (t = e);
                        var n = this.view.state.tr,
                            r = Os(n, e, t);
                        this.view.dispatch(n.setSelection(r).scrollIntoView())
                    }, n.prototype.addWidget = function(e, t, n) {
                        var r = this.view,
                            o = r.dispatch,
                            i = r.state;
                        o(i.tr.setMeta("widget", {
                            pos: null != n ? n : i.selection.to,
                            node: e,
                            style: t
                        }))
                    }, n.prototype.replaceWithWidget = function(e, t, n) {
                        var r = this.view.state,
                            o = r.tr,
                            i = ra(n, r.schema);
                        this.view.dispatch(o.replaceWith(e, t, i))
                    }, n.prototype.getRangeInfoOfNode = function(e) {
                        var t = this.view.state,
                            n = t.doc,
                            r = t.selection,
                            o = e ? n.resolve(e) : r.$from,
                            i = o.marks(),
                            s = o.node(),
                            a = o.start(),
                            l = o.end(),
                            c = s.type.name;
                        if (i.length || "paragraph" === c) {
                            var u = i[i.length - 1];
                            c = u ? u.type.name : "text", s.forEach((function(e, t) {
                                var n = e.isText,
                                    r = e.nodeSize,
                                    i = e.marks,
                                    s = o.pos - a;
                                n && t <= s && t + r >= s && function(e) {
                                    return !e.length || Ue(e, u)
                                }(i) && (l = (a += t) + r)
                            }))
                        }
                        return {
                            range: [a, l],
                            type: c
                        }
                    }, n
                }(Wa),
                Nm = Em,
                Om = n(404),
                Dm = n.n(Om),
                Am = ["afterPreviewRender", "updatePreview", "changeMode", "needChangeMode", "command", "changePreviewStyle", "changePreviewTabPreview", "changePreviewTabWrite", "scroll", "contextmenu", "show", "hide", "changeLanguage", "changeToolbarState", "toggleScrollSync", "mixinTableOffsetMapPrototype", "setFocusedNode", "removePopupWidget", "query", "openPopup", "closePopup", "addImageBlobHook", "beforePreviewRender", "beforeConvertWysiwygToMarkdown", "load", "loadUI", "change", "caretChange", "destroy", "focus", "blur", "keydown", "keyup"],
                Lm = function() {
                    function e() {
                        var e = this;
                        this.events = new uf, this.eventTypes = Am.reduce((function(e, t) {
                            return o(o({}, e), {
                                type: t
                            })
                        }), {}), this.hold = !1, Am.forEach((function(t) {
                            e.addEventType(t)
                        }))
                    }
                    return e.prototype.listen = function(e, t) {
                        var n = this.getTypeInfo(e),
                            r = this.events.get(n.type) || [];
                        if (!this.hasEventType(n.type)) throw new Error("There is no event type " + n.type);
                        n.namespace && (t.namespace = n.namespace), r.push(t), this.events.set(n.type, r)
                    }, e.prototype.emit = function(e) {
                        for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
                        var r = this.getTypeInfo(e),
                            o = this.events.get(r.type),
                            i = [];
                        return !this.hold && o && o.forEach((function(e) {
                            var n = e.apply(void 0, t);
                            Oe()(n) || i.push(n)
                        })), i
                    }, e.prototype.emitReduce = function(e, t) {
                        for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
                        var o = this.events.get(e);
                        return !this.hold && o && o.forEach((function(e) {
                            var r = e.apply(void 0, i([t], n));
                            Dm()(r) || (t = r)
                        })), t
                    }, e.prototype.getTypeInfo = function(e) {
                        var t = e.split(".");
                        return {
                            type: t[0],
                            namespace: t[1]
                        }
                    }, e.prototype.hasEventType = function(e) {
                        return !Oe()(this.eventTypes[this.getTypeInfo(e).type])
                    }, e.prototype.addEventType = function(e) {
                        if (this.hasEventType(e)) throw new Error("There is already have event type " + e);
                        this.eventTypes[e] = e
                    }, e.prototype.removeEventHandler = function(e, t) {
                        var n = this,
                            r = this.getTypeInfo(e),
                            o = r.type,
                            i = r.namespace;
                        o && t ? this.removeEventHandlerWithHandler(o, t) : o && !i ? this.events.delete(o) : !o && i ? this.events.forEach((function(e, t) {
                            n.removeEventHandlerWithTypeInfo(t, i)
                        })) : o && i && this.removeEventHandlerWithTypeInfo(o, i)
                    }, e.prototype.removeEventHandlerWithHandler = function(e, t) {
                        var n = this.events.get(e);
                        if (n) {
                            var r = n.indexOf(t);
                            n.indexOf(t) >= 0 && n.splice(r, 1)
                        }
                    }, e.prototype.removeEventHandlerWithTypeInfo = function(e, t) {
                        var n = [],
                            r = this.events.get(e);
                        r && (r.map((function(e) {
                            return e.namespace !== t && n.push(e), null
                        })), this.events.set(e, n))
                    }, e.prototype.getEvents = function() {
                        return this.events
                    }, e.prototype.holdEventInvoke = function(e) {
                        this.hold = !0, e(), this.hold = !1
                    }, e
                }(),
                Im = Lm,
                Rm = function() {
                    function e(e, t, n, r) {
                        this.eventEmitter = e, this.mdCommands = t, this.wwCommands = n, this.getEditorType = r, this.initEvent()
                    }
                    return e.prototype.initEvent = function() {
                        var e = this;
                        this.eventEmitter.listen("command", (function(t, n) {
                            e.exec(t, n)
                        }))
                    }, e.prototype.addCommand = function(e, t, n) {
                        "markdown" === e ? this.mdCommands[t] = n : this.wwCommands[t] = n
                    }, e.prototype.deleteCommand = function(e, t) {
                        "markdown" === e ? delete this.mdCommands[t] : delete this.wwCommands[t]
                    }, e.prototype.exec = function(e, t) {
                        "markdown" === this.getEditorType() ? this.mdCommands[e](t) : this.wwCommands[e](t)
                    }, e
                }(),
                Pm = Rm;

            function Bm(e) {
                return "\n" === e[e.length - 1] ? e.slice(0, e.length - 1) : e
            }

            function Fm(e, t) {
                var n = e.schema,
                    r = t.literal.match(ga);
                if (r) {
                    var o = r[1],
                        i = r[3],
                        s = (o || i).toLowerCase();
                    return "htmlInline" === t.type && !(!n.marks[s] && !n.nodes[s])
                }
                return !1
            }

            function Hm(e) {
                return Ue(["text", "strong", "emph", "strike", "image", "link", "code"], e.type)
            }

            function zm(e) {
                return "softbreak" === (null == e ? void 0 : e.type)
            }

            function qm(e) {
                var t = e.type,
                    n = e.literal,
                    r = "htmlInline" === t && n.match(ga);
                if (r) {
                    var o = r[1],
                        i = r[3],
                        s = o || i;
                    if (s) return Ue(["ul", "ol", "li"], s.toLowerCase())
                }
                return !1
            }

            function Vm(e) {
                for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
                var r = document.createElement("div");
                r.innerHTML = rh(e);
                var o = r.firstChild;
                return t.map((function(e) {
                    return o.getAttribute(e) || ""
                }))
            }
            var jm = {
                    "b, strong": function(e, t, n) {
                        var r = e.schema.marks.strong;
                        n ? e.openMark(r.create({
                            rawHTML: n
                        })) : e.closeMark(r)
                    },
                    "i, em": function(e, t, n) {
                        var r = e.schema.marks.emph;
                        n ? e.openMark(r.create({
                            rawHTML: n
                        })) : e.closeMark(r)
                    },
                    "s, del": function(e, t, n) {
                        var r = e.schema.marks.strike;
                        n ? e.openMark(r.create({
                            rawHTML: n
                        })) : e.closeMark(r)
                    },
                    code: function(e, t, n) {
                        var r = e.schema.marks.code;
                        n ? e.openMark(r.create({
                            rawHTML: n
                        })) : e.closeMark(r)
                    },
                    a: function(e, t, n) {
                        var r = t.literal,
                            o = e.schema.marks.link;
                        if (n) {
                            var i = Vm(r, "href")[0];
                            e.openMark(o.create({
                                linkUrl: i,
                                rawHTML: n
                            }))
                        } else e.closeMark(o)
                    },
                    img: function(e, t, n) {
                        var r = t.literal;
                        if (n) {
                            var i = Vm(r, "src", "alt"),
                                s = i[0],
                                a = i[1],
                                l = e.schema.nodes.image;
                            e.addNode(l, o({
                                rawHTML: n,
                                imageUrl: s
                            }, a && {
                                altText: a
                            }))
                        }
                    },
                    hr: function(e, t, n) {
                        e.addNode(e.schema.nodes.thematicBreak, {
                            rawHTML: n
                        })
                    },
                    br: function(e, t) {
                        var n = e.schema.nodes.paragraph,
                            r = t.parent,
                            o = t.prev,
                            i = t.next;
                        "paragraph" === (null == r ? void 0 : r.type) ? (zm(o) && e.openNode(n), zm(i) ? e.closeNode() : i && (e.closeNode(), e.openNode(n))) : "tableCell" === (null == r ? void 0 : r.type) && (o && (Hm(o) || Fm(e, o)) && e.closeNode(), i && (Hm(i) || Fm(e, i)) && e.openNode(n))
                    },
                    pre: function(e, t, n) {
                        var r, o, i = document.createElement("div");
                        i.innerHTML = t.literal;
                        var s = null === (o = null === (r = i.firstChild) || void 0 === r ? void 0 : r.firstChild) || void 0 === o ? void 0 : o.textContent;
                        e.openNode(e.schema.nodes.codeBlock, {
                            rawHTML: n
                        }), e.addText(Bm(s)), e.closeNode()
                    },
                    "ul, ol": function(e, t, n) {
                        if ("tableCell" === t.parent.type) {
                            var r = e.schema.nodes,
                                o = r.bulletList,
                                i = r.orderedList,
                                s = r.paragraph,
                                a = "ul" === n ? o : i;
                            n ? (t.prev && !qm(t.prev) && e.closeNode(), e.openNode(a, {
                                rawHTML: n
                            })) : (e.closeNode(), t.next && !qm(t.next) && e.openNode(s))
                        }
                    },
                    li: function(e, t, n) {
                        var r;
                        if ("tableCell" === (null === (r = t.parent) || void 0 === r ? void 0 : r.type)) {
                            var i = e.schema.nodes,
                                s = i.listItem,
                                a = i.paragraph;
                            if (n) {
                                var l = function(e) {
                                    var t = e.literal;
                                    return {
                                        task: /data-task/.test(t),
                                        checked: /data-task-checked/.test(t)
                                    }
                                }(t);
                                t.prev && !qm(t.prev) && e.closeNode(), e.openNode(s, o({
                                    rawHTML: n
                                }, l)), t.next && !qm(t.next) && e.openNode(a)
                            } else t.prev && !qm(t.prev) && e.closeNode(), e.closeNode()
                        }
                    }
                },
                $m = function(e) {
                    var t = {};
                    return Object.keys(e).forEach((function(n) {
                        n.split(", ").forEach((function(r) {
                            var o = r.toLowerCase();
                            t[o] = e[n]
                        }))
                    })), t
                }(jm);

            function _m(e) {
                return "htmlInline" === e.type && va.test(e.literal)
            }

            function Um(e) {
                vi()(e.childNodes).forEach((function(e) {
                    if (Ta(e)) {
                        var t = e.nodeName.toLowerCase();
                        e.setAttribute("data-raw-html", t), e.childNodes && Um(e)
                    }
                }))
            }
            var Wm = {
                text: function(e, t) {
                    e.addText(t.literal || "")
                },
                paragraph: function(e, t, n, r) {
                    var o;
                    if (n.entering) {
                        var i = e.schema.nodes.paragraph;
                        "paragraph" === (null === (o = t.prev) || void 0 === o ? void 0 : o.type) && (e.openNode(i, r), e.closeNode()), e.openNode(i, r)
                    } else e.closeNode()
                },
                heading: function(e, t, n, r) {
                    if (n.entering) {
                        var i = t,
                            s = i.level,
                            a = i.headingType;
                        e.openNode(e.schema.nodes.heading, o({
                            level: s,
                            headingType: a
                        }, r))
                    } else e.closeNode()
                },
                codeBlock: function(e, t, n) {
                    var r = e.schema.nodes.codeBlock,
                        i = t,
                        s = i.info,
                        a = i.literal;
                    e.openNode(r, o({
                        language: s
                    }, n)), e.addText(Bm(a || "")), e.closeNode()
                },
                list: function(e, t, n, r) {
                    if (n.entering) {
                        var i = e.schema.nodes,
                            s = i.bulletList,
                            a = i.orderedList,
                            l = t.listData,
                            c = l.type,
                            u = l.start;
                        "bullet" === c ? e.openNode(s, r) : e.openNode(a, o({
                            order: u
                        }, r))
                    } else e.closeNode()
                },
                item: function(e, t, n, r) {
                    var i = n.entering,
                        s = e.schema.nodes.listItem,
                        a = t.listData,
                        l = a.task,
                        c = a.checked;
                    if (i) {
                        var u = o(o(o({}, l && {
                            task: l
                        }), c && {
                            checked: c
                        }), r);
                        e.openNode(s, u)
                    } else e.closeNode()
                },
                blockQuote: function(e, t, n, r) {
                    n.entering ? e.openNode(e.schema.nodes.blockQuote, r) : e.closeNode()
                },
                image: function(e, t, n, r) {
                    var i = n.entering,
                        s = n.skipChildren,
                        a = e.schema.nodes.image,
                        l = t,
                        c = l.destination,
                        u = l.firstChild;
                    i && s && s(), e.addNode(a, o(o({
                        imageUrl: c
                    }, u && {
                        altText: u.literal
                    }), r))
                },
                thematicBreak: function(e, t, n, r) {
                    e.addNode(e.schema.nodes.thematicBreak, r)
                },
                strong: function(e, t, n, r) {
                    var o = n.entering,
                        i = e.schema.marks.strong;
                    o ? e.openMark(i.create(r)) : e.closeMark(i)
                },
                emph: function(e, t, n, r) {
                    var o = n.entering,
                        i = e.schema.marks.emph;
                    o ? e.openMark(i.create(r)) : e.closeMark(i)
                },
                link: function(e, t, n, r) {
                    var i = n.entering,
                        s = e.schema.marks.link,
                        a = t,
                        l = a.destination,
                        c = a.title;
                    if (i) {
                        var u = o({
                            linkUrl: l,
                            title: c
                        }, r);
                        e.openMark(s.create(u))
                    } else e.closeMark(s)
                },
                softbreak: function(e, t) {
                    if ("paragraph" === t.parent.type) {
                        var n = t.prev,
                            r = t.next;
                        n && !_m(n) && e.closeNode(), r && !_m(r) && e.openNode(e.schema.nodes.paragraph)
                    }
                },
                table: function(e, t, n, r) {
                    n.entering ? e.openNode(e.schema.nodes.table, r) : e.closeNode()
                },
                tableHead: function(e, t, n, r) {
                    n.entering ? e.openNode(e.schema.nodes.tableHead, r) : e.closeNode()
                },
                tableBody: function(e, t, n, r) {
                    n.entering ? e.openNode(e.schema.nodes.tableBody, r) : e.closeNode()
                },
                tableRow: function(e, t, n, r) {
                    n.entering ? e.openNode(e.schema.nodes.tableRow, r) : e.closeNode()
                },
                tableCell: function(e, t, n) {
                    var r = n.entering;
                    if (!t.ignored) {
                        var i = function(t) {
                            return t && (Hm(t) || Fm(e, t))
                        };
                        if (r) {
                            var s = e.schema.nodes,
                                a = s.tableHeadCell,
                                l = s.tableBodyCell,
                                c = s.paragraph,
                                u = t.parent.parent,
                                d = "tableHead" === u.type ? a : l,
                                p = (u.parent.columns[t.startIdx] || {}).align,
                                h = o({}, t.attrs);
                            p && (h.align = p), e.openNode(d, h), i(t.firstChild) && e.openNode(c)
                        } else i(t.lastChild) && e.closeNode(), e.closeNode()
                    }
                },
                strike: function(e, t, n, r) {
                    var o = n.entering,
                        i = e.schema.marks.strike;
                    o ? e.openMark(i.create(r)) : e.closeMark(i)
                },
                code: function(e, t, n, r) {
                    var o = e.schema.marks.code;
                    e.openMark(o.create(r)), e.addText(Bm(t.literal || "")), e.closeMark(o)
                },
                customBlock: function(e, t) {
                    var n = e.schema.nodes,
                        r = n.customBlock,
                        o = n.paragraph,
                        i = t,
                        s = i.info,
                        a = i.literal;
                    e.openNode(r, {
                        info: s
                    }), e.addText(Bm(a || "")), e.closeNode(), t.next || (e.openNode(o), e.closeNode())
                },
                frontMatter: function(e, t) {
                    e.openNode(e.schema.nodes.frontMatter), e.addText(t.literal), e.closeNode()
                },
                htmlInline: function(e, t) {
                    var n = t.literal,
                        r = n.match(ga),
                        o = r[1],
                        i = r[3],
                        s = (o || i).toLowerCase(),
                        a = e.schema.marks[s],
                        l = rh(n);
                    if (null == a ? void 0 : a.spec.attrs.htmlInline)
                        if (o) {
                            var c = ih(l);
                            e.openMark(a.create({
                                htmlAttrs: c
                            }))
                        } else e.closeMark(a);
                    else {
                        var u = $m[s];
                        u && u(e, t, o)
                    }
                },
                htmlBlock: function(e, t) {
                    var n = t.literal,
                        r = document.createElement("div");
                    if (ya.test(n)) e.openNode(e.schema.nodes.htmlComment), e.addText(t.literal), e.closeNode();
                    else {
                        var o = n.match(ga),
                            i = o[1],
                            s = o[3],
                            a = (i || s).toLowerCase(),
                            l = e.schema.nodes[a],
                            c = rh(n);
                        if (null == l ? void 0 : l.spec.attrs.htmlBlock) {
                            var u = ih(c),
                                d = oh(t, a);
                            e.addNode(l, {
                                htmlAttrs: u,
                                childrenHTML: d
                            })
                        } else r.innerHTML = c, Um(r), e.convertByDOMParser(r)
                    }
                },
                customInline: function(e, t, n) {
                    var r = n.entering,
                        o = n.skipChildren,
                        i = t,
                        s = i.info,
                        a = i.firstChild,
                        l = e.schema;
                    if (-1 !== s.indexOf("widget") && r) {
                        var c = oa(t);
                        o(), e.addNode(l.nodes.widget, {
                            info: s
                        }, [l.text(Qs(s, c))])
                    } else {
                        var u = "$$";
                        r && (u += a ? s + " " : s), e.addText(u)
                    }
                }
            };
            var Jm = function() {
                    function e(e, t) {
                        this.schema = e, this.convertors = t, this.stack = [{
                            type: this.schema.topNodeType,
                            attrs: null,
                            content: []
                        }], this.marks = m.none
                    }
                    return e.prototype.top = function() {
                        return et(this.stack)
                    }, e.prototype.push = function(e) {
                        this.stack.length && this.top().content.push(e)
                    }, e.prototype.addText = function(e) {
                        if (e) {
                            var t = this.top().content,
                                n = et(t),
                                r = this.schema.text(e, this.marks),
                                o = n && (s = r, !!((i = n).isText && s.isText && m.sameSet(i.marks, s.marks)) && i.withText(i.text + s.text));
                            o ? t[t.length - 1] = o : t.push(r)
                        }
                        var i, s
                    }, e.prototype.openMark = function(e) {
                        this.marks = e.addToSet(this.marks)
                    }, e.prototype.closeMark = function(e) {
                        this.marks = e.removeFromSet(this.marks)
                    }, e.prototype.addNode = function(e, t, n) {
                        var r = e.createAndFill(t, n, this.marks);
                        return r ? (this.push(r), r) : null
                    }, e.prototype.openNode = function(e, t) {
                        this.stack.push({
                            type: e,
                            attrs: t,
                            content: []
                        })
                    }, e.prototype.closeNode = function() {
                        this.marks.length && (this.marks = m.none);
                        var e = this.stack.pop(),
                            t = e.type,
                            n = e.attrs,
                            r = e.content;
                        return this.addNode(t, n, r)
                    }, e.prototype.convertByDOMParser = function(e) {
                        var t = this;
                        te.fromSchema(this.schema).parse(e).content.forEach((function(e) {
                            return t.push(e)
                        }))
                    }, e.prototype.closeUnmatchedHTMLInline = function(e, t) {
                        var n;
                        if (!t && "htmlInline" !== e.type)
                            for (var r = this.stack.length - 1; r >= 0; r -= 1) {
                                var o = this.stack[r];
                                if (!(null === (n = o.attrs) || void 0 === n ? void 0 : n.rawHTML)) break;
                                o.content.length ? this.closeNode() : this.stack.pop()
                            }
                    }, e.prototype.convert = function(e, t) {
                        for (var n = e.walker(), r = n.next(), o = function() {
                            var e = r.node,
                                o = r.entering,
                                s = i.convertors[e.type],
                                a = !1;
                            if (s) {
                                var l = {
                                    entering: o,
                                    leaf: !Ws(e),
                                    getChildrenText: Js,
                                    options: {
                                        gfm: !0,
                                        nodeId: !1,
                                        tagFilter: !1,
                                        softbreak: "\n"
                                    },
                                    skipChildren: function() {
                                        a = !0
                                    }
                                };
                                if (i.closeUnmatchedHTMLInline(e, o), s(i, e, l), (null == t ? void 0 : t.node) === e) {
                                    var c = i.stack.reduce((function(e, t) {
                                        return e + t.content.reduce((function(e, t) {
                                            return e + t.nodeSize
                                        }), 0)
                                    }), 0) + 1;
                                    t.setMappedPos(c)
                                }
                            }
                            a && (n.resumeAt(e, !1), n.next()), r = n.next()
                        }, i = this; r;) o()
                    }, e.prototype.convertNode = function(e, t) {
                        return this.convert(e, t), this.stack.length ? this.closeNode() : null
                    }, e
                }(),
                Gm = Jm;
            var Km = {
                text: function(e, t) {
                    var n, r = t.node,
                        o = null !== (n = r.text) && void 0 !== n ? n : "";
                    (r.marks || []).some((function(e) {
                        return "link" === e.type.name
                    })) ? e.text(Ze(o), !1) : e.text(o)
                },
                paragraph: function(e, t) {
                    var n = t.node,
                        r = t.parent,
                        o = t.index,
                        i = void 0 === o ? 0 : o;
                    if (e.stopNewline) e.convertInline(n);
                    else {
                        var s = 0 === i,
                            a = !s && r.child(i - 1),
                            l = a && 0 === a.childCount,
                            c = i < r.childCount - 1 && r.child(i + 1),
                            u = c && "paragraph" === c.type.name,
                            d = 0 === n.childCount;
                        if (d && l) e.write("<br>\n");
                        else if (!d || l || s) e.convertInline(n), u ? e.write("\n") : e.closeBlock(n);
                        else {
                            if ("listItem" === (null == r ? void 0 : r.type.name)) {
                                var p = e.getDelim();
                                e.setDelim(""), e.write("<br>"), e.setDelim(p)
                            }
                            e.write("\n")
                        }
                    }
                },
                heading: function(e, t, n) {
                    var r = t.node,
                        o = n.delim;
                    "atx" === r.attrs.headingType ? (e.write(o + " "), e.convertInline(r), e.closeBlock(r)) : (e.convertInline(r), e.ensureNewLine(), e.write(o), e.closeBlock(r))
                },
                codeBlock: function(e, t, n) {
                    var r = t.node,
                        o = n.delim,
                        i = n.text,
                        s = o,
                        a = s[0],
                        l = s[1];
                    e.write(a), e.ensureNewLine(), e.text(i, !1), e.ensureNewLine(), e.write(l), e.closeBlock(r)
                },
                blockQuote: function(e, t, n) {
                    var r = t.node,
                        o = t.parent,
                        i = n.delim;
                    (null == o ? void 0 : o.type.name) === r.type.name && e.flushClose(1), e.wrapBlock(i, null, r, (function() {
                        return e.convertNode(r)
                    }))
                },
                bulletList: function(e, t, n) {
                    var r = t.node,
                        o = n.delim;
                    e.convertList(r, Ke(" ", 4), (function() {
                        return o + " "
                    }))
                },
                orderedList: function(e, t) {
                    var n = t.node,
                        r = n.attrs.order || 1;
                    e.convertList(n, Ke(" ", 4), (function(e) {
                        return String(r + e) + ". "
                    }))
                },
                listItem: function(e, t) {
                    var n = t.node,
                        r = n.attrs,
                        o = r.task,
                        i = r.checked;
                    o && e.write("[" + (i ? "x" : " ") + "] "), e.convertNode(n)
                },
                image: function(e, t, n) {
                    var r = n.attrs;
                    e.write("![" + (null == r ? void 0 : r.altText) + "](" + (null == r ? void 0 : r.imageUrl) + ")")
                },
                thematicBreak: function(e, t, n) {
                    var r = t.node,
                        o = n.delim;
                    e.write(o), e.closeBlock(r)
                },
                table: function(e, t) {
                    var n = t.node;
                    e.convertNode(n), e.closeBlock(n)
                },
                tableHead: function(e, t, n) {
                    var r = t.node,
                        o = n.delim,
                        i = r.firstChild;
                    e.convertNode(r);
                    var s = null != o ? o : "";
                    !o && i && i.forEach((function(e) {
                        var t = function(e, t) {
                            var n = e.length,
                                r = "",
                                o = "";
                            return "left" === t ? (r = ":", n -= 1) : "right" === t ? (o = ":", n -= 1) : "center" === t && (r = ":", o = ":", n -= 2), "" + r + Ke("-", Math.max(n, 3)) + o
                        }(e.textContent, e.attrs.align);
                        s += "| " + t + " "
                    })), e.write(s + "|"), e.ensureNewLine()
                },
                tableBody: function(e, t) {
                    var n = t.node;
                    e.convertNode(n)
                },
                tableRow: function(e, t) {
                    var n = t.node;
                    e.convertNode(n), e.write("|"), e.ensureNewLine()
                },
                tableHeadCell: function(e, t, n) {
                    var r = t.node,
                        o = n.delim,
                        i = void 0 === o ? "| " : o;
                    e.write(i), e.convertTableCell(r), e.write(" ")
                },
                tableBodyCell: function(e, t, n) {
                    var r = t.node,
                        o = n.delim,
                        i = void 0 === o ? "| " : o;
                    e.write(i), e.convertTableCell(r), e.write(" ")
                },
                customBlock: function(e, t, n) {
                    var r = t.node,
                        o = n.delim,
                        i = n.text,
                        s = o,
                        a = s[0],
                        l = s[1];
                    e.write(a), e.ensureNewLine(), e.text(i, !1), e.ensureNewLine(), e.write(l), e.closeBlock(r)
                },
                frontMatter: function(e, t, n) {
                    var r = t.node,
                        o = n.text;
                    e.text(o, !1), e.closeBlock(r)
                },
                widget: function(e, t, n) {
                    var r = n.text;
                    e.write(r)
                },
                html: function(e, t, n) {
                    var r = t.node,
                        o = n.text;
                    e.write(o), r.attrs.htmlBlock && e.closeBlock(r)
                },
                htmlComment: function(e, t, n) {
                    var r = t.node,
                        o = n.text;
                    e.write(o), e.closeBlock(r)
                }
            };

            function Zm(e, t) {
                var n = e.text,
                    r = /`+/g,
                    o = 0;
                if (e.isText && n)
                    for (var i = r.exec(n); i;) o = Math.max(o, i[0].length), i = r.exec(n);
                for (var s = o > 0 && t > 0 ? " `" : "`", a = 0; a < o; a += 1) s += "`";
                return o > 0 && t < 0 && (s += " "), s
            }

            function Xm(e) {
                return e ? ["<" + e + ">", "</" + e + ">"] : null
            }

            function Qm(e) {
                return e ? "<" + e + ">" : null
            }

            function Ym(e) {
                return e ? "</" + e + ">" : null
            }
            var eg = {
                    heading: function(e) {
                        var t = e.node.attrs,
                            n = t.level,
                            r = Ke("#", n);
                        return "setext" === t.headingType && (r = 1 === n ? "===" : "---"), {
                            delim: r,
                            rawHTML: Xm(t.rawHTML)
                        }
                    },
                    codeBlock: function(e) {
                        var t = e.node,
                            n = t.attrs,
                            r = t.textContent;
                        return {
                            delim: ["```" + (n.language || ""), "```"],
                            rawHTML: Xm(n.rawHTML),
                            text: r
                        }
                    },
                    blockQuote: function(e) {
                        return {
                            delim: "> ",
                            rawHTML: Xm(e.node.attrs.rawHTML)
                        }
                    },
                    bulletList: function(e, t) {
                        var n = e.node,
                            r = t.inTable,
                            o = n.attrs.rawHTML;
                        return r && (o = o || "ul"), {
                            delim: "*",
                            rawHTML: Xm(o)
                        }
                    },
                    orderedList: function(e, t) {
                        var n = e.node,
                            r = t.inTable,
                            o = n.attrs.rawHTML;
                        return r && (o = o || "ol"), {
                            rawHTML: Xm(o)
                        }
                    },
                    listItem: function(e, t) {
                        var n = e.node,
                            r = t.inTable,
                            o = n.attrs,
                            i = o.task,
                            s = o.checked,
                            a = n.attrs.rawHTML;
                        return r && (a = a || "li"), {
                            rawHTML: a ? ["<" + a + (i ? ' class="task-list-item' + (s ? " checked" : "") + '"' : "") + (i ? " data-task" + (s ? " data-task-checked" : "") : "") + ">", "</" + a + ">"] : null
                        }
                    },
                    table: function(e) {
                        return {
                            rawHTML: Xm(e.node.attrs.rawHTML)
                        }
                    },
                    tableHead: function(e) {
                        return {
                            rawHTML: Xm(e.node.attrs.rawHTML)
                        }
                    },
                    tableBody: function(e) {
                        return {
                            rawHTML: Xm(e.node.attrs.rawHTML)
                        }
                    },
                    tableRow: function(e) {
                        return {
                            rawHTML: Xm(e.node.attrs.rawHTML)
                        }
                    },
                    tableHeadCell: function(e) {
                        return {
                            rawHTML: Xm(e.node.attrs.rawHTML)
                        }
                    },
                    tableBodyCell: function(e) {
                        return {
                            rawHTML: Xm(e.node.attrs.rawHTML)
                        }
                    },
                    image: function(e) {
                        var t = e.node.attrs,
                            n = t.rawHTML,
                            r = t.altText,
                            o = t.imageUrl.replace(/&amp;/g, "&"),
                            i = r ? ' alt="' + _e(r) + '"' : "";
                        return {
                            rawHTML: n ? "<" + n + ' src="' + _e(o) + '"' + i + ">" : null,
                            attrs: {
                                altText: Ze(r || ""),
                                imageUrl: o
                            }
                        }
                    },
                    thematicBreak: function(e) {
                        return {
                            delim: "***",
                            rawHTML: Qm(e.node.attrs.rawHTML)
                        }
                    },
                    customBlock: function(e) {
                        var t = e.node,
                            n = t.attrs,
                            r = t.textContent;
                        return {
                            delim: ["$$" + n.info, "$$"],
                            text: r
                        }
                    },
                    frontMatter: function(e) {
                        return {
                            text: e.node.textContent
                        }
                    },
                    widget: function(e) {
                        return {
                            text: e.node.textContent
                        }
                    },
                    strong: function(e, t) {
                        var n = e.node,
                            r = t.entering,
                            o = n.attrs.rawHTML;
                        return {
                            delim: "**",
                            rawHTML: r ? Qm(o) : Ym(o)
                        }
                    },
                    emph: function(e, t) {
                        var n = e.node,
                            r = t.entering,
                            o = n.attrs.rawHTML;
                        return {
                            delim: "*",
                            rawHTML: r ? Qm(o) : Ym(o)
                        }
                    },
                    strike: function(e, t) {
                        var n = e.node,
                            r = t.entering,
                            o = n.attrs.rawHTML;
                        return {
                            delim: "~~",
                            rawHTML: r ? Qm(o) : Ym(o)
                        }
                    },
                    link: function(e, t) {
                        var n, r, o = e.node,
                            i = t.entering,
                            s = o.attrs,
                            a = s.title,
                            l = s.rawHTML,
                            c = s.linkUrl.replace(/&amp;/g, "&"),
                            u = a ? ' title="' + _e(a) + '"' : "";
                        return i ? {
                            delim: "[",
                            rawHTML: l ? "<" + l + ' href="' + _e(c) + '"' + u + ">" : null
                        } : {
                            delim: "](" + c + (a ? " " + (n = Ze(a), (r = -1 === n.indexOf('"') ? '""' : -1 === n.indexOf("'") ? "''" : "()")[0] + n + r[1]) : "") + ")",
                            rawHTML: Ym(l)
                        }
                    },
                    code: function(e, t) {
                        var n = e.node,
                            r = e.parent,
                            o = e.index,
                            i = void 0 === o ? 0 : o,
                            s = t.entering;
                        return {
                            delim: s ? Zm(r.child(i), -1) : Zm(r.child(i - 1), 1),
                            rawHTML: s ? Qm(n.attrs.rawHTML) : Ym(n.attrs.rawHTML)
                        }
                    },
                    htmlComment: function(e) {
                        return {
                            text: e.node.textContent
                        }
                    },
                    html: function(e, t) {
                        var n = e.node,
                            r = t.entering,
                            o = n.type.name,
                            i = n.attrs.htmlAttrs,
                            s = "<" + o,
                            a = "</" + o + ">";
                        return Object.keys(i).forEach((function(e) {
                            s += " " + e + '="' + i[e].replace(/"/g, "'") + '"'
                        })), s += ">", n.attrs.htmlInline ? {
                            rawHTML: r ? s : a
                        } : {
                            text: "" + s + n.attrs.childrenHTML + a
                        }
                    }
                },
                tg = {
                    strong: {
                        mixable: !0,
                        removedEnclosingWhitespace: !0
                    },
                    emph: {
                        mixable: !0,
                        removedEnclosingWhitespace: !0
                    },
                    strike: {
                        mixable: !0,
                        removedEnclosingWhitespace: !0
                    },
                    code: {
                        escape: !1
                    },
                    link: null,
                    html: null
                };

            function ng(e) {
                var t = {};
                return Object.keys(Km).forEach((function(n) {
                    t[n] = function(t, r) {
                        if (Km[n]) {
                            var o = e[n],
                                i = o ? o(r, {
                                    inTable: t.inTable
                                }) : {};
                            ! function(e, t) {
                                var n = t.state,
                                    r = t.nodeInfo,
                                    o = t.params,
                                    i = o.rawHTML;
                                i ? lf()(e, ["heading", "codeBlock"]) > -1 ? function(e, t, n) {
                                    var r = n[0],
                                        o = n[1];
                                    e.write(r), e.convertInline(t), e.write(o)
                                }(n, r.node, i) : lf()(e, ["image", "thematicBreak"]) > -1 ? n.write(i) : function(e, t, n) {
                                    var r = t.node,
                                        o = t.parent,
                                        i = n[0],
                                        s = n[1];
                                    e.stopNewline = !0, e.write(i), e.convertNode(r), e.write(s), "doc" === (null == o ? void 0 : o.type.name) && (e.closeBlock(r), e.stopNewline = !1)
                                }(n, r, i) : Km[e](n, r, o)
                            }(n, {
                                state: t,
                                nodeInfo: r,
                                params: i
                            })
                        }
                    }
                })), t
            }

            function rg(e) {
                Object.keys(e).forEach((function(t) {
                    var n = eg[t],
                        r = e[t];
                    eg[t] = n ? function(e, t) {
                        return t.origin = function() {
                            return n(e, t)
                        }, r(e, t)
                    } : r, delete e[t]
                }));
                var t = ng(eg),
                    n = function(e) {
                        var t = {};
                        return Object.keys(tg).forEach((function(n) {
                            t[n] = function(t, r) {
                                var i = tg[n],
                                    s = e[n],
                                    a = s && t && !Oe()(r) ? s(t, {
                                        entering: r
                                    }) : {};
                                return o(o({}, a), i)
                            }
                        })), t
                    }(eg);
                return {
                    nodeTypeConvertors: t,
                    markTypeConvertors: n
                }
            }
            var og = function() {
                    function e(e) {
                        var t = e.nodeTypeConvertors,
                            n = e.markTypeConvertors;
                        this.nodeTypeConvertors = t, this.markTypeConvertors = n, this.delim = "", this.result = "", this.closed = !1, this.tightList = !1, this.stopNewline = !1, this.inTable = !1
                    }
                    return e.prototype.getMarkConvertor = function(e) {
                        var t = e.attrs.htmlInline ? "html" : e.type.name;
                        return this.markTypeConvertors[t]
                    }, e.prototype.isInBlank = function() {
                        return /(^|\n)$/.test(this.result)
                    }, e.prototype.markText = function(e, t, n, r) {
                        var o = this.getMarkConvertor(e);
                        if (o) {
                            var i = o({
                                    node: e,
                                    parent: n,
                                    index: r
                                }, t),
                                s = i.delim;
                            return i.rawHTML || s
                        }
                        return ""
                    }, e.prototype.setDelim = function(e) {
                        this.delim = e
                    }, e.prototype.getDelim = function() {
                        return this.delim
                    }, e.prototype.flushClose = function(e) {
                        if (!this.stopNewline && this.closed) {
                            if (this.isInBlank() || (this.result += "\n"), e || (e = 2), e > 1) {
                                var t = this.delim,
                                    n = /\s+$/.exec(t);
                                n && (t = t.slice(0, t.length - n[0].length));
                                for (var r = 1; r < e; r += 1) this.result += t + "\n"
                            }
                            this.closed = !1
                        }
                    }, e.prototype.wrapBlock = function(e, t, n, r) {
                        var o = this.getDelim();
                        this.write(t || e), this.setDelim(this.getDelim() + e), r(), this.setDelim(o), this.closeBlock(n)
                    }, e.prototype.ensureNewLine = function() {
                        this.isInBlank() || (this.result += "\n")
                    }, e.prototype.write = function(e) {
                        void 0 === e && (e = ""), this.flushClose(), this.delim && this.isInBlank() && (this.result += this.delim), e && (this.result += e)
                    }, e.prototype.closeBlock = function(e) {
                        this.closed = e
                    }, e.prototype.text = function(e, t) {
                        void 0 === t && (t = !0);
                        for (var n = e.split("\n"), r = 0; r < n.length; r += 1) this.write(), this.result += t ? Xe(n[r]) : n[r], r !== n.length - 1 && (this.result += "\n")
                    }, e.prototype.convertBlock = function(e, t, n) {
                        var r = e.type.name,
                            o = this.nodeTypeConvertors[r],
                            i = {
                                node: e,
                                parent: t,
                                index: n
                            };
                        e.attrs.htmlBlock ? this.nodeTypeConvertors.html(this, i) : o && o(this, i)
                    }, e.prototype.convertInline = function(e) {
                        var t = this,
                            n = [],
                            r = "",
                            o = function(o, i, s) {
                                var a = o ? o.marks : [],
                                    l = r;
                                r = "";
                                var c = o && o.isText && a.some((function(e) {
                                    var n = t.getMarkConvertor(e),
                                        r = n && n();
                                    return r && r.removedEnclosingWhitespace
                                }));
                                if (c && o && o.text) {
                                    var u = /^(\s*)(.*?)(\s*)$/m.exec(o.text),
                                        d = u[1],
                                        p = u[2],
                                        h = u[3];
                                    l += d, r = h, (d || h) && ((o = p ? o.withText(p) : null) || (a = n))
                                }
                                for (var f = a.length && et(a), m = f && t.getMarkConvertor(f), g = m && m(), v = g && !1 === g.escape, y = a.length - (v ? 1 : 0), b = 0; b < y; b += 1) {
                                    p = a[b];
                                    if (g && !g.mixable) break;
                                    for (var w = 0; w < n.length; w += 1) {
                                        var k = n[w];
                                        if (g && !g.mixable) break;
                                        if (p.eq(k)) {
                                            b > w ? a = a.slice(0, w).concat(p).concat(a.slice(w, b)).concat(a.slice(b + 1, y)) : w > b && (a = a.slice(0, b).concat(a.slice(b + 1, w)).concat(p).concat(a.slice(w, y)));
                                            break
                                        }
                                    }
                                }
                                for (var x = 0; x < Math.min(n.length, y) && a[x].eq(n[x]);) x += 1;
                                for (; x < n.length;) {
                                    var C = n.pop();
                                    C && t.text(t.markText(C, !1, e, s), !1)
                                }
                                if (l && t.text(l), o) {
                                    for (; n.length < y;) {
                                        p = a[n.length];
                                        n.push(p), t.text(t.markText(p, !0, e, s), !1)
                                    }
                                    v && o.isText ? t.text(t.markText(f, !0, e, s) + o.text + t.markText(f, !1, e, s + 1), !1) : t.convertBlock(o, e, s)
                                }
                            };
                        e.forEach(o), o(null, 0, e.childCount)
                    }, e.prototype.convertList = function(e, t, n) {
                        var r, o = this;
                        this.closed && this.closed.type === e.type ? this.flushClose(3) : this.tightList && this.flushClose(1);
                        var i = null === (r = e.attrs.tight) || void 0 === r || r,
                            s = this.tightList;
                        this.tightList = i, e.forEach((function(r, s, a) {
                            a && i && o.flushClose(1), o.wrapBlock(t, n(a), e, (function() {
                                return o.convertBlock(r, e, a)
                            }))
                        })), this.tightList = s
                    }, e.prototype.convertTableCell = function(e) {
                        var t = this;
                        this.stopNewline = !0, this.inTable = !0, e.forEach((function(n, r, o) {
                            Ue(["bulletList", "orderedList"], n.type.name) ? (t.convertBlock(n, e, o), t.closed = !1) : (t.convertInline(n), o < e.childCount - 1 && "paragraph" === e.child(o + 1).type.name && t.write("<br>"))
                        })), this.stopNewline = !1, this.inTable = !1
                    }, e.prototype.convertNode = function(e, t) {
                        var n = this;
                        return e.forEach((function(r, o, i) {
                            if (n.convertBlock(r, e, i), (null == t ? void 0 : t.node) === r) {
                                var s = n.result.split("\n");
                                t.setMappedPos([s.length, et(s).length + 1])
                            }
                        })), this.result
                    }, e
                }(),
                ig = og,
                sg = function() {
                    function e(e, t, n, r) {
                        var i = this;
                        this.setMappedPos = function(e) {
                            i.mappedPosWhenConverting = e
                        }, this.schema = e, this.eventEmitter = r, this.focusedNode = null, this.mappedPosWhenConverting = null, this.toWwConvertors = function(e) {
                            var t = Object.keys(e),
                                n = o({}, Wm),
                                r = new Xp({
                                    gfm: !0,
                                    nodeId: !0,
                                    convertors: e
                                }).getConvertors();
                            return t.forEach((function(t) {
                                var o = Wm[t];
                                o && !Ue(["htmlBlock", "htmlInline"], t) && (n[t] = function(n, i, s) {
                                    s.origin = function() {
                                        return r[t](i, s, r)
                                    };
                                    var a, l = e[t](i, s);
                                    if (l) {
                                        var c = Array.isArray(l) ? l[0] : l;
                                        a = {
                                            htmlAttrs: c.attributes,
                                            classNames: c.classNames
                                        }
                                    }
                                    o(n, i, s, a)
                                })
                            })), n
                        }(n), this.toMdConvertors = rg(t || {}), this.eventEmitter.listen("setFocusedNode", (function(e) {
                            return i.focusedNode = e
                        }))
                    }
                    return e.prototype.getMappedPos = function() {
                        return this.mappedPosWhenConverting
                    }, e.prototype.getInfoForPosSync = function() {
                        return {
                            node: this.focusedNode,
                            setMappedPos: this.setMappedPos
                        }
                    }, e.prototype.toWysiwygModel = function(e) {
                        return new Gm(this.schema, this.toWwConvertors).convertNode(e, this.getInfoForPosSync())
                    }, e.prototype.toMarkdownText = function(e) {
                        var t = new ig(this.toMdConvertors).convertNode(e, this.getInfoForPosSync());
                        return t = this.eventEmitter.emitReduce("beforeConvertWysiwygToMarkdown", t)
                    }, e
                }(),
                ag = sg;

            function lg(e) {
                var t = e.plugins,
                    n = e.eventEmitter,
                    r = e.usageStatistics,
                    i = e.instance;
                return n.listen("mixinTableOffsetMapPrototype", _h), (null != t ? t : []).reduce((function(e, t) {
                    var s = function(e) {
                        var t = e.plugin,
                            n = {
                                eventEmitter: e.eventEmitter,
                                usageStatistics: e.usageStatistics,
                                instance: e.instance,
                                pmState: {
                                    Plugin: an,
                                    PluginKey: un,
                                    Selection: Vt,
                                    TextSelection: Ut
                                },
                                pmView: {
                                    Decoration: Vo,
                                    DecorationSet: _o
                                },
                                pmModel: {
                                    Fragment: d
                                },
                                pmRules: {
                                    InputRule: ns,
                                    inputRules: rs,
                                    undoInputRule: ss
                                },
                                pmKeymap: {
                                    keymap: Ai
                                },
                                i18n: hf
                            };
                        if (aa()(t)) {
                            var r = t[0],
                                o = t[1];
                            return r(n, void 0 === o ? {} : o)
                        }
                        return t(n)
                    }({
                        plugin: t,
                        eventEmitter: n,
                        usageStatistics: r,
                        instance: i
                    });
                    if (!s) throw new Error("The return value of the executed plugin is empty.");
                    var a = s.markdownParsers,
                        l = s.toHTMLRenderers,
                        c = s.toMarkdownRenderers,
                        u = s.markdownPlugins,
                        p = s.wysiwygPlugins,
                        h = s.wysiwygNodeViews,
                        f = s.markdownCommands,
                        m = s.wysiwygCommands,
                        g = s.toolbarItems;
                    return l && (e.toHTMLRenderers = nt(e.toHTMLRenderers, l)), c && (e.toMarkdownRenderers = nt(e.toMarkdownRenderers, c)), u && (e.mdPlugins = e.mdPlugins.concat(u)), p && (e.wwPlugins = e.wwPlugins.concat(p)), h && (e.wwNodeViews = o(o({}, e.wwNodeViews), h)), f && (e.mdCommands = o(o({}, e.mdCommands), f)), m && (e.wwCommands = o(o({}, e.wwCommands), m)), g && (e.toolbarItems = e.toolbarItems.concat(g)), a && (e.markdownParsers = o(o({}, e.markdownParsers), a)), e
                }), {
                    toHTMLRenderers: {},
                    toMarkdownRenderers: {},
                    mdPlugins: [],
                    wwPlugins: [],
                    wwNodeViews: {},
                    mdCommands: {},
                    wwCommands: {},
                    toolbarItems: [],
                    markdownParsers: {}
                })
            }
            var cg = function() {
                    function e(e) {
                        var t = this;
                        this.options = ve()({
                            linkAttributes: null,
                            extendedAutolinks: !1,
                            customHTMLRenderer: null,
                            referenceDefinition: !1,
                            customHTMLSanitizer: null,
                            frontMatter: !1,
                            usageStatistics: !0,
                            theme: "light"
                        }, e), this.eventEmitter = new Im;
                        var n, r = Ge(this.options.linkAttributes),
                            i = lg({
                                plugins: this.options.plugins,
                                eventEmitter: this.eventEmitter,
                                usageStatistics: this.options.usageStatistics,
                                instance: this
                            }) || {},
                            s = i.toHTMLRenderers,
                            a = i.markdownParsers,
                            l = this.options,
                            c = l.customHTMLRenderer,
                            u = l.extendedAutolinks,
                            d = l.referenceDefinition,
                            p = l.frontMatter,
                            h = l.customHTMLSanitizer,
                            f = {
                                linkAttributes: r,
                                customHTMLRenderer: o(o({}, s), c),
                                extendedAutolinks: u,
                                referenceDefinition: d,
                                frontMatter: p,
                                sanitizer: h || rh
                            };
                        n = f.customHTMLRenderer, ["htmlBlock", "htmlInline"].forEach((function(e) {
                            n[e] && Object.keys(n[e]).forEach((function(e) {
                                return nh(e)
                            }))
                        })), this.options.events && me()(this.options.events, (function(e, n) {
                            t.on(n, e)
                        }));
                        var m = this.options,
                            g = m.el,
                            v = m.initialValue,
                            y = m.theme,
                            b = g.innerHTML;
                        "light" !== y && g.classList.add(xa(y)), g.innerHTML = "", this.toastMark = new _p("", {
                            disallowedHtmlBlockTags: ["br", "img"],
                            extendedAutolinks: u,
                            referenceDefinition: d,
                            disallowDeepHeading: !0,
                            frontMatter: p,
                            customParser: a
                        }), this.preview = new Mh(this.eventEmitter, o(o({}, f), {
                            isViewer: !0
                        })), Vc()(this.preview.previewContent, "mousedown", this.toggleTask.bind(this)), v ? this.setMarkdown(v) : b && this.preview.setHTML(b), g.appendChild(this.preview.previewContent), this.eventEmitter.emit("load", this)
                    }
                    return e.prototype.toggleTask = function(e) {
                        var t = e.target,
                            n = getComputedStyle(t, ":before");
                        !t.hasAttribute("data-task-disabled") && t.hasAttribute("data-task") && wa(n, e.offsetX, e.offsetY) && (Sa(t, "checked"), this.eventEmitter.emit("change", {
                            source: "viewer",
                            date: e
                        }))
                    }, e.prototype.setMarkdown = function(e) {
                        var t = this.toastMark.getLineTexts(),
                            n = [t.length, et(t).length + 1],
                            r = this.toastMark.editMarkdown([1, 1], n, e || "");
                        this.eventEmitter.emit("updatePreview", r)
                    }, e.prototype.on = function(e, t) {
                        this.eventEmitter.listen(e, t)
                    }, e.prototype.off = function(e) {
                        this.eventEmitter.removeEventHandler(e)
                    }, e.prototype.addHook = function(e, t) {
                        this.eventEmitter.removeEventHandler(e), this.eventEmitter.listen(e, t)
                    }, e.prototype.destroy = function() {
                        zc()(this.preview.el, "mousedown", this.toggleTask.bind(this)), this.preview.destroy(), this.eventEmitter.emit("destroy")
                    }, e.prototype.isViewer = function() {
                        return !0
                    }, e.prototype.isMarkdownMode = function() {
                        return !1
                    }, e.prototype.isWysiwygMode = function() {
                        return !1
                    }, e
                }(),
                ug = cg;

            function dg(e) {
                return e instanceof P
            }

            function pg(e) {
                return Ue(["document", "blockQuote", "bulletList", "orderedList", "listItem", "paragraph", "heading", "emph", "strong", "strike", "link", "image", "table", "tableHead", "tableBody", "tableRow", "tableHeadCell", "tableBodyCell"], e)
            }
            var hg = {
                    openTag: function(e, t) {
                        var n = e,
                            r = n.tagName,
                            i = n.classNames,
                            s = n.attributes,
                            a = document.createElement(r),
                            l = {};
                        i && (a.className = i.join(" ")), s && (l = o(o({}, l), s)), Aa(l, a), t.push(a)
                    },
                    closeTag: function(e, t) {
                        if (t.length > 1) {
                            var n = t.pop();
                            et(t).appendChild(n)
                        }
                    },
                    html: function(e, t) {
                        et(t).insertAdjacentHTML("beforeend", e.content)
                    },
                    text: function(e, t) {
                        var n = document.createTextNode(e.content);
                        et(t).appendChild(n)
                    }
                },
                fg = function() {
                    function e(e, t) {
                        var n = dh(e, t),
                            r = o(o({}, t.htmlBlock), t.htmlInline);
                        this.customConvertorKeys = Object.keys(t).concat(Object.keys(r)), this.renderer = new Xp({
                            gfm: !0,
                            convertors: o(o({}, n), r)
                        }), this.convertors = this.renderer.getConvertors()
                    }
                    return e.prototype.generateTokens = function(e) {
                        var t = function(e) {
                                var t = e.attrs,
                                    n = e.type.name,
                                    r = {
                                        type: n,
                                        wysiwygNode: !0,
                                        literal: !pg(n) && dg(e) ? e.textContent : null
                                    },
                                    i = {
                                        heading: {
                                            level: t.level
                                        },
                                        link: {
                                            destination: t.linkUrl,
                                            title: t.title
                                        },
                                        image: {
                                            destination: t.imageUrl
                                        },
                                        codeBlock: {
                                            info: t.language
                                        },
                                        bulletList: {
                                            type: "list",
                                            listData: {
                                                type: "bullet"
                                            }
                                        },
                                        orderedList: {
                                            type: "list",
                                            listData: {
                                                type: "ordered",
                                                start: t.order
                                            }
                                        },
                                        listItem: {
                                            type: "item",
                                            listData: {
                                                task: t.task,
                                                checked: t.checked
                                            }
                                        },
                                        tableHeadCell: {
                                            type: "tableCell",
                                            cellType: "head",
                                            align: t.align
                                        },
                                        tableBodyCell: {
                                            type: "tableCell",
                                            cellType: "body",
                                            align: t.align
                                        },
                                        customBlock: {
                                            info: t.info
                                        }
                                    } [n],
                                    s = o(o({}, r), i),
                                    a = e.attrs,
                                    l = a.htmlAttrs,
                                    c = a.childrenHTML;
                                return l ? o(o({}, s), {
                                    attrs: l,
                                    childrenHTML: c
                                }) : s
                            }(e),
                            n = {
                                entering: !0,
                                leaf: !!dg(e) && e.isLeaf,
                                options: this.renderer.getOptions(),
                                getChildrenText: function() {
                                    return dg(e) ? e.textContent : ""
                                },
                                skipChildren: function() {
                                    return !1
                                }
                            },
                            r = this.convertors[e.type.name],
                            i = r(t, n, this.convertors),
                            s = aa()(i) ? i : [i];
                        return (pg(e.type.name) || e.attrs.htmlInline) && (n.entering = !1, s.push({
                            type: "text",
                            content: dg(e) ? e.textContent : ""
                        }), s = s.concat(r(t, n, this.convertors))), s
                    }, e.prototype.toDOMNode = function(e) {
                        var t = this.generateTokens(e),
                            n = [];
                        return t.forEach((function(e) {
                            return hg[e.type](e, n)
                        })), n[0]
                    }, e.prototype.getToDOMNode = function(e) {
                        return Ue(this.customConvertorKeys, e) ? this.toDOMNode.bind(this) : null
                    }, e
                }(),
                mg = null,
                gg = null;

            function vg(e, t) {
                var n = t.syncScrollTop,
                    r = t.releaseEventBlock;
                gg && clearTimeout(gg), n(e), gg = setTimeout((function() {
                    r()
                }), 15)
            }
            var yg = function() {
                    function e(e, t, n) {
                        this.latestEditorScrollTop = null, this.latestPreviewScrollTop = null, this.blockedScroll = null, this.active = !0, this.timer = null;
                        var r = t.previewContent,
                            o = t.el;
                        this.previewRoot = r, this.previewEl = o, this.mdEditor = e, this.editorView = e.view, this.toastMark = e.getToastMark(), this.eventEmitter = n, this.addScrollSyncEvent()
                    }
                    return e.prototype.addScrollSyncEvent = function() {
                        var e = this;
                        this.eventEmitter.listen("afterPreviewRender", (function() {
                            e.clearTimer(), e.timer = setTimeout((function() {
                                e.syncPreviewScrollTop(!0)
                            }), 200)
                        })), this.eventEmitter.listen("scroll", (function(t, n) {
                            e.active && ("editor" === t && "editor" !== e.blockedScroll ? e.syncPreviewScrollTop() : "preview" === t && "preview" !== e.blockedScroll && e.syncEditorScrollTop(n))
                        })), this.eventEmitter.listen("toggleScrollSync", (function(t) {
                            e.active = t
                        }))
                    }, e.prototype.getMdNodeAtPos = function(e, t) {
                        var n = e.content.findIndex(t.pos).index;
                        return this.toastMark.findFirstNodeAtLine(n + 1)
                    }, e.prototype.getScrollTopByCaretPos = function() {
                        var e = this.mdEditor.getSelection(),
                            t = this.toastMark.findFirstNodeAtLine(e[0][0]),
                            n = this.previewEl.clientHeight,
                            r = bh(this.previewRoot, t).el,
                            o = (vh(r, this.previewRoot) || r.offsetTop) + r.clientHeight - .5 * n;
                        return this.latestEditorScrollTop = null, r.getBoundingClientRect().top - this.previewEl.getBoundingClientRect().top < n ? null : o
                    }, e.prototype.syncPreviewScrollTop = function(e) {
                        void 0 === e && (e = !1);
                        var t = this,
                            n = t.editorView,
                            r = t.previewEl,
                            o = t.previewRoot,
                            i = n.dom.getBoundingClientRect(),
                            s = i.left,
                            a = i.top,
                            l = n.posAtCoords({
                                left: s,
                                top: a
                            }),
                            c = n.state.doc,
                            u = this.getMdNodeAtPos(c, l);
                        if (u && ! function(e) {
                            var t = e.type;
                            return "htmlBlock" === t || "htmlInline" === t
                        }(u)) {
                            var d = r.scrollTop,
                                p = n.dom,
                                h = p.scrollTop,
                                f = p.scrollHeight,
                                m = p.clientHeight,
                                g = p.children,
                                v = f - h <= m + 18,
                                y = v ? r.scrollHeight : 0;
                            if (h && !v) {
                                if (e) {
                                    var b = this.getScrollTopByCaretPos();
                                    if (!b) return;
                                    y = b
                                } else {
                                    var w = bh(this.previewRoot, u),
                                        k = w.el,
                                        x = mh(c, w.mdNode, g),
                                        C = x.height,
                                        T = x.rect;
                                    y = (vh(k, o) || k.offsetTop) + k.clientHeight * (a > T.top ? Math.min((a - T.top) / C, 1) : 0)
                                }
                                y = this.getResolvedScrollTop("editor", h, y, d), this.latestEditorScrollTop = h
                            }
                            y !== d && this.run("editor", y, d)
                        }
                    }, e.prototype.syncEditorScrollTop = function(e) {
                        var t = this,
                            n = t.toastMark,
                            r = t.editorView,
                            o = t.previewRoot,
                            i = t.previewEl,
                            s = r.dom,
                            a = r.state,
                            l = i.scrollTop,
                            c = i.clientHeight,
                            u = i.scrollHeight - l <= c,
                            d = s.scrollTop,
                            p = u ? s.scrollHeight : 0;
                        if (l && e && !u) {
                            if (e = function(e, t) {
                                for (; !e.getAttribute("data-nodeid") && e.parentElement !== t;) e = e.parentElement;
                                return e
                            }(e, o), !e.getAttribute("data-nodeid")) return;
                            var h = s.children,
                                f = Number(e.getAttribute("data-nodeid")),
                                m = bh(this.previewRoot, n.findNodeById(f)),
                                g = m.mdNode,
                                v = m.el;
                            p = h[Is(g) - 1].offsetTop;
                            var y = mh(a.doc, g, h).height,
                                b = xh(v, o, f),
                                w = b.nodeHeight;
                            p += function(e, t, n, r) {
                                return Math.min((e - t) / n, 1) * r
                            }(l, b.offsetTop, w, y), p = this.getResolvedScrollTop("preview", l, p, d), this.latestPreviewScrollTop = l
                        }
                        p !== d && this.run("preview", p, d)
                    }, e.prototype.getResolvedScrollTop = function(e, t, n, r) {
                        var o = "editor" === e ? this.latestEditorScrollTop : this.latestPreviewScrollTop;
                        return null === o ? n : o < t ? Math.max(n, r) : Math.min(n, r)
                    }, e.prototype.run = function(e, t, n) {
                        var r, o = this;
                        "editor" === e ? (r = this.previewEl, this.blockedScroll = "preview") : (r = this.editorView.dom, this.blockedScroll = "editor"),
                            function(e, t, n) {
                                var r = t - e,
                                    o = Date.now(),
                                    i = function() {
                                        var s, a = (Date.now() - o) / 100;
                                        mg && clearTimeout(mg), a < 1 ? (s = e + r * Math.cos((1 - a) * Math.PI / 2), vg(Math.ceil(s), n), mg = setTimeout(i, 1)) : (vg(t, n), mg = null)
                                    };
                                i()
                            }(n, t, {
                                syncScrollTop: function(e) {
                                    return r.scrollTop = e
                                },
                                releaseEventBlock: function() {
                                    return o.blockedScroll = null
                                }
                            })
                    }, e.prototype.clearTimer = function() {
                        this.timer && (clearTimeout(this.timer), this.timer = null)
                    }, e.prototype.destroy = function() {
                        this.clearTimer(), this.eventEmitter.removeEventHandler("scroll"), this.eventEmitter.removeEventHandler("afterPreviewRender")
                    }, e
                }(),
                bg = {
                    getPopupInitialValues: function(e, t) {
                        return "link" === t.popupName ? {
                            linkText: e.getSelectedText()
                        } : {}
                    }
                };
            var wg = function() {
                    function e(e) {
                        var t = this;
                        this.initialHTML = e.el.innerHTML, e.el.innerHTML = "", this.options = ve()({
                            previewStyle: "tab",
                            previewHighlight: !0,
                            initialEditType: "markdown",
                            height: "300px",
                            minHeight: "200px",
                            language: "en-US",
                            useCommandShortcut: !0,
                            usageStatistics: !0,
                            toolbarItems: [
                                ["heading", "bold", "italic", "strike"],
                                ["hr", "quote"],
                                ["ul", "ol", "task", "indent", "outdent"],
                                ["table", "image", "link"],
                                ["code", "codeblock"],
                                ["scrollSync"]
                            ],
                            hideModeSwitch: !1,
                            linkAttributes: null,
                            extendedAutolinks: !1,
                            customHTMLRenderer: null,
                            customMarkdownRenderer: null,
                            referenceDefinition: !1,
                            customHTMLSanitizer: null,
                            frontMatter: !1,
                            widgetRules: [],
                            theme: "light",
                            autofocus: !0
                        }, e);
                        var n = this.options,
                            r = n.customHTMLRenderer,
                            i = n.extendedAutolinks,
                            s = n.referenceDefinition,
                            a = n.frontMatter,
                            l = n.customMarkdownRenderer,
                            c = n.useCommandShortcut,
                            u = n.initialEditType,
                            d = n.widgetRules,
                            p = n.customHTMLSanitizer;
                        this.mode = u || "markdown", this.mdPreviewStyle = this.options.previewStyle, this.i18n = hf, this.i18n.setCode(this.options.language), this.eventEmitter = new Im, ta(d);
                        var h = Ge(this.options.linkAttributes);
                        this.pluginInfo = lg({
                            plugins: this.options.plugins,
                            eventEmitter: this.eventEmitter,
                            usageStatistics: this.options.usageStatistics,
                            instance: this
                        });
                        var f = this.pluginInfo,
                            m = f.toHTMLRenderers,
                            g = f.toMarkdownRenderers,
                            v = f.mdPlugins,
                            y = f.wwPlugins,
                            b = f.wwNodeViews,
                            w = f.mdCommands,
                            k = f.wwCommands,
                            x = f.markdownParsers,
                            C = {
                                linkAttributes: h,
                                customHTMLRenderer: nt(m, r),
                                extendedAutolinks: i,
                                referenceDefinition: s,
                                frontMatter: a,
                                sanitizer: p || rh
                            },
                            T = new fg(h, C.customHTMLRenderer),
                            M = function(e, t, n) {
                                var r = {
                                    nodes: {},
                                    marks: {}
                                };
                                return ["htmlBlock", "htmlInline"].forEach((function(o) {
                                    e[o] && Object.keys(e[o]).forEach((function(e) {
                                        var i = "htmlBlock" === o ? "nodes" : "marks";
                                        nh(e), r[i][e] = lh[o](e, t, n)
                                    }))
                                })), r
                            }(C.customHTMLRenderer, C.sanitizer, T);
                        this.toastMark = new _p("", {
                            disallowedHtmlBlockTags: ["br", "img"],
                            extendedAutolinks: i,
                            referenceDefinition: s,
                            disallowDeepHeading: !0,
                            frontMatter: a,
                            customParser: x
                        }), this.mdEditor = new Fc(this.eventEmitter, {
                            toastMark: this.toastMark,
                            useCommandShortcut: c,
                            mdPlugins: v
                        }), this.preview = new Mh(this.eventEmitter, o(o({}, C), {
                            isViewer: !1,
                            highlight: this.options.previewHighlight
                        })), this.wwEditor = new Nm(this.eventEmitter, {
                            toDOMAdaptor: T,
                            useCommandShortcut: c,
                            htmlSchemaMap: M,
                            linkAttributes: h,
                            wwPlugins: y,
                            wwNodeViews: b
                        }), this.convertor = new ag(this.wwEditor.getSchema(), o(o({}, g), l), dh(h, C.customHTMLRenderer), this.eventEmitter), this.setMinHeight(this.options.minHeight), this.setHeight(this.options.height), this.setMarkdown(this.options.initialValue, !1), this.options.placeholder && this.setPlaceholder(this.options.placeholder), this.options.initialValue || this.setHTML(this.initialHTML, !1), this.commandManager = new Pm(this.eventEmitter, this.mdEditor.commands, this.wwEditor.commands, (function() {
                            return t.mode
                        })), this.options.usageStatistics && Ie()("editor", "UA-129966929-1"), this.scrollSync = new yg(this.mdEditor, this.preview, this.eventEmitter), this.addInitEvent(), this.addInitCommand(w, k),
                            function(e) {
                                e.eventEmitter.listen("query", (function(t, n) {
                                    return bg[t](e, n)
                                }))
                            }(this), this.options.hooks && me()(this.options.hooks, (function(e, n) {
                            return t.addHook(n, e)
                        })), this.options.events && me()(this.options.events, (function(e, n) {
                            return t.on(n, e)
                        })), this.eventEmitter.emit("load", this), this.moveCursorToStart(this.options.autofocus)
                    }
                    return e.prototype.addInitEvent = function() {
                        var e = this;
                        this.on("needChangeMode", this.changeMode.bind(this)), this.on("loadUI", (function() {
                            if ("auto" !== e.height) {
                                var t = Math.min(parseInt(e.minHeight, 10), parseInt(e.height, 10) - 75) + "px";
                                e.setMinHeight(t)
                            }
                        })),
                            function(e) {
                                e.listen("addImageBlobHook", (function(e, t) {
                                    var n = new FileReader;
                                    n.onload = function(e) {
                                        var n = e.target;
                                        return t(n.result)
                                    }, n.readAsDataURL(e)
                                }))
                            }(this.eventEmitter)
                    }, e.prototype.addInitCommand = function(e, t) {
                        var n = this,
                            r = function(e, t) {
                                Object.keys(t).forEach((function(r) {
                                    n.addCommand(e, r, t[r])
                                }))
                            };
                        this.addCommand("markdown", "toggleScrollSync", (function(e) {
                            return n.eventEmitter.emit("toggleScrollSync", e.active), !0
                        })), r("markdown", e), r("wysiwyg", t)
                    }, e.prototype.getCurrentModeEditor = function() {
                        return this.isMarkdownMode() ? this.mdEditor : this.wwEditor
                    }, e.factory = function(t) {
                        return t.viewer ? new ug(t) : new e(t)
                    }, e.setLanguage = function(e, t) {
                        hf.setLanguage(e, t)
                    }, e.prototype.changePreviewStyle = function(e) {
                        this.mdPreviewStyle !== e && (this.mdPreviewStyle = e, this.eventEmitter.emit("changePreviewStyle", e))
                    }, e.prototype.exec = function(e, t) {
                        this.commandManager.exec(e, t)
                    }, e.prototype.addCommand = function(e, t, n) {
                        var r = this;
                        this.commandManager.addCommand(e, t, (function(t) {
                            void 0 === t && (t = {});
                            var o = ("markdown" === e ? r.mdEditor : r.wwEditor).view;
                            n(t, o.state, o.dispatch, o)
                        }))
                    }, e.prototype.on = function(e, t) {
                        this.eventEmitter.listen(e, t)
                    }, e.prototype.off = function(e) {
                        this.eventEmitter.removeEventHandler(e)
                    }, e.prototype.addHook = function(e, t) {
                        this.eventEmitter.removeEventHandler(e), this.eventEmitter.listen(e, t)
                    }, e.prototype.removeHook = function(e) {
                        this.eventEmitter.removeEventHandler(e)
                    }, e.prototype.focus = function() {
                        this.getCurrentModeEditor().focus()
                    }, e.prototype.blur = function() {
                        this.getCurrentModeEditor().blur()
                    }, e.prototype.moveCursorToEnd = function(e) {
                        void 0 === e && (e = !0), this.getCurrentModeEditor().moveCursorToEnd(e)
                    }, e.prototype.moveCursorToStart = function(e) {
                        void 0 === e && (e = !0), this.getCurrentModeEditor().moveCursorToStart(e)
                    }, e.prototype.setMarkdown = function(e, t) {
                        if (void 0 === e && (e = ""), void 0 === t && (t = !0), this.mdEditor.setMarkdown(e, t), this.isWysiwygMode()) {
                            var n = this.toastMark.getRootNode(),
                                r = this.convertor.toWysiwygModel(n);
                            this.wwEditor.setModel(r, t)
                        }
                    }, e.prototype.setHTML = function(e, t) {
                        void 0 === e && (e = ""), void 0 === t && (t = !0);
                        var n = document.createElement("div");
                        n.innerHTML = function(e) {
                            var t = e.replace(/<p><br\s*\/*><\/p>/gi, "<p></p>"),
                                n = new RegExp(ma, "ig"),
                                r = t.match(n);
                            return null == r || r.forEach((function(e, n) {
                                if (va.test(e)) {
                                    var o = ba;
                                    if (n) {
                                        var i = r[n - 1].match(fa);
                                        if (i && !/br/i.test(i[1])) {
                                            var s = i[1];
                                            o = "</" + s + "><" + s + ">"
                                        }
                                    }
                                    t = t.replace(va, o)
                                }
                            })), t
                        }(e);
                        var r = te.fromSchema(this.wwEditor.schema).parse(n);
                        this.isMarkdownMode() ? this.mdEditor.setMarkdown(this.convertor.toMarkdownText(r), t) : this.wwEditor.setModel(r, t)
                    }, e.prototype.getMarkdown = function() {
                        return this.isMarkdownMode() ? this.mdEditor.getMarkdown() : this.convertor.toMarkdownText(this.wwEditor.getModel())
                    }, e.prototype.getHTML = function() {
                        var e = this;
                        this.eventEmitter.holdEventInvoke((function() {
                            if (e.isMarkdownMode()) {
                                var t = e.toastMark.getRootNode(),
                                    n = e.convertor.toWysiwygModel(t);
                                e.wwEditor.setModel(n)
                            }
                        }));
                        var t = La(this.wwEditor.view.dom.innerHTML);
                        if (this.placeholder) {
                            var n = new RegExp('<span class="placeholder[^>]+>' + this.placeholder + "</span>", "i");
                            return t.replace(n, "")
                        }
                        return t
                    }, e.prototype.insertText = function(e) {
                        this.getCurrentModeEditor().replaceSelection(e)
                    }, e.prototype.setSelection = function(e, t) {
                        this.getCurrentModeEditor().setSelection(e, t)
                    }, e.prototype.replaceSelection = function(e, t, n) {
                        this.getCurrentModeEditor().replaceSelection(e, t, n)
                    }, e.prototype.deleteSelection = function(e, t) {
                        this.getCurrentModeEditor().deleteSelection(e, t)
                    }, e.prototype.getSelectedText = function(e, t) {
                        return this.getCurrentModeEditor().getSelectedText(e, t)
                    }, e.prototype.getRangeInfoOfNode = function(e) {
                        return this.getCurrentModeEditor().getRangeInfoOfNode(e)
                    }, e.prototype.addWidget = function(e, t, n) {
                        this.getCurrentModeEditor().addWidget(e, t, n)
                    }, e.prototype.replaceWithWidget = function(e, t, n) {
                        this.getCurrentModeEditor().replaceWithWidget(e, t, n)
                    }, e.prototype.setHeight = function(e) {
                        var t = this.options.el;
                        Me()(e) && ("auto" === e ? ke()(t, "auto-height") : Ce()(t, "auto-height"), this.setMinHeight(this.getMinHeight())), be()(t, {
                            height: e
                        }), this.height = e
                    }, e.prototype.getHeight = function() {
                        return this.height
                    }, e.prototype.setMinHeight = function(e) {
                        if (e !== this.minHeight) {
                            var t = this.height || this.options.height;
                            "auto" !== t && this.options.el.querySelector("." + xa("main")) && (e = Math.min(parseInt(e, 10), parseInt(t, 10) - 75) + "px");
                            var n = parseInt(e, 10);
                            this.minHeight = e, this.wwEditor.setMinHeight(n), this.mdEditor.setMinHeight(n), this.preview.setMinHeight(n)
                        }
                    }, e.prototype.getMinHeight = function() {
                        return this.minHeight
                    }, e.prototype.isMarkdownMode = function() {
                        return "markdown" === this.mode
                    }, e.prototype.isWysiwygMode = function() {
                        return "wysiwyg" === this.mode
                    }, e.prototype.isViewer = function() {
                        return !1
                    }, e.prototype.getCurrentPreviewStyle = function() {
                        return this.mdPreviewStyle
                    }, e.prototype.changeMode = function(e, t) {
                        if (this.mode !== e) {
                            if (this.mode = e, this.isWysiwygMode()) {
                                var n = this.toastMark.getRootNode(),
                                    r = this.convertor.toWysiwygModel(n);
                                this.wwEditor.setModel(r)
                            } else {
                                r = this.wwEditor.getModel();
                                this.mdEditor.setMarkdown(this.convertor.toMarkdownText(r), !t)
                            }
                            if (this.eventEmitter.emit("removePopupWidget"), this.eventEmitter.emit("changeMode", e), !t) {
                                var o = this.convertor.getMappedPos();
                                this.focus(), this.isWysiwygMode() && Ee()(o) ? this.wwEditor.setSelection(o) : Array.isArray(o) && this.mdEditor.setSelection(o)
                            }
                        }
                    }, e.prototype.destroy = function() {
                        var e = this;
                        this.wwEditor.destroy(), this.mdEditor.destroy(), this.preview.destroy(), this.scrollSync.destroy(), this.eventEmitter.emit("destroy"), this.eventEmitter.getEvents().forEach((function(t, n) {
                            return e.off(n)
                        }))
                    }, e.prototype.hide = function() {
                        this.eventEmitter.emit("hide")
                    }, e.prototype.show = function() {
                        this.eventEmitter.emit("show")
                    }, e.prototype.setScrollTop = function(e) {
                        this.getCurrentModeEditor().setScrollTop(e)
                    }, e.prototype.getScrollTop = function() {
                        return this.getCurrentModeEditor().getScrollTop()
                    }, e.prototype.reset = function() {
                        this.wwEditor.setModel([]), this.mdEditor.setMarkdown("")
                    }, e.prototype.getSelection = function() {
                        return this.getCurrentModeEditor().getSelection()
                    }, e.prototype.setPlaceholder = function(e) {
                        this.placeholder = e, this.mdEditor.setPlaceholder(e), this.wwEditor.setPlaceholder(e)
                    }, e.prototype.getEditorElements = function() {
                        return {
                            mdEditor: this.mdEditor.getElement(),
                            mdPreview: this.preview.getElement(),
                            wwEditor: this.wwEditor.getElement()
                        }
                    }, e.prototype.convertPosToMatchEditorMode = function(e, t, n) {
                        var r, o;
                        void 0 === t && (t = e), void 0 === n && (n = this.mode);
                        var i = this.mdEditor.view.state.doc,
                            s = Array.isArray(e),
                            a = Array.isArray(t),
                            l = e,
                            c = t;
                        if (s !== a) throw new Error("Types of arguments must be same");
                        return "markdown" !== n || s || a ? "wysiwyg" === n && s && a && (l = (o = ol(i, e, t))[0], c = o[1]) : (l = (r = nl(i, e, t))[0], c = r[1]), [l, c]
                    }, e
                }(),
                kg = wg;
            var xg = n(326),
                Cg = n.n(xg),
                Tg = function() {
                    function e(e) {
                        this.current = e, this.root = e, this.entering = !0
                    }
                    return e.prototype.walk = function() {
                        var e = this.entering,
                            t = this.current;
                        return t ? (e ? t.firstChild ? (this.current = t.firstChild, this.entering = !0) : this.entering = !1 : t === this.root ? this.current = null : t.next ? (this.current = t.next, this.entering = !0) : (this.current = t.parent, this.entering = !1), {
                            vnode: t,
                            entering: e
                        }) : null
                    }, e
                }(),
                Mg = function() {
                    function e(e, t, n) {
                        this.parent = null, this.old = null, this.firstChild = null, this.next = null, this.skip = !1, this.type = e, this.props = t, this.children = n, this.props.children = n, t.ref && (this.ref = t.ref, delete t.ref), t.key && (this.key = t.key, delete t.key)
                    }
                    return e.prototype.walker = function() {
                        return new Tg(this)
                    }, e.removalNodes = [], e
                }();

            function Sg(e, t) {
                var n, r = e;
                Cg()(e) || null == e ? r = null : (Me()(e) || Ee()(e)) && (n = String(e), r = new Mg("TEXT_NODE", {
                    nodeValue: n
                }, [])), r && t.push(r)
            }
            var Eg = function(e) {
                    for (var t, n, r = arguments, o = 1, i = "", s = "", a = [0], l = function(e) {
                        1 === o && (e || (i = i.replace(/^\s*\n\s*|\s*\n\s*$/g, ""))) ? a.push(e ? r[e] : i) : 3 === o && (e || i) ? (a[1] = e ? r[e] : i, o = 2) : 2 === o && "..." === i && e ? a[2] = it(a[2] || {}, r[e]) : 2 === o && i && !e ? (a[2] = a[2] || {})[i] = !0 : o >= 5 && (5 === o ? ((a[2] = a[2] || {})[n] = e ? i ? i + r[e] : r[e] : i, o = 6) : (e || i) && (a[2][n] += e ? i + r[e] : i)), i = ""
                    }, c = 0; c < e.length; c++) {
                        c && (1 === o && l(), l(c));
                        for (var u = 0; u < e[c].length; u++) t = e[c][u], 1 === o ? "<" === t ? (l(), a = [a, "", null], o = 3) : i += t : 4 === o ? "--" === i && ">" === t ? (o = 1, i = "") : i = t + i[0] : s ? t === s ? s = "" : i += t : '"' === t || "'" === t ? s = t : ">" === t ? (l(), o = 1) : o && ("=" === t ? (o = 5, n = i, i = "") : "/" === t && (o < 5 || ">" === e[c][u + 1]) ? (l(), 3 === o && (a = a[0]), o = a, (a = a[0]).push(this.apply(null, o.slice(1))), o = 0) : " " === t || "\t" === t || "\n" === t || "\r" === t ? (l(), o = 2) : i += t), 3 === o && "!--" === i && (o = 4, a = a[0])
                    }
                    return l(), a.length > 2 ? a.slice(1) : a[1]
                }.bind((function(e, t) {
                    for (var n = [], r = 2; r < arguments.length; r++) n[r - 2] = arguments[r];
                    var o = [];
                    return n.forEach((function(e) {
                        Array.isArray(e) ? e.forEach((function(e) {
                            Sg(e, o)
                        })) : Sg(e, o)
                    })), new Mg(e, t || {}, o)
                })),
                Ng = n(73),
                Og = n.n(Ng);

            function Dg(e) {
                var t;
                return "TEXT_NODE" === e.type ? t = document.createTextNode(e.props.nodeValue) : Rg(t = document.createElement(e.type), {}, e.props), t
            }

            function Ag(e, t) {
                e.node ? t.removeChild(e.node) : Ag(e.firstChild, t)
            }

            function Lg(e, t, n) {
                Object.keys(t).forEach((function(r) {
                    if (/^on/.test(r)) {
                        if (!n[r] || t[r] !== n[r]) {
                            var o = r.slice(2).toLowerCase();
                            e.removeEventListener(o, t[r])
                        }
                    } else "children" === r || n[r] || function(e) {
                        return (null == e ? void 0 : e.nodeType) === Node.TEXT_NODE
                    }(e) || e.removeAttribute(r)
                })), Rg(e, t, n, (function(e) {
                    return !Ye(t[e], n[e])
                }))
            }
            var Ig = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;

            function Rg(e, t, n, r) {
                Object.keys(n).forEach((function(o) {
                    if (!r || r(o))
                        if (/^on/.test(o)) {
                            var i = o.slice(2).toLowerCase();
                            e.addEventListener(i, n[o])
                        } else "nodeValue" === o ? e[o] = n[o] : "style" === o && Og()(n[o]) ? function(e, t, n) {
                            t && Object.keys(t).forEach((function(t) {
                                e.style[t] = ""
                            }));
                            Object.keys(n).forEach((function(t) {
                                var r = n[t];
                                e.style[t] = Ee()(r) && !Ig.test(t) ? r + "px" : r
                            }))
                        }(e, t[o], n[o]) : "children" !== o && (!1 === n[o] ? e.removeAttribute(o) : e.setAttribute(o, n[o]))
                }))
            }

            function Pg(e) {
                if (Mg.removalNodes.forEach((function(e) {
                    return Fg(e)
                })), e)
                    for (var t = void 0, n = e.walker(); t = n.walk();)
                        if (e = t.vnode, t.entering) Fg(e);
                        else if (Ga()(e.type)) {
                            var r = e.component;
                            if (!e.old && r.mounted && r.mounted(), e.old && r.updated) {
                                var o = r.prevProps || {};
                                r.updated(o)
                            }
                        }
            }

            function Bg(e) {
                for (var t = e.parent; !t.node;) t = t.parent;
                return t.node
            }

            function Fg(e) {
                if (e && e.parent) {
                    if (e.node) {
                        var t = Bg(e);
                        "A" === e.effect ? t.appendChild(e.node) : "U" === e.effect && Lg(e.node, e.old.props, e.props)
                    }
                    if ("D" === e.effect)
                        for (var n = void 0, r = e.walker(); n = r.walk();)
                            if (e = n.vnode, !n.entering)
                                if (Ga()(e.type)) {
                                    var o = e.component;
                                    o.beforeDestroy && o.beforeDestroy()
                                } else {
                                    Ag(e, t = Bg(e))
                                } e.ref && (e.component ? e.ref(e.component) : e.node && e.ref(e.node))
                }
            }

            function Hg(e, t) {
                var n = t.props,
                    r = t.component;
                return r ? (r.prevProps = r.props, r.props = t.props, r) : new e(n)
            }

            function zg(e) {
                for (var t = e; e && !e.skip;) {
                    if (Ga()(e.type)) {
                        var n = Hg(e.type, e);
                        n.vnode = e, e.component = n, e.props.children = e.children = [n.render()], qg(e)
                    } else e.node || (e.node = Dg(e)), qg(e);
                    if (e.firstChild) e = e.firstChild;
                    else {
                        for (; e && e.parent && !e.next && (e = e.parent) !== t;);
                        e = e.next
                    }
                }
            }

            function qg(e) {
                var t = e.children,
                    n = e.old ? e.old.firstChild : null,
                    r = null;
                t.forEach((function(t, o) {
                    var i = function(e, t) {
                        return e && t && t.type === e.type && (!t.key || t.key === e.key)
                    }(n, t);
                    i && (t.old = n, t.parent = e, t.node = n.node, t.component = n.component, t.effect = "U"), t && !i && (t.old = null, t.parent = e, t.node = null, t.effect = "A"), n && !i && (Mg.removalNodes.push(n), n.effect = "D"), n && (n = n.next), 0 === o ? e.firstChild = t : t && (r.next = t), r = t
                }));
                var o = et(t);
                if (!t.length)
                    for (; n;) Mg.removalNodes.push(n), n.effect = "D", n = n.next;
                for (; n && o;) n && o.old !== n && (Mg.removalNodes.push(n), n.effect = "D", n = n.next)
            }

            function Vg(e, t) {
                var n = new Mg(e.tagName.toLowerCase(), {}, [t]);
                return n.node = e, Mg.removalNodes = [], zg(n), Pg(n),
                    function() {
                        return function(e) {
                            e.effect = "D", Mg.removalNodes = [e], Pg(), Mg.removalNodes = []
                        }(n.firstChild)
                    }
            }
            var jg, $g = function() {
                    function e(e) {
                        this.props = e, this.state = {}, this.refs = {}
                    }
                    return e.prototype.setState = function(e) {
                        var t = o(o({}, this.state), e);
                        Ye(this.state, t) || (this.state = t, function(e) {
                            var t = e.vnode;
                            t.effect = "U", t.old = t, t.next && (t.next.skip = !0), Mg.removalNodes = [], zg(t), Pg(t), t.next && (t.next.skip = !1)
                        }(this))
                    }, e
                }(),
                _g = function(e) {
                    function n(t) {
                        var n = e.call(this, t) || this;
                        return n.state = {
                            hide: !1
                        }, n
                    }
                    return t(n, e), n.prototype.show = function() {
                        this.setState({
                            hide: !1
                        })
                    }, n.prototype.hide = function() {
                        this.setState({
                            hide: !0
                        })
                    }, n.prototype.render = function() {
                        var e = this.props,
                            t = e.editorType,
                            n = e.eventEmitter;
                        return Eg(jg || (jg = s(['\n      <div class="', '" style="display: ', '">\n        <div\n          class="tab-item', '"\n          onClick=', "\n        >\n          ", '\n        </div>\n        <div\n          class="tab-item', '"\n          onClick=', "\n        >\n          ", "\n        </div>\n      </div>\n    "], ['\n      <div class="', '" style="display: ', '">\n        <div\n          class="tab-item', '"\n          onClick=', "\n        >\n          ", '\n        </div>\n        <div\n          class="tab-item', '"\n          onClick=', "\n        >\n          ", "\n        </div>\n      </div>\n    "])), xa("mode-switch"), this.state.hide ? "none" : "block", "markdown" === t ? " active" : "", (function() {
                            n.emit("needChangeMode", "markdown")
                        }), hf.get("Markdown"), "wysiwyg" === t ? " active" : "", (function() {
                            n.emit("needChangeMode", "wysiwyg")
                        }), hf.get("WYSIWYG"))
                    }, n
                }($g),
                Ug = n(423),
                Wg = n.n(Ug),
                Jg = function() {
                    if ("undefined" != typeof Map) return Map;

                    function e(e, t) {
                        var n = -1;
                        return e.some((function(e, r) {
                            return e[0] === t && (n = r, !0)
                        })), n
                    }
                    return function() {
                        function t() {
                            this.__entries__ = []
                        }
                        return Object.defineProperty(t.prototype, "size", {
                            get: function() {
                                return this.__entries__.length
                            },
                            enumerable: !0,
                            configurable: !0
                        }), t.prototype.get = function(t) {
                            var n = e(this.__entries__, t),
                                r = this.__entries__[n];
                            return r && r[1]
                        }, t.prototype.set = function(t, n) {
                            var r = e(this.__entries__, t);
                            ~r ? this.__entries__[r][1] = n : this.__entries__.push([t, n])
                        }, t.prototype.delete = function(t) {
                            var n = this.__entries__,
                                r = e(n, t);
                            ~r && n.splice(r, 1)
                        }, t.prototype.has = function(t) {
                            return !!~e(this.__entries__, t)
                        }, t.prototype.clear = function() {
                            this.__entries__.splice(0)
                        }, t.prototype.forEach = function(e, t) {
                            void 0 === t && (t = null);
                            for (var n = 0, r = this.__entries__; n < r.length; n++) {
                                var o = r[n];
                                e.call(t, o[1], o[0])
                            }
                        }, t
                    }()
                }(),
                Gg = "undefined" != typeof window && "undefined" != typeof document && window.document === document,
                Kg = void 0 !== n.g && n.g.Math === Math ? n.g : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")(),
                Zg = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(Kg) : function(e) {
                    return setTimeout((function() {
                        return e(Date.now())
                    }), 1e3 / 60)
                };
            var Xg = ["top", "right", "bottom", "left", "width", "height", "size", "weight"],
                Qg = "undefined" != typeof MutationObserver,
                Yg = function() {
                    function e() {
                        this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function(e, t) {
                            var n = !1,
                                r = !1,
                                o = 0;

                            function i() {
                                n && (n = !1, e()), r && a()
                            }

                            function s() {
                                Zg(i)
                            }

                            function a() {
                                var e = Date.now();
                                if (n) {
                                    if (e - o < 2) return;
                                    r = !0
                                } else n = !0, r = !1, setTimeout(s, t);
                                o = e
                            }
                            return a
                        }(this.refresh.bind(this), 20)
                    }
                    return e.prototype.addObserver = function(e) {
                        ~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_()
                    }, e.prototype.removeObserver = function(e) {
                        var t = this.observers_,
                            n = t.indexOf(e);
                        ~n && t.splice(n, 1), !t.length && this.connected_ && this.disconnect_()
                    }, e.prototype.refresh = function() {
                        this.updateObservers_() && this.refresh()
                    }, e.prototype.updateObservers_ = function() {
                        var e = this.observers_.filter((function(e) {
                            return e.gatherActive(), e.hasActive()
                        }));
                        return e.forEach((function(e) {
                            return e.broadcastActive()
                        })), e.length > 0
                    }, e.prototype.connect_ = function() {
                        Gg && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), Qg ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, {
                            attributes: !0,
                            childList: !0,
                            characterData: !0,
                            subtree: !0
                        })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0)
                    }, e.prototype.disconnect_ = function() {
                        Gg && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1)
                    }, e.prototype.onTransitionEnd_ = function(e) {
                        var t = e.propertyName,
                            n = void 0 === t ? "" : t;
                        Xg.some((function(e) {
                            return !!~n.indexOf(e)
                        })) && this.refresh()
                    }, e.getInstance = function() {
                        return this.instance_ || (this.instance_ = new e), this.instance_
                    }, e.instance_ = null, e
                }(),
                ev = function(e, t) {
                    for (var n = 0, r = Object.keys(t); n < r.length; n++) {
                        var o = r[n];
                        Object.defineProperty(e, o, {
                            value: t[o],
                            enumerable: !1,
                            writable: !1,
                            configurable: !0
                        })
                    }
                    return e
                },
                tv = function(e) {
                    return e && e.ownerDocument && e.ownerDocument.defaultView || Kg
                },
                nv = lv(0, 0, 0, 0);

            function rv(e) {
                return parseFloat(e) || 0
            }

            function ov(e) {
                for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
                return t.reduce((function(t, n) {
                    return t + rv(e["border-" + n + "-width"])
                }), 0)
            }

            function iv(e) {
                var t = e.clientWidth,
                    n = e.clientHeight;
                if (!t && !n) return nv;
                var r = tv(e).getComputedStyle(e),
                    o = function(e) {
                        for (var t = {}, n = 0, r = ["top", "right", "bottom", "left"]; n < r.length; n++) {
                            var o = r[n],
                                i = e["padding-" + o];
                            t[o] = rv(i)
                        }
                        return t
                    }(r),
                    i = o.left + o.right,
                    s = o.top + o.bottom,
                    a = rv(r.width),
                    l = rv(r.height);
                if ("border-box" === r.boxSizing && (Math.round(a + i) !== t && (a -= ov(r, "left", "right") + i), Math.round(l + s) !== n && (l -= ov(r, "top", "bottom") + s)), ! function(e) {
                    return e === tv(e).document.documentElement
                }(e)) {
                    var c = Math.round(a + i) - t,
                        u = Math.round(l + s) - n;
                    1 !== Math.abs(c) && (a -= c), 1 !== Math.abs(u) && (l -= u)
                }
                return lv(o.left, o.top, a, l)
            }
            var sv = "undefined" != typeof SVGGraphicsElement ? function(e) {
                return e instanceof tv(e).SVGGraphicsElement
            } : function(e) {
                return e instanceof tv(e).SVGElement && "function" == typeof e.getBBox
            };

            function av(e) {
                return Gg ? sv(e) ? function(e) {
                    var t = e.getBBox();
                    return lv(0, 0, t.width, t.height)
                }(e) : iv(e) : nv
            }

            function lv(e, t, n, r) {
                return {
                    x: e,
                    y: t,
                    width: n,
                    height: r
                }
            }
            var cv = function() {
                    function e(e) {
                        this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = lv(0, 0, 0, 0), this.target = e
                    }
                    return e.prototype.isActive = function() {
                        var e = av(this.target);
                        return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight
                    }, e.prototype.broadcastRect = function() {
                        var e = this.contentRect_;
                        return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e
                    }, e
                }(),
                uv = function(e, t) {
                    var n = function(e) {
                        var t = e.x,
                            n = e.y,
                            r = e.width,
                            o = e.height,
                            i = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object,
                            s = Object.create(i.prototype);
                        return ev(s, {
                            x: t,
                            y: n,
                            width: r,
                            height: o,
                            top: n,
                            right: t + r,
                            bottom: o + n,
                            left: t
                        }), s
                    }(t);
                    ev(this, {
                        target: e,
                        contentRect: n
                    })
                },
                dv = function() {
                    function e(e, t, n) {
                        if (this.activeObservations_ = [], this.observations_ = new Jg, "function" != typeof e) throw new TypeError("The callback provided as parameter 1 is not a function.");
                        this.callback_ = e, this.controller_ = t, this.callbackCtx_ = n
                    }
                    return e.prototype.observe = function(e) {
                        if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
                        if ("undefined" != typeof Element && Element instanceof Object) {
                            if (!(e instanceof tv(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                            var t = this.observations_;
                            t.has(e) || (t.set(e, new cv(e)), this.controller_.addObserver(this), this.controller_.refresh())
                        }
                    }, e.prototype.unobserve = function(e) {
                        if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
                        if ("undefined" != typeof Element && Element instanceof Object) {
                            if (!(e instanceof tv(e).Element)) throw new TypeError('parameter 1 is not of type "Element".');
                            var t = this.observations_;
                            t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this))
                        }
                    }, e.prototype.disconnect = function() {
                        this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this)
                    }, e.prototype.gatherActive = function() {
                        var e = this;
                        this.clearActive(), this.observations_.forEach((function(t) {
                            t.isActive() && e.activeObservations_.push(t)
                        }))
                    }, e.prototype.broadcastActive = function() {
                        if (this.hasActive()) {
                            var e = this.callbackCtx_,
                                t = this.activeObservations_.map((function(e) {
                                    return new uv(e.target, e.broadcastRect())
                                }));
                            this.callback_.call(e, t, e), this.clearActive()
                        }
                    }, e.prototype.clearActive = function() {
                        this.activeObservations_.splice(0)
                    }, e.prototype.hasActive = function() {
                        return this.activeObservations_.length > 0
                    }, e
                }(),
                pv = "undefined" != typeof WeakMap ? new WeakMap : new Jg,
                hv = function e(t) {
                    if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function.");
                    if (!arguments.length) throw new TypeError("1 argument required, but only 0 present.");
                    var n = Yg.getInstance(),
                        r = new dv(t, n, this);
                    pv.set(this, r)
                };
            ["observe", "unobserve", "disconnect"].forEach((function(e) {
                hv.prototype[e] = function() {
                    var t;
                    return (t = pv.get(this))[e].apply(t, arguments)
                }
            }));
            var fv, mv, gv, vv, yv, bv, wv, kv, xv, Cv, Tv, Mv, Sv, Ev, Nv, Ov, Dv = void 0 !== Kg.ResizeObserver ? Kg.ResizeObserver : hv,
                Av = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), n.prototype.execCommand = function(e) {
                        var t = Oa(e.target, "li");
                        this.props.execCommand("heading", {
                            level: Number(t.getAttribute("data-level"))
                        })
                    }, n.prototype.render = function() {
                        var e = this;
                        return Eg(mv || (mv = s(["\n      <ul\n        onClick=", '\n        aria-role="menu"\n        aria-label="', '"\n      >\n        ', '\n        <li data-type="Paragraph" aria-role="menuitem">\n          <div>', "</div>\n        </li>\n      </ul>\n    "], ["\n      <ul\n        onClick=", '\n        aria-role="menu"\n        aria-label="', '"\n      >\n        ', '\n        <li data-type="Paragraph" aria-role="menuitem">\n          <div>', "</div>\n        </li>\n      </ul>\n    "])), (function(t) {
                            return e.execCommand(t)
                        }), hf.get("Headings"), [1, 2, 3, 4, 5, 6].map((function(e) {
                            return Eg(fv || (fv = s(['\n              <li data-level="', '" data-type="Heading" aria-role="menuitem">\n                <', ">", " ", "</$>\n              </li>\n            "], ['\n              <li data-level="', '" data-type="Heading" aria-role="menuitem">\n                <', ">", " ", "</$>\n              </li>\n            "])), e, "h" + e, hf.get("Heading"), e)
                        })), hf.get("Paragraph"))
                    }, n
                }($g),
                Lv = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), n.prototype.toggleTab = function(e, t) {
                        this.props.onClick(e, t)
                    }, n.prototype.render = function() {
                        var e = this;
                        return Eg(vv || (vv = s(['\n      <div class="', '" aria-role="tabpanel">\n        ', "\n      </div>\n    "], ['\n      <div class="', '" aria-role="tabpanel">\n        ', "\n      </div>\n    "])), xa("tabs"), this.props.tabs.map((function(t) {
                            var n = t.name,
                                r = t.text,
                                o = e.props.activeTab === n;
                            return Eg(gv || (gv = s(['\n            <div\n              class="tab-item', '"\n              onClick=', '\n              aria-role="tab"\n              aria-label="', '"\n              aria-selected="', '"\n              tabindex="', '"\n            >\n              ', "\n            </div>\n          "], ['\n            <div\n              class="tab-item', '"\n              onClick=', '\n              aria-role="tab"\n              aria-label="', '"\n              aria-selected="', '"\n              tabindex="', '"\n            >\n              ', "\n            </div>\n          "])), o ? " active" : "", (function(t) {
                                return e.toggleTab(t, n)
                            }), hf.get(r), o ? "true" : "false", o ? "0" : "-1", hf.get(r))
                        })))
                    }, n
                }($g),
                Iv = function(e) {
                    function n(t) {
                        var n = e.call(this, t) || this;
                        return n.initialize = function(e) {
                            void 0 === e && (e = "file");
                            var t = n.refs.url;
                            t.value = "", n.refs.altText.value = "", n.refs.file.value = "", Ce()(t, "wrong"), n.setState({
                                activeTab: e,
                                file: null,
                                fileNameElClassName: ""
                            })
                        }, n.execCommand = function() {
                            "file" === n.state.activeTab ? n.emitAddImageBlob() : n.emitAddImage()
                        }, n.toggleTab = function(e, t) {
                            t !== n.state.activeTab && n.initialize(t)
                        }, n.showFileSelectBox = function() {
                            n.refs.file.click()
                        }, n.changeFile = function(e) {
                            var t = e.target.files;
                            (null == t ? void 0 : t.length) && n.setState({
                                file: t[0]
                            })
                        }, n.state = {
                            activeTab: "file",
                            file: null,
                            fileNameElClassName: ""
                        }, n.tabs = [{
                            name: "file",
                            text: "File"
                        }, {
                            name: "url",
                            text: "URL"
                        }], n
                    }
                    return t(n, e), n.prototype.emitAddImageBlob = function() {
                        var e = this,
                            t = this.refs.file.files,
                            n = this.refs.altText,
                            r = " wrong";
                        if (null == t ? void 0 : t.length) {
                            r = "";
                            var o = t.item(0);
                            this.props.eventEmitter.emit("addImageBlobHook", o, (function(t, r) {
                                return e.props.execCommand("addImage", {
                                    imageUrl: t,
                                    altText: r || n.value
                                })
                            }), "ui")
                        }
                        this.setState({
                            fileNameElClassName: r
                        })
                    }, n.prototype.emitAddImage = function() {
                        var e = this.refs.url,
                            t = this.refs.altText,
                            n = e.value,
                            r = t.value || "image";
                        Ce()(e, "wrong"), n.length ? n && this.props.execCommand("addImage", {
                            imageUrl: n,
                            altText: r
                        }) : ke()(e, "wrong")
                    }, n.prototype.preventSelectStart = function(e) {
                        e.preventDefault()
                    }, n.prototype.updated = function() {
                        this.props.show || this.initialize()
                    }, n.prototype.render = function() {
                        var e = this,
                            t = this.state,
                            n = t.activeTab,
                            r = t.file,
                            o = t.fileNameElClassName;
                        return Eg(yv || (yv = s(['\n      <div aria-label="', '">\n        <', " tabs=", " activeTab=", " onClick=", ' />\n        <div style="display:', '">\n          <label for="toastuiImageUrlInput">', '</label>\n          <input\n            id="toastuiImageUrlInput"\n            type="text"\n            ref=', '\n          />\n        </div>\n        <div style="display:', ';position: relative;">\n          <label for="toastuiImageFileInput">', '</label>\n          <span\n            class="', "", '"\n            onClick=', "\n            onSelectstart=", "\n          >\n            ", '\n          </span>\n          <button\n            type="button"\n            class="', '"\n            onClick=', "\n          >\n            ", '\n          </button>\n          <input\n            id="toastuiImageFileInput"\n            type="file"\n            accept="image/*"\n            onChange=', "\n            ref=", '\n          />\n        </div>\n        <label for="toastuiAltTextInput">', '</label>\n        <input\n          id="toastuiAltTextInput"\n          type="text"\n          ref=', '\n        />\n        <div class="', '">\n          <button type="button" class="', '" onClick=', ">\n            ", '\n          </button>\n          <button type="button" class="', '" onClick=', ">\n            ", "\n          </button>\n        </div>\n      </div>\n    "], ['\n      <div aria-label="', '">\n        <', " tabs=", " activeTab=", " onClick=", ' />\n        <div style="display:', '">\n          <label for="toastuiImageUrlInput">', '</label>\n          <input\n            id="toastuiImageUrlInput"\n            type="text"\n            ref=', '\n          />\n        </div>\n        <div style="display:', ';position: relative;">\n          <label for="toastuiImageFileInput">', '</label>\n          <span\n            class="', "", '"\n            onClick=', "\n            onSelectstart=", "\n          >\n            ", '\n          </span>\n          <button\n            type="button"\n            class="', '"\n            onClick=', "\n          >\n            ", '\n          </button>\n          <input\n            id="toastuiImageFileInput"\n            type="file"\n            accept="image/*"\n            onChange=', "\n            ref=", '\n          />\n        </div>\n        <label for="toastuiAltTextInput">', '</label>\n        <input\n          id="toastuiAltTextInput"\n          type="text"\n          ref=', '\n        />\n        <div class="', '">\n          <button type="button" class="', '" onClick=', ">\n            ", '\n          </button>\n          <button type="button" class="', '" onClick=', ">\n            ", "\n          </button>\n        </div>\n      </div>\n    "])), hf.get("Insert image"), Lv, this.tabs, n, this.toggleTab, "url" === n ? "block" : "none", hf.get("Image URL"), (function(t) {
                            return e.refs.url = t
                        }), "file" === n ? "block" : "none", hf.get("Select image file"), xa("file-name"), r ? " has-file" : o, this.showFileSelectBox, this.preventSelectStart, r ? r.name : hf.get("No file"), xa("file-select-button"), this.showFileSelectBox, hf.get("Choose a file"), this.changeFile, (function(t) {
                            return e.refs.file = t
                        }), hf.get("Description"), (function(t) {
                            return e.refs.altText = t
                        }), xa("button-container"), xa("close-button"), this.props.hidePopup, hf.get("Cancel"), xa("ok-button"), this.execCommand, hf.get("OK"))
                    }, n
                }($g),
                Rv = function(e) {
                    function n() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.execCommand = function() {
                            var e = t.refs.url,
                                n = t.refs.text;
                            (Ce()(e, "wrong"), Ce()(n, "wrong"), e.value.length < 1) ? ke()(e, "wrong"): Oe()(t.props.initialValues.linkUrl) && n.value.length < 1 ? ke()(n, "wrong") : t.props.execCommand("addLink", {
                                linkUrl: e.value,
                                linkText: n.value
                            })
                        }, t
                    }
                    return t(n, e), n.prototype.initialize = function() {
                        var e = this.props.initialValues,
                            t = e.linkUrl,
                            n = e.linkText,
                            r = this.refs.url,
                            o = this.refs.text;
                        Ce()(r, "wrong"), Ce()(o, "wrong", "disabled"), o.removeAttribute("disabled"), t && (ke()(o, "disabled"), o.setAttribute("disabled", "disabled")), r.value = t || "", o.value = n || ""
                    }, n.prototype.mounted = function() {
                        this.initialize()
                    }, n.prototype.updated = function(e) {
                        !e.show && this.props.show && this.initialize()
                    }, n.prototype.render = function() {
                        var e = this;
                        return Eg(bv || (bv = s(['\n      <div aria-label="', '">\n        <label for="toastuiLinkUrlInput">', '</label>\n        <input\n          id="toastuiLinkUrlInput"\n          type="text"\n          ref=', '\n        />\n        <label for="toastuiLinkTextInput">', '</label>\n        <input\n          id="toastuiLinkTextInput"\n          type="text"\n          ref=', '\n        />\n        <div class="', '">\n          <button type="button" class="', '" onClick=', ">\n            ", '\n          </button>\n          <button type="button" class="', '" onClick=', ">\n            ", "\n          </button>\n        </div>\n      </div>\n    "], ['\n      <div aria-label="', '">\n        <label for="toastuiLinkUrlInput">', '</label>\n        <input\n          id="toastuiLinkUrlInput"\n          type="text"\n          ref=', '\n        />\n        <label for="toastuiLinkTextInput">', '</label>\n        <input\n          id="toastuiLinkTextInput"\n          type="text"\n          ref=', '\n        />\n        <div class="', '">\n          <button type="button" class="', '" onClick=', ">\n            ", '\n          </button>\n          <button type="button" class="', '" onClick=', ">\n            ", "\n          </button>\n        </div>\n      </div>\n    "])), hf.get("Insert link"), hf.get("URL"), (function(t) {
                            return e.refs.url = t
                        }), hf.get("Link text"), (function(t) {
                            return e.refs.text = t
                        }), xa("button-container"), xa("close-button"), this.props.hidePopup, hf.get("Cancel"), xa("ok-button"), this.execCommand, hf.get("OK"))
                    }, n
                }($g),
                Pv = function(e) {
                    function n(t) {
                        var n = e.call(this, t) || this;
                        return n.extendSelectionRange = function(e) {
                            var t = e.pageX,
                                r = e.pageY,
                                i = t - n.offsetRect.left,
                                s = r - n.offsetRect.top,
                                a = n.getSelectionRangeByOffset(i, s);
                            n.setState(o({}, a))
                        }, n.execCommand = function() {
                            n.props.execCommand("addTable", {
                                rowCount: n.state.rowIdx + 1,
                                columnCount: n.state.colIdx + 1
                            })
                        }, n.state = {
                            rowIdx: -1,
                            colIdx: -1
                        }, n
                    }
                    return t(n, e), n.prototype.getDescription = function() {
                        return -1 === this.state.colIdx ? "" : this.state.colIdx + 1 + " x " + (this.state.rowIdx + 1)
                    }, n.prototype.getBoundByRange = function(e, t) {
                        return {
                            width: 20 * (e + 1),
                            height: 20 * (t + 1)
                        }
                    }, n.prototype.getRangeByOffset = function(e, t) {
                        return {
                            colIdx: Math.floor(e / 20),
                            rowIdx: Math.floor(t / 20)
                        }
                    }, n.prototype.getTableRange = function() {
                        var e = this.state,
                            t = e.colIdx,
                            n = e.rowIdx,
                            r = Math.max(t, 5),
                            o = Math.max(n, 5);
                        return t >= 5 && r < 9 && (r += 1), n >= 5 && o < 14 && (o += 1), {
                            colIdx: r + 1,
                            rowIdx: o + 1
                        }
                    }, n.prototype.getSelectionAreaBound = function() {
                        var e = this.getBoundByRange(this.state.colIdx, this.state.rowIdx),
                            t = e.width,
                            n = e.height;
                        return t || n ? {
                            width: t - 1,
                            height: n - 1,
                            display: "block"
                        } : {
                            display: "none"
                        }
                    }, n.prototype.getSelectionRangeByOffset = function(e, t) {
                        var n = this.getRangeByOffset(e, t);
                        return n.rowIdx = Math.min(Math.max(n.rowIdx, 1), 14), n.colIdx = Math.min(Math.max(n.colIdx, 1), 9), n
                    }, n.prototype.updated = function() {
                        if (this.props.show) {
                            if (-1 === this.state.colIdx && -1 === this.state.rowIdx) {
                                var e = this.refs.tableEl.getBoundingClientRect(),
                                    t = e.left,
                                    n = e.top;
                                this.offsetRect = {
                                    left: window.pageXOffset + t,
                                    top: window.pageYOffset + n
                                }
                            }
                        } else this.setState({
                            colIdx: -1,
                            rowIdx: -1
                        })
                    }, n.prototype.createTableArea = function(e) {
                        for (var t = e.colIdx, n = e.rowIdx, r = [], o = 0; o < n; o += 1) {
                            for (var i = [], a = 0; a < t; a += 1) {
                                var l = xa("table-cell") + (o > 0 ? "" : " header");
                                i.push(Eg(wv || (wv = s(['<div class="', '"></div>'], ['<div class="', '"></div>'])), l))
                            }
                            r.push(Eg(kv || (kv = s(['<div class="', '">', "</div>"], ['<div class="', '">', "</div>"])), xa("table-row"), i))
                        }
                        return Eg(xv || (xv = s(['<div class="', '">', "</div>"], ['<div class="', '">', "</div>"])), xa("table"), r)
                    }, n.prototype.render = function() {
                        var e = this,
                            t = this.getTableRange(),
                            n = this.getSelectionAreaBound();
                        return Eg(Cv || (Cv = s(['\n      <div aria-label="', '">\n        <div\n          class="', '"\n          ref=', "\n          onMousemove=", "\n          onClick=", "\n        >\n          ", '\n          <div class="', '" style=', '></div>\n        </div>\n        <p class="', '">', "</p>\n      </div>\n    "], ['\n      <div aria-label="', '">\n        <div\n          class="', '"\n          ref=', "\n          onMousemove=", "\n          onClick=", "\n        >\n          ", '\n          <div class="', '" style=', '></div>\n        </div>\n        <p class="', '">', "</p>\n      </div>\n    "])), hf.get("Insert table"), xa("table-selection"), (function(t) {
                            return e.refs.tableEl = t
                        }), this.extendSelectionRange, this.execCommand, this.createTableArea(t), xa("table-selection-layer"), n, xa("table-description"), this.getDescription())
                    }, n
                }($g),
                Bv = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), n.prototype.mounted = function() {
                        this.refs.el.appendChild(this.props.body)
                    }, n.prototype.updated = function(e) {
                        this.refs.el.replaceChild(this.props.body, e.body)
                    }, n.prototype.render = function() {
                        var e = this;
                        return Eg(Tv || (Tv = s(["<div ref=", "></div>"], ["<div ref=", "></div>"])), (function(t) {
                            return e.refs.el = t
                        }))
                    }, n
                }($g);

            function Fv(e) {
                return Me()(e) ? function(e) {
                    var t;
                    switch (e) {
                        case "heading":
                            t = {
                                name: "heading",
                                className: "heading",
                                tooltip: hf.get("Headings"),
                                state: "heading"
                            };
                            break;
                        case "bold":
                            t = {
                                name: "bold",
                                className: "bold",
                                command: "bold",
                                tooltip: hf.get("Bold"),
                                state: "strong"
                            };
                            break;
                        case "italic":
                            t = {
                                name: "italic",
                                className: "italic",
                                command: "italic",
                                tooltip: hf.get("Italic"),
                                state: "emph"
                            };
                            break;
                        case "strike":
                            t = {
                                name: "strike",
                                className: "strike",
                                command: "strike",
                                tooltip: hf.get("Strike"),
                                state: "strike"
                            };
                            break;
                        case "hr":
                            t = {
                                name: "hr",
                                className: "hrline",
                                command: "hr",
                                tooltip: hf.get("Line"),
                                state: "thematicBreak"
                            };
                            break;
                        case "quote":
                            t = {
                                name: "quote",
                                className: "quote",
                                command: "blockQuote",
                                tooltip: hf.get("Blockquote"),
                                state: "blockQuote"
                            };
                            break;
                        case "ul":
                            t = {
                                name: "ul",
                                className: "bullet-list",
                                command: "bulletList",
                                tooltip: hf.get("Unordered list"),
                                state: "bulletList"
                            };
                            break;
                        case "ol":
                            t = {
                                name: "ol",
                                className: "ordered-list",
                                command: "orderedList",
                                tooltip: hf.get("Ordered list"),
                                state: "orderedList"
                            };
                            break;
                        case "task":
                            t = {
                                name: "task",
                                className: "task-list",
                                command: "taskList",
                                tooltip: hf.get("Task"),
                                state: "taskList"
                            };
                            break;
                        case "table":
                            t = {
                                name: "table",
                                className: "table",
                                tooltip: hf.get("Insert table"),
                                state: "table"
                            };
                            break;
                        case "image":
                            t = {
                                name: "image",
                                className: "image",
                                tooltip: hf.get("Insert image")
                            };
                            break;
                        case "link":
                            t = {
                                name: "link",
                                className: "link",
                                tooltip: hf.get("Insert link")
                            };
                            break;
                        case "code":
                            t = {
                                name: "code",
                                className: "code",
                                command: "code",
                                tooltip: hf.get("Code"),
                                state: "code"
                            };
                            break;
                        case "codeblock":
                            t = {
                                name: "codeblock",
                                className: "codeblock",
                                command: "codeBlock",
                                tooltip: hf.get("Insert CodeBlock"),
                                state: "codeBlock"
                            };
                            break;
                        case "indent":
                            t = {
                                name: "indent",
                                className: "indent",
                                command: "indent",
                                tooltip: hf.get("Indent"),
                                state: "indent"
                            };
                            break;
                        case "outdent":
                            t = {
                                name: "outdent",
                                className: "outdent",
                                command: "outdent",
                                tooltip: hf.get("Outdent"),
                                state: "outdent"
                            };
                            break;
                        case "scrollSync":
                            t = function() {
                                var e = document.createElement("label"),
                                    t = document.createElement("input"),
                                    n = document.createElement("span");
                                e.className = "scroll-sync active", t.type = "checkbox", t.checked = !0, n.className = "switch";
                                var r = function(n) {
                                    return t.addEventListener("change", (function(t) {
                                        var r = t.target.checked;
                                        r ? ke()(e, "active") : Ce()(e, "active"), n("toggleScrollSync", {
                                            active: r
                                        })
                                    }))
                                };
                                return e.appendChild(t), e.appendChild(n), {
                                    name: "scrollSync",
                                    el: e,
                                    onMounted: r
                                }
                            }();
                            break;
                        case "more":
                            t = {
                                name: "more",
                                className: "more",
                                tooltip: hf.get("More")
                            }
                    }
                    "scrollSync" !== t.name && (t.className += " " + xa("toolbar-icons"));
                    return t
                }(e) : e
            }

            function Hv(e, t) {
                var n = t.el,
                    r = t.pos,
                    i = t.popup,
                    a = t.initialValues;
                switch (e) {
                    case "heading":
                        return {
                            render: function(e) {
                                return Eg(Mv || (Mv = s(["<", " ...", " />"], ["<", " ...", " />"])), Av, e)
                            }, className: xa("popup-add-heading"), fromEl: n, pos: r
                        };
                    case "link":
                        return {
                            render: function(e) {
                                return Eg(Sv || (Sv = s(["<", " ...", " />"], ["<", " ...", " />"])), Rv, e)
                            }, className: xa("popup-add-link"), fromEl: n, pos: r, initialValues: a
                        };
                    case "image":
                        return {
                            render: function(e) {
                                return Eg(Ev || (Ev = s(["<", " ...", " />"], ["<", " ...", " />"])), Iv, e)
                            }, className: xa("popup-add-image"), fromEl: n, pos: r
                        };
                    case "table":
                        return {
                            render: function(e) {
                                return Eg(Nv || (Nv = s(["<", " ...", " />"], ["<", " ...", " />"])), Pv, e)
                            }, className: xa("popup-add-table"), fromEl: n, pos: r
                        };
                    case "customPopupBody":
                        return i ? o({
                            render: function(e) {
                                return Eg(Ov || (Ov = s(["<", " ...", " body=", " />"], ["<", " ...", " body=", " />"])), Bv, e, i.body)
                            },
                            fromEl: n,
                            pos: r
                        }, i) : null;
                    default:
                        return null
                }
            }

            function zv(e) {
                e.hidden = e.length === e.filter((function(e) {
                    return e.hidden
                })).length
            }

            function qv(e, t) {
                return e.reduce((function(e, n) {
                    e.push(n.map((function(e) {
                        return function(e) {
                            return e.hidden = "scrollSync" === e.name && t, e
                        }(Fv(e))
                    })));
                    var r = e[(e.length || 1) - 1];
                    return r && zv(r), e
                }), [])
            }
            var Vv, jv, $v = function(e) {
                function n() {
                    var t = null !== e && e.apply(this, arguments) || this;
                    return t.handleMousedown = function(e) {
                        Oa(e.target, "." + xa("popup")) || Oa(e.target, t.props.info.fromEl) || t.props.hidePopup()
                    }, t
                }
                return t(n, e), n.prototype.mounted = function() {
                    document.addEventListener("mousedown", this.handleMousedown), this.props.eventEmitter.listen("closePopup", this.props.hidePopup)
                }, n.prototype.beforeDestroy = function() {
                    document.removeEventListener("mousedown", this.handleMousedown)
                }, n.prototype.updated = function(e) {
                    var t = this.props,
                        n = t.show,
                        r = t.info;
                    if (n && r.pos && e.show !== n) {
                        var i = o({}, r.pos),
                            s = this.refs.el.offsetWidth,
                            a = Oa(this.refs.el, "." + xa("toolbar")).offsetWidth;
                        i.left + s >= a && (i.left = a - s - 20), Ye(this.state.popupPos, i) || this.setState({
                            popupPos: i
                        })
                    }
                }, n.prototype.render = function() {
                    var e = this,
                        t = this.props,
                        n = t.info,
                        r = t.show,
                        i = t.hidePopup,
                        a = t.eventEmitter,
                        l = t.execCommand,
                        c = n || {},
                        u = c.className,
                        d = void 0 === u ? "" : u,
                        p = c.style,
                        h = c.render,
                        f = c.initialValues,
                        m = void 0 === f ? {} : f,
                        g = o(o({
                            display: r ? "block" : "none"
                        }, p), this.state.popupPos);
                    return Eg(Vv || (Vv = s(['\n      <div\n        class="', " ", '"\n        style=', "\n        ref=", '\n        aria-role="dialog"\n      >\n        <div class="', '">\n          ', "\n        </div>\n      </div>\n    "], ['\n      <div\n        class="', " ", '"\n        style=', "\n        ref=", '\n        aria-role="dialog"\n      >\n        <div class="', '">\n          ', "\n        </div>\n      </div>\n    "])), xa("popup"), d, g, (function(t) {
                        return e.refs.el = t
                    }), xa("popup-body"), h && h({
                        eventEmitter: a,
                        show: r,
                        hidePopup: i,
                        execCommand: l,
                        initialValues: m
                    }))
                }, n
            }($g);

            function _v(e) {
                return function(n) {
                    function r(e) {
                        var t = n.call(this, e) || this;
                        return t.showTooltip = function(e) {
                            var n = t.props.item.tooltip;
                            if (!t.props.disabled && n) {
                                var r = t.getBound(e),
                                    o = r.left + 6 + "px",
                                    i = r.top + 6 + "px";
                                be()(t.props.tooltipRef.current, {
                                    display: "block",
                                    left: o,
                                    top: i
                                }), t.props.tooltipRef.current.querySelector(".text").textContent = n
                            }
                        }, t.hideTooltip = function() {
                            be()(t.props.tooltipRef.current, "display", "none")
                        }, t.state = {
                            active: !1,
                            disabled: e.disabled
                        }, t.addEvent(), t
                    }
                    return t(r, n), r.prototype.addEvent = function() {
                        var e = this,
                            t = this.props,
                            n = t.item,
                            r = t.eventEmitter;
                        n.state && r.listen("changeToolbarState", (function(t) {
                            var r, o = null !== (r = t.toolbarState[n.state]) && void 0 !== r ? r : {},
                                i = o.active,
                                s = o.disabled;
                            e.setState({
                                active: !!i,
                                disabled: null != s ? s : e.props.disabled
                            })
                        }))
                    }, r.prototype.getBound = function(e) {
                        var t = Da(e, Oa(e, "." + xa("toolbar"))),
                            n = t.offsetLeft,
                            r = t.offsetTop;
                        return {
                            left: n,
                            top: e.offsetHeight + r
                        }
                    }, r.prototype.render = function() {
                        return Eg(jv || (jv = s(["\n        <", "\n          ...", "\n          active=", "\n          showTooltip=", "\n          hideTooltip=", "\n          getBound=", "\n          disabled=", "\n        />\n      "], ["\n        <", "\n          ...", "\n          active=", "\n          showTooltip=", "\n          hideTooltip=", "\n          getBound=", "\n          disabled=", "\n        />\n      "])), e, this.props, this.state.active, this.showTooltip, this.hideTooltip, this.getBound, this.state.disabled || this.props.disabled)
                    }, r
                }($g)
            }
            var Uv, Wv, Jv, Gv, Kv, Zv, Xv, Qv, Yv, ey, ty, ny, ry, oy, iy = function(e) {
                    function n() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.showTooltip = function() {
                            t.props.showTooltip(t.refs.el)
                        }, t.execCommand = function() {
                            var e = t.props,
                                n = e.item,
                                r = e.execCommand,
                                o = e.setPopupInfo,
                                i = e.getBound,
                                s = e.eventEmitter,
                                a = n.command,
                                l = n.name,
                                c = n.popup;
                            if (a) r(a);
                            else {
                                var u = c ? "customPopupBody" : l,
                                    d = s.emit("query", "getPopupInitialValues", {
                                        popupName: u
                                    })[0],
                                    p = Hv(u, {
                                        el: t.refs.el,
                                        pos: i(t.refs.el),
                                        popup: c,
                                        initialValues: d
                                    });
                                p && o(p)
                            }
                        }, t
                    }
                    return t(n, e), n.prototype.mounted = function() {
                        this.setItemWidth()
                    }, n.prototype.updated = function(e) {
                        e.item.name !== this.props.item.name && this.setItemWidth()
                    }, n.prototype.setItemWidth = function() {
                        var e = this.props,
                            t = e.setItemWidth,
                            n = e.item;
                        t && t(n.name, Na(this.refs.el) + (n.hidden ? 80 : 0))
                    }, n.prototype.render = function() {
                        var e = this,
                            t = this.props,
                            n = t.hideTooltip,
                            r = t.disabled,
                            i = t.item,
                            a = t.active,
                            l = o({
                                display: i.hidden ? "none" : null
                            }, i.style),
                            c = (i.className || "") + (a ? " active" : "");
                        return Eg(Uv || (Uv = s(["\n      <button\n        ref=", '\n        type="button"\n        style=', "\n        class=", "\n        onClick=", "\n        onMouseover=", "\n        onMouseout=", "\n        disabled=", "\n        aria-label=", "\n      >\n        ", "\n      </button>\n    "], ["\n      <button\n        ref=", '\n        type="button"\n        style=', "\n        class=", "\n        onClick=", "\n        onMouseover=", "\n        onMouseout=", "\n        disabled=", "\n        aria-label=", "\n      >\n        ", "\n      </button>\n    "])), (function(t) {
                            return e.refs.el = t
                        }), l, c, this.execCommand, this.showTooltip, n, !!r, i.text || i.tooltip || "", i.text || "")
                    }, n
                }($g),
                sy = _v(iy),
                ay = function(e) {
                    function n() {
                        var t = null !== e && e.apply(this, arguments) || this;
                        return t.showTooltip = function() {
                            t.props.showTooltip(t.refs.el)
                        }, t.showPopup = function() {
                            var e = Hv("customPopupBody", {
                                el: t.refs.el,
                                pos: t.props.getBound(t.refs.el),
                                popup: t.props.item.popup
                            });
                            e && t.props.setPopupInfo(e)
                        }, t
                    }
                    return t(n, e), n.prototype.mounted = function() {
                        var e = this.props,
                            t = e.setItemWidth,
                            n = e.item;
                        this.refs.el.appendChild(n.el), t && t(n.name, Na(this.refs.el)), n.onMounted && n.onMounted(this.props.execCommand)
                    }, n.prototype.updated = function(e) {
                        var t, n = this.props,
                            r = n.item,
                            o = n.active,
                            i = n.disabled;
                        e.active === o && e.disabled === i || null === (t = r.onUpdated) || void 0 === t || t.call(r, {
                            active: o,
                            disabled: i
                        })
                    }, n.prototype.render = function() {
                        var e = this,
                            t = this.props,
                            n = t.disabled,
                            r = {
                                display: t.item.hidden ? "none" : "inline-block"
                            },
                            o = function(e) {
                                return n ? null : e
                            };
                        return Eg(Wv || (Wv = s(["\n      <div\n        ref=", "\n        style=", "\n        class=", "\n        onClick=", "\n        onMouseover=", "\n        onMouseout=", "\n      ></div>\n    "], ["\n      <div\n        ref=", "\n        style=", "\n        class=", "\n        onClick=", "\n        onMouseover=", "\n        onMouseout=", "\n      ></div>\n    "])), (function(t) {
                            return e.refs.el = t
                        }), r, xa("toolbar-item-wrapper"), o(this.showPopup), o(this.showTooltip), o(this.props.hideTooltip))
                    }, n
                }($g),
                ly = _v(ay),
                cy = function(e) {
                    function n() {
                        return null !== e && e.apply(this, arguments) || this
                    }
                    return t(n, e), n.prototype.render = function() {
                        var e = this,
                            t = this.props,
                            n = t.group,
                            r = t.hiddenDivider,
                            o = n.hidden ? {
                                display: "none"
                            } : null,
                            i = r ? {
                                display: "none"
                            } : null;
                        return Eg(Gv || (Gv = s(['\n      <div class="', '" style=', ">\n        ", '\n        <div class="', '" style=', "></div>\n      </div>\n    "], ['\n      <div class="', '" style=', ">\n        ", '\n        <div class="', '" style=', "></div>\n      </div>\n    "])), xa("toolbar-group"), o, n.map((function(t) {
                            var n = t.el ? ly : sy;
                            return Eg(Jv || (Jv = s(["<", " key=", " ...", " item=", " />"], ["<", " key=", " ...", " item=", " />"])), n, t.name, e.props, t)
                        })), xa("toolbar-divider"), i)
                    }, n
                }($g),
                uy = function(e) {
                    function n(t) {
                        var n = e.call(this, t) || this;
                        return n.handleClickDocument = function(e) {
                            var t = e.target;
                            Oa(t, "." + xa("dropdown-toolbar")) || Oa(t, ".more") || n.setState({
                                showDropdown: !1,
                                dropdownPos: null
                            })
                        }, n.showTooltip = function() {
                            n.props.showTooltip(n.refs.el)
                        }, n.state = {
                            showDropdown: !1,
                            dropdownPos: null
                        }, n
                    }
                    return t(n, e), n.prototype.getBound = function() {
                        var e = this.props.getBound(this.refs.el);
                        return e.top += 4, o(o({}, e), {
                            left: null,
                            right: 10
                        })
                    }, n.prototype.mounted = function() {
                        document.addEventListener("click", this.handleClickDocument)
                    }, n.prototype.updated = function() {
                        this.state.showDropdown && !this.state.dropdownPos && this.setState({
                            dropdownPos: this.getBound()
                        })
                    }, n.prototype.beforeDestroy = function() {
                        document.removeEventListener("click", this.handleClickDocument)
                    }, n.prototype.render = function() {
                        var e = this,
                            t = this.state,
                            n = t.showDropdown,
                            r = t.dropdownPos,
                            i = this.props,
                            a = i.disabled,
                            l = i.item,
                            c = i.items,
                            u = i.hideTooltip,
                            d = c.filter((function(e) {
                                return !e.hidden
                            })),
                            p = d.length ? null : {
                                display: "none"
                            },
                            h = n ? null : {
                                display: "none"
                            };
                        return Eg(Zv || (Zv = s(['\n      <div class="', '" style=', ">\n        <button\n          ref=", '\n          type="button"\n          class=', "\n          onClick=", "\n          onMouseover=", "\n          onMouseout=", "\n          disabled=", '\n        ></button>\n        <div\n          class="', '"\n          style=', "\n          ref=", "\n        >\n          ", "\n        </div>\n      </div>\n    "], ['\n      <div class="', '" style=', ">\n        <button\n          ref=", '\n          type="button"\n          class=', "\n          onClick=", "\n          onMouseover=", "\n          onMouseout=", "\n          disabled=", '\n        ></button>\n        <div\n          class="', '"\n          style=', "\n          ref=", "\n        >\n          ", "\n        </div>\n      </div>\n    "])), xa("toolbar-group"), p, (function(t) {
                            return e.refs.el = t
                        }), l.className, (function() {
                            return e.setState({
                                showDropdown: !0
                            })
                        }), this.showTooltip, u, a, xa("dropdown-toolbar"), o(o({}, h), r), (function(t) {
                            return e.refs.dropdownEl = t
                        }), d.length ? d.map((function(t, n) {
                            var r;
                            return Eg(Kv || (Kv = s(["\n                  <", "\n                    group=", "\n                    hiddenDivider=", "\n                    ...", "\n                  />\n                "], ["\n                  <", "\n                    group=", "\n                    hiddenDivider=", "\n                    ...", "\n                  />\n                "])), cy, t, n === d.length - 1 || (null === (r = d[n + 1]) || void 0 === r ? void 0 : r.hidden), e.props)
                        })) : null)
                    }, n
                }($g),
                dy = _v(uy),
                py = function(e) {
                    function n(t) {
                        var n = e.call(this, t) || this;
                        return n.toggleTab = function(e, t) {
                            var r = n.props.eventEmitter;
                            if (n.state.activeTab !== t) {
                                var o = "write" === t ? "changePreviewTabWrite" : "changePreviewTabPreview";
                                r.emit(o), n.setState({
                                    activeTab: t
                                })
                            }
                        }, n.setItemWidth = function(e, t) {
                            n.itemWidthMap[e] = t
                        }, n.setPopupInfo = function(e) {
                            n.setState({
                                showPopup: !0,
                                popupInfo: e
                            })
                        }, n.openPopup = function(e, t) {
                            void 0 === t && (t = {});
                            var r = n.refs.el.querySelector("." + xa("toolbar-group") + " ." + e);
                            if (r) {
                                var o = Da(r, Oa(r, "." + xa("toolbar"))),
                                    i = o.offsetLeft,
                                    s = o.offsetTop,
                                    a = Hv(e, {
                                        el: r,
                                        pos: {
                                            left: i,
                                            top: r.offsetHeight + s
                                        },
                                        initialValues: t
                                    });
                                a && n.setPopupInfo(a)
                            }
                        }, n.hidePopup = function() {
                            n.state.showPopup && n.setState({
                                showPopup: !1
                            })
                        }, n.execCommand = function(e, t) {
                            n.props.eventEmitter.emit("command", e, t), n.hidePopup()
                        }, n.tabs = [{
                            name: "write",
                            text: "Write"
                        }, {
                            name: "preview",
                            text: "Preview"
                        }], n.itemWidthMap = {}, n.initialItems = qv(t.toolbarItems || [], n.hiddenScrollSync()), n.state = {
                            items: n.initialItems,
                            dropdownItems: [],
                            showPopup: !1,
                            popupInfo: {},
                            activeTab: "write"
                        }, n.tooltipRef = {
                            current: null
                        }, n.resizeObserver = new Dv((function() {
                            return n.handleResize()
                        })), n.addEvent(), n
                    }
                    return t(n, e), n.prototype.insertToolbarItem = function(e, t) {
                        var n = e.groupIndex,
                            r = e.itemIndex,
                            o = this.initialItems[n];
                        t = Fv(t), o ? o.splice(r, 0, t) : this.initialItems.push([t]), this.setState(this.classifyToolbarItems())
                    }, n.prototype.removeToolbarItem = function(e) {
                        var t = this;
                        Fa()(this.initialItems, (function(n) {
                            var r = !1;
                            return Fa()(n, (function(o, i) {
                                return o.name !== e || (r = !0, n.splice(i, 1), t.setState(t.classifyToolbarItems()), !1)
                            })), !r
                        }))
                    }, n.prototype.addEvent = function() {
                        var e = this,
                            t = this.props.eventEmitter;
                        this.handleResize = Wg()((function() {
                            e.setState({
                                items: e.initialItems,
                                dropdownItems: []
                            }), e.setState(e.classifyToolbarItems())
                        }), 200), t.listen("openPopup", this.openPopup)
                    }, n.prototype.appendTooltipToRoot = function() {
                        var e = '<div class="' + xa("tooltip") + '" style="display:none">\n        <div class="arrow"></div>\n        <span class="text"></span>\n      </div>';
                        this.tooltipRef.current = Ea(e, this.refs.el)
                    }, n.prototype.hiddenScrollSync = function() {
                        return "wysiwyg" === this.props.editorType || "tab" === this.props.previewStyle
                    }, n.prototype.movePrevItemToDropdownToolbar = function(e, t, n, r) {
                        var o = function(e) {
                            var t = e.pop();
                            t && r.push(t)
                        };
                        if (e > 1) o(n);
                        else {
                            var i = et(t);
                            i && o(i)
                        }
                    }, n.prototype.classifyToolbarItems = function() {
                        var e = this,
                            t = 0,
                            n = this.refs.el.clientWidth,
                            r = this.refs.el.querySelector("." + xa("toolbar-divider")),
                            o = r ? Na(r) : 0,
                            i = [],
                            s = [],
                            a = !1;
                        return this.initialItems.forEach((function(r, l) {
                            var c = [],
                                u = [];
                            r.forEach((function(r, o) {
                                r.hidden || ((t += e.itemWidthMap[r.name]) > n - 50 ? (a || (e.movePrevItemToDropdownToolbar(o, i, c, u), a = !0), u.push(r)) : c.push(r))
                            })), c.length && (zv(c), i.push(c)), u.length && (zv(u), s.push(u)), l < e.state.items.length - 1 && (t += o)
                        })), {
                            items: i,
                            dropdownItems: s
                        }
                    }, n.prototype.mounted = function() {
                        "tab" === this.props.previewStyle && this.props.eventEmitter.emit("changePreviewTabWrite", !0), this.setState(this.classifyToolbarItems()), this.appendTooltipToRoot(), this.resizeObserver.observe(this.refs.el)
                    }, n.prototype.updated = function(e) {
                        var t, n, r = this.props,
                            o = r.editorType,
                            i = r.previewStyle,
                            s = r.eventEmitter,
                            a = i !== e.previewStyle,
                            l = o !== e.editorType;
                        if (a || l) {
                            t = this.initialItems, n = this.hiddenScrollSync(), t.forEach((function(e) {
                                e.forEach((function(e) {
                                    return e.hidden = "scrollSync" === e.name && n
                                })), zv(e)
                            }));
                            var c = this.classifyToolbarItems();
                            (a || "tab" === i && "markdown" === o) && (s.emit("changePreviewTabWrite"), c.activeTab = "write"), this.setState(c)
                        }
                    }, n.prototype.beforeDestroy = function() {
                        window.removeEventListener("resize", this.handleResize), this.resizeObserver.disconnect(), Ma(this.tooltipRef.current)
                    }, n.prototype.render = function() {
                        var e = this,
                            t = this.props,
                            n = t.previewStyle,
                            r = t.eventEmitter,
                            o = t.editorType,
                            i = this.state,
                            a = i.popupInfo,
                            l = i.showPopup,
                            c = i.activeTab,
                            u = i.items,
                            d = i.dropdownItems,
                            p = {
                                eventEmitter: r,
                                tooltipRef: this.tooltipRef,
                                disabled: "markdown" === o && "tab" === n && "preview" === c,
                                execCommand: this.execCommand,
                                setPopupInfo: this.setPopupInfo
                            },
                            h = "tab" === n ? {
                                borderTopLeftRadius: 0
                            } : null;
                        return Eg(Qv || (Qv = s(['\n      <div class="', '">\n        <div\n          class="', '"\n          style="display: ', '"\n        >\n          <', " tabs=", " activeTab=", " onClick=", ' />\n        </div>\n        <div\n          class="', '"\n          ref=', "\n          style=", "\n        >\n          ", "\n          <", "\n            item=", "\n            items=", "\n            ...", "\n          />\n        </div>\n        <", "\n          info=", "\n          show=", "\n          eventEmitter=", "\n          hidePopup=", "\n          execCommand=", "\n        />\n      </div>\n    "], ['\n      <div class="', '">\n        <div\n          class="', '"\n          style="display: ', '"\n        >\n          <', " tabs=", " activeTab=", " onClick=", ' />\n        </div>\n        <div\n          class="', '"\n          ref=', "\n          style=", "\n        >\n          ", "\n          <", "\n            item=", "\n            items=", "\n            ...", "\n          />\n        </div>\n        <", "\n          info=", "\n          show=", "\n          eventEmitter=", "\n          hidePopup=", "\n          execCommand=", "\n        />\n      </div>\n    "])), xa("toolbar"), xa("md-tab-container"), "wysiwyg" === o || "vertical" === n ? "none" : "block", Lv, this.tabs, c, this.toggleTab, xa("defaultUI-toolbar"), (function(t) {
                            return e.refs.el = t
                        }), h, u.map((function(t, n) {
                            var r;
                            return Eg(Xv || (Xv = s(["\n              <", "\n                group=", "\n                hiddenDivider=", "\n                setItemWidth=", "\n                ...", "\n              />\n            "], ["\n              <", "\n                group=", "\n                hiddenDivider=", "\n                setItemWidth=", "\n                ...", "\n              />\n            "])), cy, t, n === u.length - 1 || (null === (r = u[n + 1]) || void 0 === r ? void 0 : r.hidden), e.setItemWidth, p)
                        })), dy, Fv("more"), d, p, $v, a, l, r, this.hidePopup, this.execCommand)
                    }, n
                }($g),
                hy = function(e) {
                    function n(t) {
                        var n = e.call(this, t) || this;
                        return n.handleClickDocument = function(e) {
                            Oa(e.target, "." + xa("context-menu")) || n.setState({
                                pos: null
                            })
                        }, n.state = {
                            pos: null,
                            menuGroups: []
                        }, n.addEvent(), n
                    }
                    return t(n, e), n.prototype.addEvent = function() {
                        var e = this;
                        this.props.eventEmitter.listen("contextmenu", (function(t) {
                            var n = t.pos,
                                r = t.menuGroups;
                            e.setState({
                                pos: n,
                                menuGroups: r
                            })
                        }))
                    }, n.prototype.mounted = function() {
                        document.addEventListener("click", this.handleClickDocument)
                    }, n.prototype.beforeDestroy = function() {
                        document.removeEventListener("click", this.handleClickDocument)
                    }, n.prototype.getMenuGroupElements = function() {
                        var e = this,
                            t = this.state,
                            n = t.pos,
                            r = t.menuGroups;
                        return n ? r.reduce((function(t, n) {
                            var r = [];
                            return n.forEach((function(t) {
                                var n = t.label,
                                    o = t.className,
                                    i = void 0 !== o && o,
                                    a = t.disabled,
                                    l = t.onClick;
                                r.push(Eg(Yv || (Yv = s(["\n                <li\n                  onClick=", '\n                  class="menu-item', '"\n                  aria-role="menuitem"\n                >\n                  <span class="', '">', "</span>\n                </li>\n              "], ["\n                <li\n                  onClick=", '\n                  class="menu-item', '"\n                  aria-role="menuitem"\n                >\n                  <span class="', '">', "</span>\n                </li>\n              "])), (function() {
                                    a || (l(), e.setState({
                                        pos: null
                                    }))
                                }), a ? " disabled" : "", i, n))
                            })), t.push(Eg(ey || (ey = s(['<ul class="menu-group">\n              ', "\n            </ul>"], ['<ul class="menu-group">\n              ', "\n            </ul>"])), r)), t
                        }), []) : []
                    }, n.prototype.render = function() {
                        var e = o({
                            display: this.state.pos ? "block" : "none"
                        }, this.state.pos);
                        return Eg(ty || (ty = s(['<div class="', '" style=', ' aria-role="menu">\n      ', "\n    </div>"], ['<div class="', '" style=', ' aria-role="menu">\n      ', "\n    </div>"])), xa("context-menu"), e, this.getMenuGroupElements())
                    }, n
                }($g),
                fy = function(e) {
                    function n(t) {
                        var n = e.call(this, t) || this;
                        n.changeMode = function(e) {
                            e !== n.state.editorType && n.setState({
                                editorType: e
                            })
                        }, n.changePreviewStyle = function(e) {
                            e !== n.state.previewStyle && n.setState({
                                previewStyle: e
                            })
                        }, n.hide = function() {
                            n.setState({
                                hide: !0
                            })
                        }, n.show = function() {
                            n.setState({
                                hide: !1
                            })
                        };
                        var r = t.editorType,
                            o = t.previewStyle;
                        return n.state = {
                            editorType: r,
                            previewStyle: o,
                            hide: !1
                        }, n.addEvent(), n
                    }
                    return t(n, e), n.prototype.mounted = function() {
                        var e = this.props.slots,
                            t = e.wwEditor,
                            n = e.mdEditor,
                            r = e.mdPreview;
                        this.refs.wwContainer.appendChild(t), this.refs.mdContainer.insertAdjacentElement("afterbegin", n), this.refs.mdContainer.appendChild(r)
                    }, n.prototype.insertToolbarItem = function(e, t) {
                        this.toolbar.insertToolbarItem(e, t)
                    }, n.prototype.removeToolbarItem = function(e) {
                        this.toolbar.removeToolbarItem(e)
                    }, n.prototype.render = function() {
                        var e = this,
                            t = this.props,
                            n = t.eventEmitter,
                            r = t.hideModeSwitch,
                            o = t.toolbarItems,
                            i = t.theme,
                            a = this.state,
                            l = a.hide,
                            c = a.previewStyle,
                            u = a.editorType,
                            d = l ? " hidden" : "",
                            p = xa("markdown" === u ? "md-mode" : "ww-mode"),
                            h = xa("md") + "-" + c + "-style",
                            f = xa(["light" !== i, i + " "]);
                        return Eg(ry || (ry = s(['\n      <div\n        class="', "", "", '"\n        ref=', "\n      >\n        <", "\n          ref=", "\n          eventEmitter=", "\n          previewStyle=", "\n          toolbarItems=", "\n          editorType=", '\n        />\n        <div\n          class="', " ", '"\n          ref=', '\n        >\n          <div class="', '">\n            <div\n              class="', " ", '"\n              ref=', '\n            >\n              <div class="', '"></div>\n            </div>\n            <div\n              class="', '"\n              ref=', "\n            />\n          </div>\n        </div>\n        ", "\n        <", " eventEmitter=", " />\n      </div>\n    "], ['\n      <div\n        class="', "", "", '"\n        ref=', "\n      >\n        <", "\n          ref=", "\n          eventEmitter=", "\n          previewStyle=", "\n          toolbarItems=", "\n          editorType=", '\n        />\n        <div\n          class="', " ", '"\n          ref=', '\n        >\n          <div class="', '">\n            <div\n              class="', " ", '"\n              ref=', '\n            >\n              <div class="', '"></div>\n            </div>\n            <div\n              class="', '"\n              ref=', "\n            />\n          </div>\n        </div>\n        ", "\n        <", " eventEmitter=", " />\n      </div>\n    "])), f, xa("defaultUI"), d, (function(t) {
                            return e.refs.el = t
                        }), py, (function(t) {
                            return e.toolbar = t
                        }), n, c, o, u, xa("main"), p, (function(t) {
                            return e.refs.editorSection = t
                        }), xa("main-container"), xa("md-container"), h, (function(t) {
                            return e.refs.mdContainer = t
                        }), xa("md-splitter"), xa("ww-container"), (function(t) {
                            return e.refs.wwContainer = t
                        }), !r && Eg(ny || (ny = s(["<", " eventEmitter=", " editorType=", " />"], ["<", " eventEmitter=", " editorType=", " />"])), _g, n, u), hy, n)
                    }, n.prototype.addEvent = function() {
                        var e = this.props.eventEmitter;
                        e.listen("hide", this.hide), e.listen("show", this.show), e.listen("changeMode", this.changeMode), e.listen("changePreviewStyle", this.changePreviewStyle)
                    }, n
                }($g),
                my = function(e) {
                    function n(t) {
                        var n, r, o = e.call(this, t) || this,
                            i = Vg(o.options.el, Eg(oy || (oy = s(["\n        <", "\n          ref=", "\n          eventEmitter=", "\n          slots=", "\n          hideModeSwitch=", "\n          toolbarItems=", "\n          previewStyle=", "\n          editorType=", "\n          theme=", "\n        />\n      "], ["\n        <", "\n          ref=", "\n          eventEmitter=", "\n          slots=", "\n          hideModeSwitch=", "\n          toolbarItems=", "\n          previewStyle=", "\n          editorType=", "\n          theme=", "\n        />\n      "])), fy, (function(e) {
                                return r = e
                            }), o.eventEmitter, o.getEditorElements(), o.options.hideModeSwitch, o.options.toolbarItems, o.options.previewStyle, o.options.initialEditType, o.options.theme));
                        return o.setMinHeight(o.options.minHeight), o.setHeight(o.options.height), o.defaultUI = {
                            insertToolbarItem: r.insertToolbarItem.bind(r),
                            removeToolbarItem: r.removeToolbarItem.bind(r),
                            destroy: i
                        }, null === (n = o.pluginInfo.toolbarItems) || void 0 === n || n.forEach((function(e) {
                            var t = e.groupIndex,
                                n = e.itemIndex,
                                r = e.item;
                            o.defaultUI.insertToolbarItem({
                                groupIndex: t,
                                itemIndex: n
                            }, r)
                        })), o.eventEmitter.emit("loadUI", o), o
                    }
                    return t(n, e), n.factory = function(e) {
                        return e.viewer ? new ug(e) : new n(e)
                    }, n.prototype.insertToolbarItem = function(e, t) {
                        this.defaultUI.insertToolbarItem(e, t)
                    }, n.prototype.removeToolbarItem = function(e) {
                        this.defaultUI.removeToolbarItem(e)
                    }, n.prototype.destroy = function() {
                        e.prototype.destroy.call(this), this.defaultUI.destroy()
                    }, n
                }(kg),
                gy = my;
            kg.setLanguage(["en", "en-US"], {
                Markdown: "Markdown",
                WYSIWYG: "WYSIWYG",
                Write: "Write",
                Preview: "Preview",
                Headings: "Headings",
                Paragraph: "Paragraph",
                Bold: "Bold",
                Italic: "Italic",
                Strike: "Strike",
                Code: "Inline code",
                Line: "Line",
                Blockquote: "Blockquote",
                "Unordered list": "Unordered list",
                "Ordered list": "Ordered list",
                Task: "Task",
                Indent: "Indent",
                Outdent: "Outdent",
                "Insert link": "Insert link",
                "Insert CodeBlock": "Insert codeBlock",
                "Insert table": "Insert table",
                "Insert image": "Insert image",
                Heading: "Heading",
                "Image URL": "Image URL",
                "Select image file": "Select image file",
                "Choose a file": "Choose a file",
                "No file": "No file",
                Description: "Description",
                OK: "OK",
                More: "More",
                Cancel: "Cancel",
                File: "File",
                URL: "URL",
                "Link text": "Link text",
                "Add row to up": "Add row to up",
                "Add row to down": "Add row to down",
                "Add column to left": "Add column to left",
                "Add column to right": "Add column to right",
                "Remove row": "Remove row",
                "Remove column": "Remove column",
                "Align column to left": "Align column to left",
                "Align column to center": "Align column to center",
                "Align column to right": "Align column to right",
                "Remove table": "Remove table",
                "Would you like to paste as table?": "Would you like to paste as table?",
                "Text color": "Text color",
                "Auto scroll enabled": "Auto scroll enabled",
                "Auto scroll disabled": "Auto scroll disabled",
                "Choose language": "Choose language"
            });
            var vy = gy
        }(), r = r.default
    }()
}));