ok

Mini Shell

Direktori : /home2/selectio/public_html/ramali.in/dashboard/dist/js/
Upload File :
Current File : //home2/selectio/public_html/ramali.in/dashboard/dist/js/v5.tinymce.min.js

/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 */
! function() {
    "use strict";

    function r(e) { if (null === e) return "null"; if (void 0 === e) return "undefined"; var t = typeof e; return "object" == t && (Array.prototype.isPrototypeOf(e) || e.constructor && "Array" === e.constructor.name) ? "array" : "object" == t && (String.prototype.isPrototypeOf(e) || e.constructor && "String" === e.constructor.name) ? "string" : t }

    function f(o) {
        return m(function(e, t) {
            if (e.length !== t.length) return !1;
            for (var n = e.length, r = 0; r < n; r++)
                if (!o.eq(e[r], t[r])) return !1;
            return !0
        })
    }

    function d(l) {
        return m(function(e, t) {
            var n, r, o, i = Object.keys(e),
                a = Object.keys(t);
            if (r = f(g), o = function(e) { return t = n, Array.prototype.slice.call(e).sort(t); var t }, !m(function(e, t) { return r.eq(o(e), o(t)) }).eq(i, a)) return !1;
            for (var u = i.length, s = 0; s < u; s++) { var c = i[s]; if (!l.eq(e[c], t[c])) return !1 }
            return !0
        })
    }

    function e(r) { return function(e) { return n = typeof(t = e), (null === t ? "null" : "object" == n && (Array.prototype.isPrototypeOf(t) || t.constructor && "Array" === t.constructor.name) ? "array" : "object" == n && (String.prototype.isPrototypeOf(t) || t.constructor && "String" === t.constructor.name) ? "string" : n) === r; var t, n } }

    function t(t) { return function(e) { return typeof e === t } }

    function n(t) { return function(e) { return t === e } }

    function K(e) { return null == e }

    function V(e) { return !K(e) }

    function te() {}

    function i(n, r) { return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return n(r.apply(null, e)) } }

    function a(t, n) { return function(e) { return t(n(e)) } }

    function J(e) { return function() { return e } }

    function u(e) { return e }

    function o(e, t) { return e === t }
    var m = function(e) { return { eq: e } },
        g = m(function(e, t) { return e === t }),
        p = m(function(e, t) { if (e === t) return !0; var n = r(e); return n === r(t) && (-1 !== ["undefined", "boolean", "number", "string", "function", "xml", "null"].indexOf(n) ? e === t : "array" === n ? f(p).eq(e, t) : "object" === n && d(p).eq(e, t)) }),
        X = e("string"),
        h = e("object"),
        S = e("array"),
        l = n(null),
        v = t("boolean"),
        b = n(void 0),
        y = t("function"),
        E = t("number");

    function A(r) { for (var o = [], e = 1; e < arguments.length; e++) o[e - 1] = arguments[e]; return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; var n = o.concat(e); return r.apply(null, n) } }

    function s(t) { return function(e) { return !t(e) } }

    function C(e) { return e() }

    function x(e) { e() }

    function c() { return N }
    var R = J(!1),
        w = J(!0),
        N = { fold: function(e, t) { return e() }, isSome: R, isNone: w, getOr: u, getOrThunk: k, getOrDie: function(e) { throw new Error(e || "error: getOrDie called on none.") }, getOrNull: J(null), getOrUndefined: J(void 0), or: u, orThunk: k, map: c, each: te, bind: c, exists: R, forall: w, filter: function() { return N }, toArray: function() { return [] }, toString: J("none()") };

    function k(e) { return e() }

    function _(e, t) { return ye.call(e, t) }

    function D(e, t) { return -1 < _(e, t) }

    function F(e, t) {
        for (var n = 0, r = e.length; n < r; n++)
            if (t(e[n], n)) return !0;
        return !1
    }

    function T(e, t) {
        for (var n = e.length, r = new Array(n), o = 0; o < n; o++) {
            var i = e[o];
            r[o] = t(i, o)
        }
        return r
    }

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

    function O(e, t) { for (var n = e.length - 1; 0 <= n; n--) t(e[n], n) }

    function B(e, t) {
        for (var n = [], r = [], o = 0, i = e.length; o < i; o++) {
            var a = e[o];
            (t(a, o) ? n : r).push(a)
        }
        return { pass: n, fail: r }
    }

    function U(e, t) {
        for (var n = [], r = 0, o = e.length; r < o; r++) {
            var i = e[r];
            t(i, r) && n.push(i)
        }
        return n
    }

    function P(e, n, r) { return O(e, function(e, t) { r = n(r, e, t) }), r }

    function L(e, n, r) { return Y(e, function(e, t) { r = n(r, e, t) }), r }

    function I(e, t, n) { for (var r = 0, o = e.length; r < o; r++) { var i = e[r]; if (t(i, r)) return ve.some(i); if (n(i, r)) break } return ve.none() }

    function M(e, t) { return I(e, t, R) }

    function z(e, t) {
        for (var n = 0, r = e.length; n < r; n++)
            if (t(e[n], n)) return ve.some(n);
        return ve.none()
    }

    function H(e, t) {
        return function(e) {
            for (var t = [], n = 0, r = e.length; n < r; ++n) {
                if (!S(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e);
                Ce.apply(t, e[n])
            }
            return t
        }(T(e, t))
    }

    function j(e, t) {
        for (var n = 0, r = e.length; n < r; ++n)
            if (!0 !== t(e[n], n)) return !1;
        return !0
    }

    function q(e) { var t = be.call(e, 0); return t.reverse(), t }

    function $(e, t) { return U(e, function(e) { return !D(t, e) }) }

    function W(e, t) { var n = be.call(e, 0); return n.sort(t), n }

    function G(e, t) { return 0 <= t && t < e.length ? ve.some(e[t]) : ve.none() }

    function Q(e) { return G(e, 0) }

    function Z(e) { return G(e, e.length - 1) }

    function ee(e, t) { for (var n = 0; n < e.length; n++) { var r = t(e[n], n); if (r.isSome()) return r } return ve.none() }

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

    function re(e, n) { return Ee(e, function(e, t) { return { k: t, v: n(e, t) } }) }

    function oe(n) { return function(e, t) { n[t] = e } }

    function ie(e, n, r, o) {
        return ne(e, function(e, t) {
            (n(e, t) ? r : o)(e, t)
        }), 1
    }

    function ae(e, t) { var n = {}; return ie(e, t, oe(n), te), n }

    function ue(e, t) { return Ne(e, t) ? ve.from(e[t]) : ve.none() }

    function se(e, t) { return Ne(e, t) && void 0 !== e[t] && null !== e[t] }

    function ce(e, t, n) {
        var r, o;
        if (!e) return !1;
        if (n = n || e, void 0 !== e.length) {
            for (r = 0, o = e.length; r < o; r++)
                if (!1 === t.call(n, e[r], r, e)) return !1
        } else
            for (r in e)
                if (Ne(e, r) && !1 === t.call(n, e[r], r, e)) return !1; return !0
    }

    function le(n, r) { var o = []; return ce(n, function(e, t) { o.push(r(e, t, n)) }), o }

    function fe(n, r) { var o = []; return ce(n, function(e, t) { r && !r(e, t, n) || o.push(e) }), o }

    function de(e, t) {
        if (e)
            for (var n = 0, r = e.length; n < r; n++)
                if (e[n] === t) return n;
        return -1
    }

    function me(e, t, n, r) { for (var o = b(n) ? e[0] : n, i = 0; i < e.length; i++) o = t.call(r, o, e[i], i); return o }

    function ge(e, t, n) {
        for (var r = 0, o = e.length; r < o; r++)
            if (t.call(n, e[r], r, e)) return r;
        return -1
    }

    function pe(e) { return e[e.length - 1] }
    var he = function(n) {
            function e() { return o }

            function t(e) { return e(n) }
            var r = J(n),
                o = { fold: function(e, t) { return t(n) }, isSome: w, isNone: R, getOr: r, getOrThunk: r, getOrDie: r, getOrNull: r, getOrUndefined: r, or: e, orThunk: e, map: function(e) { return he(e(n)) }, each: function(e) { e(n) }, bind: t, exists: t, forall: t, filter: function(e) { return e(n) ? o : N }, toArray: function() { return [n] }, toString: function() { return "some(" + n + ")" } };
            return o
        },
        ve = { some: he, none: c, from: function(e) { return null == e ? N : he(e) } },
        be = Array.prototype.slice,
        ye = Array.prototype.indexOf,
        Ce = Array.prototype.push,
        xe = y(Array.from) ? Array.from : function(e) { return be.call(e) },
        we = Object.keys,
        Se = Object.hasOwnProperty,
        Ee = function(e, r) {
            var o = {};
            return ne(e, function(e, t) {
                var n = r(e, t);
                o[n.k] = n.v
            }), o
        },
        Ne = function(e, t) { return Se.call(e, t) },
        ke = Array.isArray,
        _e = function() {
            return (_e = 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
            }).apply(this, arguments)
        };

    function Ae(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))[o] = t[o]);
        return e.concat(r || Array.prototype.slice.call(t))
    }

    function Re(n) { var r, o = !1; return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return o || (o = !0, r = n.apply(null, e)), r } }

    function De(e, t) { var n = String(t).toLowerCase(); return M(e, function(e) { return e.search(n) }) }

    function Te(e, t) { return -1 !== e.indexOf(t) }

    function Oe(t) { return function(e) { return e.replace(t, "") } }

    function Be(e) { return 0 < e.length }

    function Pe(e) { return !Be(e) }

    function Le(t) { return function(e) { return Te(e, t) } }

    function Ie(e) { return window.matchMedia(e).matches }

    function Me(e) { return null == e ? "" : ("" + e).replace(wt, "") }

    function Fe(e, t) { return t ? !("array" !== t || !ke(e)) || typeof e === t : void 0 !== e }

    function Ue(e, t) {
        for (var n = [], r = function(e) { return n.push(e), t(e) }, o = t(e);
            (o = o.bind(r)).isSome(););
        return n
    }

    function ze(e, t) { var n = e.dom; if (1 !== n.nodeType) return !1; var r = n; if (void 0 !== r.matches) return r.matches(t); if (void 0 !== r.msMatchesSelector) return r.msMatchesSelector(t); if (void 0 !== r.webkitMatchesSelector) return r.webkitMatchesSelector(t); if (void 0 !== r.mozMatchesSelector) return r.mozMatchesSelector(t); throw new Error("Browser lacks native selectors") }

    function He(e) { return 1 !== e.nodeType && 9 !== e.nodeType && 11 !== e.nodeType || 0 === e.childElementCount }

    function je(e, t) { return e.dom === t.dom }

    function Ve(e, t) { return dt().browser.isIE() ? (n = e.dom, r = t.dom, o = Node.DOCUMENT_POSITION_CONTAINED_BY, 0 != (n.compareDocumentPosition(r) & o)) : (i = e.dom) !== (a = t.dom) && i.contains(a); var n, r, o, i, a }

    function qe() { return Xe(0, 0) }

    function $e(e) {
        function t(e) { return function() { return n === e } }
        var n = e.current,
            r = e.version;
        return { current: n, version: r, isEdge: t("Edge"), isChrome: t("Chrome"), isIE: t("IE"), isOpera: t("Opera"), isFirefox: t(nt), isSafari: t("Safari") }
    }

    function We(e) {
        function t(e) { return function() { return n === e } }
        var n = e.current,
            r = e.version;
        return { current: n, version: r, isWindows: t(it), isiOS: t("iOS"), isAndroid: t(at), isOSX: t("OSX"), isLinux: t("Linux"), isSolaris: t(ut), isFreeBSD: t(st), isChromeOS: t(ct) }
    }

    function Ke(e) { if (null == e) throw new Error("Node cannot be null or undefined"); return { dom: e } }
    var Xe = function(e, t) { return { major: e, minor: t } },
        Ye = {
            nu: Xe,
            detect: function(e, t) {
                var n, r, o = String(t).toLowerCase();
                return 0 === e.length ? qe() : (r = function(e, t) { for (var n = 0; n < e.length; n++) { var r = e[n]; if (r.test(t)) return r } }(e, n = o)) ? Xe(i(1), i(2)) : { major: 0, minor: 0 };

                function i(e) { return Number(n.replace(r, "$" + e)) }
            },
            unknown: qe
        },
        Ge = function(e, t) { return "" === (n = t) || e.length >= n.length && e.substr(0, 0 + n.length) === n; var n },
        Je = Oe(/^\s+|\s+$/g),
        Qe = Oe(/^\s+/g),
        Ze = Oe(/\s+$/g),
        et = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
        tt = { browsers: J([{ name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: function(e) { return Te(e, "edge/") && Te(e, "chrome") && Te(e, "safari") && Te(e, "applewebkit") } }, { name: "Chrome", brand: "Chromium", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, et], search: function(e) { return Te(e, "chrome") && !Te(e, "chromeframe") } }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: function(e) { return Te(e, "msie") || Te(e, "trident") } }, { name: "Opera", versionRegexes: [et, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Le("opera") }, { name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Le("firefox") }, { name: "Safari", versionRegexes: [et, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: function(e) { return (Te(e, "safari") || Te(e, "mobile/")) && Te(e, "applewebkit") } }]), oses: J([{ name: "Windows", search: Le("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: "iOS", search: function(e) { return Te(e, "iphone") || Te(e, "ipad") }, versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/] }, { name: "Android", search: Le("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: "OSX", search: Le("mac os x"), versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: "Linux", search: Le("linux"), versionRegexes: [] }, { name: "Solaris", search: Le("sunos"), versionRegexes: [] }, { name: "FreeBSD", search: Le("freebsd"), versionRegexes: [] }, { name: "ChromeOS", search: Le("cros"), versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/] }]) },
        nt = "Firefox",
        rt = function() { return $e({ current: void 0, version: Ye.unknown() }) },
        ot = $e,
        it = (J("Edge"), J("Chrome"), J("IE"), J("Opera"), J(nt), J("Safari"), "Windows"),
        at = "Android",
        ut = "Solaris",
        st = "FreeBSD",
        ct = "ChromeOS",
        lt = function() { return We({ current: void 0, version: Ye.unknown() }) },
        ft = We,
        dt = (J(it), J("iOS"), J(at), J("Linux"), J("OSX"), J(ut), J(st), J(ct), Re(function() { return e = navigator.userAgent, t = ve.from(navigator.userAgentData), n = Ie, p = tt.browsers(), h = tt.oses(), v = t.bind(function(e) { return r = p, ee(e.brands, function(t) { var n = t.brand.toLowerCase(); return M(r, function(e) { var t; return n === (null === (t = e.brand) || void 0 === t ? void 0 : t.toLowerCase()) }).map(function(e) { return { current: e.name, version: Ye.nu(parseInt(t.version, 10), 0) } }) }); var r }).orThunk(function() { return De(p, n = e).map(function(e) { var t = Ye.detect(e.versionRegexes, n); return { current: e.name, version: t } }); var n }).fold(rt, ot), b = De(h, r = e).map(function(e) { var t = Ye.detect(e.versionRegexes, r); return { current: e.name, version: t } }).fold(lt, ft), { browser: v, os: b, deviceType: (i = v, a = e, u = n, s = (o = b).isiOS() && !0 === /ipad/i.test(a), c = o.isiOS() && !s, f = (l = o.isiOS() || o.isAndroid()) || u("(pointer:coarse)"), d = s || !c && l && u("(min-device-width:768px)"), m = c || l && !d, g = i.isSafari() && o.isiOS() && !1 === /safari/i.test(a), { isiPad: J(s), isiPhone: J(c), isTablet: J(d), isPhone: J(m), isTouch: J(f), isAndroid: o.isAndroid, isiOS: o.isiOS, isWebView: J(g), isDesktop: J(!m && !d && !g) }) }; var e, t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b })),
        mt = navigator.userAgent,
        gt = dt(),
        pt = gt.browser,
        ht = gt.os,
        vt = gt.deviceType,
        bt = /WebKit/.test(mt) && !pt.isEdge(),
        yt = "FormData" in window && "FileReader" in window && "URL" in window && !!URL.createObjectURL,
        Ct = -1 !== mt.indexOf("Windows Phone"),
        xt = { opera: pt.isOpera(), webkit: bt, ie: !(!pt.isIE() && !pt.isEdge()) && pt.version.major, gecko: pt.isFirefox(), mac: ht.isOSX() || ht.isiOS(), iOS: vt.isiPad() || vt.isiPhone(), android: ht.isAndroid(), contentEditable: !0, transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", caretAfter: !0, range: window.getSelection && "Range" in window, documentMode: pt.isIE() ? document.documentMode || 7 : 10, fileApi: yt, ceFalse: !0, cacheSuffix: null, container: null, experimentalShadowDom: !1, canHaveCSP: !pt.isIE(), desktop: vt.isDesktop(), windowsPhone: Ct, browser: { current: pt.current, version: pt.version, isChrome: pt.isChrome, isEdge: pt.isEdge, isFirefox: pt.isFirefox, isIE: pt.isIE, isOpera: pt.isOpera, isSafari: pt.isSafari }, os: { current: ht.current, version: ht.version, isAndroid: ht.isAndroid, isChromeOS: ht.isChromeOS, isFreeBSD: ht.isFreeBSD, isiOS: ht.isiOS, isLinux: ht.isLinux, isOSX: ht.isOSX, isSolaris: ht.isSolaris, isWindows: ht.isWindows }, deviceType: { isDesktop: vt.isDesktop, isiPad: vt.isiPad, isiPhone: vt.isiPhone, isPhone: vt.isPhone, isTablet: vt.isTablet, isTouch: vt.isTouch, isWebView: vt.isWebView } },
        wt = /^\s*|\s*$/g,
        St = function(e, n, r, o) { o = o || this, e && ce(e = r ? e[r] : e, function(e, t) { return !1 !== n.call(o, e, t, r) && void St(e, n, r, o) }) },
        Et = {
            trim: Me,
            isArray: ke,
            is: Fe,
            toArray: function(e) { if (ke(e)) return e; for (var t = [], n = 0, r = e.length; n < r; n++) t[n] = e[n]; return t },
            makeMap: function(e, t, n) { var r; for (t = t || ",", n = n || {}, r = (e = "string" == typeof(e = e || []) ? e.split(t) : e).length; r--;) n[e[r]] = {}; return n },
            each: ce,
            map: le,
            grep: fe,
            inArray: de,
            hasOwn: Ne,
            extend: function(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; for (var r = 0; r < t.length; r++) { var o, i, a = t[r]; for (o in a) !Ne(a, o) || void 0 !== (i = a[o]) && (e[o] = i) } return e },
            create: function(e, t, n) {
                var r, o, i, a = this,
                    u = 0,
                    s = (e = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(e))[3].match(/(^|\.)(\w+)$/i)[2],
                    c = a.createNS(e[3].replace(/\.\w+$/, ""), n);
                if (!c[s]) {
                    if ("static" === e[2]) return c[s] = t, void(this.onCreate && this.onCreate(e[2], e[3], c[s]));
                    t[s] || (t[s] = function() {}, u = 1), c[s] = t[s], a.extend(c[s].prototype, t), e[5] && (r = a.resolve(e[5]).prototype, o = e[5].match(/\.(\w+)$/i)[1], i = c[s], c[s] = u ? function() { return r[o].apply(this, arguments) } : function() { return this.parent = r[o], i.apply(this, arguments) }, c[s].prototype[s] = c[s], a.each(r, function(e, t) { c[s].prototype[t] = r[t] }), a.each(t, function(e, t) { r[t] ? c[s].prototype[t] = function() { return this.parent = r[t], e.apply(this, arguments) } : t !== s && (c[s].prototype[t] = e) })), a.each(t.static, function(e, t) { c[s][t] = e })
                }
            },
            walk: St,
            createNS: function(e, t) { var n, r; for (t = t || window, e = e.split("."), n = 0; n < e.length; n++) t[r = e[n]] || (t[r] = {}), t = t[r]; return t },
            resolve: function(e, t) { var n, r; for (t = t || window, n = 0, r = (e = e.split(".")).length; n < r && (t = t[e[n]]); n++); return t },
            explode: function(e, t) { return !e || Fe(e, "array") ? e : le(e.split(t || ","), Me) },
            _addCacheSuffix: function(e) { var t = xt.cacheSuffix; return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e }
        },
        Nt = { fromHtml: function(e, t) { var n = (t || document).createElement("div"); if (n.innerHTML = e, !n.hasChildNodes() || 1 < n.childNodes.length) throw console.error("HTML does not have a single root node", e), new Error("HTML must have a single root node"); return Ke(n.childNodes[0]) }, fromTag: function(e, t) { var n = (t || document).createElement(e); return Ke(n) }, fromText: function(e, t) { var n = (t || document).createTextNode(e); return Ke(n) }, fromDom: Ke, fromPoint: function(e, t, n) { return ve.from(e.dom.elementFromPoint(t, n)).map(Ke) } };

    function kt(e) { return e.dom.nodeName.toLowerCase() }

    function _t(e) { return e.dom.nodeType }

    function At(t) { return function(e) { return _t(e) === t } }

    function Rt(e) { return Nt.fromDom(e.dom.ownerDocument) }

    function Dt(e) { return An(e) ? e : Rt(e) }

    function Tt(e) { return Nt.fromDom(Dt(e).dom.defaultView) }

    function Ot(e) { return ve.from(e.dom.parentNode).map(Nt.fromDom) }

    function Bt(e) { return ve.from(e.dom.previousSibling).map(Nt.fromDom) }

    function Pt(e) { return ve.from(e.dom.nextSibling).map(Nt.fromDom) }

    function Lt(e) { return q(Ue(e, Bt)) }

    function It(e) { return Ue(e, Pt) }

    function Mt(e, t) { var n = e.dom.childNodes; return ve.from(n[t]).map(Nt.fromDom) }

    function Ft(e) { return Mt(e, 0) }

    function Ut(e) { return Mt(e, e.dom.childNodes.length - 1) }

    function zt(e) { return e.dom.childNodes.length }

    function Ht(e) { return Rn(e) && V(e.dom.host) }

    function jt(t) { return Ht(t) ? t : function() { var e = Dt(t).dom.head; if (null == e) throw new Error("Head is not available yet"); return Nt.fromDom(e) }() }

    function Vt(e) { return Nt.fromDom(e.dom.host) }

    function qt(t, n) { Ot(t).each(function(e) { e.dom.insertBefore(n.dom, t.dom) }) }

    function $t(e, t) { Pt(e).fold(function() { Ot(e).each(function(e) { Pn(e, t) }) }, function(e) { qt(e, t) }) }

    function Wt(t, n) { Ft(t).fold(function() { Pn(t, n) }, function(e) { t.dom.insertBefore(n.dom, e.dom) }) }

    function Kt(t, e) { Y(e, function(e) { Pn(t, e) }) }

    function Xt(e) { e.dom.textContent = "", Y(Dn(e), function(e) { Ln(e) }) }

    function Yt(e) {
        var t, n = Dn(e);
        0 < n.length && (t = e, Y(n, function(e) { qt(t, e) })), Ln(e)
    }

    function Gt(e, t) { return void 0 !== e ? e : void 0 !== t ? t : 0 }

    function Jt(e) {
        var t = void 0 !== e ? e.dom : document,
            n = t.body.scrollLeft || t.documentElement.scrollLeft,
            r = t.body.scrollTop || t.documentElement.scrollTop;
        return Fn(n, r)
    }

    function Qt(e, t, n) {
        var r = (void 0 !== n ? n.dom : document).defaultView;
        r && r.scrollTo(e, t)
    }

    function Zt(e, t) { dt().browser.isSafari() && y(e.dom.scrollIntoViewIfNeeded) ? e.dom.scrollIntoViewIfNeeded(!1) : e.dom.scrollIntoView(t) }

    function en(e, t, n, r) { return { x: e, y: t, width: n, height: r, right: e + n, bottom: t + r } }

    function tn(e) {
        var r = void 0 === e ? window : e,
            t = r.document,
            o = Jt(Nt.fromDom(t)),
            n = void 0 === r ? window : r;
        return (dt().browser.isFirefox() ? ve.none() : ve.from(n.visualViewport)).fold(function() {
            var e = r.document.documentElement,
                t = e.clientWidth,
                n = e.clientHeight;
            return en(o.left, o.top, t, n)
        }, function(e) { return en(Math.max(e.pageLeft, o.left), Math.max(e.pageTop, o.top), e.width, e.height) })
    }

    function nn(t) { return function(e) { return !!e && e.nodeType === t } }

    function rn(e) { return e && !Object.getPrototypeOf(e) }

    function on(e) { var n = e.map(function(e) { return e.toLowerCase() }); return function(e) { if (e && e.nodeName) { var t = e.nodeName.toLowerCase(); return D(n, t) } return !1 } }

    function an(r, e) {
        var o = e.toLowerCase().split(" ");
        return function(e) {
            if (zn(e))
                for (var t = 0; t < o.length; t++) { var n = e.ownerDocument.defaultView.getComputedStyle(e, null); if ((n ? n.getPropertyValue(r) : null) === o[t]) return !0 }
            return !1
        }
    }

    function un(t) { return function(e) { return zn(e) && e.hasAttribute(t) } }

    function sn(e) { return zn(e) && e.hasAttribute("data-mce-bogus") }

    function cn(e) { return zn(e) && "TABLE" === e.tagName }

    function ln(t) { return function(e) { if (zn(e)) { if (e.contentEditable === t) return !0; if (e.getAttribute("data-mce-contenteditable") === t) return !0 } return !1 } }

    function fn(e, t, n) { return void 0 === n && (n = o), e.exists(function(e) { return n(e, t) }) }

    function dn(e, t, n) { return e.isSome() && t.isSome() ? ve.some(n(e.getOrDie(), t.getOrDie())) : ve.none() }

    function mn(e) { return void 0 !== e.style && y(e.style.getPropertyValue) }

    function gn(e, t, n) {
        if (!(X(n) || v(n) || E(n))) throw console.error("Invalid call to Attribute.set. Key ", t, ":: Value ", n, ":: Element ", e), new Error("Attribute value was not simple");
        e.setAttribute(t, n + "")
    }

    function pn(e, t, n) { gn(e.dom, t, n) }

    function hn(e, t) {
        var n = e.dom;
        ne(t, function(e, t) { gn(n, t, e) })
    }

    function vn(e, t) { var n = e.dom.getAttribute(t); return null === n ? void 0 : n }

    function bn(e, t) { return ve.from(vn(e, t)) }

    function yn(e, t) { e.dom.removeAttribute(t) }

    function Cn(e, t) {
        var n = e.dom;
        ne(t, function(e, t) {
            ! function(e, t, n) {
                if (!X(n)) throw console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e), new Error("CSS value must be a string: " + n);
                mn(e) && e.style.setProperty(t, n)
            }(n, t, e)
        })
    }

    function xn(e, t) {
        var n = e.dom,
            r = window.getComputedStyle(n).getPropertyValue(t);
        return "" !== r || In(e) ? r : Qn(n, t)
    }

    function wn(e, t) {
        var n = e.dom,
            r = Qn(n, t);
        return ve.from(r).filter(function(e) { return 0 < e.length })
    }

    function Sn(e) {
        var t = {},
            n = e.dom;
        if (mn(n))
            for (var r = 0; r < n.style.length; r++) {
                var o = n.style.item(r);
                t[o] = n.style[o]
            }
        return t
    }

    function En(e) { return M(e, kn) }

    function Nn(e, t) { return e.children && D(e.children, t) }
    "undefined" != typeof window || Function("return this;")();
    var kn = At(1),
        _n = At(3),
        An = At(9),
        Rn = At(11),
        Dn = function(e) { return T(e.dom.childNodes, Nt.fromDom) },
        Tn = y(Element.prototype.attachShadow) && y(Node.prototype.getRootNode),
        On = J(Tn),
        Bn = Tn ? function(e) { return Nt.fromDom(e.dom.getRootNode()) } : Dt,
        Pn = function(e, t) { e.dom.appendChild(t.dom) },
        Ln = function(e) {
            var t = e.dom;
            null !== t.parentNode && t.parentNode.removeChild(t)
        },
        In = function(e) {
            var t = _n(e) ? e.dom.parentNode : e.dom;
            if (null == t || null === t.ownerDocument) return !1;
            var n = t.ownerDocument,
                r = Nt.fromDom(t),
                o = Bn(r);
            return (Ht(o) ? ve.some(o) : ve.none()).fold(function() { return n.body.contains(t) }, a(In, Vt))
        },
        Mn = function(n, r) { return { left: n, top: r, translate: function(e, t) { return Mn(n + e, r + t) } } },
        Fn = Mn,
        Un = function(e) {
            var t, n = e.dom,
                r = n.ownerDocument.body;
            return r === n ? Fn(r.offsetLeft, r.offsetTop) : In(e) ? (t = n.getBoundingClientRect(), Fn(t.left, t.top)) : Fn(0, 0)
        },
        zn = nn(1),
        Hn = on(["textarea", "input"]),
        jn = nn(3),
        Vn = nn(8),
        qn = nn(9),
        $n = nn(11),
        Wn = on(["br"]),
        Kn = on(["img"]),
        Xn = ln("true"),
        Yn = ln("false"),
        Gn = on(["td", "th"]),
        Jn = on(["video", "audio", "object", "embed"]),
        Qn = function(e, t) { return mn(e) ? e.style.getPropertyValue(t) : "" },
        Zn = dt().browser,
        er = {},
        tr = { exports: er };

    function nr(e) { setTimeout(function() { throw e }, 0) }! function() {
        var e = this,
            t = function() {
                var e, t, n, r = { exports: {} };

                function o() {}

                function i(e) {
                    if ("object" != typeof this) throw new TypeError("Promises must be constructed via new");
                    if ("function" != typeof e) throw new TypeError("not a function");
                    this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], f(e, this)
                }

                function a(n, r) {
                    for (; 3 === n._state;) n = n._value;
                    0 !== n._state ? (n._handled = !0, i._immediateFn(function() {
                        var e, t = 1 === n._state ? r.onFulfilled : r.onRejected;
                        if (null !== t) {
                            try { e = t(n._value) } catch (e) { return void s(r.promise, e) }
                            u(r.promise, e)
                        } else(1 === n._state ? u : s)(r.promise, n._value)
                    })) : n._deferreds.push(r)
                }

                function u(t, e) {
                    try {
                        if (e === t) throw new TypeError("A promise cannot be resolved with itself.");
                        if (e && ("object" == typeof e || "function" == typeof e)) { var n = e.then; if (e instanceof i) return t._state = 3, t._value = e, void c(t); if ("function" == typeof n) return void f((r = n, o = e, function() { r.apply(o, arguments) }), t) }
                        t._state = 1, t._value = e, c(t)
                    } catch (e) { s(t, e) }
                    var r, o
                }

                function s(e, t) { e._state = 2, e._value = t, c(e) }

                function c(e) {
                    2 === e._state && 0 === e._deferreds.length && i._immediateFn(function() { e._handled || i._unhandledRejectionFn(e._value) });
                    for (var t = 0, n = e._deferreds.length; t < n; t++) a(e, e._deferreds[t]);
                    e._deferreds = null
                }

                function l(e, t, n) { this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.promise = n }

                function f(e, t) {
                    var n = !1;
                    try { e(function(e) { n || (n = !0, u(t, e)) }, function(e) { n || (n = !0, s(t, e)) }) } catch (e) {
                        if (n) return;
                        n = !0, s(t, e)
                    }
                }
                e = r, t = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}, n = setTimeout, i.prototype.catch = function(e) { return this.then(null, e) }, i.prototype.then = function(e, t) { var n = new this.constructor(o); return a(this, new l(e, t, n)), n }, i.all = function(e) {
                    var u = Array.prototype.slice.call(e);
                    return new i(function(o, i) {
                        if (0 === u.length) return o([]);
                        for (var a = u.length, e = 0; e < u.length; e++) ! function t(n, e) {
                            try {
                                if (e && ("object" == typeof e || "function" == typeof e)) { var r = e.then; if ("function" == typeof r) return r.call(e, function(e) { t(n, e) }, i), 0 }
                                u[n] = e, 0 == --a && o(u)
                            } catch (e) { i(e) }
                        }(e, u[e])
                    })
                }, i.resolve = function(t) { return t && "object" == typeof t && t.constructor === i ? t : new i(function(e) { e(t) }) }, i.reject = function(n) { return new i(function(e, t) { t(n) }) }, i.race = function(o) { return new i(function(e, t) { for (var n = 0, r = o.length; n < r; n++) o[n].then(e, t) }) }, i._immediateFn = "function" == typeof setImmediate ? function(e) { setImmediate(e) } : function(e) { n(e, 0) }, i._unhandledRejectionFn = function(e) { "undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", e) }, i._setImmediateFn = function(e) { i._immediateFn = e }, i._setUnhandledRejectionFn = function(e) { i._unhandledRejectionFn = e }, e.exports ? e.exports = i : t.Promise || (t.Promise = i);
                var d = r.exports;
                return { boltExport: ("undefined" != typeof window ? window : Function("return this;")()).Promise || d }
            };
        "object" == typeof er && void 0 !== tr ? tr.exports = t() : (e = "undefined" != typeof globalThis ? globalThis : e || self).EphoxContactWrapper = t()
    }();

    function rr(e) { return sr(function() { return new ir(e) }) }

    function or(a) {
        if (!S(a)) throw new Error("cases must be an array");
        if (0 === a.length) throw new Error("there must be at least one case");
        var u = [],
            n = {};
        return Y(a, function(e, r) {
            var t = we(e);
            if (1 !== t.length) throw new Error("one and only one name per case");
            var o = t[0],
                i = e[o];
            if (void 0 !== n[o]) throw new Error("duplicate key detected:" + o);
            if ("cata" === o) throw new Error("cannot have a case named cata (sorry)");
            if (!S(i)) throw new Error("case arguments must be an array");
            u.push(o), n[o] = function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; var t = n.length; if (t !== i.length) throw new Error("Wrong number of arguments to case " + o + ". Expected " + i.length + " (" + i + "), got " + t); return { fold: function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; if (e.length !== a.length) throw new Error("Wrong number of arguments to fold. Expected " + a.length + ", got " + e.length); return e[r].apply(null, n) }, match: function(e) { var t = we(e); if (u.length !== t.length) throw new Error("Wrong number of arguments to match. Expected: " + u.join(",") + "\nActual: " + t.join(",")); if (!j(u, function(e) { return D(t, e) })) throw new Error("Not all branches were specified when using match. Specified: " + t.join(", ") + "\nRequired: " + u.join(", ")); return e[o].apply(null, n) }, log: function(e) { console.log(e, { constructors: u, constructor: o, params: n }) } } }
        }), n
    }
    var ir = tr.exports.boltExport,
        ar = function(e) {
            function r(e) { o() ? i(e) : t.push(e) }
            var n = ve.none(),
                t = [],
                o = function() { return n.isSome() },
                i = function(t) { n.each(function(e) { setTimeout(function() { t(e) }, 0) }) };
            return e(function(e) { o() || (n = ve.some(e), Y(t, i), t = []) }), { get: r, map: function(n) { return ar(function(t) { r(function(e) { t(n(e)) }) }) }, isReady: o }
        },
        ur = { nu: ar, pure: function(t) { return ar(function(e) { e(t) }) } },
        sr = function(n) {
            function e(e) { n().then(e, nr) }
            return { map: function(e) { return sr(function() { return n().then(e) }) }, bind: function(t) { return sr(function() { return n().then(function(e) { return t(e).toPromise() }) }) }, anonBind: function(e) { return sr(function() { return n().then(function() { return e.toPromise() }) }) }, toLazy: function() { return ur.nu(e) }, toCached: function() { var e = null; return sr(function() { return e = null === e ? n() : e }) }, toPromise: n, get: e }
        },
        cr = function(n) { return { isValue: w, isError: R, getOr: J(n), getOrThunk: J(n), getOrDie: J(n), or: function(e) { return cr(n) }, orThunk: function(e) { return cr(n) }, fold: function(e, t) { return t(n) }, map: function(e) { return cr(e(n)) }, mapError: function(e) { return cr(n) }, each: function(e) { e(n) }, bind: function(e) { return e(n) }, exists: function(e) { return e(n) }, forall: function(e) { return e(n) }, toOptional: function() { return ve.some(n) } } },
        lr = function(n) {
            return {
                isValue: R,
                isError: w,
                getOr: u,
                getOrThunk: function(e) { return e() },
                getOrDie: function() {
                    return e = String(n),
                        function() { throw new Error(e) }();
                    var e
                },
                or: u,
                orThunk: function(e) { return e() },
                fold: function(e, t) { return e(n) },
                map: function(e) { return lr(n) },
                mapError: function(e) { return lr(e(n)) },
                each: te,
                bind: function(e) { return lr(n) },
                exists: R,
                forall: w,
                toOptional: ve.none
            }
        },
        fr = { value: cr, error: lr, fromOption: function(e, t) { return e.fold(function() { return lr(t) }, cr) } };

    function dr(e) { return e.fold(u, u) }

    function mr(e, t, n, r, o) { return e(n, r) ? ve.some(n) : y(o) && o(n) ? ve.none() : t(n, r, o) }

    function gr(e, t, n) {
        for (var r = e.dom, o = y(n) ? n : R; r.parentNode;) {
            var r = r.parentNode,
                i = Nt.fromDom(r);
            if (t(i)) return ve.some(i);
            if (o(i)) break
        }
        return ve.none()
    }

    function pr(e, t, n) { return mr(function(e, t) { return t(e) }, gr, e, t, n) }

    function hr(e, t, n) { return gr(e, function(e) { return ze(e, t) }, n) }

    function vr(e, t) { return n = t, He(r = void 0 === e ? document : e.dom) ? ve.none() : ve.from(r.querySelector(n)).map(Nt.fromDom); var n, r }

    function br(e, t, n) { return mr(ze, hr, e, t, n) }

    function yr(e, t) { return "number" != typeof t && (t = 0), setTimeout(e, t) }

    function Cr(e, t) { return "number" != typeof t && (t = 1), setInterval(e, t) }

    function xr(n, r) {
        function e() {
            for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
            clearTimeout(o), o = yr(function() { n.apply(this, e) }, r)
        }
        var o;
        return e.stop = function() { clearTimeout(o) }, e
    }

    function wr(m, g) {
        function n(e, t, n) {
            var r, o = Et._addCacheSuffix(e),
                i = ue(h, o).getOrThunk(function() { return { id: "mce-u" + p++, passed: [], failed: [], count: 0 } });

            function a(e, t) {
                for (var n = e.length; n--;) e[n]();
                i.status = t, i.passed = [], i.failed = [], r && (r.onload = null, r.onerror = null, r = null)
            }

            function u() { return a(i.passed, 2), 0 }

            function s() { return a(i.failed, 3) }(h[o] = i).count++;
            var c, l, f, d = function() { var e = d;! function() { for (var e = m.styleSheets, t = e.length; t--;) { var n = e[t].ownerNode; if (n && n.id === r.id) return u(), 1 } }() && (Date.now() - l < y ? _r.setTimeout(e) : s()) };
            t && i.passed.push(t), n && i.failed.push(n), 1 !== i.status && (2 !== i.status ? 3 !== i.status ? (i.status = 1, hn(c = Nt.fromTag("link", b.dom), { rel: "stylesheet", type: "text/css", id: i.id }), l = Date.now(), g.contentCssCors && pn(c, "crossOrigin", "anonymous"), g.referrerPolicy && pn(c, "referrerpolicy", g.referrerPolicy), (r = c.dom).onload = d, r.onerror = s, f = c, Pn(jt(v), f), pn(c, "href", o)) : s() : u())
        }

        function o(t) { return rr(function(e) { n(t, i(e, J(fr.value(t))), i(e, J(fr.error(t)))) }) }

        function t(e) {
            var n = Et._addCacheSuffix(e);
            ue(h, n).each(function(e) {
                var t;
                0 == --e.count && (delete h[n], t = e.id, vr(jt(v), "#" + t).each(Ln))
            })
        }
        void 0 === g && (g = {});
        var p = 0,
            h = {},
            v = Nt.fromDom(m),
            b = Dt(v),
            y = g.maxLoadTime || 5e3;
        return {
            load: n,
            loadAll: function(e, n, r) {
                var a, t = T(e, o);
                a = t, rr(function(r) {
                    var o = [],
                        i = 0;
                    0 === a.length ? r([]) : Y(a, function(e, t) {
                        var n;
                        e.get((n = t, function(e) { o[n] = e, ++i >= a.length && r(o) }))
                    })
                }).get(function(e) {
                    var t = B(e, function(e) { return e.isValue() });
                    0 < t.fail.length ? r(t.fail.map(dr)) : n(t.pass.map(dr))
                })
            },
            unload: t,
            unloadAll: function(e) { Y(e, function(e) { t(e) }) },
            _setReferrerPolicy: function(e) { g.referrerPolicy = e }
        }
    }
    or([{ bothErrors: ["error1", "error2"] }, { firstError: ["error1", "value2"] }, { secondError: ["value1", "error2"] }, { bothValues: ["value1", "value2"] }]);
    var Sr, Er, Nr = function(e, t) { return M(e.dom.childNodes, function(e) { return t(Nt.fromDom(e)) }).map(Nt.fromDom) },
        kr = window.Promise || ir,
        _r = {
            requestAnimationFrame: function(e, t) {
                Sr ? Sr.then(e) : Sr = new kr(function(e) {
                    (function(e, t) {
                        for (var n = window.requestAnimationFrame, r = ["ms", "moz", "webkit"], o = 0; o < r.length && !n; o++) n = window[r[o] + "RequestAnimationFrame"];
                        (n = n || function(e) { window.setTimeout(e, 0) })(e, t)
                    })(e, t = t || document.body)
                }).then(e)
            },
            setTimeout: yr,
            setInterval: Cr,
            setEditorTimeout: function(e, t, n) { return yr(function() { e.removed || t() }, n) },
            setEditorInterval: function(e, t, n) { var r = Cr(function() { e.removed ? clearInterval(r) : t() }, n); return r },
            debounce: xr,
            throttle: xr,
            clearInterval: function(e) { return clearInterval(e) },
            clearTimeout: function(e) { return clearTimeout(e) }
        },
        Ar = (Er = new WeakMap, { forElement: function(e, t) { var n = Bn(e).dom; return ve.from(Er.get(n)).getOrThunk(function() { var e = wr(n, t); return Er.set(n, e), e }) } }),
        Rr = (Dr.prototype.current = function() { return this.node }, Dr.prototype.next = function(e) { return this.node = this.findSibling(this.node, "firstChild", "nextSibling", e), this.node }, Dr.prototype.prev = function(e) { return this.node = this.findSibling(this.node, "lastChild", "previousSibling", e), this.node }, Dr.prototype.prev2 = function(e) { return this.node = this.findPreviousNode(this.node, "lastChild", "previousSibling", e), this.node }, Dr.prototype.findSibling = function(e, t, n, r) {
            var o, i;
            if (e) {
                if (!r && e[t]) return e[t];
                if (e !== this.rootNode) {
                    if (o = e[n]) return o;
                    for (i = e.parentNode; i && i !== this.rootNode; i = i.parentNode)
                        if (o = i[n]) return o
                }
            }
        }, Dr.prototype.findPreviousNode = function(e, t, n, r) {
            var o, i, a;
            if (e && (o = e[n], !this.rootNode || o !== this.rootNode)) {
                if (o) {
                    if (!r)
                        for (a = o[t]; a; a = a[t])
                            if (!a[t]) return a;
                    return o
                }
                return (i = e.parentNode) && i !== this.rootNode ? i : void 0
            }
        }, Dr);

    function Dr(e, t) { this.node = e, this.rootNode = t, this.current = this.current.bind(this), this.next = this.next.bind(this), this.prev = this.prev.bind(this), this.prev2 = this.prev2.bind(this) }

    function Tr(t) {
        var n;
        return function(e) {
            return n = n || function(e, t) {
                for (var n = {}, r = 0, o = e.length; r < o; r++) {
                    var i = e[r];
                    n[String(i)] = t(i, r)
                }
                return n
            }(t, w), Ne(n, kt(e))
        }
    }

    function Or(e) { return kn(e) && !lo(e) }

    function Br(e) { return kn(e) && "br" === kt(e) }

    function Pr(e) { return Eo(e) && (e = e.parentNode), So(e) && e.hasAttribute("data-mce-caret") }

    function Lr(e) { return Eo(e) && xo(e.data) }

    function Ir(e) { return Pr(e) || Lr(e) }

    function Mr(e) { return e.firstChild !== e.lastChild || !Wn(e.firstChild) }

    function Fr(e) { var t = e.container(); return !!jn(t) && (t.data.charAt(e.offset()) === Co || e.isAtStart() && Lr(t.previousSibling)) }

    function Ur(e) { var t = e.container(); return !!jn(t) && (t.data.charAt(e.offset() - 1) === Co || e.isAtEnd() && Lr(t.nextSibling)) }

    function zr(e) { return e && e.hasAttribute("data-mce-caret") ? (sn(n = (t = e.getElementsByTagName("br"))[t.length - 1]) && n.parentNode.removeChild(n), e.removeAttribute("data-mce-caret"), e.removeAttribute("data-mce-bogus"), e.removeAttribute("style"), e.removeAttribute("_moz_abspos"), e) : null; var t, n }

    function Hr(e) { return Pr(e.startContainer) }

    function jr(e) { return !Po(e) && (Do(e) ? !To(e.parentNode) : Oo(e) || Ro(e) || Bo(e) || Lo(e)) }

    function Vr(e, t) { return jr(e) && function(e, t) { for (e = e.parentNode; e && e !== t; e = e.parentNode) { if (Lo(e)) return !1; if (_o(e)) return !0 } return !0 }(e, t) }

    function qr(e) { return Io.test(e) }

    function $r(e, t) { return jr(e) && !1 === (a = t, jn(i = e) && qr(i.data) && !1 === (n = i, r = Nt.fromDom(a), hr(Nt.fromDom(n), "pre,code", A(je, r)).isSome())) || zn(o = e) && "A" === o.nodeName && !o.hasAttribute("href") && (o.hasAttribute("name") || o.hasAttribute("id")) || Mo(e); var n, r, o, i, a }

    function Wr(e, t) {
        return function(e, t) {
            var n = 0;
            if ($r(e, e)) return !1;
            var r = e.firstChild;
            if (!r) return !0;
            var o = new Rr(r, e);
            do {
                if (t) { if (Uo(r)) { r = o.next(!0); continue } if (Fo(r)) { r = o.next(); continue } }
                if (Wn(r)) n++, r = o.next();
                else {
                    if ($r(r, e)) return !1;
                    r = o.next()
                }
            } while (r);
            return n <= 1
        }(e.dom, t = void 0 === t || t)
    }

    function Kr(e, t) { return V(e) && ($r(e, t) || Or(Nt.fromDom(e))) }

    function Xr(e) { return "span" === e.nodeName.toLowerCase() && "bookmark" === e.getAttribute("data-mce-type") }

    function Yr(e, t) { var n, r, o, i = {}; if (e) { for (e = e.split(","), t = t || 10, n = 0; n < e.length; n += 2) r = String.fromCharCode(parseInt(e[n], t)), Ko[r] || (o = "&" + e[n + 1] + ";", i[r] = o, i[o] = r); return i } }

    function Gr(e, t) { return e.replace(t ? jo : Vo, function(e) { return Ko[e] || e }) }

    function Jr(e, t) { return e.replace(t ? jo : Vo, function(e) { return 1 < e.length ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : Ko[e] || "&#" + e.charCodeAt(0) + ";" }) }

    function Qr(e, t, n) { return n = n || Yo, e.replace(t ? jo : Vo, function(e) { return Ko[e] || n[e] || e }) }

    function Zr(e, t) { return (e = Et.trim(e)) ? e.split(t || " ") : [] }

    function eo(e, n) { var r; return e && (r = {}, ei(e = "string" == typeof e ? { "*": e } : e, function(e, t) { r[t] = r[t.toUpperCase()] = ("map" === n ? Zo : ni)(e, /[, ]/) })), r }

    function to(i) {
        function e(e, t, n) { var r = i[e]; return r ? r = Zo(r, /[, ]/, Zo(r.toUpperCase(), /[, ]/)) : (r = Jo[e]) || (r = Zo(t, " ", Zo(t.toUpperCase(), " ")), r = ti(r, n), Jo[e] = r), r }
        var t, s, n, r, o, a, u, c, S = {},
            l = {},
            E = [],
            f = {},
            d = {},
            m = (t = (i = i || {}).schema, c = {}, Jo[t] || (s = "id accesskey class dir lang style tabindex title role", n = "address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul", r = "a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment", "html4" !== t && (s += " contenteditable contextmenu draggable dropzone hidden spellcheck translate", n += " article aside details dialog figure main header footer hgroup section nav", r += " audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"), "html5-strict" !== t && (s += " xml:lang", r = [r, u = "acronym applet basefont big font strike tt"].join(" "), ei(Zr(u), function(e) { g(e, "", r) }), n = [n, a = "center dir isindex noframes"].join(" "), o = [n, r].join(" "), ei(Zr(a), function(e) { g(e, "", o) })), o = o || [n, r].join(" "), g("html", "manifest", "head body"), g("head", "", "base command link meta noscript script style title"), g("title hr noscript br"), g("base", "href target"), g("link", "href rel media hreflang type sizes hreflang"), g("meta", "name http-equiv content charset"), g("style", "media type scoped"), g("script", "src async defer type charset"), g("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload", o), g("address dt dd div caption", "", o), g("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn", "", r), g("blockquote", "cite", o), g("ol", "reversed start type", "li"), g("ul", "", "li"), g("li", "value", o), g("dl", "", "dt dd"), g("a", "href target rel media hreflang type", r), g("q", "cite", r), g("ins del", "cite datetime", o), g("img", "src sizes srcset alt usemap ismap width height"), g("iframe", "src name width height", o), g("embed", "src type width height"), g("object", "data type typemustmatch name usemap form width height", [o, "param"].join(" ")), g("param", "name value"), g("map", "name", [o, "area"].join(" ")), g("area", "alt coords shape href target rel media hreflang type"), g("table", "border", "caption colgroup thead tfoot tbody tr" + ("html4" === t ? " col" : "")), g("colgroup", "span", "col"), g("col", "span"), g("tbody thead tfoot", "", "tr"), g("tr", "", "td th"), g("td", "colspan rowspan headers", o), g("th", "colspan rowspan headers scope abbr", o), g("form", "accept-charset action autocomplete enctype method name novalidate target", o), g("fieldset", "disabled form name", [o, "legend"].join(" ")), g("label", "form for", r), g("input", "accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"), g("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value", "html4" === t ? o : r), g("select", "disabled form multiple name required size", "option optgroup"), g("optgroup", "disabled label", "option"), g("option", "disabled label selected value"), g("textarea", "cols dirname disabled form maxlength name readonly required rows wrap"), g("menu", "type label", [o, "li"].join(" ")), g("noscript", "", o), "html4" !== t && (g("wbr"), g("ruby", "", [r, "rt rp"].join(" ")), g("figcaption", "", o), g("mark rt rp summary bdi", "", r), g("canvas", "width height", o), g("video", "src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered", [o, "track source"].join(" ")), g("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", [o, "track source"].join(" ")), g("picture", "", "img source"), g("source", "src srcset type media sizes"), g("track", "kind src srclang label default"), g("datalist", "", [r, "option"].join(" ")), g("article section nav aside main header footer", "", o), g("hgroup", "", "h1 h2 h3 h4 h5 h6"), g("figure", "", [o, "figcaption"].join(" ")), g("time", "datetime", r), g("dialog", "open", o), g("command", "type label icon disabled checked radiogroup command"), g("output", "for form name", r), g("progress", "value max", r), g("meter", "value min max low high optimum", r), g("details", "open", [o, "summary"].join(" ")), g("keygen", "autofocus challenge disabled form keytype name")), "html5-strict" !== t && (p("script", "language xml:space"), p("style", "xml:space"), p("object", "declare classid code codebase codetype archive standby align border hspace vspace"), p("embed", "align name hspace vspace"), p("param", "valuetype type"), p("a", "charset name rev shape coords"), p("br", "clear"), p("applet", "codebase archive code object alt name width height align hspace vspace"), p("img", "name longdesc align border hspace vspace"), p("iframe", "longdesc frameborder marginwidth marginheight scrolling align"), p("font basefont", "size color face"), p("input", "usemap align"), p("select"), p("textarea"), p("h1 h2 h3 h4 h5 h6 div p legend caption", "align"), p("ul", "type compact"), p("li", "type"), p("ol dl menu dir", "compact"), p("pre", "width xml:space"), p("hr", "align noshade size width"), p("isindex", "prompt"), p("table", "summary width frame rules cellspacing cellpadding align bgcolor"), p("col", "width align char charoff valign"), p("colgroup", "width align char charoff valign"), p("thead", "align char charoff valign"), p("tr", "align char charoff valign bgcolor"), p("th", "axis align char charoff valign nowrap bgcolor width height"), p("form", "accept"), p("td", "abbr axis scope align char charoff valign nowrap bgcolor width height"), p("tfoot", "align char charoff valign"), p("tbody", "align char charoff valign"), p("area", "nohref"), p("body", "background bgcolor text link vlink alink")), "html4" !== t && (p("input button select textarea", "autofocus"), p("input textarea", "placeholder"), p("a", "download"), p("link script img", "crossorigin"), p("img", "loading"), p("iframe", "sandbox seamless allowfullscreen loading")), ei(Zr("a form meter progress dfn"), function(e) { c[e] && delete c[e].children[e] }), delete c.caption.children.table, delete c.script, Jo[t] = c));

        function g(e, t, n) {
            function r(e, t) { for (var n = {}, r = 0, o = e.length; r < o; r++) n[e[r]] = t || {}; return n }
            var o, i;
            t = t || "", "string" == typeof(n = n || []) && (n = Zr(n));
            for (var a = Zr(e), u = a.length; u--;) i = { attributes: r(o = Zr([s, t].join(" "))), attributesOrder: o, children: r(n, Qo) }, c[a[u]] = i
        }

        function p(e, t) {
            for (var n, r, o, i = Zr(e), a = i.length, u = Zr(t); a--;)
                for (n = c[i[a]], r = 0, o = u.length; r < o; r++) n.attributes[u[r]] = {}, n.attributesOrder.push(u[r])
        }!1 === i.verify_html && (i.valid_elements = "*[*]");
        var h = eo(i.valid_styles),
            v = eo(i.invalid_styles, "map"),
            b = eo(i.valid_classes, "map"),
            y = e("whitespace_elements", "pre script noscript style textarea video audio iframe object code"),
            C = e("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"),
            x = e("short_ended_elements", "area base basefont br col frame hr img input isindex link meta param embed source wbr track"),
            w = e("boolean_attributes", "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),
            N = "td th iframe video audio object script code",
            k = e("non_empty_elements", N + " pre", x),
            _ = e("move_caret_before_on_enter_elements", N + " table", x),
            A = e("text_block_elements", "h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),
            R = e("block_elements", "hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary", A),
            D = e("text_inline_elements", "span strong b em i font strike u var cite dfn code mark q sup sub samp");

        function T(e) { return new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$") }

        function O(e) {
            var t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/,
                C = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
                x = /[*?+]/;
            if (e) {
                var w = Zr(e, ",");
                for (S["@"] && (h = S["@"].attributes, v = S["@"].attributesOrder), t = 0, n = w.length; t < n; t++)
                    if (i = y.exec(w[t])) {
                        if (g = i[1], c = i[2], p = i[3], s = i[5], a = { attributes: d = {}, attributesOrder: m = [] }, "#" === g && (a.paddEmpty = !0), "-" === g && (a.removeEmpty = !0), "!" === i[4] && (a.removeEmptyAttrs = !0), h && (ne(h, function(e, t) { d[t] = e }), m.push.apply(m, v)), s)
                            for (r = 0, o = (s = Zr(s, "|")).length; r < o; r++)(i = C.exec(s[r])) && (u = {}, f = i[1], l = i[2].replace(/[\\:]:/g, ":"), g = i[3], b = i[4], "!" === f && (a.attributesRequired = a.attributesRequired || [], a.attributesRequired.push(l), u.required = !0), "-" !== f ? (g && ("=" === g && (a.attributesDefault = a.attributesDefault || [], a.attributesDefault.push({ name: l, value: b }), u.defaultValue = b), ":" === g && (a.attributesForced = a.attributesForced || [], a.attributesForced.push({ name: l, value: b }), u.forcedValue = b), "<" === g && (u.validValues = Zo(b, "?"))), x.test(l) ? (a.attributePatterns = a.attributePatterns || [], u.pattern = T(l), a.attributePatterns.push(u)) : (d[l] || m.push(l), d[l] = u)) : (delete d[l], m.splice(ri(m, l), 1)));
                        h || "@" !== c || (h = d, v = m), p && (a.outputName = c, S[p] = a), x.test(c) ? (a.pattern = T(c), E.push(a)) : S[c] = a
                    }
            }
        }

        function B(e) { S = {}, E = [], O(e), ei(m, function(e, t) { l[t] = e.children }) }

        function P(e) {
            var a = /^(~)?(.+)$/;
            e && (Jo.text_block_elements = Jo.block_elements = null, ei(Zr(e, ","), function(e) {
                var t, n = a.exec(e),
                    r = "~" === n[1],
                    o = r ? "span" : "div",
                    i = n[2];
                l[i] = l[o], f[i] = o, r || (R[i.toUpperCase()] = {}, R[i] = {}), S[i] || (t = S[o], delete(t = ti({}, t)).removeEmptyAttrs, delete t.removeEmpty, S[i] = t), ei(l, function(e, t) { e[o] && (l[t] = e = ti({}, l[t]), e[i] = e[o]) })
            }))
        }

        function L(e) {
            var o = /^([+\-]?)([A-Za-z0-9_\-.\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]+)\[([^\]]+)]$/;
            Jo[i.schema] = null, e && ei(Zr(e, ","), function(e) {
                var t, n, r = o.exec(e);
                r && (n = r[1], t = n ? l[r[2]] : l[r[2]] = { "#comment": {} }, t = l[r[2]], ei(Zr(r[3], "|"), function(e) { "-" === n ? delete t[e] : t[e] = {} }))
            })
        }

        function I(e) {
            var t, n = S[e];
            if (n) return n;
            for (t = E.length; t--;)
                if ((n = E[t]).pattern.test(e)) return n
        }
        ei((i.special || "script noscript iframe noframes noembed title style textarea xmp").split(" "), function(e) { d[e] = new RegExp("</" + e + "[^>]*>", "gi") }), i.valid_elements ? B(i.valid_elements) : (ei(m, function(e, t) { S[t] = { attributes: e.attributes, attributesOrder: e.attributesOrder }, l[t] = e.children }), "html5" !== i.schema && ei(Zr("strong/b em/i"), function(e) {
            var t = Zr(e, "/");
            S[t[1]].outputName = t[0]
        }), ei(Zr("ol ul sub sup blockquote span font a table tbody strong em b i"), function(e) { S[e] && (S[e].removeEmpty = !0) }), ei(Zr("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"), function(e) { S[e].paddEmpty = !0 }), ei(Zr("span"), function(e) { S[e].removeEmptyAttrs = !0 })), P(i.custom_elements), L(i.valid_children), O(i.extended_valid_elements), L("+ol[ul|ol],+ul[ul|ol]"), ei({ dd: "dl", dt: "dl", li: "ul ol", td: "tr", th: "tr", tr: "tbody thead tfoot", tbody: "table", thead: "table", tfoot: "table", legend: "fieldset", area: "map", param: "video audio object" }, function(e, t) { S[t] && (S[t].parentsRequired = Zr(e)) }), i.invalid_elements && ei(ni(i.invalid_elements), function(e) { S[e] && delete S[e] }), I("span") || O("span[!data-mce-type|*]");
        var M = J(h),
            F = J(v),
            U = J(b),
            z = J(w),
            H = J(R),
            j = J(A),
            V = J(D),
            q = J(x),
            $ = J(C),
            W = J(k),
            K = J(_),
            X = J(y),
            Y = J(d),
            G = J(f);
        return {
            children: l,
            elements: S,
            getValidStyles: M,
            getValidClasses: U,
            getBlockElements: H,
            getInvalidStyles: F,
            getShortEndedElements: q,
            getTextBlockElements: j,
            getTextInlineElements: V,
            getBoolAttrs: z,
            getElementRule: I,
            getSelfClosingElements: $,
            getNonEmptyElements: W,
            getMoveCaretBeforeOnEnterElements: K,
            getWhiteSpaceElements: X,
            getSpecialElements: Y,
            isValidChild: function(e, t) { var n = l[e.toLowerCase()]; return !(!n || !n[t.toLowerCase()]) },
            isValid: function(e, t) {
                var n, r, o = I(e);
                if (o) {
                    if (!t) return !0;
                    if (o.attributes[t]) return !0;
                    if (n = o.attributePatterns)
                        for (r = n.length; r--;)
                            if (n[r].pattern.test(e)) return !0
                }
                return !1
            },
            getCustomElements: G,
            addValidElements: O,
            setValidElements: B,
            addCustomElements: P,
            addValidChildren: L
        }
    }

    function no(e, t, n, r) {
        function o(e) { return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e }
        return "#" + o(t) + o(n) + o(r)
    }

    function ro(b, e) {
        var u, o, y = this,
            C = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
            x = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
            w = /\s*([^:]+):\s*([^;]+);?/g,
            S = /\s+$/,
            E = {},
            N = bo;
        b = b || {}, e && (u = e.getValidStyles(), o = e.getInvalidStyles());
        for (var t = ("\\\" \\' \\; \\: ; : " + N).split(" "), k = 0; k < t.length; k++) E[t[k]] = N + k, E[N + k] = t[k];
        return {
            toHex: function(e) { return e.replace(C, no) },
            parse: function(e) {
                function t(e, t, n) { var r = p[e + "-top" + t]; if (r) { var o = p[e + "-right" + t]; if (o) { var i = p[e + "-bottom" + t]; if (i) { var a = p[e + "-left" + t]; if (a) { var u = [r, o, i, a]; for (k = u.length - 1; k-- && u[k] === u[k + 1];); - 1 < k && n || (p[e + t] = -1 === k ? u[0] : u.join(" "), delete p[e + "-top" + t], delete p[e + "-right" + t], delete p[e + "-bottom" + t], delete p[e + "-left" + t]) } } } } }

                function n(e) {
                    var t, n = p[e];
                    if (n) {
                        for (t = (n = n.split(" ")).length; t--;)
                            if (n[t] !== n[0]) return;
                        return p[e] = n[0], 1
                    }
                }

                function r(e) { return f = !0, E[e] }

                function u(e, t) { return f && (e = e.replace(/\uFEFF[0-9]/g, function(e) { return E[e] })), t ? e : e.replace(/\\([\'\";:])/g, "$1") }

                function o(e) { return String.fromCharCode(parseInt(e.slice(1), 16)) }

                function i(e) { return e.replace(/\\[0-9a-f]+/gi, o) }

                function a(e, t, n, r, o, i) { if (o = o || i) return "'" + (o = u(o)).replace(/\'/g, "\\'") + "'"; if (t = u(t || n || r), !b.allow_script_urls) { var a = t.replace(/[\s\r\n]+/g, ""); if (/(java|vb)script:/i.test(a)) return ""; if (!b.allow_svg_data_urls && /^data:image\/svg/i.test(a)) return "" } return "url('" + (t = h ? h.call(v, t, "style") : t).replace(/\'/g, "\\'") + "')" }
                var s, c, l, f, d, m, g, p = {},
                    h = b.url_converter,
                    v = b.url_converter_scope || y;
                if (e) {
                    for (e = (e = e.replace(/[\u0000-\u001F]/g, "")).replace(/\\[\"\';:\uFEFF]/g, r).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(e) { return e.replace(/[;:]/g, r) }); s = w.exec(e);) w.lastIndex = s.index + s[0].length, c = s[1].replace(S, "").toLowerCase(), l = s[2].replace(S, ""), c && l && (c = i(c), l = i(l), -1 === c.indexOf(N) && -1 === c.indexOf('"') && (b.allow_script_urls || "behavior" !== c && !/expression\s*\(|\/\*|\*\//.test(l)) && ("font-weight" === c && "700" === l ? l = "bold" : "color" !== c && "background-color" !== c || (l = l.toLowerCase()), l = (l = l.replace(C, no)).replace(x, a), p[c] = f ? u(l, !0) : l));
                    t("border", "", !0), t("border", "-width"), t("border", "-color"), t("border", "-style"), t("padding", ""), t("margin", ""), m = "border-style", g = "border-color", n(d = "border-width") && n(m) && n(g) && (p.border = p[d] + " " + p[m] + " " + p[g], delete p[d], delete p[m], delete p[g]), "medium none" === p.border && delete p.border, "none" === p["border-image"] && delete p["border-image"]
                }
                return p
            },
            serialize: function(i, r) {
                function e(e) {
                    var t, n = u[e];
                    if (n)
                        for (var r = 0, o = n.length; r < o; r++) e = n[r], (t = i[e]) && (a += (0 < a.length ? " " : "") + e + ": " + t + ";")
                }
                var a = "";
                return r && u ? (e("*"), e(r)) : ne(i, function(e, t) { var n;!e || o && ((n = o["*"]) && n[t] || (n = o[r]) && n[t]) || (a += (0 < a.length ? " " : "") + t + ": " + e + ";") }), a
            }
        }
    }

    function oo(e) { return e instanceof Event || y(e.initEvent) }

    function io(e, t, n, r) { var o, i, a = function(e) { var t, n = null != r ? r : {}; for (t in e) Ne(oi, t) || (n[t] = e[t]); return V(n.composedPath) && (n.composedPath = function() { return e.composedPath() }), n }(t); return a.type = e, K(a.target) && (a.target = null !== (o = a.srcElement) && void 0 !== o ? o : n), (K((i = t).preventDefault) || oo(i)) && (a.preventDefault = function() { a.defaultPrevented = !0, a.isDefaultPrevented = w, y(t.preventDefault) ? t.preventDefault() : oo(t) && (t.returnValue = !1) }, a.stopPropagation = function() { a.cancelBubble = !0, a.isPropagationStopped = w, y(t.stopPropagation) ? t.stopPropagation() : oo(t) && (t.cancelBubble = !0) }, a.stopImmediatePropagation = function() { a.isImmediatePropagationStopped = w, a.stopPropagation() }, a.isDefaultPrevented !== w && a.isDefaultPrevented !== R && (a.isDefaultPrevented = !0 === a.defaultPrevented ? w : R, a.isPropagationStopped = !0 === a.cancelBubble ? w : R, a.isImmediatePropagationStopped = R)), a }

    function ao(e, t, n, r) { e.addEventListener ? e.addEventListener(t, n, r || !1) : e.attachEvent && e.attachEvent("on" + t, n) }

    function uo(e, t, n, r) { e.removeEventListener ? e.removeEventListener(t, n, r || !1) : e.detachEvent && e.detachEvent("on" + t, n) }

    function so(e, t) { var n, r, o, i, a = io(e.type, e, document, t); return V(i = e) && ii.test(i.type) && b(e.pageX) && !b(e.clientX) && (r = (n = a.target.ownerDocument || document).documentElement, o = n.body, a.pageX = e.clientX + (r && r.scrollLeft || o && o.scrollLeft || 0) - (r && r.clientLeft || o && o.clientLeft || 0), a.pageY = e.clientY + (r && r.scrollTop || o && o.scrollTop || 0) - (r && r.clientTop || o && o.clientTop || 0)), b(a.metaKey) && (a.metaKey = !1), a }
    var co = Tr(["h1", "h2", "h3", "h4", "h5", "h6"]),
        lo = Tr(["article", "aside", "details", "div", "dt", "figcaption", "footer", "form", "fieldset", "header", "hgroup", "html", "main", "nav", "section", "summary", "body", "p", "dl", "multicol", "dd", "figure", "address", "center", "blockquote", "h1", "h2", "h3", "h4", "h5", "h6", "listing", "xmp", "pre", "plaintext", "menu", "dir", "ul", "ol", "li", "hr", "table", "tbody", "thead", "tfoot", "th", "tr", "td", "caption"]),
        fo = Tr(["h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "address", "pre", "form", "blockquote", "center", "dir", "fieldset", "header", "footer", "article", "section", "hgroup", "aside", "nav", "figure"]),
        mo = Tr(["ul", "ol", "dl"]),
        go = Tr(["li", "dd", "dt"]),
        po = Tr(["thead", "tbody", "tfoot"]),
        ho = Tr(["td", "th"]),
        vo = Tr(["pre", "script", "textarea", "style"]),
        bo = "\ufeff",
        yo = "\xa0",
        Co = bo,
        xo = function(e) { return e === bo },
        wo = function(e) { return e.replace(/\uFEFF/g, "") },
        So = zn,
        Eo = jn,
        No = function(e) { return Eo(e) && e.data[0] === Co },
        ko = function(e) { return Eo(e) && e.data[e.data.length - 1] === Co },
        _o = Xn,
        Ao = Yn,
        Ro = Wn,
        Do = jn,
        To = on(["script", "style", "textarea"]),
        Oo = on(["img", "input", "textarea", "hr", "iframe", "video", "audio", "object", "embed"]),
        Bo = on(["table"]),
        Po = Ir,
        Lo = function(e) { return !1 === (zn(t = e) && "true" === t.getAttribute("unselectable")) && Ao(e); var t },
        Io = /^[ \t\r\n]*$/,
        Mo = un("data-mce-bookmark"),
        Fo = un("data-mce-bogus"),
        Uo = function(e) { return zn(e) && "all" === e.getAttribute("data-mce-bogus") },
        zo = function(e, t, n) { var r = n || t; if (zn(t) && Xr(t)) return t; for (var o, i, a, u, s, c, l, f, d, m, g, p = t.childNodes, h = p.length - 1; 0 <= h; h--) zo(e, p[h], r); return !zn(t) || 1 === (o = t.childNodes).length && Xr(o[0]) && t.parentNode.insertBefore(o[0], t), $n(a = t) || qn(a) || $r(t, r) || zn(i = t) && 0 < i.childNodes.length || (s = r, jn(u = t) && 0 < u.data.length && (f = new Rr(c = u, l = s).prev(!1), d = new Rr(c, l).next(!1), m = b(f) || Kr(f, l), g = b(d) || Kr(d, l), m && g)) || e.remove(t), t },
        Ho = Et.makeMap,
        jo = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
        Vo = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
        qo = /[<>&\"\']/g,
        $o = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
        Wo = { 128: "\u20ac", 130: "\u201a", 131: "\u0192", 132: "\u201e", 133: "\u2026", 134: "\u2020", 135: "\u2021", 136: "\u02c6", 137: "\u2030", 138: "\u0160", 139: "\u2039", 140: "\u0152", 142: "\u017d", 145: "\u2018", 146: "\u2019", 147: "\u201c", 148: "\u201d", 149: "\u2022", 150: "\u2013", 151: "\u2014", 152: "\u02dc", 153: "\u2122", 154: "\u0161", 155: "\u203a", 156: "\u0153", 158: "\u017e", 159: "\u0178" },
        Ko = { '"': "&quot;", "'": "&#39;", "<": "&lt;", ">": "&gt;", "&": "&amp;", "`": "&#96;" },
        Xo = { "&lt;": "<", "&gt;": ">", "&amp;": "&", "&quot;": '"', "&apos;": "'" },
        Yo = Yr("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro", 32),
        Go = {
            encodeRaw: Gr,
            encodeAllRaw: function(e) { return ("" + e).replace(qo, function(e) { return Ko[e] || e }) },
            encodeNumeric: Jr,
            encodeNamed: Qr,
            getEncodeFunc: function(e, t) {
                var n = Yr(t) || Yo,
                    r = Ho(e.replace(/\+/g, ","));
                return r.named && r.numeric ? function(e, t) { return e.replace(t ? jo : Vo, function(e) { return void 0 !== Ko[e] ? Ko[e] : void 0 !== n[e] ? n[e] : 1 < e.length ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : "&#" + e.charCodeAt(0) + ";" }) } : r.named ? t ? function(e, t) { return Qr(e, t, n) } : Qr : r.numeric ? Jr : Gr
            },
            decode: function(e) { return e.replace($o, function(e, t) { return t ? 65535 < (t = "x" === t.charAt(0).toLowerCase() ? parseInt(t.substr(1), 16) : parseInt(t, 10)) ? (t -= 65536, String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t))) : Wo[t] || String.fromCharCode(t) : Xo[e] || Yo[e] || (n = e, (r = Nt.fromTag("div").dom).innerHTML = n, r.textContent || r.innerText || n); var n, r }) }
        },
        Jo = {},
        Qo = {},
        Zo = Et.makeMap,
        ei = Et.each,
        ti = Et.extend,
        ni = Et.explode,
        ri = Et.inArray,
        oi = { keyLocation: !0, layerX: !0, layerY: !0, returnValue: !0, webkitMovementX: !0, webkitMovementY: !0, keyIdentifier: !0, mozPressure: !0 },
        ii = /^(?:mouse|contextmenu)|click/,
        ai = (ui.prototype.bind = function(e, t, n, r) {
            function o(e) { f.executeHandlers(so(e || d.event), i) }
            var i, a, u, s, c, l, f = this,
                d = window;
            if (e && 3 !== e.nodeType && 8 !== e.nodeType) {
                e[f.expando] ? i = e[f.expando] : (i = f.count++, e[f.expando] = i, f.events[i] = {}), r = r || e;
                for (var m = t.split(" "), g = m.length; g--;) c = o, s = l = !1, "DOMContentLoaded" === (u = m[g]) && (u = "ready"), f.domLoaded && "ready" === u && "complete" === e.readyState ? n.call(r, so({ type: u })) : (f.hasMouseEnterLeave || (s = f.mouseEnterLeave[u]) && (c = function(e) {
                    var t = e.currentTarget,
                        n = e.relatedTarget;
                    if (n && t.contains) n = t.contains(n);
                    else
                        for (; n && n !== t;) n = n.parentNode;
                    n || ((e = so(e || d.event)).type = "mouseout" === e.type ? "mouseleave" : "mouseenter", e.target = t, f.executeHandlers(e, i))
                }), f.hasFocusIn || "focusin" !== u && "focusout" !== u || (l = !0, s = "focusin" === u ? "focus" : "blur", c = function(e) {
                    (e = so(e || d.event)).type = "focus" === e.type ? "focusin" : "focusout", f.executeHandlers(e, i)
                }), (a = f.events[i][u]) ? "ready" === u && f.domLoaded ? n(so({ type: u })) : a.push({ func: n, scope: r }) : (f.events[i][u] = a = [{ func: n, scope: r }], a.fakeName = s, a.capture = l, a.nativeHandler = c, "ready" === u ? function(e, t, n) {
                    var r, o = e.document,
                        i = { type: "ready" };
                    n.domLoaded ? t(i) : (r = function() { uo(e, "DOMContentLoaded", r), uo(e, "load", r), n.domLoaded || (n.domLoaded = !0, t(i)), e = null }, "complete" === o.readyState || "interactive" === o.readyState && o.body ? r() : ao(e, "DOMContentLoaded", r), n.domLoaded || ao(e, "load", r))
                }(e, c, f) : ao(e, s || u, c, l)));
                return e = a = null, n
            }
        }, ui.prototype.unbind = function(n, e, t) {
            var r, o, i;
            if (!n || 3 === n.nodeType || 8 === n.nodeType) return this;
            var a = n[this.expando];
            if (a) {
                if (i = this.events[a], e) {
                    for (var u, s, c, l, f = e.split(" "), d = f.length; d--;)
                        if (l = i[o = f[d]]) {
                            if (t)
                                for (r = l.length; r--;) l[r].func === t && (u = l.nativeHandler, s = l.fakeName, c = l.capture, (l = l.slice(0, r).concat(l.slice(r + 1))).nativeHandler = u, l.fakeName = s, l.capture = c, i[o] = l);
                            t && 0 !== l.length || (delete i[o], uo(n, l.fakeName || o, l.nativeHandler, l.capture))
                        }
                } else ne(i, function(e, t) { uo(n, e.fakeName || t, e.nativeHandler, e.capture) }), i = {};
                for (o in i)
                    if (Ne(i, o)) return this;
                delete this.events[a];
                try { delete n[this.expando] } catch (e) { n[this.expando] = null }
            }
            return this
        }, ui.prototype.fire = function(e, t, n) {
            var r;
            if (!e || 3 === e.nodeType || 8 === e.nodeType) return this;
            for (var o = so({ type: t, target: e }, n);
                (r = e[this.expando]) && this.executeHandlers(o, r), (e = e.parentNode || e.ownerDocument || e.defaultView || e.parentWindow) && !o.isPropagationStopped(););
            return this
        }, ui.prototype.clean = function(e) {
            var t, n;
            if (!e || 3 === e.nodeType || 8 === e.nodeType) return this;
            if (e[this.expando] && this.unbind(e), (e = e.getElementsByTagName ? e : e.document) && e.getElementsByTagName)
                for (this.unbind(e), t = (n = e.getElementsByTagName("*")).length; t--;)(e = n[t])[this.expando] && this.unbind(e);
            return this
        }, ui.prototype.destroy = function() { this.events = {} }, ui.prototype.cancel = function(e) { return e && (e.preventDefault(), e.stopImmediatePropagation()), !1 }, ui.prototype.executeHandlers = function(e, t) {
            var n = this.events[t],
                r = n && n[e.type];
            if (r)
                for (var o = 0, i = r.length; o < i; o++) { var a = r[o]; if (a && !1 === a.func.call(a.scope, e) && e.preventDefault(), e.isImmediatePropagationStopped()) return }
        }, ui.Event = new ui, ui);

    function ui() { this.domLoaded = !1, this.events = {}, this.count = 1, this.expando = "mce-data-" + (+new Date).toString(32), this.hasMouseEnterLeave = "onmouseenter" in document.documentElement, this.hasFocusIn = "onfocusin" in document.documentElement, this.count = 1 }

    function si(e, t, n) { var r = "0x" + t - 65536; return r != r || n ? t : r < 0 ? String.fromCharCode(65536 + r) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320) }
    var ci, li, fi, di, mi, gi, pi, hi, vi, bi, yi, Ci, xi, wi, Si, Ei, Ni, ki = "sizzle" + -new Date,
        _i = window.document,
        Ai = 0,
        Ri = 0,
        Di = ua(),
        Ti = ua(),
        Oi = ua(),
        Bi = function(e, t) { return e === t && (bi = !0), 0 },
        Pi = "undefined",
        Li = {}.hasOwnProperty,
        Ii = [],
        Mi = Ii.pop,
        Fi = Ii.push,
        Ui = Ii.push,
        zi = Ii.slice,
        Hi = Ii.indexOf || function(e) {
            for (var t = 0, n = this.length; t < n; t++)
                if (this[t] === e) return t;
            return -1
        },
        ji = "[\\x20\\t\\r\\n\\f]",
        Vi = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
        qi = "\\[" + ji + "*(" + Vi + ")(?:" + ji + "*([*^$|!~]?=)" + ji + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + Vi + "))|)" + ji + "*\\]",
        $i = ":(" + Vi + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + qi + ")*)|.*)\\)|)",
        Wi = new RegExp("^" + ji + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ji + "+$", "g"),
        Ki = new RegExp("^" + ji + "*," + ji + "*"),
        Xi = new RegExp("^" + ji + "*([>+~]|" + ji + ")" + ji + "*"),
        Yi = new RegExp("=" + ji + "*([^\\]'\"]*?)" + ji + "*\\]", "g"),
        Gi = new RegExp($i),
        Ji = new RegExp("^" + Vi + "$"),
        Qi = { ID: new RegExp("^#(" + Vi + ")"), CLASS: new RegExp("^\\.(" + Vi + ")"), TAG: new RegExp("^(" + Vi + "|[*])"), ATTR: new RegExp("^" + qi), PSEUDO: new RegExp("^" + $i), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ji + "*(even|odd|(([+-]|)(\\d*)n|)" + ji + "*(?:([+-]|)" + ji + "*(\\d+)|))" + ji + "*\\)|)", "i"), bool: new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i"), needsContext: new RegExp("^" + ji + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ji + "*((?:-\\d)?\\d*)" + ji + "*\\)|)(?=[^-]|$)", "i") },
        Zi = /^(?:input|select|textarea|button)$/i,
        ea = /^h\d$/i,
        ta = /^[^{]+\{\s*\[native \w/,
        na = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
        ra = /[+~]/,
        oa = /'|\\/g,
        ia = new RegExp("\\\\([\\da-f]{1,6}" + ji + "?|(" + ji + ")|.)", "ig");
    try { Ui.apply(Ii = zi.call(_i.childNodes), _i.childNodes), Ii[_i.childNodes.length].nodeType } catch (e) {
        Ui = {
            apply: Ii.length ? function(e, t) { Fi.apply(e, zi.call(t)) } : function(e, t) {
                for (var n = e.length, r = 0; e[n++] = t[r++];);
                e.length = n - 1
            }
        }
    }
    var aa = function(e, t, n, r) {
        var o, i, a, u, s, c, l, f, d, m;
        if ((t ? t.ownerDocument || t : _i) !== Ci && yi(t), n = n || [], !e || "string" != typeof e) return n;
        if (1 !== (u = (t = t || Ci).nodeType) && 9 !== u) return [];
        if (wi && !r) {
            if (o = na.exec(e))
                if (a = o[1]) { if (9 === u) { if (!(i = t.getElementById(a)) || !i.parentNode) return n; if (i.id === a) return n.push(i), n } else if (t.ownerDocument && (i = t.ownerDocument.getElementById(a)) && Ni(t, i) && i.id === a) return n.push(i), n } else { if (o[2]) return Ui.apply(n, t.getElementsByTagName(e)), n; if ((a = o[3]) && ci.getElementsByClassName) return Ui.apply(n, t.getElementsByClassName(a)), n }
            if (ci.qsa && (!Si || !Si.test(e))) {
                if (f = l = ki, d = t, m = 9 === u && e, 1 === u && "object" !== t.nodeName.toLowerCase()) {
                    for (c = mi(e), (l = t.getAttribute("id")) ? f = l.replace(oa, "\\$&") : t.setAttribute("id", f), f = "[id='" + f + "'] ", s = c.length; s--;) c[s] = f + ma(c[s]);
                    d = ra.test(e) && fa(t.parentNode) || t, m = c.join(",")
                }
                if (m) try { return Ui.apply(n, d.querySelectorAll(m)), n } catch (e) {} finally { l || t.removeAttribute("id") }
            }
        }
        return pi(e.replace(Wi, "$1"), t, n, r)
    };

    function ua() {
        var n = [];

        function r(e, t) { return n.push(e + " ") > li.cacheLength && delete r[n.shift()], r[e + " "] = t }
        return r
    }

    function sa(e) { return e[ki] = !0, e }

    function ca(e, t) {
        var n = t && e,
            r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || 1 << 31) - (~e.sourceIndex || 1 << 31);
        if (r) return r;
        if (n)
            for (; n = n.nextSibling;)
                if (n === t) return -1;
        return e ? 1 : -1
    }

    function la(a) { return sa(function(i) { return i = +i, sa(function(e, t) { for (var n, r = a([], e.length, i), o = r.length; o--;) e[n = r[o]] && (e[n] = !(t[n] = e[n])) }) }) }

    function fa(e) { return e && typeof e.getElementsByTagName != Pi && e }

    function da() {}

    function ma(e) { for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value; return r }

    function ga(a, e, t) {
        var u = e.dir,
            s = t && "parentNode" === u,
            c = Ri++;
        return e.first ? function(e, t, n) {
            for (; e = e[u];)
                if (1 === e.nodeType || s) return a(e, t, n)
        } : function(e, t, n) {
            var r, o, i = [Ai, c];
            if (n) {
                for (; e = e[u];)
                    if ((1 === e.nodeType || s) && a(e, t, n)) return !0
            } else
                for (; e = e[u];)
                    if (1 === e.nodeType || s) { if ((r = (o = e[ki] || (e[ki] = {}))[u]) && r[0] === Ai && r[1] === c) return i[2] = r[2]; if ((o[u] = i)[2] = a(e, t, n)) return !0 }
        }
    }

    function pa(o) {
        return 1 < o.length ? function(e, t, n) {
            for (var r = o.length; r--;)
                if (!o[r](e, t, n)) return !1;
            return !0
        } : o[0]
    }

    function ha(e, t, n, r, o) { for (var i, a = [], u = 0, s = e.length, c = null != t; u < s; u++)(i = e[u]) && (n && !n(i, r, o) || (a.push(i), c && t.push(u))); return a }

    function va(e) { return void 0 !== e }

    function ba(e) { return "string" == typeof e }

    function ya(e, t) {
        var n, r = (t = t || ka).createElement("div"),
            o = t.createDocumentFragment();
        for (r.innerHTML = e; n = r.firstChild;) o.appendChild(n);
        return o
    }

    function Ca(e, t) { return e && t && -1 !== (" " + e.className + " ").indexOf(" " + t + " ") }

    function xa(e, t, n) { var r, o; return t = Wa(t)[0], e.each(function() { n && r === this.parentNode || (r = this.parentNode, o = t.cloneNode(!1), this.parentNode.insertBefore(o, this)), o.appendChild(this) }), e }

    function wa(e, t) { return new Wa.fn.init(e, t) }

    function Sa(e) { return null == e ? "" : ("" + e).replace(Ua, "") }

    function Ea(e, t) {
        var n, r, o, i;
        if (e)
            if (void 0 === (n = e.length)) {
                for (r in e)
                    if (e.hasOwnProperty(r) && (i = e[r], !1 === t.call(i, r, i))) break
            } else
                for (o = 0; o < n && (i = e[o], !1 !== t.call(i, o, i)); o++);
        return e
    }

    function Na(e, n) { var r = []; return Ea(e, function(e, t) { n(t, e) && r.push(t) }), r }
    ci = aa.support = {}, di = aa.isXML = function(e) { var t = e && (e.ownerDocument || e).documentElement; return !!t && "HTML" !== t.nodeName }, yi = aa.setDocument = function(e) {
        var t, s = e ? e.ownerDocument || e : _i,
            n = s.defaultView;
        return s !== Ci && 9 === s.nodeType && s.documentElement ? (xi = (Ci = s).documentElement, wi = !di(s), n && n !== function(e) { try { return e.top } catch (e) {} return null }(n) && (n.addEventListener ? n.addEventListener("unload", function() { yi() }, !1) : n.attachEvent && n.attachEvent("onunload", function() { yi() })), ci.attributes = !0, ci.getElementsByTagName = !0, ci.getElementsByClassName = ta.test(s.getElementsByClassName), ci.getById = !0, li.find.ID = function(e, t) { if (typeof t.getElementById != Pi && wi) { var n = t.getElementById(e); return n && n.parentNode ? [n] : [] } }, li.filter.ID = function(e) { var t = e.replace(ia, si); return function(e) { return e.getAttribute("id") === t } }, li.find.TAG = ci.getElementsByTagName ? function(e, t) { if (typeof t.getElementsByTagName != Pi) return t.getElementsByTagName(e) } : function(e, t) {
            var n, r = [],
                o = 0,
                i = t.getElementsByTagName(e);
            if ("*" !== e) return i;
            for (; n = i[o++];) 1 === n.nodeType && r.push(n);
            return r
        }, li.find.CLASS = ci.getElementsByClassName && function(e, t) { if (wi) return t.getElementsByClassName(e) }, Ei = [], Si = [], ci.disconnectedMatch = !0, Si = Si.length && new RegExp(Si.join("|")), Ei = Ei.length && new RegExp(Ei.join("|")), t = ta.test(xi.compareDocumentPosition), Ni = t || ta.test(xi.contains) ? function(e, t) {
            var n = 9 === e.nodeType ? e.documentElement : e,
                r = t && t.parentNode;
            return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
        } : function(e, t) {
            if (t)
                for (; t = t.parentNode;)
                    if (t === e) return !0;
            return !1
        }, Bi = t ? function(e, t) { return e === t ? (bi = !0, 0) : (n = !e.compareDocumentPosition - !t.compareDocumentPosition) || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !ci.sortDetached && t.compareDocumentPosition(e) === n ? e === s || e.ownerDocument === _i && Ni(_i, e) ? -1 : t === s || t.ownerDocument === _i && Ni(_i, t) ? 1 : vi ? Hi.call(vi, e) - Hi.call(vi, t) : 0 : 4 & n ? -1 : 1); var n } : function(e, t) {
            if (e === t) return bi = !0, 0;
            var n, r = 0,
                o = e.parentNode,
                i = t.parentNode,
                a = [e],
                u = [t];
            if (!o || !i) return e === s ? -1 : t === s ? 1 : o ? -1 : i ? 1 : vi ? Hi.call(vi, e) - Hi.call(vi, t) : 0;
            if (o === i) return ca(e, t);
            for (n = e; n = n.parentNode;) a.unshift(n);
            for (n = t; n = n.parentNode;) u.unshift(n);
            for (; a[r] === u[r];) r++;
            return r ? ca(a[r], u[r]) : a[r] === _i ? -1 : u[r] === _i ? 1 : 0
        }, s) : Ci
    }, aa.matches = function(e, t) { return aa(e, null, null, t) }, aa.matchesSelector = function(e, t) {
        if ((e.ownerDocument || e) !== Ci && yi(e), t = t.replace(Yi, "='$1']"), ci.matchesSelector && wi && (!Ei || !Ei.test(t)) && (!Si || !Si.test(t))) try { var n = (void 0).call(e, t); if (n || ci.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n } catch (e) {}
        return 0 < aa(t, Ci, null, [e]).length
    }, aa.contains = function(e, t) { return (e.ownerDocument || e) !== Ci && yi(e), Ni(e, t) }, aa.attr = function(e, t) {
        (e.ownerDocument || e) !== Ci && yi(e);
        var n = li.attrHandle[t.toLowerCase()],
            r = n && Li.call(li.attrHandle, t.toLowerCase()) ? n(e, t, !wi) : void 0;
        return void 0 !== r ? r : ci.attributes || !wi ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
    }, aa.error = function(e) { throw new Error("Syntax error, unrecognized expression: " + e) }, aa.uniqueSort = function(e) {
        var t, n = [],
            r = 0,
            o = 0;
        if (bi = !ci.detectDuplicates, vi = !ci.sortStable && e.slice(0), e.sort(Bi), bi) { for (; t = e[o++];) t === e[o] && (r = n.push(o)); for (; r--;) e.splice(n[r], 1) }
        return vi = null, e
    }, fi = aa.getText = function(e) {
        var t, n = "",
            r = 0,
            o = e.nodeType;
        if (o) { if (1 === o || 9 === o || 11 === o) { if ("string" == typeof e.textContent) return e.textContent; for (e = e.firstChild; e; e = e.nextSibling) n += fi(e) } else if (3 === o || 4 === o) return e.nodeValue } else
            for (; t = e[r++];) n += fi(t);
        return n
    }, (li = aa.selectors = {
        cacheLength: 50,
        createPseudo: sa,
        match: Qi,
        attrHandle: {},
        find: {},
        relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } },
        preFilter: { ATTR: function(e) { return e[1] = e[1].replace(ia, si), e[3] = (e[3] || e[4] || e[5] || "").replace(ia, si), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4) }, CHILD: function(e) { return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || aa.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && aa.error(e[0]), e }, PSEUDO: function(e) { var t, n = !e[6] && e[2]; return Qi.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && Gi.test(n) && (t = mi(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3)) } },
        filter: {
            TAG: function(e) { var t = e.replace(ia, si).toLowerCase(); return "*" === e ? function() { return !0 } : function(e) { return e.nodeName && e.nodeName.toLowerCase() === t } },
            CLASS: function(e) { var t = Di[e + " "]; return t || (t = new RegExp("(^|" + ji + ")" + e + "(" + ji + "|$)")) && Di(e, function(e) { return t.test("string" == typeof e.className && e.className || typeof e.getAttribute != Pi && e.getAttribute("class") || "") }) },
            ATTR: function(n, r, o) { return function(e) { var t = aa.attr(e, n); return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === o : "!=" === r ? t !== o : "^=" === r ? o && 0 === t.indexOf(o) : "*=" === r ? o && -1 < t.indexOf(o) : "$=" === r ? o && t.slice(-o.length) === o : "~=" === r ? -1 < (" " + t + " ").indexOf(o) : "|=" === r && (t === o || t.slice(0, o.length + 1) === o + "-")) } },
            CHILD: function(m, e, t, g, p) {
                var h = "nth" !== m.slice(0, 3),
                    v = "last" !== m.slice(-4),
                    b = "of-type" === e;
                return 1 === g && 0 === p ? function(e) { return !!e.parentNode } : function(e, t, n) {
                    var r, o, i, a, u, s, c = h != v ? "nextSibling" : "previousSibling",
                        l = e.parentNode,
                        f = b && e.nodeName.toLowerCase(),
                        d = !n && !b;
                    if (l) {
                        if (h) {
                            for (; c;) {
                                for (i = e; i = i[c];)
                                    if (b ? i.nodeName.toLowerCase() === f : 1 === i.nodeType) return !1;
                                s = c = "only" === m && !s && "nextSibling"
                            }
                            return !0
                        }
                        if (s = [v ? l.firstChild : l.lastChild], v && d) {
                            for (u = (r = (o = l[ki] || (l[ki] = {}))[m] || [])[0] === Ai && r[1], a = r[0] === Ai && r[2], i = u && l.childNodes[u]; i = ++u && i && i[c] || (a = u = 0) || s.pop();)
                                if (1 === i.nodeType && ++a && i === e) { o[m] = [Ai, u, a]; break }
                        } else if (d && (r = (e[ki] || (e[ki] = {}))[m]) && r[0] === Ai) a = r[1];
                        else
                            for (;
                                (i = ++u && i && i[c] || (a = u = 0) || s.pop()) && ((b ? i.nodeName.toLowerCase() !== f : 1 !== i.nodeType) || !++a || (d && ((i[ki] || (i[ki] = {}))[m] = [Ai, a]), i !== e)););
                        return (a -= p) === g || a % g == 0 && 0 <= a / g
                    }
                }
            },
            PSEUDO: function(e, i) { var t, a = li.pseudos[e] || li.setFilters[e.toLowerCase()] || aa.error("unsupported pseudo: " + e); return a[ki] ? a(i) : 1 < a.length ? (t = [e, e, "", i], li.setFilters.hasOwnProperty(e.toLowerCase()) ? sa(function(e, t) { for (var n, r = a(e, i), o = r.length; o--;) e[n = Hi.call(e, r[o])] = !(t[n] = r[o]) }) : function(e) { return a(e, 0, t) }) : a }
        },
        pseudos: {
            not: sa(function(e) {
                var r = [],
                    o = [],
                    u = gi(e.replace(Wi, "$1"));
                return u[ki] ? sa(function(e, t, n, r) { for (var o, i = u(e, null, r, []), a = e.length; a--;)(o = i[a]) && (e[a] = !(t[a] = o)) }) : function(e, t, n) { return r[0] = e, u(r, null, n, o), r[0] = null, !o.pop() }
            }),
            has: sa(function(t) { return function(e) { return 0 < aa(t, e).length } }),
            contains: sa(function(t) {
                return t = t.replace(ia, si),
                    function(e) { return -1 < (e.textContent || e.innerText || fi(e)).indexOf(t) }
            }),
            lang: sa(function(n) {
                return Ji.test(n || "") || aa.error("unsupported lang: " + n), n = n.replace(ia, si).toLowerCase(),
                    function(e) {
                        var t;
                        do { if (t = wi ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") } while ((e = e.parentNode) && 1 === e.nodeType);
                        return !1
                    }
            }),
            target: function(e) { var t = window.location && window.location.hash; return t && t.slice(1) === e.id },
            root: function(e) { return e === xi },
            focus: function(e) { return e === Ci.activeElement && (!Ci.hasFocus || Ci.hasFocus()) && !!(e.type || e.href || ~e.tabIndex) },
            enabled: function(e) { return !1 === e.disabled },
            disabled: function(e) { return !0 === e.disabled },
            checked: function(e) { var t = e.nodeName.toLowerCase(); return "input" === t && !!e.checked || "option" === t && !!e.selected },
            selected: function(e) { return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected },
            empty: function(e) {
                for (e = e.firstChild; e; e = e.nextSibling)
                    if (e.nodeType < 6) return !1;
                return !0
            },
            parent: function(e) { return !li.pseudos.empty(e) },
            header: function(e) { return ea.test(e.nodeName) },
            input: function(e) { return Zi.test(e.nodeName) },
            button: function(e) { var t = e.nodeName.toLowerCase(); return "input" === t && "button" === e.type || "button" === t },
            text: function(e) { var t; return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()) },
            first: la(function() { return [0] }),
            last: la(function(e, t) { return [t - 1] }),
            eq: la(function(e, t, n) { return [n < 0 ? n + t : n] }),
            even: la(function(e, t) { for (var n = 0; n < t; n += 2) e.push(n); return e }),
            odd: la(function(e, t) { for (var n = 1; n < t; n += 2) e.push(n); return e }),
            lt: la(function(e, t, n) { for (var r = n < 0 ? n + t : n; 0 <= --r;) e.push(r); return e }),
            gt: la(function(e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r); return e })
        }
    }).pseudos.nth = li.pseudos.eq, Y(["radio", "checkbox", "file", "password", "image"], function(e) {
        var t;
        li.pseudos[e] = (t = e, function(e) { return "input" === e.nodeName.toLowerCase() && e.type === t })
    }), Y(["submit", "reset"], function(e) {
        var n;
        li.pseudos[e] = (n = e, function(e) { var t = e.nodeName.toLowerCase(); return ("input" === t || "button" === t) && e.type === n })
    }), da.prototype = li.filters = li.pseudos, li.setFilters = new da, mi = aa.tokenize = function(e, t) { var n, r, o, i, a, u, s, c = Ti[e + " "]; if (c) return t ? 0 : c.slice(0); for (a = e, u = [], s = li.preFilter; a;) { for (i in n && !(r = Ki.exec(a)) || (r && (a = a.slice(r[0].length) || a), u.push(o = [])), n = !1, (r = Xi.exec(a)) && (n = r.shift(), o.push({ value: n, type: r[0].replace(Wi, " ") }), a = a.slice(n.length)), li.filter) li.filter.hasOwnProperty(i) && (!(r = Qi[i].exec(a)) || s[i] && !(r = s[i](r)) || (n = r.shift(), o.push({ value: n, type: i, matches: r }), a = a.slice(n.length))); if (!n) break } return t ? a.length : a ? aa.error(e) : Ti(e, u).slice(0) }, gi = aa.compile = function(e, t) {
        var n, h, v, b, y, r = [],
            o = [],
            i = Oi[e + " "];
        if (!i) {
            for (n = (t = t || mi(e)).length; n--;)((i = function e(t) {
                for (var o, n, r, i = t.length, a = li.relative[t[0].type], u = a || li.relative[" "], s = a ? 1 : 0, c = ga(function(e) { return e === o }, u, !0), l = ga(function(e) { return -1 < Hi.call(o, e) }, u, !0), f = [function(e, t, n) { var r = !a && (n || t !== hi) || ((o = t).nodeType ? c : l)(e, t, n); return o = null, r }]; s < i; s++)
                    if (n = li.relative[t[s].type]) f = [ga(pa(f), n)];
                    else {
                        if ((n = li.filter[t[s].type].apply(null, t[s].matches))[ki]) {
                            for (r = ++s; r < i && !li.relative[t[r].type]; r++);
                            return function e(m, g, p, h, v, t) {
                                return h && !h[ki] && (h = e(h)), v && !v[ki] && (v = e(v, t)), sa(function(e, t, n, r) {
                                    var o, i, a, u = [],
                                        s = [],
                                        c = t.length,
                                        l = e || function(e, t, n) { for (var r = 0, o = t.length; r < o; r++) aa(e, t[r], n); return n }(g || "*", n.nodeType ? [n] : n, []),
                                        f = !m || !e && g ? l : ha(l, u, m, n, r),
                                        d = p ? v || (e ? m : c || h) ? [] : t : f;
                                    if (p && p(f, d, n, r), h)
                                        for (o = ha(d, s), h(o, [], n, r), i = o.length; i--;)(a = o[i]) && (d[s[i]] = !(f[s[i]] = a));
                                    if (e) {
                                        if (v || m) {
                                            if (v) {
                                                for (o = [], i = d.length; i--;)(a = d[i]) && o.push(f[i] = a);
                                                v(null, d = [], o, r)
                                            }
                                            for (i = d.length; i--;)(a = d[i]) && -1 < (o = v ? Hi.call(e, a) : u[i]) && (e[o] = !(t[o] = a))
                                        }
                                    } else d = ha(d === t ? d.splice(c, d.length) : d), v ? v(null, t, d, r) : Ui.apply(t, d)
                                })
                            }(1 < s && pa(f), 1 < s && ma(t.slice(0, s - 1).concat({ value: " " === t[s - 2].type ? "*" : "" })).replace(Wi, "$1"), n, s < r && e(t.slice(s, r)), r < i && e(t = t.slice(r)), r < i && ma(t))
                        }
                        f.push(n)
                    }
                return pa(f)
            }(t[n]))[ki] ? r : o).push(i);
            (i = Oi(e, (h = o, b = 0 < (v = r).length, y = 0 < h.length, b ? sa(a) : a))).selector = e
        }

        function a(e, t, n, r, o) {
            var i, a, u, s = 0,
                c = "0",
                l = e && [],
                f = [],
                d = hi,
                m = e || y && li.find.TAG("*", o),
                g = Ai += null == d ? 1 : Math.random() || .1,
                p = m.length;
            for (o && (hi = t !== Ci && t); c !== p && null != (i = m[c]); c++) {
                if (y && i) {
                    for (a = 0; u = h[a++];)
                        if (u(i, t, n)) { r.push(i); break }
                    o && (Ai = g)
                }
                b && ((i = !u && i) && s--, e && l.push(i))
            }
            if (s += c, b && c !== s) {
                for (a = 0; u = v[a++];) u(l, f, t, n);
                if (e) {
                    if (0 < s)
                        for (; c--;) l[c] || f[c] || (f[c] = Mi.call(r));
                    f = ha(f)
                }
                Ui.apply(r, f), o && !e && 0 < f.length && 1 < s + v.length && aa.uniqueSort(r)
            }
            return o && (Ai = g, hi = d), l
        }
        return i
    }, pi = aa.select = function(e, t, n, r) {
        var o, i, a, u, s, c = "function" == typeof e && e,
            l = !r && mi(e = c.selector || e);
        if (n = n || [], 1 === l.length) {
            if (2 < (i = l[0] = l[0].slice(0)).length && "ID" === (a = i[0]).type && ci.getById && 9 === t.nodeType && wi && li.relative[i[1].type]) {
                if (!(t = (li.find.ID(a.matches[0].replace(ia, si), t) || [])[0])) return n;
                c && (t = t.parentNode), e = e.slice(i.shift().value.length)
            }
            for (o = Qi.needsContext.test(e) ? 0 : i.length; o-- && (a = i[o], !li.relative[u = a.type]);)
                if ((s = li.find[u]) && (r = s(a.matches[0].replace(ia, si), ra.test(i[0].type) && fa(t.parentNode) || t))) { if (i.splice(o, 1), !(e = r.length && ma(i))) return Ui.apply(n, r), n; break }
        }
        return (c || gi(e, l))(r, t, !wi, n, ra.test(e) && fa(t.parentNode) || t), n
    }, ci.sortStable = ki.split("").sort(Bi).join("") === ki, ci.detectDuplicates = !!bi, yi(), ci.sortDetached = !0;
    var ka = document,
        _a = Array.prototype.push,
        Aa = Array.prototype.slice,
        Ra = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
        Da = ai.Event,
        Ta = Et.makeMap("children,contents,next,prev"),
        Oa = function(e, t, n, r) {
            var o;
            if (ba(t)) t = ya(t, za(e[0]));
            else if (t.length && !t.nodeType) {
                if (t = Wa.makeArray(t), r)
                    for (o = t.length - 1; 0 <= o; o--) Oa(e, t[o], n, r);
                else
                    for (o = 0; o < t.length; o++) Oa(e, t[o], n, r);
                return e
            }
            if (t.nodeType)
                for (o = e.length; o--;) n.call(e[o], t);
            return e
        },
        Ba = Et.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom", " "),
        Pa = Et.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected", " "),
        La = { for: "htmlFor", class: "className", readonly: "readOnly" },
        Ia = { float: "cssFloat" },
        Ma = {},
        Fa = {},
        Ua = /^\s*|\s*$/g,
        za = function(e) { return e ? 9 === e.nodeType ? e : e.ownerDocument : ka };

    function Ha(e, t, n) {
        var r = [],
            o = e[t];
        for ("string" != typeof n && n instanceof Wa && (n = n[0]); o && 9 !== o.nodeType;) {
            if (void 0 !== n) { if (o === n) break; if ("string" == typeof n && Wa(o).is(n)) break }
            1 === o.nodeType && r.push(o), o = o[t]
        }
        return r
    }

    function ja(e, t, n, r) {
        var o = [];
        for (r instanceof Wa && (r = r[0]); e; e = e[t])
            if (!n || e.nodeType === n) {
                if (void 0 !== r) { if (e === r) break; if ("string" == typeof r && Wa(e).is(r)) break }
                o.push(e)
            }
        return o
    }

    function Va(e, t, n) {
        for (e = e[t]; e; e = e[t])
            if (e.nodeType === n) return e;
        return null
    }

    function qa(e, t) {
        var n = t.attr("style"),
            r = e.serialize(e.parse(n), t[0].nodeName) || null;
        t.attr("data-mce-style", r)
    }

    function $a(e, t) {
        var n, r, o = 0;
        if (e)
            for (n = e.nodeType, e = e.previousSibling; e; e = e.previousSibling) r = e.nodeType, (!t || 3 !== r || r !== n && e.nodeValue.length) && (o++, n = r);
        return o
    }
    wa.fn = wa.prototype = {
        constructor: wa,
        selector: "",
        context: null,
        length: 0,
        init: function(e, t) {
            var n, r, o = this;
            if (!e) return o;
            if (e.nodeType) return o.context = o[0] = e, o.length = 1, o;
            if (t && t.nodeType) o.context = t;
            else {
                if (t) return Wa(e).attr(t);
                o.context = t = document
            }
            if (ba(e)) {
                if (!(n = "<" === (o.selector = e).charAt(0) && ">" === e.charAt(e.length - 1) && 3 <= e.length ? [null, e, null] : Ra.exec(e))) return Wa(t).find(e);
                if (n[1])
                    for (r = ya(e, za(t)).firstChild; r;) _a.call(o, r), r = r.nextSibling;
                else {
                    if (!(r = za(t).getElementById(n[2]))) return o;
                    if (r.id !== n[2]) return o.find(e);
                    o.length = 1, o[0] = r
                }
            } else this.add(e, !1);
            return o
        },
        toArray: function() { return Et.toArray(this) },
        add: function(e, t) {
            var n, r;
            if (ba(e)) return this.add(Wa(e));
            if (!1 !== t)
                for (n = Wa.unique(this.toArray().concat(Wa.makeArray(e))), this.length = n.length, r = 0; r < n.length; r++) this[r] = n[r];
            else _a.apply(this, Wa.makeArray(e));
            return this
        },
        attr: function(t, n) {
            var e, r = this;
            if ("object" == typeof t) Ea(t, function(e, t) { r.attr(e, t) });
            else {
                if (!va(n)) {
                    if (r[0] && 1 === r[0].nodeType) {
                        if ((e = Ma[t]) && e.get) return e.get(r[0], t);
                        if (Pa[t]) return r.prop(t) ? t : void 0;
                        null === (n = r[0].getAttribute(t, 2)) && (n = void 0)
                    }
                    return n
                }
                this.each(function() {
                    var e;
                    1 === this.nodeType && ((e = Ma[t]) && e.set ? e.set(this, n) : null === n ? this.removeAttribute(t, 2) : this.setAttribute(t, n, 2))
                })
            }
            return r
        },
        removeAttr: function(e) { return this.attr(e, null) },
        prop: function(e, t) {
            var n = this;
            if ("object" == typeof(e = La[e] || e)) Ea(e, function(e, t) { n.prop(e, t) });
            else {
                if (!va(t)) return n[0] && n[0].nodeType && e in n[0] ? n[0][e] : t;
                this.each(function() { 1 === this.nodeType && (this[e] = t) })
            }
            return n
        },
        css: function(t, n) {
            function e(e) { return e.replace(/-(\D)/g, function(e, t) { return t.toUpperCase() }) }

            function r(e) { return e.replace(/[A-Z]/g, function(e) { return "-" + e }) }
            var o, i, a = this;
            if ("object" == typeof t) Ea(t, function(e, t) { a.css(e, t) });
            else if (va(n)) t = e(t), "number" != typeof n || Ba[t] || (n = n.toString() + "px"), a.each(function() {
                var e = this.style;
                if ((i = Fa[t]) && i.set) i.set(this, n);
                else {
                    try { this.style[Ia[t] || t] = n } catch (e) {}
                    null !== n && "" !== n || (e.removeProperty ? e.removeProperty(r(t)) : e.removeAttribute(t))
                }
            });
            else { if (o = a[0], (i = Fa[t]) && i.get) return i.get(o); if (!o.ownerDocument.defaultView) return o.currentStyle ? o.currentStyle[e(t)] : ""; try { return o.ownerDocument.defaultView.getComputedStyle(o, null).getPropertyValue(r(t)) } catch (e) { return } }
            return a
        },
        remove: function() { for (var e, t = this.length; t--;) e = this[t], Da.clean(e), e.parentNode && e.parentNode.removeChild(e); return this },
        empty: function() {
            for (var e, t = this.length; t--;)
                for (e = this[t]; e.firstChild;) e.removeChild(e.firstChild);
            return this
        },
        html: function(t) { var n; if (va(t)) { n = this.length; try { for (; n--;) this[n].innerHTML = t } catch (e) { Wa(this[n]).empty().append(t) } return this } return this[0] ? this[0].innerHTML : "" },
        text: function(e) { var t; if (va(e)) { for (t = this.length; t--;) "innerText" in this[t] ? this[t].innerText = e : this[0].textContent = e; return this } return this[0] ? this[0].innerText || this[0].textContent : "" },
        append: function() {
            return Oa(this, arguments, function(e) {
                (1 === this.nodeType || this.host && 1 === this.host.nodeType) && this.appendChild(e)
            })
        },
        prepend: function() {
            return Oa(this, arguments, function(e) {
                (1 === this.nodeType || this.host && 1 === this.host.nodeType) && this.insertBefore(e, this.firstChild)
            }, !0)
        },
        before: function() { return this[0] && this[0].parentNode ? Oa(this, arguments, function(e) { this.parentNode.insertBefore(e, this) }) : this },
        after: function() { return this[0] && this[0].parentNode ? Oa(this, arguments, function(e) { this.parentNode.insertBefore(e, this.nextSibling) }, !0) : this },
        appendTo: function(e) { return Wa(e).append(this), this },
        prependTo: function(e) { return Wa(e).prepend(this), this },
        replaceWith: function(e) { return this.before(e).remove() },
        wrap: function(e) { return xa(this, e) },
        wrapAll: function(e) { return xa(this, e, !0) },
        wrapInner: function(e) { return this.each(function() { Wa(this).contents().wrapAll(e) }), this },
        unwrap: function() { return this.parent().each(function() { Wa(this).replaceWith(this.childNodes) }) },
        clone: function() { var e = []; return this.each(function() { e.push(this.cloneNode(!0)) }), Wa(e) },
        addClass: function(e) { return this.toggleClass(e, !0) },
        removeClass: function(e) { return this.toggleClass(e, !1) },
        toggleClass: function(o, i) {
            var e = this;
            return "string" != typeof o || (-1 !== o.indexOf(" ") ? Ea(o.split(" "), function() { e.toggleClass(this, i) }) : e.each(function(e, t) {
                var n, r = Ca(t, o);
                r !== i && (n = t.className, r ? t.className = Sa((" " + n + " ").replace(" " + o + " ", " ")) : t.className += n ? " " + o : o)
            })), e
        },
        hasClass: function(e) { return Ca(this[0], e) },
        each: function(e) { return Ea(this, e) },
        on: function(e, t) { return this.each(function() { Da.bind(this, e, t) }) },
        off: function(e, t) { return this.each(function() { Da.unbind(this, e, t) }) },
        trigger: function(e) { return this.each(function() { "object" == typeof e ? Da.fire(this, e.type, e) : Da.fire(this, e) }) },
        show: function() { return this.css("display", "") },
        hide: function() { return this.css("display", "none") },
        slice: function() { return Wa(Aa.apply(this, arguments)) },
        eq: function(e) { return -1 === e ? this.slice(e) : this.slice(e, +e + 1) },
        first: function() { return this.eq(0) },
        last: function() { return this.eq(-1) },
        find: function(e) { for (var t = [], n = 0, r = this.length; n < r; n++) Wa.find(e, this[n], t); return Wa(t) },
        filter: function(n) { return Wa("function" == typeof n ? Na(this.toArray(), function(e, t) { return n(t, e) }) : Wa.filter(n, this.toArray())) },
        closest: function(n) {
            var r = [];
            return n instanceof Wa && (n = n[0]), this.each(function(e, t) {
                for (; t;) {
                    if ("string" == typeof n && Wa(t).is(n)) { r.push(t); break }
                    if (t === n) { r.push(t); break }
                    t = t.parentNode
                }
            }), Wa(r)
        },
        offset: function(e) {
            var t, n, r, o, i = 0,
                a = 0;
            return e ? this.css(e) : ((t = this[0]) && (r = (n = t.ownerDocument).documentElement, t.getBoundingClientRect && (i = (o = t.getBoundingClientRect()).left + (r.scrollLeft || n.body.scrollLeft) - r.clientLeft, a = o.top + (r.scrollTop || n.body.scrollTop) - r.clientTop)), { left: i, top: a })
        },
        push: _a,
        sort: Array.prototype.sort,
        splice: Array.prototype.splice
    }, Et.extend(wa, {
        extend: Et.extend,
        makeArray: function(e) { return e && e === e.window || e.nodeType ? [e] : Et.toArray(e) },
        inArray: function(e, t) {
            var n;
            if (t.indexOf) return t.indexOf(e);
            for (n = t.length; n--;)
                if (t[n] === e) return n;
            return -1
        },
        isArray: Et.isArray,
        each: Ea,
        trim: Sa,
        grep: Na,
        find: aa,
        expr: aa.selectors,
        unique: aa.uniqueSort,
        text: aa.getText,
        contains: aa.contains,
        filter: function(e, t, n) { var r = t.length; for (n && (e = ":not(" + e + ")"); r--;) 1 !== t[r].nodeType && t.splice(r, 1); return 1 === t.length ? Wa.find.matchesSelector(t[0], e) ? [t[0]] : [] : Wa.find.matches(e, t) }
    }), Ea({ parent: function(e) { var t = e.parentNode; return t && 11 !== t.nodeType ? t : null }, parents: function(e) { return Ha(e, "parentNode") }, next: function(e) { return Va(e, "nextSibling", 1) }, prev: function(e) { return Va(e, "previousSibling", 1) }, children: function(e) { return ja(e.firstChild, "nextSibling", 1) }, contents: function(e) { return Et.toArray(("iframe" === e.nodeName ? e.contentDocument || e.contentWindow.document : e).childNodes) } }, function(r, o) {
        wa.fn[r] = function(t) {
            var n = [];
            this.each(function() {
                var e = o.call(n, this, t, n);
                e && (Wa.isArray(e) ? n.push.apply(n, e) : n.push(e))
            }), 1 < this.length && (Ta[r] || (n = Wa.unique(n)), 0 === r.indexOf("parents") && (n = n.reverse()));
            var e = Wa(n);
            return t ? e.filter(t) : e
        }
    }), Ea({ parentsUntil: function(e, t) { return Ha(e, "parentNode", t) }, nextUntil: function(e, t) { return ja(e, "nextSibling", 1, t).slice(1) }, prevUntil: function(e, t) { return ja(e, "previousSibling", 1, t).slice(1) } }, function(o, i) {
        wa.fn[o] = function(t, e) {
            var n = [];
            this.each(function() {
                var e = i.call(n, this, t, n);
                e && (Wa.isArray(e) ? n.push.apply(n, e) : n.push(e))
            }), 1 < this.length && (n = Wa.unique(n), 0 !== o.indexOf("parents") && "prevUntil" !== o || (n = n.reverse()));
            var r = Wa(n);
            return e ? r.filter(e) : r
        }
    }), wa.fn.is = function(e) { return !!e && 0 < this.filter(e).length }, wa.fn.init.prototype = wa.fn, wa.overrideDefaults = function(n) { var r, o = function(e, t) { return r = r || n(), 0 === arguments.length && (e = r.element), t = t || r.context, new o.fn.init(e, t) }; return Wa.extend(o, this), o }, wa.attrHooks = Ma, wa.cssHooks = Fa;
    var Wa = wa,
        Ka = Et.each,
        Xa = Et.grep,
        Ya = xt.ie,
        Ga = /^([a-z0-9],?)+$/i,
        Ja = function(a, u) {
            function s(e) { return e && a && X(e) ? a.getElementById(e) : e }

            function c(e) { return H("string" == typeof e ? s(e) : e) }

            function r(e, t, n) { var r, o, i = c(e); return void 0 === (o = i.length ? (r = W[t]) && r.get ? r.get(i, t) : i.attr(t) : o) ? n || "" : o }

            function o(e) { var t = s(e); return t ? t.attributes : [] }

            function i(e, t, n) {
                "" === n && (n = null);
                var r, o = c(e),
                    i = o.attr(t);
                o.length && ((r = W[t]) && r.set ? r.set(o, n, t) : o.attr(t, n), i !== n && u.onSetAttrib && u.onSetAttrib({ attrElm: o, attrName: t, attrValue: n }))
            }

            function l() { return u.root_element || a.body }

            function f(e, t) {
                return function(e, t, n) {
                    var r, o = 0,
                        i = 0,
                        a = e.ownerDocument;
                    if (n = n || e, t) {
                        if (n === e && t.getBoundingClientRect && "static" === xn(Nt.fromDom(e), "position")) { var u = t.getBoundingClientRect(); return { x: o = u.left + (a.documentElement.scrollLeft || e.scrollLeft) - a.documentElement.clientLeft, y: i = u.top + (a.documentElement.scrollTop || e.scrollTop) - a.documentElement.clientTop } }
                        for (var s = t; s && s !== n && s.nodeType && !Nn(s, n);) {
                            var c = s;
                            o += c.offsetLeft || 0, i += c.offsetTop || 0, s = c.offsetParent
                        }
                        for (s = t.parentNode; s && s !== n && s.nodeType && !Nn(s, n);) o -= s.scrollLeft || 0, i -= s.scrollTop || 0, s = s.parentNode;
                        i += (r = Nt.fromDom(t), Zn.isFirefox() && "table" === kt(r) ? En(Dn(r)).filter(function(e) { return "caption" === kt(e) }).bind(function(o) {
                            return En(It(o)).map(function(e) {
                                var t = e.dom.offsetTop,
                                    n = o.dom.offsetTop,
                                    r = o.dom.offsetHeight;
                                return t <= n ? -r : 0
                            })
                        }).getOr(0) : 0)
                    }
                    return { x: o, y: i }
                }(a.body, s(e), t)
            }

            function d(e, t, n) { var r = c(e); return n ? r.css(t) : ("float" === (t = t.replace(/-(\D)/g, function(e, t) { return t.toUpperCase() })) && (t = xt.browser.isIE() ? "styleFloat" : "cssFloat"), r[0] && r[0].style ? r[0].style[t] : void 0) }

            function m(e) {
                var t = d(e = s(e), "width"),
                    n = d(e, "height");
                return -1 === t.indexOf("px") && (t = 0), -1 === n.indexOf("px") && (n = 0), { w: parseInt(t, 10) || e.offsetWidth || e.clientWidth, h: parseInt(n, 10) || e.offsetHeight || e.clientHeight }
            }

            function g(e, t) {
                if (!e) return !1;
                if (!Array.isArray(e)) {
                    if ("*" === t) return 1 === e.nodeType;
                    if (Ga.test(t)) {
                        for (var n = t.toLowerCase().split(/,/), r = e.nodeName.toLowerCase(), o = n.length - 1; 0 <= o; o--)
                            if (n[o] === r) return !0;
                        return !1
                    }
                    if (e.nodeType && 1 !== e.nodeType) return !1
                }
                var i = Array.isArray(e) ? e : [e];
                return 0 < aa(t, i[0].ownerDocument || i[0], null, i).length
            }

            function p(e, t, n, r) {
                var o, i = [],
                    a = s(e);
                for (r = void 0 === r, n = n || ("BODY" !== l().nodeName ? l().parentNode : null), Et.is(t, "string") && (t = "*" === (o = t) ? function(e) { return 1 === e.nodeType } : function(e) { return g(e, o) }); a && !(a === n || K(a.nodeType) || qn(a) || $n(a));) {
                    if (!t || "function" == typeof t && t(a)) {
                        if (!r) return [a];
                        i.push(a)
                    }
                    a = a.parentNode
                }
                return r ? i : null
            }

            function n(e, t, n) {
                var r = t;
                if (e)
                    for ("string" == typeof t && (r = function(e) { return g(e, t) }), e = e[n]; e; e = e[n])
                        if ("function" == typeof r && r(e)) return e;
                return null
            }

            function h(e, n, r) { var o, t = "string" == typeof e ? s(e) : e; return !!t && (Et.isArray(t) && (t.length || 0 === t.length) ? (o = [], Ka(t, function(e, t) { e && o.push(n.call(r, "string" == typeof e ? s(e) : e, t)) }), o) : n.call(r || this, t)) }

            function v(e, t) { c(e).each(function(e, n) { Ka(t, function(e, t) { i(n, t, e) }) }) }

            function b(e, n) {
                var t = c(e);
                Ya ? t.each(function(e, t) { if (!1 !== t.canHaveHTML) { for (; t.firstChild;) t.removeChild(t.firstChild); try { t.innerHTML = "<br>" + n, t.removeChild(t.firstChild) } catch (e) { Wa("<div></div>").html("<br>" + n).contents().slice(1).appendTo(t) } return n } }) : t.html(n)
            }

            function y(e, n, r, o, i) { return h(e, function(e) { var t = "string" == typeof n ? a.createElement(n) : n; return v(t, r), o && ("string" != typeof o && o.nodeType ? t.appendChild(o) : "string" == typeof o && b(t, o)), i ? t : e.appendChild(t) }) }

            function C(e, t, n) { return y(a.createElement(e), e, t, n, !0) }

            function x(e, t) { var n = c(e); return (t ? n.each(function() { for (var e; e = this.firstChild;) 3 === e.nodeType && 0 === e.data.length ? this.removeChild(e) : this.parentNode.insertBefore(e, this) }) : n).remove(), 1 < n.length ? n.toArray() : n[0] }

            function w(e, t, n) { c(e).toggleClass(t, n).each(function() { "" === this.className && Wa(this).attr("class", null) }) }

            function S(t, e, n) { return h(e, function(e) { return Et.is(e, "array") && (t = t.cloneNode(!0)), n && Ka(Xa(e.childNodes), function(e) { t.appendChild(e) }), e.parentNode.replaceChild(t, e) }) }

            function E(e) { if (zn(e)) { var t = "a" === e.nodeName.toLowerCase() && !r(e, "href") && r(e, "id"); return r(e, "name") || r(e, "data-mce-bookmark") || t ? 1 : void 0 } }

            function N() { return a.createRange() }

            function k(e) { if (e && zn(e)) { var t = e.getAttribute("data-mce-contenteditable"); return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null } return null }
            void 0 === u && (u = {});
            var _, A, R, D, e, t, T = {},
                O = window,
                B = {},
                P = 0,
                L = Ar.forElement(Nt.fromDom(a), { contentCssCors: u.contentCssCors, referrerPolicy: u.referrerPolicy }),
                I = [],
                M = u.schema || to({}),
                F = ro({ url_converter: u.url_converter, url_converter_scope: u.url_converter_scope }, u.schema),
                U = u.ownEvents ? new ai : ai.Event,
                z = M.getBlockElements(),
                H = Wa.overrideDefaults(function() { return { context: a, element: $.getRoot() } }),
                j = Go.encodeAllRaw,
                V = function(e, t, n, r) { if (Et.isArray(e)) { for (var o = e.length, i = []; o--;) i[o] = V(e[o], t, n, r); return i } return !u.collect || e !== a && e !== O || I.push([e, t, n, r]), U.bind(e, t, n, r || $) },
                q = function(e, t, n) {
                    if (Et.isArray(e)) { for (var r = e.length, o = []; r--;) o[r] = q(e[r], t, n); return o }
                    if (0 < I.length && (e === a || e === O))
                        for (r = I.length; r--;) {
                            var i = I[r];
                            e !== i[0] || t && t !== i[1] || n && n !== i[2] || U.unbind(i[0], i[1], i[2])
                        }
                    return U.unbind(e, t, n)
                },
                $ = {
                    doc: a,
                    settings: u,
                    win: O,
                    files: B,
                    stdMode: !0,
                    boxModel: !0,
                    styleSheetLoader: L,
                    boundEvents: I,
                    styles: F,
                    schema: M,
                    events: U,
                    isBlock: function(e) { if ("string" == typeof e) return !!z[e]; if (e) { var t = e.nodeType; if (t) return !(1 !== t || !z[e.nodeName]) } return !1 },
                    $: H,
                    $$: c,
                    root: null,
                    clone: function(t, e) { if (!Ya || 1 !== t.nodeType || e) return t.cloneNode(e); var n = a.createElement(t.nodeName); return Ka(o(t), function(e) { i(n, e.nodeName, r(t, e.nodeName)) }), n },
                    getRoot: l,
                    getViewPort: function(e) { var t = tn(e); return { x: t.x, y: t.y, w: t.width, h: t.height } },
                    getRect: function(e) {
                        var t = f(e = s(e)),
                            n = m(e);
                        return { x: t.x, y: t.y, w: n.w, h: n.h }
                    },
                    getSize: m,
                    getParent: function(e, t, n) { var r = p(e, t, n, !1); return r && 0 < r.length ? r[0] : null },
                    getParents: p,
                    get: s,
                    getNext: function(e, t) { return n(e, t, "nextSibling") },
                    getPrev: function(e, t) { return n(e, t, "previousSibling") },
                    select: function(e, t) { return aa(e, s(t) || u.root_element || a, []) },
                    is: g,
                    add: y,
                    create: C,
                    createHTML: function(e, t, n) { var r, o = ""; for (r in o += "<" + e, t) se(t, r) && (o += " " + r + '="' + j(t[r]) + '"'); return void 0 !== n ? o + ">" + n + "</" + e + ">" : o + " />" },
                    createFragment: function(e) {
                        var t, n = a.createElement("div"),
                            r = a.createDocumentFragment();
                        for (r.appendChild(n), e && (n.innerHTML = e); t = n.firstChild;) r.appendChild(t);
                        return r.removeChild(n), r
                    },
                    remove: x,
                    setStyle: function(e, t, n) {
                        var r = X(t) ? c(e).css(t, n) : c(e).css(t);
                        u.update_styles && qa(F, r)
                    },
                    getStyle: d,
                    setStyles: function(e, t) {
                        var n = c(e).css(t);
                        u.update_styles && qa(F, n)
                    },
                    removeAllAttribs: function(e) { return h(e, function(e) { for (var t = e.attributes, n = t.length - 1; 0 <= n; n--) e.removeAttributeNode(t.item(n)) }) },
                    setAttrib: i,
                    setAttribs: v,
                    getAttrib: r,
                    getPos: f,
                    parseStyle: function(e) { return F.parse(e) },
                    serializeStyle: function(e, t) { return F.serialize(e, t) },
                    addStyle: function(e) {
                        var t, n;
                        if ($ !== Ja.DOM && a === document) {
                            if (T[e]) return;
                            T[e] = !0
                        }(n = a.getElementById("mceDefaultStyles")) || ((n = a.createElement("style")).id = "mceDefaultStyles", n.type = "text/css", (t = a.getElementsByTagName("head")[0]).firstChild ? t.insertBefore(n, t.firstChild) : t.appendChild(n)), n.styleSheet ? n.styleSheet.cssText += e : n.appendChild(a.createTextNode(e))
                    },
                    loadCSS: function(e) { Y((e = e || "").split(","), function(e) { B[e] = !0, L.load(e, te) }) },
                    addClass: function(e, t) { c(e).addClass(t) },
                    removeClass: function(e, t) { w(e, t, !1) },
                    hasClass: function(e, t) { return c(e).hasClass(t) },
                    toggleClass: w,
                    show: function(e) { c(e).show() },
                    hide: function(e) { c(e).hide() },
                    isHidden: function(e) { return "none" === c(e).css("display") },
                    uniqueId: function(e) { return (e || "mce_") + P++ },
                    setHTML: b,
                    getOuterHTML: function(e) { var t = "string" == typeof e ? s(e) : e; return zn(t) ? t.outerHTML : Wa("<div></div>").append(Wa(t).clone()).html() },
                    setOuterHTML: function(e, t) {
                        c(e).each(function() {
                            try { if ("outerHTML" in this) return void(this.outerHTML = t) } catch (e) {}
                            x(Wa(this).html(t), !0)
                        })
                    },
                    decode: Go.decode,
                    encode: j,
                    insertAfter: function(e, t) {
                        var r = s(t);
                        return h(e, function(e) {
                            var t = r.parentNode,
                                n = r.nextSibling;
                            return n ? t.insertBefore(e, n) : t.appendChild(e), e
                        })
                    },
                    replace: S,
                    rename: function(t, e) { var n; return t.nodeName !== e.toUpperCase() && (n = C(e), Ka(o(t), function(e) { i(n, e.nodeName, r(t, e.nodeName)) }), S(n, t, !0)), n || t },
                    findCommonAncestor: function(e, t) {
                        for (var n, r = e; r;) {
                            for (n = t; n && r !== n;) n = n.parentNode;
                            if (r === n) break;
                            r = r.parentNode
                        }
                        return !r && e.ownerDocument ? e.ownerDocument.documentElement : r
                    },
                    toHex: function(e) { return F.toHex(Et.trim(e)) },
                    run: h,
                    getAttribs: o,
                    isEmpty: function(e, t) {
                        var n, r, o = 0;
                        if (E(e)) return !1;
                        if (e = e.firstChild) {
                            var i = new Rr(e, e.parentNode),
                                a = M ? M.getWhiteSpaceElements() : {};
                            t = t || (M ? M.getNonEmptyElements() : null);
                            do {
                                if (n = e.nodeType, zn(e)) {
                                    var u = e.getAttribute("data-mce-bogus");
                                    if (u) { e = i.next("all" === u); continue }
                                    if (r = e.nodeName.toLowerCase(), t && t[r]) {
                                        if ("br" !== r) return !1;
                                        o++, e = i.next();
                                        continue
                                    }
                                    if (E(e)) return !1
                                }
                                if (8 === n) return !1;
                                if (3 === n && !qr(e.nodeValue)) return !1;
                                if (3 === n && e.parentNode && a[e.parentNode.nodeName] && qr(e.nodeValue)) return !1;
                                e = i.next()
                            } while (e)
                        }
                        return o <= 1
                    },
                    createRng: N,
                    nodeIndex: $a,
                    split: function(e, t, n) { var r, o, i, a = N(); if (e && t) return a.setStart(e.parentNode, $a(e)), a.setEnd(t.parentNode, $a(t)), r = a.extractContents(), (a = N()).setStart(t.parentNode, $a(t) + 1), a.setEnd(e.parentNode, $a(e) + 1), o = a.extractContents(), (i = e.parentNode).insertBefore(zo($, r), e), n ? i.insertBefore(n, e) : i.insertBefore(t, e), i.insertBefore(zo($, o), e), x(e), n || t },
                    bind: V,
                    unbind: q,
                    fire: function(e, t, n) { return U.fire(e, t, n) },
                    getContentEditable: k,
                    getContentEditableParent: function(e) { for (var t = l(), n = null; e && e !== t && null === (n = k(e)); e = e.parentNode); return n },
                    destroy: function() {
                        if (0 < I.length)
                            for (var e = I.length; e--;) {
                                var t = I[e];
                                U.unbind(t[0], t[1], t[2])
                            }
                        ne(B, function(e, t) { L.unload(t), delete B[t] }), aa.setDocument && aa.setDocument()
                    },
                    isChildOf: function(e, t) {
                        if (Ya) {
                            for (; e;) {
                                if (t === e) return !0;
                                e = e.parentNode
                            }
                            return !1
                        }
                        return e === t || t.contains(e)
                    },
                    dumpRng: function(e) { return "startContainer: " + e.startContainer.nodeName + ", startOffset: " + e.startOffset + ", endContainer: " + e.endContainer.nodeName + ", endOffset: " + e.endOffset }
                },
                W = (_ = F, R = J($), e = { set: function(e, t, n) { A.url_converter && null !== t && (t = A.url_converter.call(A.url_converter_scope || R(), t, n, e[0])), e.attr("data-mce-" + n, t).attr(n, t) }, get: function(e, t) { return e.attr("data-mce-" + t) || e.attr(t) } }, t = { style: { set: function(e, t) { null === t || "object" != typeof t ? (D && e.attr("data-mce-style", t), null !== t && "string" == typeof t ? (e.removeAttr("style"), e.css(_.parse(t))) : e.attr("style", t)) : e.css(t) }, get: function(e) { var t = e.attr("data-mce-style") || e.attr("style"); return _.serialize(_.parse(t), e[0].nodeName) } } }, (D = (A = u).keep_values) && (t.href = t.src = e), t);
            return $
        };
    Ja.DOM = Ja(document), Ja.nodeIndex = $a;
    var Qa = Ja.DOM,
        Za = Et.each,
        eu = Et.grep,
        tu = (nu.prototype._setReferrerPolicy = function(e) { this.settings.referrerPolicy = e }, nu.prototype.loadScript = function(e, t, n) {
            function r() { o.remove(i), a && (a.onerror = a.onload = a = null) }
            var o = Qa,
                i = o.uniqueId(),
                a = document.createElement("script");
            a.id = i, a.type = "text/javascript", a.src = Et._addCacheSuffix(e), this.settings.referrerPolicy && o.setAttrib(a, "referrerpolicy", this.settings.referrerPolicy), a.onload = function() { r(), t() }, a.onerror = function() { r(), y(n) ? n() : "undefined" != typeof console && console.log && console.log("Failed to load script: " + e) }, (document.getElementsByTagName("head")[0] || document.body).appendChild(a)
        }, nu.prototype.isDone = function(e) { return 2 === this.states[e] }, nu.prototype.markDone = function(e) { this.states[e] = 2 }, nu.prototype.add = function(e, t, n, r) {
            var o = this.states[e];
            this.queue.push(e), void 0 === o && (this.states[e] = 0), t && (this.scriptLoadedCallbacks[e] || (this.scriptLoadedCallbacks[e] = []), this.scriptLoadedCallbacks[e].push({ success: t, failure: r, scope: n || this }))
        }, nu.prototype.load = function(e, t, n, r) { return this.add(e, t, n, r) }, nu.prototype.remove = function(e) { delete this.states[e], delete this.scriptLoadedCallbacks[e] }, nu.prototype.loadQueue = function(e, t, n) { this.loadScripts(this.queue, e, t, n) }, nu.prototype.loadScripts = function(n, e, t, r) {
            function o(t, e) { Za(i.scriptLoadedCallbacks[e], function(e) { y(e[t]) && e[t].call(e.scope) }), i.scriptLoadedCallbacks[e] = void 0 }
            var i = this,
                a = [];
            i.queueLoadedCallbacks.push({ success: e, failure: r, scope: t || this });
            var u = function() {
                var e, t = eu(n);
                n.length = 0, Za(t, function(e) { 2 !== i.states[e] ? 3 !== i.states[e] ? 1 !== i.states[e] && (i.states[e] = 1, i.loading++, i.loadScript(e, function() { i.states[e] = 2, i.loading--, o("success", e), u() }, function() { i.states[e] = 3, i.loading--, a.push(e), o("failure", e), u() })) : o("failure", e) : o("success", e) }), i.loading || (e = i.queueLoadedCallbacks.slice(0), i.queueLoadedCallbacks.length = 0, Za(e, function(e) { 0 === a.length ? y(e.success) && e.success.call(e.scope) : y(e.failure) && e.failure.call(e.scope, a) }))
            };
            u()
        }, nu.ScriptLoader = new nu, nu);

    function nu(e) { void 0 === e && (e = {}), this.states = {}, this.queue = [], this.scriptLoadedCallbacks = {}, this.queueLoadedCallbacks = [], this.loading = 0, this.settings = e }

    function ru(e) { var t = e; return { get: function() { return t }, set: function(e) { t = e } } }

    function ou() { return ue(iu, au.get()) }
    var iu = {},
        au = ru("en"),
        uu = {
            getData: function() { return re(iu, function(e) { return _e({}, e) }) },
            setCode: function(e) { e && au.set(e) },
            getCode: function() { return au.get() },
            add: function(e, t) {
                var n = iu[e];
                n || (iu[e] = n = {}), ne(t, function(e, t) { n[t.toLowerCase()] = e })
            },
            translate: function(e) {
                function n(e) { return y(e) ? Object.prototype.toString.call(e) : u(e) ? "" : "" + e }

                function t(e) { var t = n(e); return ue(a, t.toLowerCase()).map(n).getOr(t) }

                function r(e) { return e.replace(/{context:\w+}$/, "") }
                var o, i, a = ou().getOr({}),
                    u = function(e) { return "" === e || null == e };
                if (u(e)) return "";
                if (h(o = e) && Ne(o, "raw")) return n(e.raw);
                if (S(i = e) && 1 < i.length) { var s = e.slice(1); return r(t(e[0]).replace(/\{([0-9]+)\}/g, function(e, t) { return Ne(s, t) ? n(s[t]) : e })) }
                return r(t(e))
            },
            isRtl: function() { return ou().bind(function(e) { return ue(e, "_dir") }).exists(function(e) { return "rtl" === e }) },
            hasCode: function(e) { return Ne(iu, e) }
        },
        su = function() {
            function u(t, n) { Y(U(r, function(e) { return e.name === t && e.state === n }), function(e) { return e.callback() }) }

            function s(e) { var t; return (f[e] ? f[e].dependencies : t) || [] }

            function c(e, t) { return "object" == typeof t ? t : "string" == typeof e ? { prefix: "", resource: t, suffix: "" } : { prefix: e.prefix, resource: t, suffix: e.suffix } }

            function e(e, t, n) { void 0 === n && (n = "added"), Ne(f, e) && "added" === n || Ne(l, e) && "loaded" === n ? t() : r.push({ name: e, state: n, callback: t }) }
            var o = [],
                l = {},
                f = {},
                r = [],
                d = function(r, o, i, a, e) {
                    var t, n;
                    l[r] || (0 !== (t = "string" == typeof o ? o : o.prefix + o.resource + o.suffix).indexOf("/") && -1 === t.indexOf("://") && (t = su.baseURL + "/" + t), l[r] = t.substring(0, t.lastIndexOf("/")), n = function() {
                        var n, e, t;
                        u(r, "loaded"), n = o, e = i, t = a, Y(s(r), function(e) {
                            var t = c(n, e);
                            d(t.resource, t, void 0, void 0)
                        }), e && (t ? e.call(t) : e.call(tu))
                    }, f[r] ? n() : tu.ScriptLoader.add(t, n, a, e))
                };
            return {
                items: o,
                urls: l,
                lookup: f,
                _listeners: r,
                get: function(e) { if (f[e]) return f[e].instance },
                dependencies: s,
                requireLangPack: function(t, n) {!1 !== su.languageLoad && e(t, function() { var e = uu.getCode();!e || n && -1 === ("," + (n || "") + ",").indexOf("," + e + ",") || tu.ScriptLoader.add(l[t] + "/langs/" + e + ".js") }, "loaded") },
                add: function(e, t, n) { var r = t; return o.push(r), f[e] = { instance: r, dependencies: n }, u(e, "added"), r },
                remove: function(e) { delete l[e], delete f[e] },
                createUrl: c,
                addComponents: function(e, t) {
                    var n = l[e];
                    Y(t, function(e) { tu.ScriptLoader.add(n + "/" + e) })
                },
                load: d,
                waitFor: e
            }
        };

    function cu() {
        var e, t, n = (e = te, t = ru(ve.none()), { clear: function() { r(), t.set(ve.none()) }, isSet: function() { return t.get().isSome() }, get: function() { return t.get() }, set: function(e) { r(), t.set(ve.some(e)) } });

        function r() { return t.get().each(e) }
        return _e(_e({}, n), { on: function(e) { return n.get().each(e) } })
    }

    function lu(n, r) {
        var o = null;
        return {
            cancel: function() { l(o) || (clearTimeout(o), o = null) },
            throttle: function() {
                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                l(o) && (o = setTimeout(function() { o = null, n.apply(null, e) }, r))
            }
        }
    }

    function fu(n, r) {
        function o() { l(i) || (clearTimeout(i), i = null) }
        var i = null;
        return {
            cancel: o,
            throttle: function() {
                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                o(), i = setTimeout(function() { i = null, n.apply(null, e) }, r)
            }
        }
    }

    function du(e, t) { var n = vn(e, t); return void 0 === n || "" === n ? [] : n.split(" ") }

    function mu(e) { return void 0 !== e.dom.classList }

    function gu(e, t) {
        var n, r, o;
        mu(e) ? e.dom.classList.add(t) : (r = t, o = du(n = e, "class").concat([r]), pn(n, "class", o.join(" ")))
    }

    function pu(e, t) { return mu(e) && e.dom.classList.contains(t) }

    function hu(e, t) { return He(n = void 0 === e ? document : e.dom) ? [] : T(n.querySelectorAll(t), Nt.fromDom); var n }

    function vu(r, e) {
        function t(e, t) { return (n = e.dom) && n.hasAttribute && n.hasAttribute(t) ? ve.some(vn(e, t)) : ve.none(); var n }
        var n = r.selection.getRng(),
            o = Nt.fromDom(n.startContainer),
            i = Nt.fromDom(r.getBody()),
            a = e.fold(function() { return "." + ju() }, function(e) { return "[" + Vu() + '="' + e + '"]' });
        return br(Mt(o, n.startOffset).getOr(o), a, function(e) { return je(e, i) }).bind(function(e) { return t(e, "" + qu()).bind(function(n) { return t(e, "" + Vu()).map(function(e) { var t = $u(r, n); return { uid: n, name: e, elements: t } }) }) })
    }

    function bu(t) {
        function o() { return { listeners: [], previous: cu() } }

        function c(e, t) { n(e, function(e) { return t(e), e }) }

        function n(e, t) {
            var n = i.get(),
                r = t(ue(n, e).getOrThunk(o));
            n[e] = r, i.set(n)
        }
        var i = ru({}),
            e = fu(function() {
                var e = i.get();
                Y(W(we(e)), function(e) {
                    n(e, function(u) {
                        var s = u.previous.get();
                        return vu(t, ve.some(e)).fold(function() {
                            var t;
                            s.isSome() && (c(t = e, function(e) { Y(e.listeners, function(e) { return e(!1, t) }) }), u.previous.clear())
                        }, function(e) {
                            var t, n, r, o = e.uid,
                                i = e.name,
                                a = e.elements;
                            fn(s, o) || (n = o, r = a, c(t = i, function(e) { Y(e.listeners, function(e) { return e(!0, t, { uid: n, nodes: T(r, function(e) { return e.dom }) }) }) }), u.previous.set(o))
                        }), { previous: u.previous, listeners: u.listeners }
                    })
                })
            }, 30);
        return t.on("remove", function() { e.cancel() }), t.on("NodeChange", function() { e.throttle() }), { addListener: function(e, t) { n(e, function(e) { return { previous: e.previous, listeners: e.listeners.concat([t]) } }) } }
    }

    function yu(e) { var t = (new Date).getTime(); return e + "_" + Math.floor(1e9 * Math.random()) + ++Wu + String(t) }

    function Cu(e, t) {
        var n, r, o = Rt(e).dom,
            i = Nt.fromDom(o.createDocumentFragment());
        Kt(i, (n = t, (r = (o || document).createElement("div")).innerHTML = n, Dn(Nt.fromDom(r)))), Xt(e), Pn(e, i)
    }

    function xu(e, t) { return Nt.fromDom(e.dom.cloneNode(t)) }

    function wu(e) { return xu(e, !1) }

    function Su(e) { return xu(e, !0) }

    function Eu(e, t, n) {
        function r(e) {
            for (var t;
                (t = o[e]()) && !jn(t) && !n(t););
            return ve.from(t).filter(jn)
        }
        void 0 === n && (n = R);
        var o = new Rr(e, t);
        return { current: function() { return ve.from(o.current()).filter(jn) }, next: function() { return r("next") }, prev: function() { return r("prev") }, prev2: function() { return r("prev2") } }
    }

    function Nu(t, e) {
        var i = e || function(e) { return t.isBlock(e) || Wn(e) || Yn(e) },
            a = function(e, t, n, r) { if (jn(e)) { var o = r(e, t, e.data); if (-1 !== o) return ve.some({ container: e, offset: o }) } return n().bind(function(e) { return a(e.container, e.offset, n, r) }) };
        return { backwards: function(e, t, n, r) { var o = Eu(e, r, i); return a(e, t, function() { return o.prev().map(function(e) { return { container: e, offset: e.length } }) }, n).getOrNull() }, forwards: function(e, t, n, r) { var o = Eu(e, r, i); return a(e, t, function() { return o.next().map(function(e) { return { container: e, offset: 0 } }) }, n).getOrNull() } }
    }

    function ku(e) { return e ? { left: Ku(e.left), top: Ku(e.top), bottom: Ku(e.bottom), right: Ku(e.right), width: Ku(e.width), height: Ku(e.height) } : { left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0 } }

    function _u(e, t) { return e = ku(e), t || (e.left = e.left + e.width), e.right = e.left, e.width = 0, e }

    function Au(e, t, n) { return 0 <= e && e <= Math.min(t.height, n.height) / 2 }

    function Ru(e, t) { var n = Math.min(t.height / 2, e.height / 2); return e.bottom - n < t.top || !(e.top > t.bottom) && Au(t.top - e.bottom, e, t) }

    function Du(e, t) { return e.top > t.bottom || !(e.bottom < t.top) && Au(t.bottom - e.top, e, t) }

    function Tu(e, t, n) { return t >= e.left && t <= e.right && n >= e.top && n <= e.bottom }

    function Ou(e) {
        var t = e.startContainer,
            n = e.startOffset;
        return t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null
    }

    function Bu(e, t) { if (zn(e) && e.hasChildNodes()) { var n = e.childNodes; return n[r = n.length - 1, Math.min(Math.max(t, 0), r)] } return e; var r }

    function Pu(e) { return "string" == typeof e && 768 <= e.charCodeAt(0) && Xu.test(e) }

    function Lu(e) { return "createRange" in e ? e.createRange() : Ja.DOM.createRng() }

    function Iu(e) { return e && /[\r\n\t ]/.test(e) }

    function Mu(e) { return e.setStart && e.setEnd }

    function Fu(e) {
        var t = e.startContainer,
            n = e.startOffset;
        if (Iu(e.toString()) && es(t.parentNode) && jn(t)) { var r = t.data; return Iu(r[n - 1]) || Iu(r[n + 1]) ? 1 : void 0 }
    }

    function Uu(e) { return 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom }

    function zu(e, t) { var n = _u(e, t); return n.width = 1, n.right = n.left + 1, n }
    su.languageLoad = !0, su.baseURL = "", su.PluginManager = su(), su.ThemeManager = su();
    var Hu = function(e, t) { var n = []; return Y(Dn(e), function(e) { n = (n = t(e) ? n.concat([e]) : n).concat(Hu(e, t)) }), n },
        ju = J("mce-annotation"),
        Vu = J("data-mce-annotation"),
        qu = J("data-mce-annotation-uid"),
        $u = function(e, t) { return hu(Nt.fromDom(e.getBody()), "[" + qu() + '="' + t + '"]') },
        Wu = 0,
        Ku = Math.round,
        Xu = new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),
        Yu = zn,
        Gu = jr,
        Ju = an("display", "block table"),
        Qu = an("float", "left right"),
        Zu = function() {
            for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
            return function(e) {
                for (var t = 0; t < n.length; t++)
                    if (!n[t](e)) return !1;
                return !0
            }
        }(Yu, Gu, s(Qu)),
        es = s(an("white-space", "pre pre-line pre-wrap")),
        ts = jn,
        ns = Wn,
        rs = Ja.nodeIndex,
        os = function(e, t) { if (!(t < 0 && zn(e) && e.hasChildNodes())) return Bu(e, t) },
        is = function(e) {
            var t = e.getClientRects(),
                n = 0 < t.length ? ku(t[0]) : ku(e.getBoundingClientRect());
            return !Mu(e) && ns(e) && Uu(n) ? function(e) {
                var t = e.ownerDocument,
                    n = Lu(t),
                    r = t.createTextNode(yo),
                    o = e.parentNode;
                o.insertBefore(r, e), n.setStart(r, 0), n.setEnd(r, 1);
                var i = ku(n.getBoundingClientRect());
                return o.removeChild(r), i
            }(e) : Uu(n) && Mu(e) ? function(e) {
                var t = e.startContainer,
                    n = e.endContainer,
                    r = e.startOffset,
                    o = e.endOffset;
                if (t === n && jn(n) && 0 === r && 1 === o) { var i = e.cloneRange(); return i.setEndAfter(n), is(i) }
                return null
            }(e) : n
        },
        as = function(t, n, e) {
            function r() {
                return e = e || function(e) {
                    function r(e) {
                        var t;
                        0 !== e.height && (0 < o.length && (t = o[o.length - 1], e.left === t.left && e.top === t.top && e.bottom === t.bottom && e.right === t.right) || o.push(e))
                    }

                    function t(e, t) {
                        var n = Lu(e.ownerDocument);
                        if (t < e.data.length) { if (Pu(e.data[t])) return o; if (Pu(e.data[t - 1]) && (n.setStart(e, t), n.setEnd(e, t + 1), !Fu(n))) return r(zu(is(n), !1)), o }
                        0 < t && (n.setStart(e, t - 1), n.setEnd(e, t), Fu(n) || r(zu(is(n), !1))), t < e.data.length && (n.setStart(e, t), n.setEnd(e, t + 1), Fu(n) || r(zu(is(n), !0)))
                    }
                    var o = [],
                        n = e.container(),
                        i = e.offset();
                    if (ts(n)) return t(n, i), o;
                    if (Yu(n))
                        if (e.isAtEnd()) {
                            var a = os(n, i);
                            ts(a) && t(a, a.data.length), Zu(a) && !ns(a) && r(zu(is(a), !1))
                        } else {
                            if (a = os(n, i), ts(a) && t(a, 0), Zu(a) && e.isAtEnd()) return r(zu(is(a), !1)), o;
                            var u = os(e.container(), e.offset() - 1);
                            Zu(u) && !ns(u) && (!Ju(u) && !Ju(a) && Zu(a) || r(zu(is(u), !1))), Zu(a) && r(zu(is(a), !0))
                        }
                    return o
                }(as(t, n))
            }
            return { container: J(t), offset: J(n), toRange: function() { var e = Lu(t.ownerDocument); return e.setStart(t, n), e.setEnd(t, n), e }, getClientRects: r, isVisible: function() { return 0 < r().length }, isAtStart: function() { return ts(t), 0 === n }, isAtEnd: function() { return ts(t) ? n >= t.data.length : n >= t.childNodes.length }, isEqual: function(e) { return e && t === e.container() && n === e.offset() }, getNode: function(e) { return os(t, e ? n - 1 : n) } }
        };

    function us(e, t) { jn(t) && 0 === t.data.length && e.remove(t) }

    function ss(e, t, n) {
        var r, o, i, a, u, s, c;
        $n(n) ? (i = e, a = t, s = ve.from((u = n).firstChild), c = ve.from(u.lastChild), a.insertNode(u), s.each(function(e) { return us(i, e.previousSibling) }), c.each(function(e) { return us(i, e.nextSibling) })) : (r = e, t.insertNode(o = n), us(r, o.previousSibling), us(r, o.nextSibling))
    }

    function cs(t) { return function(e) { return t === e } }

    function ls(e) { var t, r, n, o; return (uc(e) ? "text()" : e.nodeName.toLowerCase()) + "[" + (r = fc(lc(t = e)), n = ge(r, cs(t), t), o = me(r = r.slice(0, n + 1), function(e, t, n) { return uc(t) && uc(r[n - 1]) && e++, e }, 0), ge(r = fe(r, on([t.nodeName])), cs(t), t) - o) + "]" }

    function fs(e, t) {
        var n, r, o, i = [],
            a = t.container(),
            u = t.offset();
        return uc(a) ? n = function(e, t) {
            for (;
                (e = e.previousSibling) && uc(e);) t += e.data.length;
            return t
        }(a, u) : (u >= (r = a.childNodes).length ? (n = "after", u = r.length - 1) : n = "before", a = r[u]), i.push(ls(a)), o = fe(function(e, t) { var n = []; for (t = t.parentNode; t !== e; t = t.parentNode) n.push(t); return n }(e, a), s(sn)), (i = i.concat(le(o, ls))).reverse().join("/") + "," + n
    }

    function ds(e, t) {
        if (!t) return null;
        var n = t.split(","),
            r = n[0].split("/"),
            o = 1 < n.length ? n[1] : "before",
            i = me(r, function(e, t) { var n, r, o, i, a = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t); return a ? ("text()" === a[1] && (a[1] = "#text"), n = e, r = a[1], o = parseInt(a[2], 10), i = fe(i = fc(n), function(e, t) { return !uc(e) || !uc(i[t - 1]) }), (i = fe(i, on([r])))[o]) : null }, e);
        return i ? uc(i) ? function(e, t) {
            for (var n, r = e, o = 0; uc(r);) {
                if (n = r.data.length, o <= t && t <= o + n) { e = r, t -= o; break }
                if (!uc(r.nextSibling)) { e = r, t = n; break }
                o += n, r = r.nextSibling
            }
            return uc(e) && t > e.data.length && (t = e.data.length), as(e, t)
        }(i, parseInt(o, 10)) : (o = "after" === o ? cc(i) + 1 : cc(i), as(i.parentNode, o)) : null
    }

    function ms(e, t, n, r, o) {
        var i, a = r[o ? "startContainer" : "endContainer"],
            u = r[o ? "startOffset" : "endOffset"],
            s = [],
            c = 0,
            l = e.getRoot();
        for (jn(a) ? s.push(n ? function(e, t, n) { for (var r = e(t.data.slice(0, n)).length, o = t.previousSibling; o && jn(o); o = o.previousSibling) r += e(o.data).length; return r }(t, a, u) : u) : (u >= (i = a.childNodes).length && i.length && (c = 1, u = Math.max(0, i.length - 1)), s.push(e.nodeIndex(i[u], n) + c)); a && a !== l; a = a.parentNode) s.push(e.nodeIndex(a, n));
        return s
    }

    function gs(e, t, n) { var r = 0; return Et.each(e.select(t), function(e) { if ("all" !== e.getAttribute("data-mce-bogus")) return e !== n && void r++ }), r }

    function ps(e, t) {
        var n, r = t ? "start" : "end",
            o = e[r + "Container"],
            i = e[r + "Offset"];
        zn(o) && "TR" === o.nodeName && (o = (n = o.childNodes)[Math.min(t ? i : i - 1, n.length - 1)]) && (i = t ? 0 : o.childNodes.length, e["set" + (t ? "Start" : "End")](o, i))
    }

    function hs(e) { return ps(e, !0), ps(e, !1), e }

    function vs(e, t) { var n; return zn(e) && (e = Bu(e, t), dc(e)) ? e : Ir(e) ? (n = (e = jn(e) && Pr(e) ? e.parentNode : e).previousSibling, dc(n) ? n : (n = e.nextSibling, dc(n) ? n : void 0)) : void 0 }

    function bs(e, t, n) {
        var r = n.getNode(),
            o = r ? r.nodeName : null,
            i = n.getRng();
        if (dc(r) || "IMG" === o) return { name: o, index: gs(n.dom, o, r) };
        var a, u, s, c, l, f, d, m = vs((a = i).startContainer, a.startOffset) || vs(a.endContainer, a.endOffset);
        return m ? { name: o = m.tagName, index: gs(n.dom, o, m) } : (f = (s = n).dom, (d = {}).start = ms(f, u = e, c = t, l = i, !0), s.isCollapsed() || (d.end = ms(f, u, c, l, !1)), Hr(l) && (d.isFakeCaret = !0), d)
    }

    function ys(e, t, n) { var r = { "data-mce-type": "bookmark", id: t, style: "overflow:hidden;line-height:0px" }; return n ? e.create("span", r, "&#xFEFF;") : e.create("span", r) }

    function Cs(e, t) {
        var n = e.dom,
            r = e.getRng(),
            o = n.uniqueId(),
            i = e.isCollapsed(),
            a = e.getNode(),
            u = a.nodeName;
        if ("IMG" === u) return { name: u, index: gs(n, u, a) };
        var s = hs(r.cloneRange());
        return i || (s.collapse(!1), ss(n, s, ys(n, o + "_end", t))), (r = hs(r)).collapse(!0), ss(n, r, ys(n, o + "_start", t)), e.moveToBookmark({ id: o, keep: !0 }), { id: o }
    }

    function xs(e, t, n) { var r = e.getParam(t, n); return -1 === r.indexOf("=") ? r : ue(e.getParam(t, "", "hash"), e.id).getOr(n) }

    function ws(e) { return e.getParam("content_security_policy", "") }

    function Ss(e) { if (e.getParam("force_p_newlines", !1)) return "p"; var t = e.getParam("forced_root_block", "p"); return !1 === t ? "" : !0 === t ? "p" : t }

    function Es(e) { return e.getParam("forced_root_block_attrs", {}) }

    function Ns(e) { return e.getParam("automatic_uploads", !0, "boolean") }

    function ks(e) { return e.getParam("icons", "", "string") }

    function _s(e) { return e.getParam("referrer_policy", "", "string") }

    function As(e) { return e.getParam("language", "en", "string") }

    function Rs(e) { return e.getParam("indent_use_margin", !1) }

    function Ds(e) { var t = e.getParam("font_css", []); return S(t) ? t : T(t.split(","), Je) }

    function Ts(e) { var t = e.getParam("object_resizing"); return !1 !== t && !xt.iOS && (X(t) ? t : "table,img,figure.image,div,video,iframe") }

    function Os(e) { return e.getParam("event_root") }

    function Bs(e) { return e.getParam("theme") }

    function Ps(e) { return !1 !== e.getParam("inline_boundaries") }

    function Ls(e) { return e.getParam("plugins", "", "string") }

    function Is(e) {
        var t = e.parentNode;
        t && t.removeChild(e)
    }

    function Ms(e) { var t = wo(e); return { count: e.length - t.length, text: t } }

    function Fs(e) { for (var t; - 1 !== (t = e.data.lastIndexOf(Co));) e.deleteData(t, 1) }

    function Us(e, t) { return vc(e), t }

    function zs(e, t) {
        var n, r = t.container(),
            o = (-1 === (n = _(xe(r.childNodes), e)) ? ve.none() : ve.some(n)).map(function(e) { return e < t.offset() ? as(r, t.offset() - 1) : t }).getOr(t);
        return vc(e), o
    }

    function Hs(e, t) { return as.isTextPosition(t) ? (r = t, hc(n = e) && r.container() === n ? (a = Ms((o = n).data.substr(0, (i = r).offset())), u = Ms(o.data.substr(i.offset())), 0 < (a.text + u.text).length ? (Fs(o), as(o, i.offset() - a.count)) : i) : Us(n, r)) : (s = e, ((c = t).container() === s.parentNode ? zs : Us)(s, c)); var n, r, o, i, a, u, s, c }

    function js(e, t, n) {
        var r, o, i, a = _u(t.getBoundingClientRect(), n),
            u = "BODY" === e.tagName ? (r = e.ownerDocument.documentElement, o = e.scrollLeft || r.scrollLeft, e.scrollTop || r.scrollTop) : (i = e.getBoundingClientRect(), o = e.scrollLeft - i.left, e.scrollTop - i.top);
        a.left += o, a.right += o, a.top += u, a.bottom += u, a.width = 1;
        var s = t.offsetWidth - t.clientWidth;
        return 0 < s && (n && (s *= -1), a.left += s, a.right += s), a
    }

    function Vs(e, i, a, u) {
        function s() {
            ! function() {
                for (var e = hu(Nt.fromDom(i), "*[contentEditable=false],video,audio,embed,object"), t = 0; t < e.length; t++) {
                    var n, r = e[t].dom,
                        o = r.previousSibling;
                    ko(o) && (1 === (n = o.data).length ? o.parentNode.removeChild(o) : o.deleteData(n.length - 1, 1)), o = r.nextSibling, No(o) && (1 === (n = o.data).length ? o.parentNode.removeChild(o) : o.deleteData(0, 1))
                }
            }(), l && (vc(l), l = null), f.on(function(e) { Wa(e.caret).remove(), f.clear() }), c && (_r.clearInterval(c), c = void 0)
        }
        var c, l, f = cu(),
            t = Ss(e),
            d = 0 < t.length ? t : "p";
        return {
            show: function(e, t) {
                var n;
                if (s(), xc(t)) return null;
                if (!a(t)) return l = function(e, t) {
                    var n = e.ownerDocument.createTextNode(Co),
                        r = e.parentNode;
                    if (t) {
                        if (o = e.previousSibling, Eo(o)) { if (Ir(o)) return o; if (ko(o)) return o.splitText(o.data.length - 1) }
                        r.insertBefore(n, e)
                    } else {
                        var o = e.nextSibling;
                        if (Eo(o)) { if (Ir(o)) return o; if (No(o)) return o.splitText(1), o }
                        e.nextSibling ? r.insertBefore(n, e.nextSibling) : r.appendChild(n)
                    }
                    return n
                }(t, e), n = t.ownerDocument.createRange(), wc(l.nextSibling) ? (n.setStart(l, 0), n.setEnd(l, 0)) : (n.setStart(l, 1), n.setEnd(l, 1)), n;
                l = function(e, t, n) {
                    var r, o = t.ownerDocument.createElement(e);
                    o.setAttribute("data-mce-caret", n ? "before" : "after"), o.setAttribute("data-mce-bogus", "all"), o.appendChild(((r = document.createElement("br")).setAttribute("data-mce-bogus", "1"), r));
                    var i = t.parentNode;
                    return n ? i.insertBefore(o, t) : t.nextSibling ? i.insertBefore(o, t.nextSibling) : i.appendChild(o), o
                }(d, t, e);
                var r = js(i, t, e);
                Wa(l).css("top", r.top);
                var o = Wa('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(_e({}, r)).appendTo(i)[0];
                return f.set({ caret: o, element: t, before: e }), e && Wa(o).addClass("mce-visual-caret-before"), c = _r.setInterval(function() { u() ? Wa("div.mce-visual-caret", i).toggleClass("mce-visual-caret-hidden") : Wa("div.mce-visual-caret", i).addClass("mce-visual-caret-hidden") }, 500), (n = t.ownerDocument.createRange()).setStart(l, 0), n.setEnd(l, 0), n
            },
            hide: s,
            getCss: function() { return ".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}" },
            reposition: function() {
                f.on(function(e) {
                    var t = js(i, e.element, e.before);
                    Wa(e.caret).css(_e({}, t))
                })
            },
            destroy: function() { return _r.clearInterval(c) }
        }
    }

    function qs() { return bc.isIE() || bc.isEdge() || bc.isFirefox() }

    function $s(e) { return wc(e) || cn(e) && qs() }

    function Ws(e, t) {
        for (var n; n = e(t);)
            if (!_c(n)) return n;
        return null
    }

    function Ks(e, t, n, r, o) {
        var i = new Rr(e, r),
            a = Sc(e) || _c(e);
        if (t < 0) {
            if (a && n(e = Ws(i.prev.bind(i), !0))) return e;
            for (; e = Ws(i.prev.bind(i), o);)
                if (n(e)) return e
        }
        if (0 < t) {
            if (a && n(e = Ws(i.next.bind(i), !0))) return e;
            for (; e = Ws(i.next.bind(i), o);)
                if (n(e)) return e
        }
        return null
    }

    function Xs(e, t) {
        for (; e && e !== t;) {
            if (Nc(e)) return e;
            e = e.parentNode
        }
        return null
    }

    function Ys(e, t, n) { return Xs(e.container(), n) === Xs(t.container(), n) }

    function Gs(e, t) {
        if (!t) return null;
        var n = t.container(),
            r = t.offset();
        return Ac(n) ? n.childNodes[r + e] : null
    }

    function Js(e, t) { var n = t.ownerDocument.createRange(); return e ? (n.setStartBefore(t), n.setEndBefore(t)) : (n.setStartAfter(t), n.setEndAfter(t)), n }

    function Qs(e, t, n) {
        for (var r, o, i = e ? "previousSibling" : "nextSibling"; n && n !== t;) {
            var a = n[i];
            if (kc(a) && (a = a[i]), Sc(a) || Ec(a)) { if (o = n, Xs(a, r = t) === Xs(o, r)) return a; break }
            if (Rc(a)) break;
            n = n.parentNode
        }
        return null
    }

    function Zs(e, t, n) {
        var r, o = A(Qs, !0, t),
            i = A(Qs, !1, t),
            a = n.startContainer,
            u = n.startOffset;
        if (Pr(a)) { var s = (a = Ac(a) ? a : a.parentNode).getAttribute("data-mce-caret"); if ("before" === s && $s(r = a.nextSibling)) return Dc(r); if ("after" === s && $s(r = a.previousSibling)) return Tc(r) }
        if (!n.collapsed) return n;
        if (jn(a)) { if (kc(a)) { if (1 === e) { if (r = i(a)) return Dc(r); if (r = o(a)) return Tc(r) } if (-1 === e) { if (r = o(a)) return Tc(r); if (r = i(a)) return Dc(r) } return n } if (ko(a) && u >= a.data.length - 1) return 1 === e && (r = i(a)) ? Dc(r) : n; if (No(a) && u <= 1) return -1 === e && (r = o(a)) ? Tc(r) : n; if (u === a.data.length) return (r = i(a)) ? Dc(r) : n; if (0 === u) return (r = o(a)) ? Tc(r) : n }
        return n
    }

    function ec(e, t) { return ve.from(Gs(e ? 0 : -1, t)).filter(Sc) }

    function tc(e, t, n) { var r = Zs(e, t, n); return -1 === e ? as.fromRangeStart(r) : as.fromRangeEnd(r) }

    function nc(e) { return ve.from(e.getNode()).map(Nt.fromDom) }

    function rc(e, t) {
        for (; t = e(t);)
            if (t.isVisible()) return t;
        return t
    }

    function oc(e, t) { var n = Ys(e, t); return !(n || !Wn(e.getNode())) || n }
    as.fromRangeStart = function(e) { return as(e.startContainer, e.startOffset) }, as.fromRangeEnd = function(e) { return as(e.endContainer, e.endOffset) }, as.after = function(e) { return as(e.parentNode, rs(e) + 1) }, as.before = function(e) { return as(e.parentNode, rs(e)) }, as.isAbove = function(e, t) { return dn(Q(t.getClientRects()), Z(e.getClientRects()), Ru).getOr(!1) }, as.isBelow = function(e, t) { return dn(Z(t.getClientRects()), Q(e.getClientRects()), Du).getOr(!1) }, as.isAtStart = function(e) { return !!e && e.isAtStart() }, as.isAtEnd = function(e) { return !!e && e.isAtEnd() }, as.isTextPosition = function(e) { return !!e && jn(e.container()) }, as.isElementPosition = function(e) { return !1 === as.isTextPosition(e) };
    var ic, ac, uc = jn,
        sc = sn,
        cc = Ja.nodeIndex,
        lc = function(e) { var t = e.parentNode; return sc(t) ? lc(t) : t },
        fc = function(e) { return e ? me(e.childNodes, function(e, t) { return sc(t) && "BR" !== t.nodeName ? e = e.concat(fc(t)) : e.push(t), e }, []) : [] },
        dc = Yn,
        mc = A(bs, u, !0),
        gc = Ja.DOM,
        pc = zn,
        hc = jn,
        vc = function(e) { pc(e) && Ir(e) && (Mr(e) ? e.removeAttribute("data-mce-caret") : Is(e)), hc(e) && (Fs(e), 0 === e.data.length && Is(e)) },
        bc = dt().browser,
        yc = Yn,
        Cc = Jn,
        xc = Gn,
        wc = function(e) { return yc(e) || Cc(e) },
        Sc = Yn,
        Ec = Jn,
        Nc = an("display", "block table table-cell table-caption list-item"),
        kc = Ir,
        _c = Pr,
        Ac = zn,
        Rc = jr,
        Dc = A(Js, !0),
        Tc = A(Js, !1);

    function Oc(e, t) { return e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null }

    function Bc(e, t) { if (0 < e) { if (Kl(t.previousSibling) && !ql(t.previousSibling)) return as.before(t); if (ql(t)) return as(t, 0) } if (e < 0) { if (Kl(t.nextSibling) && !ql(t.nextSibling)) return as.after(t); if (ql(t)) return as(t, t.data.length) } return e < 0 && !Wl(t) ? as.after(t) : as.before(t) }

    function Pc(t) { return { next: function(e) { return Yl(ic.Forwards, e, t) }, prev: function(e) { return Yl(ic.Backwards, e, t) } } }

    function Lc(e) { return as.isTextPosition(e) ? 0 === e.offset() : jr(e.getNode()) }

    function Ic(e) { if (as.isTextPosition(e)) { var t = e.container(); return e.offset() === t.data.length } return jr(e.getNode(!0)) }

    function Mc(e, t) { return !as.isTextPosition(e) && !as.isTextPosition(t) && e.getNode() === t.getNode(!0) }

    function Fc(o, i, a) { return Gl(o, i, a).bind(function(e) { return Ys(a, e, i) && (t = a, n = e, o ? !Mc(t, n) && (as.isTextPosition(r = t) || !Wn(r.getNode())) && Ic(t) && Lc(n) : !Mc(n, t) && Lc(t) && Ic(n)) ? Gl(o, i, e) : ve.some(e); var t, n, r }) }

    function Uc(e, t) { var n, r, o, i, a, u = e ? t.firstChild : t.lastChild; return jn(u) ? ve.some(as(u, e ? 0 : u.data.length)) : u ? jr(u) ? ve.some(e ? as.before(u) : Wn(a = u) ? as.before(a) : as.after(a)) : (r = t, o = u, i = (n = e) ? as.before(o) : as.after(o), Gl(n, r, i)) : ve.none() }

    function zc(e) { return zn(e) && e.id === nf }

    function Hc(e, t) {
        for (; t && t !== e;) {
            if (t.id === nf) return t;
            t = t.parentNode
        }
        return null
    }

    function jc(e) { return Et.isArray(e.start) }

    function Vc(e, t) { return zn(t) && e.isBlock(t) && !t.innerHTML && !xt.ie && (t.innerHTML = '<br data-mce-bogus="1" />'), t }

    function qc(e, t, n) { return !1 === t.hasChildNodes() && Hc(e, t) && (o = n, i = (r = t).ownerDocument.createTextNode(Co), r.appendChild(i), o.setStart(i, 0), o.setEnd(i, 0), 1); var r, o, i }

    function $c(e, t, n, r) {
        var o, i, a, u, s = n[t ? "start" : "end"],
            c = e.getRoot();
        if (s) {
            for (a = s[0], i = c, o = s.length - 1; 1 <= o; o--) {
                if (u = i.childNodes, qc(c, i, r)) return 1;
                if (s[o] > u.length - 1) return qc(c, i, r) || function(t) { return tf(i).fold(R, function(e) { return t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0 }) }(r);
                i = u[s[o]]
            }
            3 === i.nodeType && (a = Math.min(s[0], i.nodeValue.length)), 1 === i.nodeType && (a = Math.min(s[0], i.childNodes.length)), t ? r.setStart(i, a) : r.setEnd(i, a)
        }
        return 1
    }

    function Wc(e) { return jn(e) && 0 < e.data.length }

    function Kc(e, t, n) {
        var r, o, i, a, u, s, c = e.get(n.id + "_" + t),
            l = n.keep;
        if (c) {
            if (r = c.parentNode, o = "start" === t ? l ? c.hasChildNodes() ? (r = c.firstChild, 1) : Wc(c.nextSibling) ? (r = c.nextSibling, 0) : Wc(c.previousSibling) ? (r = c.previousSibling, c.previousSibling.data.length) : (r = c.parentNode, e.nodeIndex(c) + 1) : e.nodeIndex(c) : l ? c.hasChildNodes() ? (r = c.firstChild, 1) : Wc(c.previousSibling) ? (r = c.previousSibling, c.previousSibling.data.length) : (r = c.parentNode, e.nodeIndex(c)) : e.nodeIndex(c), u = r, s = o, !l) {
                for (a = c.previousSibling, i = c.nextSibling, Et.each(Et.grep(c.childNodes), function(e) { jn(e) && (e.nodeValue = e.nodeValue.replace(/\uFEFF/g, "")) }); c = e.get(n.id + "_" + t);) e.remove(c, !0);
                a && i && a.nodeType === i.nodeType && jn(a) && !xt.opera && (o = a.nodeValue.length, a.appendData(i.nodeValue), e.remove(i), u = a, s = o)
            }
            return ve.some(as(u, s))
        }
        return ve.none()
    }

    function Xc(t, e) {! function(e, t) { var n, r, o, i, a, u, s, c, l, f, d, m, g = e.dom; if (t) { if (jc(t)) return d = t, m = (f = g).createRng(), $c(f, !0, d, m) && $c(f, !1, d, m) ? ve.some(m) : ve.none(); if (X(t.start)) return ve.some((s = t, c = (u = g).createRng(), l = ds(u.getRoot(), s.start), c.setStart(l.container(), l.offset()), l = ds(u.getRoot(), s.end), c.setEnd(l.container(), l.offset()), c)); if (Ne(t, "id")) return dn(a = Kc(o = g, "start", i = t), Kc(o, "end", i).or(a), function(e, t) { var n = o.createRng(); return n.setStart(Vc(o, e.container()), e.offset()), n.setEnd(Vc(o, t.container()), t.offset()), n }); if (Ne(t, "name")) return n = g, ve.from(n.select((r = t).name)[r.index]).map(function(e) { var t = n.createRng(); return t.selectNode(e), t }); if (Ne(t, "rng")) return ve.some(t.rng) } return ve.none() }(t, e).each(function(e) { t.setRng(e) }) }

    function Yc(e) { return zn(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type") }

    function Gc(e) { return "" !== e && -1 !== " \f\n\r\t\v".indexOf(e) }

    function Jc(e) { return !Gc(e) && !of(e) }

    function Qc(e) { return e.nodeType }

    function Zc(e, t, n) {
        var r, o = n.startOffset,
            i = n.startContainer;
        if ((i !== n.endContainer || !(r = i.childNodes[o]) || !/^(IMG)$/.test(r.nodeName)) && zn(i)) {
            var a = i.childNodes,
                u = void 0;
            o < a.length ? (i = a[o], u = new Rr(i, e.getParent(i, e.isBlock))) : (i = a[a.length - 1], (u = new Rr(i, e.getParent(i, e.isBlock))).next(!0));
            for (var s = u.current(); s; s = u.next())
                if (jn(s) && !af(s)) return n.setStart(s, 0), t.setRng(n), 0
        }
    }

    function el(e, t, n) {
        if (e) {
            var r = t ? "nextSibling" : "previousSibling";
            for (e = n ? e : e[r]; e; e = e[r])
                if (zn(e) || !af(e)) return e
        }
    }

    function tl(e, t) { return Qc(t) && (t = t.nodeName), !!e.schema.getTextBlockElements()[t.toLowerCase()] }

    function nl(e, t, n) { return e.schema.isValidChild(t, n) }

    function rl(e, n) { return y(e) ? e = e(n) : V(n) && (e = e.replace(/%(\w+)/g, function(e, t) { return n[t] || e })), e }

    function ol(e, t) { return e = "" + ((e = e || "").nodeName || e), t = "" + ((t = t || "").nodeName || t), e.toLowerCase() === t.toLowerCase() }

    function il(e, t, n) { return "color" !== n && "backgroundColor" !== n || (t = e.toHex(t)), "fontWeight" === n && 700 === t && (t = "bold"), "" + ("fontFamily" === n ? t.replace(/[\'\"]/g, "").replace(/,\s+/g, ",") : t) }

    function al(e, t, n) { return il(e, e.getStyle(t, n), n) }

    function ul(t, e) { var n; return t.getParent(e, function(e) { return (n = t.getStyle(e, "text-decoration")) && "none" !== n }), n }

    function sl(e, t, n) { return e.getParents(t, n, e.getRoot()) }

    function cl(e, t) {
        return F(e.formatter.get(t), function(t) {
            function o(e) { return 1 < e.length && "%" === e.charAt(0) }
            return F(["styles", "attributes"], function(e) { return ue(t, e).exists(function(e) { var n, r; return F(S(e) ? e : (n = u, r = [], ne(e, function(e, t) { r.push(n(e, t)) }), r), o) }) })
        })
    }

    function ll(e) { return se(e, "block") }

    function fl(e) { return se(e, "selector") }

    function dl(e) { return se(e, "inline") }

    function ml(e) { return fl(e) && !1 !== e.expand && !dl(e) }

    function gl(e, t) {
        for (var n = t; n;) {
            if (zn(n) && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t;
            n = n.parentNode
        }
        return t
    }

    function pl(e, t, n, r) {
        for (var o = t.data, i = n; e ? 0 <= i : i < o.length; e ? i-- : i++)
            if (r(o.charAt(i))) return e ? i + 1 : i;
        return -1
    }

    function hl(e, t, n) { return pl(e, t, n, function(e) { return of(e) || Gc(e) }) }

    function vl(e, t, n) { return pl(e, t, n, Jc) }

    function bl(i, e, t, n, a, r) {
        function o(e, t, n) {
            var r = Nu(i),
                o = a ? r.backwards : r.forwards;
            return ve.from(o(e, t, function(e, t) { return uf(e.parentNode) ? -1 : n(a, u = e, t) }, s))
        }
        var u, s = i.getParent(t, i.isBlock) || e;
        return o(t, n, hl).bind(function(e) { return r ? o(e.container, e.offset + (a ? -1 : 0), vl) : ve.some(e) }).orThunk(function() { return u ? ve.some({ container: u, offset: a ? 0 : u.length }) : ve.none() })
    }

    function yl(e, t, n, r, o) {
        jn(r) && Pe(r.data) && r[o] && (r = r[o]);
        for (var i = sf(e, r), a = 0; a < i.length; a++)
            for (var u = 0; u < t.length; u++) { var s = t[u]; if ((!V(s.collapsed) || s.collapsed === n.collapsed) && fl(s) && e.is(i[a], s.selector)) return i[a] }
        return r
    }

    function Cl(t, e, n, r) {
        var o, i = n,
            a = t.dom,
            u = a.getRoot(),
            s = e[0];
        if ((i = ll(s) ? s.wrapper ? null : a.getParent(n, s.block, u) : i) || (o = a.getParent(n, "LI,TD,TH"), i = a.getParent(jn(n) ? n.parentNode : n, function(e) { return e !== u && lf(t, e) }, o)), !(i = i && ll(s) && s.wrapper && sf(a, i, "ul,ol").reverse()[0] || i))
            for (i = n; i[r] && !a.isBlock(i[r]) && !ol(i = i[r], "br"););
        return i || n
    }

    function xl(e, t, n, r, o) {
        var i, a = n,
            u = o ? "previousSibling" : "nextSibling",
            s = e.getRoot();
        if (jn(n) && !cf(n) && (o ? 0 < r : r < n.data.length)) return n;
        for (;;) {
            if (!t[0].block_expand && e.isBlock(a)) return a;
            for (var c = a[u]; c; c = c[u]) { var l = jn(c) && !ff(e, s, c, u); if (!uf(c) && (!Wn(i = c) || !i.getAttribute("data-mce-bogus") || i.nextSibling) && !cf(c, l)) return a }
            if (a === s || a.parentNode === s) { n = a; break }
            a = a.parentNode
        }
        return n
    }

    function wl(e) { return uf(e.parentNode) || uf(e) }

    function Sl(e, t, n, r) {
        void 0 === r && (r = !1);
        var o = t.startContainer,
            i = t.startOffset,
            a = t.endContainer,
            u = t.endOffset,
            s = e.dom,
            c = n[0];
        return zn(o) && o.hasChildNodes() && (o = Bu(o, i), jn(o) && (i = 0)), zn(a) && a.hasChildNodes() && (a = Bu(a, t.collapsed ? u : u - 1), jn(a) && (u = a.nodeValue.length)), o = gl(s, o), a = gl(s, a), wl(o) && (o = uf(o) ? o : o.parentNode, o = t.collapsed ? o.previousSibling || o : o.nextSibling || o, jn(o) && (i = t.collapsed ? o.length : 0)), wl(a) && (a = uf(a) ? a : a.parentNode, a = t.collapsed ? a.nextSibling || a : a.previousSibling || a, jn(a) && (u = t.collapsed ? 0 : a.length)), t.collapsed && (bl(s, e.getBody(), o, i, !0, r).each(function(e) {
            var t = e.container,
                n = e.offset;
            o = t, i = n
        }), bl(s, e.getBody(), a, u, !1, r).each(function(e) {
            var t = e.container,
                n = e.offset;
            a = t, u = n
        })), (dl(c) || c.block_expand) && (dl(c) && jn(o) && 0 !== i || (o = xl(s, n, o, i, !0)), dl(c) && jn(a) && u !== a.nodeValue.length || (a = xl(s, n, a, u, !1))), ml(c) && (o = yl(s, n, t, o, "previousSibling"), a = yl(s, n, t, a, "nextSibling")), (ll(c) || fl(c)) && (o = Cl(e, n, o, "previousSibling"), a = Cl(e, n, a, "nextSibling"), ll(c) && (s.isBlock(o) || (o = xl(s, n, o, i, !0)), s.isBlock(a) || (a = xl(s, n, a, u, !1)))), zn(o) && (i = s.nodeIndex(o), o = o.parentNode), zn(a) && (u = s.nodeIndex(a) + 1, a = a.parentNode), { startContainer: o, startOffset: i, endContainer: a, endOffset: u }
    }

    function El(n, e, u) {
        function s(e) {
            var t = e[0];
            jn(t) && t === i && o >= t.data.length && e.splice(0, 1);
            var n = e[e.length - 1];
            return 0 === a && 0 < e.length && n === l && jn(n) && e.splice(e.length - 1, 1), e
        }

        function c(e, t, n) { for (var r = []; e && e !== n; e = e[t]) r.push(e); return r }

        function t(e, t) { return n.getParent(e, function(e) { return e.parentNode === t }, t) }

        function r(e, t, n) {
            var r = n ? "nextSibling" : "previousSibling",
                o = e;
            for (o.parentNode; o && o !== t; o = i) {
                var i = o.parentNode,
                    a = c(o === e ? o : o[r], r);
                a.length && (n || a.reverse(), u(s(a)))
            }
        }
        var o = e.startOffset,
            i = Bu(e.startContainer, o),
            a = e.endOffset,
            l = Bu(e.endContainer, a - 1);
        if (i === l) return u(s([i]));
        var f = n.findCommonAncestor(i, l);
        if (n.isChildOf(i, l)) return r(i, f, !0);
        if (n.isChildOf(l, i)) return r(l, f);
        var d = t(i, f) || i,
            m = t(l, f) || l;
        r(i, d, !0);
        var g = c(d === i ? d : d.nextSibling, "nextSibling", m === l ? m.nextSibling : m);
        g.length && u(s(g)), r(l, m)
    }

    function Nl(e) {
        var t = [];
        if (e)
            for (var n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n));
        return t
    }

    function kl(e, t) { var n = hu(t, "td[data-mce-selected],th[data-mce-selected]"); return 0 < n.length ? n : U(H(e, function(e) { var t = Ou(e); return t ? [Nt.fromDom(t)] : [] }), ho) }

    function _l(e) { return kl(Nl(e.selection.getSel()), Nt.fromDom(e.getBody())) }

    function Al(e, t) { return hr(e, "table", t) }

    function Rl(o, e) {
        return dn((r = e.startContainer, i = e.startOffset, jn(r) ? 0 === i ? ve.some(Nt.fromDom(r)) : ve.none() : ve.from(r.childNodes[i]).map(Nt.fromDom)), (t = e.endContainer, n = e.endOffset, jn(t) ? n === t.data.length ? ve.some(Nt.fromDom(t)) : ve.none() : ve.from(t.childNodes[n - 1]).map(Nt.fromDom)), function(e, t) {
            var n = M(df(o), A(je, e)),
                r = M(mf(o), A(je, t));
            return n.isSome() && r.isSome()
        }).getOr(!1);
        var t, n, r, i
    }

    function Dl(e, t, n, r) {
        var o = n,
            i = new Rr(n, o),
            a = ae(e.schema.getMoveCaretBeforeOnEnterElements(), function(e, t) { return !D(["td", "th", "table"], t.toLowerCase()) });
        do { if (jn(n) && 0 !== Et.trim(n.nodeValue).length) return r ? t.setStart(n, 0) : t.setEnd(n, n.nodeValue.length), 0; if (a[n.nodeName]) return r ? t.setStartBefore(n) : "BR" === n.nodeName ? t.setEndBefore(n) : t.setEndAfter(n), 0 } while (n = r ? i.next() : i.prev());
        "BODY" === o.nodeName && (r ? t.setStart(o, 0) : t.setEnd(o, o.childNodes.length))
    }

    function Tl(e) { var t = e.selection.getSel(); return t && 0 < t.rangeCount }

    function Ol(r, o) {
        var e = _l(r);
        0 < e.length ? Y(e, function(e) {
            var t = e.dom,
                n = r.dom.createRng();
            n.setStartBefore(t), n.setEndAfter(t), o(n, !0)
        }) : o(r.selection.getRng(), !1)
    }

    function Bl(e, t, n) {
        var r = Cs(e, t);
        n(r), e.moveToBookmark(r)
    }

    function Pl(e) { return gf.get(e) }

    function Ll(e, t, n, r) {
        var o = t.uid,
            i = void 0 === o ? yu("mce-annotation") : o,
            a = function(e, t) {
                var n = {};
                for (o in e) Object.prototype.hasOwnProperty.call(e, o) && t.indexOf(o) < 0 && (n[o] = e[o]);
                if (null != e && "function" == typeof Object.getOwnPropertySymbols)
                    for (var r = 0, o = Object.getOwnPropertySymbols(e); r < o.length; r++) t.indexOf(o[r]) < 0 && Object.prototype.propertyIsEnumerable.call(e, o[r]) && (n[o[r]] = e[o[r]]);
                return n
            }(t, ["uid"]),
            u = Nt.fromTag("span", e);
        gu(u, ju()), pn(u, "" + qu(), i), pn(u, "" + Vu(), n);
        var s, c = r(i, a),
            l = c.attributes,
            f = c.classes,
            d = void 0 === f ? [] : f;
        return hn(u, void 0 === l ? {} : l), s = u, Y(d, function(e) { gu(s, e) }), u
    }

    function Il(u, e, t, n, r) {
        function s() { d.clear() }

        function c(e) { Y(e, o) }
        var l = [],
            f = Ll(u.getDoc(), r, t, n),
            d = cu(),
            o = function(e) {
                var t, n, r, o, i, a;
                switch (r = u, i = "span", a = kt(o = e), Ot(o).fold(function() { return "skipping" }, function(e) { return "br" === a || _n(n = o) && Pl(n) === Co ? "valid" : kn(t = o) && pu(t, ju()) ? "existing" : zc(o.dom) ? "caret" : nl(r, i, a) && nl(r, kt(e), i) ? "valid" : "invalid-child"; var t, n })) {
                    case "invalid-child":
                        s(), c(Dn(e)), s();
                        break;
                    case "valid":
                        qt(t = e, n = d.get().getOrThunk(function() { var e = wu(f); return l.push(e), d.set(e), e })), Pn(n, t)
                }
            };
        return El(u.dom, e, function(e) { s(), c(T(e, Nt.fromDom)) }), l
    }

    function Ml(o) {
        var n, e, r, i = (n = {}, { register: function(e, t) { n[e] = { name: e, settings: t } }, lookup: function(e) { return ue(n, e).map(function(e) { return e.settings }) } });
        r = i, (e = o).on("init", function() { e.serializer.addNodeFilter("span", function(e) { Y(e, function(t) { ve.from(t.attr(Vu())).bind(r.lookup).each(function(e) {!1 === e.persistent && t.unwrap() }) }) }) });
        var a = bu(o);
        return {
            register: function(e, t) { i.register(e, t) },
            annotate: function(t, n) {
                i.lookup(t).each(function(e) {
                    var u, s, c, l;
                    s = t, c = e, l = n, (u = o).undoManager.transact(function() {
                        var e, t, n, r, o = u.selection,
                            i = o.getRng(),
                            a = 0 < _l(u).length;
                        i.collapsed && !a && (n = Sl(e = u, t = i, [{ inline: "span" }]), t.setStart(n.startContainer, n.startOffset), t.setEnd(n.endContainer, n.endOffset), e.selection.setRng(t)), o.getRng().collapsed && !a ? (Cu(r = Ll(u.getDoc(), l, s, c.decorate), yo), o.getRng().insertNode(r.dom), o.select(r.dom)) : Bl(o, !1, function() { Ol(u, function(e) { Il(u, e, s, c.decorate, l) }) })
                    })
                })
            },
            annotationChanged: function(e, t) { a.addListener(e, t) },
            remove: function(e) { vu(o, ve.some(e)).each(function(e) { Y(e.elements, Yt) }) },
            getAll: function(e) {
                var t, n, r;
                return re((t = e, n = hu(Nt.fromDom(o.getBody()), "[" + Vu() + '="' + t + '"]'), r = {}, Y(n, function(e) {
                    var t = vn(e, qu()),
                        n = ue(r, t).getOr([]);
                    r[t] = n.concat([e])
                }), r), function(e) { return T(e, function(e) { return e.dom }) })
            }
        }
    }

    function Fl(e) { return { getBookmark: A(rf, e), moveToBookmark: A(Xc, e) } }(ac = ic = ic || {})[ac.Backwards = -1] = "Backwards", ac[ac.Forwards = 1] = "Forwards";

    function Ul(e) { return Oo(e) || !!Lo(t = e) && !0 !== L(xe(t.getElementsByTagName("*")), function(e, t) { return e || _o(t) }, !1); var t }
    var zl, Hl, jl, Vl = Yn,
        ql = jn,
        $l = zn,
        Wl = Wn,
        Kl = jr,
        Xl = Vr,
        Yl = function(e, t, n) {
            var r, o, i;
            if (!$l(n) || !t) return null;
            if (t.isEqual(as.after(n)) && n.lastChild) { if (i = as.after(n.lastChild), e < 0 && Kl(n.lastChild) && $l(n.lastChild)) return Wl(n.lastChild) ? as.before(n.lastChild) : i } else i = t;
            var a, u, s, c = i.container(),
                l = i.offset();
            if (ql(c)) {
                if (e < 0 && 0 < l) return as(c, --l);
                if (0 < e && l < c.length) return as(c, ++l);
                r = c
            } else {
                if (e < 0 && 0 < l && (f = Oc(c, l - 1), Kl(f))) return !Ul(f) && (o = Ks(f, e, Xl, f)) ? ql(o) ? as(o, o.data.length) : as.after(o) : ql(f) ? as(f, f.data.length) : as.before(f);
                if (0 < e && l < c.childNodes.length && (f = Oc(c, l), Kl(f))) return Wl(f) ? (a = n, (s = (u = f).nextSibling) && Kl(s) ? ql(s) ? as(s, 0) : as.before(s) : Yl(ic.Forwards, as.after(u), a)) : !Ul(f) && (o = Ks(f, e, Xl, f)) ? ql(o) ? as(o, 0) : as.before(o) : ql(f) ? as(f, 0) : as.after(f);
                r = f || i.getNode()
            }
            if ((0 < e && i.isAtEnd() || e < 0 && i.isAtStart()) && (r = Ks(r, e, w, n, !0), Xl(r, n))) return Bc(e, r);
            var f = Ks(r, e, Xl, n),
                d = pe(U(function(e, t) { for (var n = []; e && e !== t;) n.push(e), e = e.parentNode; return n }(c, n), Vl));
            return !d || f && d.contains(f) ? f ? Bc(e, f) : null : 0 < e ? as.after(d) : as.before(d)
        },
        Gl = function(e, t, n) { var r = Pc(t); return ve.from(e ? r.next(n) : r.prev(n)) },
        Jl = function(t, n, e, r) { return Fc(t, n, e).bind(function(e) { return r(e) ? Jl(t, n, e, r) : ve.some(e) }) },
        Ql = A(Gl, !0),
        Zl = A(Gl, !1),
        ef = A(Uc, !0),
        tf = A(Uc, !1),
        nf = "_mce_caret",
        rf = function(e, t, n) { return 2 === t ? bs(wo, n, e) : 3 === t ? (o = (r = e).getRng(), { start: fs(r.dom.getRoot(), as.fromRangeStart(o)), end: fs(r.dom.getRoot(), as.fromRangeEnd(o)) }) : t ? { rng: e.getRng() } : Cs(e, !1); var r, o },
        of = (zl = yo, function(e) { return zl === e }),
        af = function(e, t) { return void 0 === t && (t = !1), !(!V(e) || !jn(e)) && qr(t ? e.data.replace(/ /g, "\xa0") : e.data) },
        uf = Yc,
        sf = sl,
        cf = af,
        lf = tl,
        ff = function(e, t, n, r) { var o = n.parentNode; return !V(n[r]) && (!(o !== t && !K(o) && !e.isBlock(o)) || ff(e, t, o, r)) },
        df = function(t) { return Ft(t).fold(J([t]), function(e) { return [t].concat(df(e)) }) },
        mf = function(t) { return Ut(t).fold(J([t]), function(e) { return "br" === kt(e) ? Bt(e).map(function(e) { return [t].concat(mf(e)) }).getOr([]) : [t].concat(mf(e)) }) },
        gf = (Hl = _n, {
            get: function(e) { if (!Hl(e)) throw new Error("Can only get text value of a text node"); return jl(e).getOr("") },
            getOption: jl = function(e) { return Hl(e) ? ve.from(e.dom.nodeValue) : ve.none() },
            set: function(e, t) {
                if (!Hl(e)) throw new Error("Can only set raw text value of a text node");
                e.dom.nodeValue = t
            }
        });

    function pf(e, t) {
        for (; t && t !== e;) {
            if (Xn(t) || Yn(t)) return t;
            t = t.parentNode
        }
        return null
    }

    function hf(t, n, e) { if (!e.collapsed) { if (xt.browser.isIE() && e.startOffset === e.endOffset - 1 && e.startContainer === e.endContainer) { var r = e.startContainer.childNodes[e.startOffset]; if (zn(r)) return F(r.getClientRects(), function(e) { return Tu(e, t, n) }) } return F(e.getClientRects(), function(e) { return Tu(e, t, n) }) } }

    function vf(e, t, n) { return e.fire(t, n) }

    function bf(e, t, n, r) { return e.fire("FormatApply", { format: t, node: n, vars: r }) }

    function yf(e, t, n, r) { return e.fire("FormatRemove", { format: t, node: n, vars: r }) }

    function Cf(r, l) {
        function c(e) { return e && ("IMG" === e.nodeName || l.dom.is(e, "figure.image")) }

        function f(e) { return Jn(e) || T.hasClass(e, "mce-preview-object") }

        function n(e) { var t = e.target;! function(e, t) { if ("longpress" !== e.type && 0 !== e.type.indexOf("touch")) return c(e.target) && !hf(e.clientX, e.clientY, t); var n = e.touches[0]; return c(e.target) && !hf(n.clientX, n.clientY, t) }(e, l.selection.getRng()) || e.isDefaultPrevented() || l.selection.select(t) }

        function d(e) { return T.is(e, "figure.image") ? [e.querySelector("img")] : T.hasClass(e, "mce-preview-object") && V(e.firstElementChild) ? [e, e.firstElementChild] : [e] }

        function i(e) { var t = Ts(l); return !!t && "false" !== e.getAttribute("data-mce-resize") && e !== l.getBody() && (T.hasClass(e, "mce-preview-object") ? ze(Nt.fromDom(e.firstElementChild), t) : ze(Nt.fromDom(e), t)) }

        function a(e, t, n) { V(n) && Y(d(e), function(e) { e.style[t] || !l.schema.isValid(e.nodeName.toLowerCase(), t) ? T.setStyle(e, t, n) : T.setAttrib(e, t, "" + n) }) }

        function m(e, t, n) { a(e, "width", t), a(e, "height", n) }

        function g(e) {
            var t, n, r, o, i, a, u = e.screenX - C,
                s = e.screenY - x;
            k = u * b[2] + w, _ = s * b[3] + S, k = k < 5 ? 5 : k, _ = _ < 5 ? 5 : _, ((c(p) || f(p)) && !1 !== l.getParam("resize_img_proportional", !0, "boolean") ? !Bf.modifierPressed(e) : Bf.modifierPressed(e)) && (L(u) > L(s) ? (_ = I(k * E), k = I(_ / E)) : (k = I(_ / E), _ = I(k * E))), m(h, k, _), t = b.startPos.x + u, n = b.startPos.y + s, T.setStyles(v, { left: t = 0 < t ? t : 0, top: n = 0 < n ? n : 0, display: "block" }), v.innerHTML = k + " &times; " + _, b[2] < 0 && h.clientWidth <= k && T.setStyle(h, "left", void 0 + (w - k)), b[3] < 0 && h.clientHeight <= _ && T.setStyle(h, "top", void 0 + (S - _)), (u = M.scrollWidth - A) + (s = M.scrollHeight - R) != 0 && T.setStyles(v, { left: t - u, top: n - s }), N || (r = p, o = w, i = S, a = "corner-" + b.name, l.fire("ObjectResizeStart", { target: r, width: o, height: i, origin: a }), N = !0)
        }

        function o(e) {
            function t(e, t) {
                if (e)
                    do { if (e === t) return 1 } while (e = e.parentNode)
            }
            var n;
            N || l.removed || (O(T.select("img[data-mce-selected],hr[data-mce-selected]"), function(e) { e.removeAttribute(D) }), n = "mousedown" === e.type ? e.target : r.getNode(), t(n = T.$(n).closest("table,img,figure.image,hr,video,span.mce-preview-object")[0], M) && (s(), t(r.getStart(!0), n) && t(r.getEnd(!0), n)) ? z(n) : H())
        }

        function u(e) { return Pf(pf(l.getBody(), e)) }

        function s() { try { l.getDoc().execCommand("enableObjectResizing", !1, "false") } catch (e) {} }
        var p, h, v, b, y, C, x, w, S, E, N, k, _, A, R, D = "data-mce-selected",
            T = l.dom,
            O = Et.each,
            B = l.getDoc(),
            P = document,
            L = Math.abs,
            I = Math.round,
            M = l.getBody(),
            F = { nw: [0, 0, -1, -1], ne: [1, 0, 1, -1], se: [1, 1, 1, 1], sw: [0, 1, -1, 1] },
            U = function() {
                var e, t, n, r, o = N;
                N = !1, o && (a(p, "width", k), a(p, "height", _)), T.unbind(B, "mousemove", g), T.unbind(B, "mouseup", U), P !== B && (T.unbind(P, "mousemove", g), T.unbind(P, "mouseup", U)), T.remove(h), T.remove(v), T.remove(y), z(p), o && (e = p, t = k, n = _, r = "corner-" + b.name, l.fire("ObjectResized", { target: e, width: t, height: n, origin: r }), T.setAttrib(p, "style", T.getAttrib(p, "style"))), l.nodeChanged()
            },
            z = function(e) {
                j();
                var t = T.getPos(e, M),
                    a = t.x,
                    u = t.y,
                    n = e.getBoundingClientRect(),
                    s = n.width || n.right - n.left,
                    c = n.height || n.bottom - n.top;
                p !== e && (H(), p = e, k = _ = 0);
                var r = l.fire("ObjectSelected", { target: e }),
                    o = T.getAttrib(p, D, "1");
                i(e) && !r.isDefaultPrevented() ? O(F, function(o, i) {
                    var e = T.get("mceResizeHandle" + i);
                    e && T.remove(e), e = T.add(M, "div", { id: "mceResizeHandle" + i, "data-mce-bogus": "all", class: "mce-resizehandle", unselectable: !0, style: "cursor:" + i + "-resize; margin:0; padding:0" }), 11 === xt.ie && (e.contentEditable = !1), T.bind(e, "mousedown", function(e) {
                        var t, n, r;
                        e.stopImmediatePropagation(), e.preventDefault(), t = e, r = d(p)[0], C = t.screenX, x = t.screenY, w = r.clientWidth, S = r.clientHeight, E = S / w, (b = o).name = i, b.startPos = { x: s * o[0] + a, y: c * o[1] + u }, A = M.scrollWidth, R = M.scrollHeight, y = T.add(M, "div", { class: "mce-resize-backdrop", "data-mce-bogus": "all" }), T.setStyles(y, { position: "fixed", left: "0", top: "0", width: "100%", height: "100%" }), h = f(n = p) ? T.create("img", { src: xt.transparentSrc }) : n.cloneNode(!0), T.addClass(h, "mce-clonedresizable"), T.setAttrib(h, "data-mce-bogus", "all"), h.contentEditable = "false", T.setStyles(h, { left: a, top: u, margin: 0 }), m(h, s, c), h.removeAttribute(D), M.appendChild(h), T.bind(B, "mousemove", g), T.bind(B, "mouseup", U), P !== B && (T.bind(P, "mousemove", g), T.bind(P, "mouseup", U)), v = T.add(M, "div", { class: "mce-resize-helper", "data-mce-bogus": "all" }, w + " &times; " + S)
                    }), o.elm = e, T.setStyles(e, { left: s * o[0] + a - e.offsetWidth / 2, top: c * o[1] + u - e.offsetHeight / 2 })
                }) : H(), T.getAttrib(p, D) || p.setAttribute(D, o)
            },
            H = function() {
                j(), p && p.removeAttribute(D), ne(F, function(e, t) {
                    var n = T.get("mceResizeHandle" + t);
                    n && (T.unbind(n), T.remove(n))
                })
            },
            j = function() { ne(F, function(e) { e.elm && (T.unbind(e.elm), delete e.elm) }) };
        return l.on("init", function() {
            var e;
            s(), (xt.browser.isIE() || xt.browser.isEdge()) && (l.on("mousedown click", function(e) {
                var t = e.target,
                    n = t.nodeName;
                N || !/^(TABLE|IMG|HR)$/.test(n) || u(t) || (2 !== e.button && l.selection.select(t, "TABLE" === n), "mousedown" === e.type && l.nodeChanged())
            }), T.bind(M, "mscontrolselect", e = function(e) {
                function t(e) { _r.setEditorTimeout(l, function() { return l.selection.select(e) }) }
                if (u(e.target) || Jn(e.target)) return e.preventDefault(), void t(e.target);
                /^(TABLE|IMG|HR)$/.test(e.target.nodeName) && (e.preventDefault(), "IMG" === e.target.tagName && t(e.target))
            }), l.on("remove", function() { return T.unbind(M, "mscontrolselect", e) }));
            var t = _r.throttle(function(e) { l.composing || o(e) });
            l.on("nodechange ResizeEditor ResizeWindow ResizeContent drop FullscreenStateChanged", t), l.on("keyup compositionend", function(e) { p && "TABLE" === p.nodeName && t(e) }), l.on("hide blur", H), l.on("contextmenu longpress", n, !0)
        }), l.on("remove", j), { isResizable: i, showResizeRect: z, hideResizeRect: H, updateResizeRect: o, destroy: function() { p = h = y = null } }
    }

    function xf(e) { return Xn(e) || Yn(e) }

    function wf(t, n, r) {
        var o, e, i, a, u, s = r;
        if (s.caretPositionFromPoint)(e = s.caretPositionFromPoint(t, n)) && ((o = r.createRange()).setStart(e.offsetNode, e.offset), o.collapse(!0));
        else if (s.caretRangeFromPoint) o = s.caretRangeFromPoint(t, n);
        else if (s.body.createTextRange) {
            o = s.body.createTextRange();
            try { o.moveToPoint(t, n), o.collapse(!0) } catch (e) {
                o = function(e, n, t) {
                    var r, o = t.elementFromPoint(e, n),
                        i = t.body.createTextRange();
                    if (o && "HTML" !== o.tagName || (o = t.body), i.moveToElementText(o), 0 < (r = (r = Et.toArray(i.getClientRects())).sort(function(e, t) { return (e = Math.abs(Math.max(e.top - n, e.bottom - n))) - Math.abs(Math.max(t.top - n, t.bottom - n)) })).length) { n = (r[0].bottom + r[0].top) / 2; try { return i.moveToPoint(e, n), i.collapse(!0), i } catch (e) {} }
                    return null
                }(t, n, r)
            }
            return i = o, a = r.body, u = i && i.parentElement ? i.parentElement() : null, Yn(function(e, t, n) {
                for (; e && e !== t;) {
                    if (n(e)) return e;
                    e = e.parentNode
                }
                return null
            }(u, a, xf)) ? null : i
        }
        return o
    }

    function Sf(e, t) { return e && t && e.startContainer === t.startContainer && e.startOffset === t.startOffset && e.endContainer === t.endContainer && e.endOffset === t.endOffset }

    function Ef(e, t, n) {
        return null !== function(e, t, n) {
            for (; e && e !== t;) {
                if (n(e)) return e;
                e = e.parentNode
            }
            return null
        }(e, t, n)
    }

    function Nf(e) { return e && "TABLE" === e.nodeName }

    function kf(e, t, n) {
        for (var r = new Rr(t, e.getParent(t.parentNode, e.isBlock) || e.getRoot()); t = r[n ? "prev" : "next"]();)
            if (Wn(t)) return 1
    }

    function _f(e, t, n, r, o) {
        var i, a, u = e.getRoot(),
            s = e.schema.getNonEmptyElements(),
            c = e.getParent(o.parentNode, e.isBlock) || u;
        if (r && Wn(o) && t && e.isEmpty(c)) return ve.some(as(o.parentNode, e.nodeIndex(o)));
        for (var l, f, d = new Rr(o, c); a = d[r ? "prev" : "next"]();) {
            if ("false" === e.getContentEditableParent(a) || (f = u, Ir(l = a) && !1 === Ef(l, f, zc))) return ve.none();
            if (jn(a) && 0 < a.nodeValue.length) return !1 === Ef(a, u, function(e) { return "A" === e.nodeName }) ? ve.some(as(a, r ? a.nodeValue.length : 0)) : ve.none();
            if (e.isBlock(a) || s[a.nodeName.toLowerCase()]) return ve.none();
            i = a
        }
        return n && i ? ve.some(as(i, 0)) : ve.none()
    }

    function Af(e, t, n, r) {
        var o, i = e.getRoot(),
            a = !1,
            u = r[(n ? "start" : "end") + "Container"],
            s = r[(n ? "start" : "end") + "Offset"],
            c = zn(u) && s === u.childNodes.length,
            l = e.schema.getNonEmptyElements(),
            f = n;
        if (Ir(u)) return ve.none();
        if (zn(u) && s > u.childNodes.length - 1 && (f = !1), qn(u) && (u = i, s = 0), u === i) {
            if (f && (d = u.childNodes[0 < s ? s - 1 : 0])) { if (Ir(d)) return ve.none(); if (l[d.nodeName] || Nf(d)) return ve.none() }
            if (u.hasChildNodes()) {
                if (s = Math.min(!f && 0 < s ? s - 1 : s, u.childNodes.length - 1), u = u.childNodes[s], s = jn(u) && c ? u.data.length : 0, !t && u === i.lastChild && Nf(u)) return ve.none();
                if (function(e, t) {
                        for (; t && t !== e;) {
                            if (Yn(t)) return 1;
                            t = t.parentNode
                        }
                    }(i, u) || Ir(u)) return ve.none();
                if (u.hasChildNodes() && !1 === Nf(u)) {
                    var d = u,
                        m = new Rr(u, i);
                    do { if (Yn(d) || Ir(d)) { a = !1; break } if (jn(d) && 0 < d.nodeValue.length) { s = f ? 0 : d.nodeValue.length, u = d, a = !0; break } if (l[d.nodeName.toLowerCase()] && (!(o = d) || !/^(TD|TH|CAPTION)$/.test(o.nodeName))) { s = e.nodeIndex(d), u = d.parentNode, f || s++, a = !0; break } } while (d = f ? m.next() : m.prev())
                }
            }
        }
        return t && (jn(u) && 0 === s && _f(e, c, t, !0, u).each(function(e) { u = e.container(), s = e.offset(), a = !0 }), zn(u) && (!(d = (d = u.childNodes[s]) || u.childNodes[s - 1]) || !Wn(d) || d.previousSibling && "A" === d.previousSibling.nodeName || kf(e, d, !1) || kf(e, d, !0) || _f(e, c, t, !0, d).each(function(e) { u = e.container(), s = e.offset(), a = !0 }))), f && !t && jn(u) && s === u.nodeValue.length && _f(e, c, t, !1, u).each(function(e) { u = e.container(), s = e.offset(), a = !0 }), a ? ve.some(as(u, s)) : ve.none()
    }

    function Rf(e, t) {
        var n = t.collapsed,
            r = t.cloneRange(),
            o = as.fromRangeStart(t);
        return Af(e, n, !0, r).each(function(e) { n && as.isAbove(o, e) || r.setStart(e.container(), e.offset()) }), n || Af(e, n, !1, r).each(function(e) { r.setEnd(e.container(), e.offset()) }), n && r.collapse(!0), Sf(t, r) ? ve.none() : ve.some(r)
    }

    function Df(e, t) { return e.splitText(t) }

    function Tf(e) {
        var t = e.startContainer,
            n = e.startOffset,
            r = e.endContainer,
            o = e.endOffset;
        return t === r && jn(t) ? 0 < n && n < t.nodeValue.length && (t = (r = Df(t, n)).previousSibling, n < o ? (t = r = Df(r, o -= n).previousSibling, o = r.nodeValue.length, n = 0) : o = 0) : (jn(t) && 0 < n && n < t.nodeValue.length && (t = Df(t, n), n = 0), jn(r) && 0 < o && o < r.nodeValue.length && (o = (r = Df(r, o).previousSibling).nodeValue.length)), { startContainer: t, startOffset: n, endContainer: r, endOffset: o }
    }

    function Of(n) { return { walk: function(e, t) { return El(n, e, t) }, split: Tf, normalize: function(t) { return Rf(n, t).fold(R, function(e) { return t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0 }) } } }
    Fl.isBookmarkNode = Yc;
    var Bf = { BACKSPACE: 8, DELETE: 46, DOWN: 40, ENTER: 13, ESC: 27, LEFT: 37, RIGHT: 39, SPACEBAR: 32, TAB: 9, UP: 38, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, modifierPressed: function(e) { return e.shiftKey || e.ctrlKey || e.altKey || Bf.metaKeyPressed(e) }, metaKeyPressed: function(e) { return xt.mac ? e.metaKey : e.ctrlKey && !e.altKey } },
        Pf = Yn;
    Of.compareRanges = Sf, Of.getCaretRangeFromPoint = wf, Of.getSelectedNode = Ou, Of.getNode = Bu;
    var Lf, If, Mf = (Lf = "height", If = function(e) { var t = e.dom; return In(e) ? t.getBoundingClientRect().height : t.offsetHeight }, {
        set: function(e, t) {
            if (!E(t) && !t.match(/^[0-9]+$/)) throw new Error(Lf + ".set accepts only positive integer values. Value was " + t);
            var n = e.dom;
            mn(n) && (n.style[Lf] = t + "px")
        },
        get: Ff,
        getOuter: Ff,
        aggregate: Uf,
        max: function(e, t, n) { var r = Uf(e, n); return r < t ? t - r : 0 }
    });

    function Ff(e) { var t = If(e); if (t <= 0 || null === t) { var n = xn(e, Lf); return parseFloat(n) || 0 } return t }

    function Uf(o, e) {
        return L(e, function(e, t) {
            var n = xn(o, t),
                r = void 0 === n ? 0 : parseInt(n, 10);
            return isNaN(r) ? e : e + r
        }, 0)
    }

    function zf(e) { return "textarea" === kt(e) }

    function Hf(e, t) {
        var n = function(e) {
                var t = e.dom.ownerDocument,
                    n = t.body,
                    r = t.defaultView,
                    o = t.documentElement;
                if (n === e.dom) return Fn(n.offsetLeft, n.offsetTop);
                var i = Gt(null == r ? void 0 : r.pageYOffset, o.scrollTop),
                    a = Gt(null == r ? void 0 : r.pageXOffset, o.scrollLeft),
                    u = Gt(o.clientTop, n.clientTop),
                    s = Gt(o.clientLeft, n.clientLeft);
                return Un(e).translate(a - s, i - u)
            }(e),
            r = Mf.get(e);
        return { element: e, bottom: n.top + r, height: r, pos: n, cleanup: t }
    }

    function jf(n, r, o, i) { Rd(n, function(e, t) { return Ad(n, r, o, i) }, o) }

    function Vf(e, t, n, r, o) {
        var i = { elm: r.element.dom, alignToTop: o };
        e.fire("ScrollIntoView", i).isDefaultPrevented() || (n(t, Jt(t).top, r, o), e.fire("AfterScrollIntoView", i))
    }

    function qf(e, t, n, r) {
        var o = Nt.fromDom(e.getDoc());
        Vf(e, o, n, Hf(Nt.fromDom(t), te), r)
    }

    function $f(e, t, n, r) {
        var o, i = e.pos;
        n ? Qt(i.left, i.top, r) : (o = i.top - t + e.height, Qt(i.left, o, r))
    }

    function Wf(e, t, n, r, o) {
        var i = n + t,
            a = r.pos.top,
            u = r.bottom,
            s = n <= u - a;
        a < t ? $f(r, n, !1 !== o, e) : i < a ? $f(r, n, s ? !1 !== o : !0 === o, e) : i < u && !s && $f(r, n, !0 === o, e)
    }

    function Kf(e, t, n, r) { Wf(e, t, e.dom.defaultView.innerHeight, n, r) }

    function Xf(e, t, n, r) {
        Wf(e, t, e.dom.defaultView.innerHeight, n, r);
        var o, i, a, u, s, c, l, f = (o = n.element, u = Jt(Nt.fromDom(document)), a = (i = _d).owner(o), s = kd(i, a), c = Un(o), l = P(s, function(e, t) { var n = Un(t); return { left: e.left + n.left, top: e.top + n.top } }, { left: 0, top: 0 }), Fn(l.left + c.left + u.left, l.top + c.top + u.top)),
            d = tn(window);
        f.top < d.y ? Zt(n.element, !1 !== r) : f.top > d.bottom && Zt(n.element, !0 === r)
    }

    function Yf(e, t, n) { return jf(e, Kf, t, n) }

    function Gf(e, t, n) { return qf(e, t, Kf, n) }

    function Jf(e, t, n) { return jf(e, Xf, t, n) }

    function Qf(e, t, n) { return qf(e, t, Xf, n) }

    function Zf(e, t, n) {
        (e.inline ? Yf : Jf)(e, t, n)
    }

    function ed(e) { var t = Bn(e).dom; return e.dom === t.activeElement }

    function td(e) { return void 0 === e && (e = Nt.fromDom(document)), ve.from(e.dom.activeElement).map(Nt.fromDom) }

    function nd(e, t) { var n = _n(t) ? Pl(t).length : Dn(t).length + 1; return n < e ? n : e < 0 ? 0 : e }

    function rd(e) { return Bd.range(e.start, nd(e.soffset, e.start), e.finish, nd(e.foffset, e.finish)) }

    function od(e, t) { return !rn(t.dom) && (Ve(e, t) || je(e, t)) }

    function id(t) { return function(e) { return od(t, e.start) && od(t, e.finish) } }

    function ad(e) { return !0 === e.inline || Pd.isIE() }

    function ud(e) { return Bd.range(Nt.fromDom(e.startContainer), e.startOffset, Nt.fromDom(e.endContainer), e.endOffset) }

    function sd(e) { var t = document.createRange(); try { return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), ve.some(t) } catch (e) { return ve.none() } }

    function cd(e) {
        var t, n, r = ad(e) ? (t = Nt.fromDom(e.getBody()), ((n = Tt(t).dom.getSelection()) && 0 !== n.rangeCount ? ve.from(n.getRangeAt(0)) : ve.none()).map(ud).filter(id(t))) : ve.none();
        e.bookmark = r.isSome() ? r : e.bookmark
    }

    function ld(n) { return (n.bookmark || ve.none()).bind(function(e) { return t = Nt.fromDom(n.getBody()), ve.from(e).filter(id(t)).map(rd); var t }).bind(sd) }

    function fd(u) {
        var s = lu(function() { cd(u) }, 0);
        u.on("init", function() {
            function e() { n.throttle() }
            var t, n, r, o, i, a;
            u.inline && (t = u, n = s, Ja.DOM.bind(document, "mouseup", e), t.on("remove", function() { Ja.DOM.unbind(document, "mouseup", e) })), r = u, o = s, dt().browser.isIE() ? (a = r).on("focusout", function() { cd(a) }) : (i = o, r.on("mouseup touchend", function(e) { i.throttle() })), r.on("keyup NodeChange", function(e) { "nodechange" === e.type && e.selectionChange || cd(r) })
        }), u.on("remove", function() { s.cancel() })
    }

    function dd(t, e) { var n = t.getParam("custom_ui_selector", "", "string"); return null !== Id.getParent(e, function(e) { return Ld.isEditorUIElement(e) || !!n && t.dom.is(e, n) }) }

    function md(n, e) {
        var t = e.editor;
        fd(t), t.on("focusin", function() {
            var e = n.focusedEditor;
            e !== t && (e && e.fire("blur", { focusedEditor: t }), n.setActive(t), (n.focusedEditor = t).fire("focus", { blurredEditor: e }), t.focus(!0))
        }), t.on("focusout", function() {
            _r.setEditorTimeout(t, function() {
                var e = n.focusedEditor;
                dd(t, function(e) { try { return td(Bn(Nt.fromDom(e.getElement()))).fold(function() { return document.body }, function(e) { return e.dom }) } catch (e) { return document.body } }(t)) || e !== t || (t.fire("blur", { focusedEditor: null }), n.focusedEditor = null)
            })
        }), Nd || (Nd = function(e) {
            var t = n.activeEditor;
            t && ! function(e) { if (On() && V(e.target)) { var t = Nt.fromDom(e.target); if (kn(t) && V(t.dom.shadowRoot) && e.composed && e.composedPath) { var n = e.composedPath(); if (n) return Q(n) } } return ve.from(e.target) }(e).each(function(e) { e.ownerDocument === document && (e === document.body || dd(t, e) || n.focusedEditor !== t || (t.fire("blur", { focusedEditor: null }), n.focusedEditor = null)) })
        }, Id.bind(document, "focusin", Nd))
    }

    function gd(e, t) { e.focusedEditor === t.editor && (e.focusedEditor = null), e.activeEditor || (Id.unbind(document, "focusin", Nd), Nd = null) }

    function pd(t, e) {
        var n, r;
        n = Nt.fromDom(t.getBody()), ((r = e).collapsed ? ve.from(Bu(r.startContainer, r.startOffset)).map(Nt.fromDom) : ve.none()).bind(function(e) { return po(e) ? ve.some(e) : !1 === Ve(n, e) ? ve.some(n) : ve.none() }).bind(function(e) { return ef(e.dom) }).fold(function() { t.selection.normalize() }, function(e) { return t.selection.setRng(e.toRange()) })
    }

    function hd(t) { if (t.setActive) try { t.setActive() } catch (e) { t.focus() } else t.focus() }

    function vd(e) { return e.inline ? (r = e.getBody()) && (ed(t = Nt.fromDom(r)) || td(Bn(n = t)).filter(function(e) { return n.dom.contains(e.dom) }).isSome()) : e.iframeElement && ed(Nt.fromDom(e.iframeElement)); var t, n, r }

    function bd(e, t, n, r, o) {
        var i = n ? t.startContainer : t.endContainer,
            a = n ? t.startOffset : t.endOffset;
        return ve.from(i).map(Nt.fromDom).map(function(e) { return r && t.collapsed ? e : Mt(e, o(e, a)).getOr(e) }).bind(function(e) { return kn(e) ? ve.some(e) : Ot(e).filter(kn) }).map(function(e) { return e.dom }).getOr(e)
    }

    function yd(e, t, n) { return bd(e, t, !0, n, function(e, t) { return Math.min(zt(e), t) }) }

    function Cd(e, t, n) { return bd(e, t, !1, n, function(e, t) { return 0 < t ? t - 1 : t }) }

    function xd(e, t) { for (var n = e; e && jn(e) && 0 === e.length;) e = t ? e.nextSibling : e.previousSibling; return e || n }

    function wd(n, e) { return T(e, function(e) { var t = n.fire("GetSelectionRange", { range: e }); return t.range !== e ? t.range : e }) }

    function Sd(e, t, n) {
        var r = n ? "lastChild" : "firstChild",
            o = n ? "prev" : "next";
        if (e[r]) return e[r];
        if (e !== t) {
            var i = e[o];
            if (i) return i;
            for (var a = e.parent; a && a !== t; a = a.parent)
                if (i = a[o]) return i
        }
    }

    function Ed(e) { var t = "a" === e.name && !e.attr("href") && e.attr("id"); return e.attr("name") || e.attr("id") && !e.firstChild || e.attr("data-mce-bookmark") || t }
    var Nd, kd = function(r, e) {
            return r.view(e).fold(J([]), function(e) {
                var t = r.owner(e),
                    n = kd(r, t);
                return [e].concat(n)
            })
        },
        _d = Object.freeze({ __proto__: null, view: function(e) { var t; return (e.dom === document ? ve.none() : ve.from(null === (t = e.dom.defaultView) || void 0 === t ? void 0 : t.frameElement)).map(Nt.fromDom) }, owner: Dt }),
        Ad = function(e, t, n, r) {
            var o = Nt.fromDom(e.getBody()),
                i = Nt.fromDom(e.getDoc());
            o.dom.offsetWidth;
            var a, u, s, c, l = (a = Nt.fromDom(n.startContainer), u = n.startOffset, s = function(e, t) { var n = Dn(e); if (0 === n.length || zf(e)) return { element: e, offset: t }; if (t < n.length && !zf(n[t])) return { element: n[t], offset: 0 }; var r = n[n.length - 1]; return zf(r) ? { element: e, offset: t } : "img" === kt(r) ? { element: r, offset: 1 } : _n(r) ? { element: r, offset: Pl(r).length } : { element: r, offset: Dn(r).length } }(a, u), c = Nt.fromHtml('<span data-mce-bogus="all" style="display: inline-block;">\ufeff</span>'), qt(s.element, c), Hf(c, function() { return Ln(c) }));
            Vf(e, i, t, l, r), l.cleanup()
        },
        Rd = function(e, t, n) {
            var r = n.startContainer,
                o = n.startOffset,
                i = n.endContainer,
                a = n.endOffset;
            t(Nt.fromDom(r), Nt.fromDom(i));
            var u = e.dom.createRng();
            u.setStart(r, o), u.setEnd(i, a), e.selection.setRng(n)
        },
        Dd = or([{ before: ["element"] }, { on: ["element", "offset"] }, { after: ["element"] }]),
        Td = (Dd.before, Dd.on, Dd.after, function(e) { return e.fold(u, u, u) }),
        Od = or([{ domRange: ["rng"] }, { relative: ["startSitu", "finishSitu"] }, { exact: ["start", "soffset", "finish", "foffset"] }]),
        Bd = { domRange: Od.domRange, relative: Od.relative, exact: Od.exact, exactFromRange: function(e) { return Od.exact(e.start, e.soffset, e.finish, e.foffset) }, getWin: function(e) { return Tt(e.match({ domRange: function(e) { return Nt.fromDom(e.startContainer) }, relative: function(e, t) { return Td(e) }, exact: function(e, t, n, r) { return e } })) }, range: function(e, t, n, r) { return { start: e, soffset: t, finish: n, foffset: r } } },
        Pd = dt().browser,
        Ld = { isEditorUIElement: function(e) { var t = e.className.toString(); return -1 !== t.indexOf("tox-") || -1 !== t.indexOf("mce-") } },
        Id = Ja.DOM,
        Md = function(e) { return e.editorManager.setActive(e) },
        Fd = { "#text": 3, "#comment": 8, "#cdata": 4, "#pi": 7, "#doctype": 10, "#document-fragment": 11 },
        Ud = (zd.create = function(e, t) { var n = new zd(e, Fd[e] || 1); return t && ne(t, function(e, t) { n.attr(t, e) }), n }, zd.prototype.replace = function(e) { return e.parent && e.remove(), this.insert(e, this), this.remove(), this }, zd.prototype.attr = function(e, t) {
            var n, r = this;
            if ("string" != typeof e) return null != e && ne(e, function(e, t) { r.attr(t, e) }), r;
            if (n = r.attributes) {
                if (void 0 === t) return n.map[e];
                if (null === t) {
                    if (e in n.map) {
                        delete n.map[e];
                        for (var o = n.length; o--;)
                            if (n[o].name === e) return n.splice(o, 1), r
                    }
                    return r
                }
                if (e in n.map) {
                    for (o = n.length; o--;)
                        if (n[o].name === e) { n[o].value = t; break }
                } else n.push({ name: e, value: t });
                return n.map[e] = t, r
            }
        }, zd.prototype.clone = function() {
            var e, t = new zd(this.name, this.type);
            if (e = this.attributes) {
                var n = [];
                n.map = {};
                for (var r = 0, o = e.length; r < o; r++) { var i = e[r]; "id" !== i.name && (n[n.length] = { name: i.name, value: i.value }, n.map[i.name] = i.value) }
                t.attributes = n
            }
            return t.value = this.value, t.shortEnded = this.shortEnded, t
        }, zd.prototype.wrap = function(e) { return this.parent.insert(e, this), e.append(this), this }, zd.prototype.unwrap = function() {
            for (var e = this.firstChild; e;) {
                var t = e.next;
                this.insert(e, this, !0), e = t
            }
            this.remove()
        }, zd.prototype.remove = function() {
            var e = this.parent,
                t = this.next,
                n = this.prev;
            return e && (e.firstChild === this ? (e.firstChild = t) && (t.prev = null) : n.next = t, e.lastChild === this ? (e.lastChild = n) && (n.next = null) : t.prev = n, this.parent = this.next = this.prev = null), this
        }, zd.prototype.append = function(e) { e.parent && e.remove(); var t = this.lastChild; return t ? ((t.next = e).prev = t, this.lastChild = e) : this.lastChild = this.firstChild = e, e.parent = this, e }, zd.prototype.insert = function(e, t, n) { e.parent && e.remove(); var r = t.parent || this; return n ? (t === r.firstChild ? r.firstChild = e : t.prev.next = e, e.prev = t.prev, (e.next = t).prev = e) : (t === r.lastChild ? r.lastChild = e : t.next.prev = e, e.next = t.next, (e.prev = t).next = e), e.parent = r, e }, zd.prototype.getAll = function(e) { for (var t = [], n = this.firstChild; n; n = Sd(n, this)) n.name === e && t.push(n); return t }, zd.prototype.children = function() { for (var e = [], t = this.firstChild; t; t = t.next) e.push(t); return e }, zd.prototype.empty = function() { if (this.firstChild) { for (var e = [], t = this.firstChild; t; t = Sd(t, this)) e.push(t); for (var n = e.length; n--;)(t = e[n]).parent = t.firstChild = t.lastChild = t.next = t.prev = null } return this.firstChild = this.lastChild = null, this }, zd.prototype.isEmpty = function(e, t, n) {
            void 0 === t && (t = {});
            var r = this.firstChild;
            if (Ed(this)) return !1;
            if (r)
                do { if (1 === r.type) { if (r.attr("data-mce-bogus")) continue; if (e[r.name]) return !1; if (Ed(r)) return !1 } if (8 === r.type) return !1; if (3 === r.type && ! function(e) { if (qr(e.value)) { var t = e.parent; return !t || "span" === t.name && !t.attr("style") || !/^[ ]+$/.test(e.value) } }(r)) return !1; if (3 === r.type && r.parent && t[r.parent.name] && qr(r.value)) return !1; if (n && n(r)) return !1 } while (r = Sd(r, this));
            return !0
        }, zd.prototype.walk = function(e) { return Sd(this, null, e) }, zd);

    function zd(e, t) { this.name = e, 1 === (this.type = t) && (this.attributes = [], this.attributes.map = {}) }

    function Hd(e, t) { return e.replace(t.re, function(e) { return ue(t.uris, e).getOr(e) }) }
    var jd = Et.each,
        Vd = Et.trim,
        qd = "source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),
        $d = { ftp: 21, http: 80, https: 443, mailto: 25 },
        Wd = ["img", "video"],
        Kd = (Xd.parseDataUri = function(e) {
            var t, n = decodeURIComponent(e).split(","),
                r = /data:([^;]+)/.exec(n[0]);
            return { type: t = r ? r[1] : t, data: n[1] }
        }, Xd.isDomSafe = function(e, t, n) { if ((n = void 0 === n ? {} : n).allow_script_urls) return !0; var r, o, i, a, u = Go.decode(e).replace(/[\s\u0000-\u001F]+/g, ""); try { u = decodeURIComponent(u) } catch (e) { u = unescape(u) } return !(/((java|vb)script|mhtml):/i.test(u) || (o = u, i = t, !(r = n).allow_html_data_urls && (/^data:image\//i.test(o) ? (V(a = r.allow_svg_data_urls) ? !a : !V(i) || !D(Wd, i)) && /^data:image\/svg\+xml/i.test(o) : /^data:/i.test(o)))) }, Xd.getDocumentBaseUrl = function(e) { var t = 0 !== e.protocol.indexOf("http") && "file:" !== e.protocol ? e.href : e.protocol + "//" + e.host + e.pathname; return /^[^:]+:\/\/\/?[^\/]+\//.test(t) && (t = t.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""), /[\/\\]$/.test(t) || (t += "/")), t }, Xd.prototype.setPath = function(e) {
            var t = /^(.*?)\/?(\w+)?$/.exec(e);
            this.path = t[0], this.directory = t[1], this.file = t[2], this.source = "", this.getURI()
        }, Xd.prototype.toRelative = function(e) {
            var t;
            if ("./" === e) return e;
            var n = new Xd(e, { base_uri: this });
            if ("mce_host" !== n.host && this.host !== n.host && n.host || this.port !== n.port || this.protocol !== n.protocol && "" !== n.protocol) return n.getURI();
            var r = this.getURI(),
                o = n.getURI();
            return r === o || "/" === r.charAt(r.length - 1) && r.substr(0, r.length - 1) === o ? r : (t = this.toRelPath(this.path, n.path), n.query && (t += "?" + n.query), n.anchor && (t += "#" + n.anchor), t)
        }, Xd.prototype.toAbsolute = function(e, t) { var n = new Xd(e, { base_uri: this }); return n.getURI(t && this.isSameOrigin(n)) }, Xd.prototype.isSameOrigin = function(e) { if (this.host == e.host && this.protocol == e.protocol) { if (this.port == e.port) return !0; var t = $d[this.protocol]; if (t && (this.port || t) == (e.port || t)) return !0 } return !1 }, Xd.prototype.toRelPath = function(e, t) {
            var n, r, o = 0,
                i = "",
                a = e.substring(0, e.lastIndexOf("/")).split("/"),
                u = t.split("/");
            if (a.length >= u.length)
                for (n = 0, r = a.length; n < r; n++)
                    if (n >= u.length || a[n] !== u[n]) { o = n + 1; break }
            if (a.length < u.length)
                for (n = 0, r = u.length; n < r; n++)
                    if (n >= a.length || a[n] !== u[n]) { o = n + 1; break }
            if (1 === o) return t;
            for (n = 0, r = a.length - (o - 1); n < r; n++) i += "../";
            for (n = o - 1, r = u.length; n < r; n++) i += n !== o - 1 ? "/" + u[n] : u[n];
            return i
        }, Xd.prototype.toAbsPath = function(e, t) {
            var n, r, o = 0,
                i = [],
                a = /\/$/.test(t) ? "/" : "",
                u = e.split("/"),
                s = t.split("/");
            for (jd(u, function(e) { e && i.push(e) }), u = i, n = s.length - 1, i = []; 0 <= n; n--) 0 !== s[n].length && "." !== s[n] && (".." !== s[n] ? 0 < o ? o-- : i.push(s[n]) : o++);
            return 0 !== (r = (n = u.length - o) <= 0 ? q(i).join("/") : u.slice(0, n).join("/") + "/" + q(i).join("/")).indexOf("/") && (r = "/" + r), a && r.lastIndexOf("/") !== r.length - 1 && (r += a), r
        }, Xd.prototype.getURI = function(e) { var t; return void 0 === e && (e = !1), this.source && !e || (t = "", e || (this.protocol ? t += this.protocol + "://" : t += "//", this.userInfo && (t += this.userInfo + "@"), this.host && (t += this.host), this.port && (t += ":" + this.port)), this.path && (t += this.path), this.query && (t += "?" + this.query), this.anchor && (t += "#" + this.anchor), this.source = t), this.source }, Xd);

    function Xd(e, t) {
        e = Vd(e), this.settings = t || {};
        var n, r, o, i, a = this.settings.base_uri,
            u = this;
        /^([\w\-]+):([^\/]{2})/i.test(e) || /^\s*#/.test(e) ? u.source = e : (n = 0 === e.indexOf("//"), 0 !== e.indexOf("/") || n || (e = (a && a.protocol || "http") + "://mce_host" + e), /^[\w\-]*:?\/\//.test(e) || (r = this.settings.base_uri ? this.settings.base_uri.path : new Xd(document.location.href).directory, e = this.settings.base_uri && "" == this.settings.base_uri.protocol ? "//mce_host" + u.toAbsPath(r, e) : (o = /([^#?]*)([#?]?.*)/.exec(e), (a && a.protocol || "http") + "://mce_host" + u.toAbsPath(r, o[1]) + o[2])), e = e.replace(/@@/g, "(mce_at)"), i = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?(\[[a-zA-Z0-9:.%]+\]|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e), jd(qd, function(e, t) {
            var n = (n = i[t]) && n.replace(/\(mce_at\)/g, "@@");
            u[e] = n
        }), a && (u.protocol || (u.protocol = a.protocol), u.userInfo || (u.userInfo = a.userInfo), u.port || "mce_host" !== u.host || (u.port = a.port), u.host && "mce_host" !== u.host || (u.host = a.host), u.source = ""), n && (u.protocol = ""))
    }

    function Yd(e, t, n) {
        for (var r = /<([!?\/])?([A-Za-z0-9\-_:.]+)/g, o = /(?:\s(?:[^'">]+(?:"[^"]*"|'[^']*'))*[^"'>]*(?:"[^">]*|'[^'>]*)?|\s*|\/)>/g, i = e.getShortEndedElements(), a = 1, u = n; 0 !== a;)
            for (r.lastIndex = u;;) {
                var s = r.exec(t);
                if (null === s) return u;
                if ("!" === s[1]) { u = Ge(s[2], "--") ? Qd(t, !1, s.index + "!--".length) : Qd(t, !0, s.index + 1); break }
                o.lastIndex = r.lastIndex;
                var c = o.exec(t);
                if (!l(c) && c.index === r.lastIndex) { "/" === s[1] ? --a : Ne(i, s[2]) || (a += 1), u = r.lastIndex + c[0].length; break }
            }
        return u
    }

    function Gd(q, $) {
        var e;
        void 0 === $ && ($ = to());
        var W = null !== (e = (q = q || {}).document) && void 0 !== e ? e : document,
            K = W.createElement("form");

        function n(s, e) {
            void 0 === e && (e = "html");
            for (var t, i, n, c, r, o, a, l, u, f, d, m, g, p, h, v, b, y, C, x = s.html, w = 0, S = [], E = 0, N = Go.decode, k = Et.makeMap("src,href,data,background,action,formaction,poster,xlink:href"), _ = "html" === e ? 0 : 1, A = function(e) {
                    for (var t, n = S.length; n-- && S[n].name !== e;);
                    if (0 <= n) {
                        for (t = S.length - 1; n <= t; t--)(e = S[t]).valid && Q(e.name);
                        S.length = n
                    }
                }, R = function(e, t) { return G(Hd(e, s), t) }, D = function(e) { "" !== e && (">" === e.charAt(0) && (e = " " + e), q.allow_conditional_comments || "[if" !== e.substr(0, 3).toLowerCase() || (e = " " + e), X(Hd(e, s))) }, T = function(e, t) {
                    var n = e || "",
                        r = !Ge(n, "--"),
                        o = Qd(x, r, t);
                    return e = x.substr(t, o - t), D(r ? n + e : e), o + 1
                }, O = new RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:![Dd][Oo][Cc][Tt][Yy][Pp][Ee]([\\w\\W]*?)>)|(?:!(--)?)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_:.]*)(\\s(?:[^'\">]+(?:\"[^\"]*\"|'[^']*'))*[^\"'>]*(?:\"[^\">]*|'[^'>]*)?|\\s*|\\/)>))", "g"), B = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g, P = $.getShortEndedElements(), L = q.self_closing_elements || $.getSelfClosingElements(), I = $.getBoolAttrs(), M = q.validate, F = q.remove_internals, U = q.fix_self_closing, z = $.getSpecialElements(), H = x + ">"; t = O.exec(H);) {
                var j = t[0];
                if (w < t.index && R(N(x.substr(w, t.index - w))), i = t[7]) A(i = ":" === (i = i.toLowerCase()).charAt(0) ? i.substr(1) : i);
                else if (i = t[8]) {
                    if (t.index + j.length > x.length) { R(N(x.substr(t.index))), w = t.index + j.length; continue }
                    u = (i = ":" === (i = i.toLowerCase()).charAt(0) ? i.substr(1) : i) in P, U && L[i] && 0 < S.length && S[S.length - 1].name === i && A(i);
                    var V = function(e, t) {
                        var n = e.exec(t);
                        if (n) {
                            var r = n[1],
                                o = n[2];
                            return "string" == typeof r && "data-mce-bogus" === r.toLowerCase() ? o : null
                        }
                        return null
                    }(B, t[9]);
                    if (null !== V) {
                        if ("all" === V) { w = Yd($, x, O.lastIndex), O.lastIndex = w; continue }
                        d = !1
                    }
                    if (!M || (f = $.getElementRule(i))) {
                        if (d = !0, M && (p = f.attributes, h = f.attributePatterns), (g = t[9]) ? ((l = -1 !== g.indexOf("data-mce-type")) && F && (d = !1), (c = []).map = {}, g.replace(B, function(e, t, n, r, o) { return function(e, t, n, r, o) { var i; if (n = Hd((t = t.toLowerCase()) in I ? t : N(n || r || o || ""), s), M && !l && 0 == (0 === (i = t).indexOf("data-") || 0 === i.indexOf("aria-"))) { var a = p[t]; if (!a && h) { for (var u = h.length; u-- && !(a = h[u]).pattern.test(t);); - 1 === u && (a = null) } if (!a) return; if (a.validValues && !(n in a.validValues)) return }("name" === t || "id" === t) && e in Jd && (n in W || n in K) || k[t] && !Kd.isDomSafe(n, e, q) || l && (t in k || 0 === t.indexOf("on")) || (c.map[t] = n, c.push({ name: t, value: n })) }(i, t, n, r, o), "" })) : (c = []).map = {}, M && !l) {
                            if (v = f.attributesRequired, b = f.attributesDefault, y = f.attributesForced, f.removeEmptyAttrs && !c.length && (d = !1), y)
                                for (r = y.length; r--;) a = (m = y[r]).name, "{$uid}" === (C = m.value) && (C = "mce_" + E++), c.map[a] = C, c.push({ name: a, value: C });
                            if (b)
                                for (r = b.length; r--;)(a = (m = b[r]).name) in c.map || ("{$uid}" === (C = m.value) && (C = "mce_" + E++), c.map[a] = C, c.push({ name: a, value: C }));
                            if (v) { for (r = v.length; r-- && !(v[r] in c.map);); - 1 === r && (d = !1) }
                            if (m = c.map["data-mce-bogus"]) {
                                if ("all" === m) { w = Yd($, x, O.lastIndex), O.lastIndex = w; continue }
                                d = !1
                            }
                        }
                        d && J(i, c, u)
                    } else d = !1;
                    if (n = z[i]) { n.lastIndex = w = t.index + j.length, w = (t = n.exec(x)) ? (d && (o = x.substr(w, t.index - w)), t.index + t[0].length) : (o = x.substr(w), x.length), d && (0 < o.length && R(o, !0), Q(i)), O.lastIndex = w; continue }
                    u || (g && g.indexOf("/") === g.length - 1 ? d && Q(i) : S.push({ name: i, valid: d }))
                } else if (i = t[1]) D(i);
                else if (i = t[2]) {
                    if (!(1 == _ || q.preserve_cdata || 0 < S.length && $.isValidChild(S[S.length - 1].name, "#cdata"))) { w = T("", t.index + 2), O.lastIndex = w; continue }
                    Y(i)
                } else if (i = t[3]) ee(i);
                else {
                    if ((i = t[4]) || "<!" === j) { w = T(i, t.index + j.length), O.lastIndex = w; continue }
                    if (i = t[5]) {
                        if (1 != _) { w = T("?", t.index + 2), O.lastIndex = w; continue }
                        Z(i, t[6])
                    }
                }
                w = t.index + j.length
            }
            for (w < x.length && R(N(x.substr(w))), r = S.length - 1; 0 <= r; r--)(i = S[r]).valid && Q(i.name)
        }!1 !== q.fix_self_closing && (q.fix_self_closing = !0);
        var X = q.comment || te,
            Y = q.cdata || te,
            G = q.text || te,
            J = q.start || te,
            Q = q.end || te,
            Z = q.pi || te,
            ee = q.doctype || te;
        return {
            parse: function(e, t) {
                void 0 === t && (t = "html"), n(function(e) {
                    for (var t, n = /data:[^;]+;base64,([a-z0-9\+\/=\s]+)/gi, r = [], o = {}, i = yu("img"), a = 0, u = 0; t = n.exec(e);) {
                        var s = t[0],
                            c = i + "_" + u++;
                        o[c] = s, a < t.index && r.push(e.substr(a, t.index - a)), r.push(c), a = t.index + s.length
                    }
                    var l = new RegExp(i + "_[0-9]+", "g");
                    return 0 === a ? { prefix: i, uris: o, html: e, re: l } : (a < e.length && r.push(e.substr(a)), { prefix: i, uris: o, html: r.join(""), re: l })
                }(e), t)
            }
        }
    }
    var Jd = Et.makeMap("button,fieldset,form,iframe,img,image,input,object,output,select,textarea"),
        Qd = function(e, t, n) {
            void 0 === n && (n = 0);
            var r = e.toLowerCase();
            if (-1 !== r.indexOf("[if ", n) && (u = n, /^\s*\[if [\w\W]+\]>.*<!\[endif\](--!?)?>/.test(r.substr(u)))) { var o = r.indexOf("[endif]", n); return r.indexOf(">", o) }
            if (t) { var i = r.indexOf(">", n); return -1 !== i ? i : r.length }
            var a = /--!?>/g;
            a.lastIndex = n;
            var u, s = a.exec(e);
            return s ? s.index + s[0].length : r.length
        };

    function Zd(e, t) {
        for (var n, r, o, i, a = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g, u = e.schema, s = (n = e.getTempAttrs(), r = t, o = new RegExp(["\\s?(" + n.join("|") + ')="[^"]+"'].join("|"), "gi"), r.replace(o, "")), c = u.getShortEndedElements(); i = a.exec(s);) {
            var l = a.lastIndex,
                f = i[0].length,
                d = c[i[1]] ? l : Gd.findEndTag(u, s, l),
                s = s.substring(0, l - f) + s.substring(d);
            a.lastIndex = l - f
        }
        return wo(s)
    }

    function em(o) {
        return {
            compare: function(e, t) {
                return e.nodeName === t.nodeName && !(!r(n(e), n(t)) || !r(o.parseStyle(o.getAttrib(e, "style")), o.parseStyle(o.getAttrib(t, "style"))) || Yc(e) || Yc(t));

                function n(n) {
                    var r = {};
                    return om(o.getAttribs(n), function(e) {
                        var t = e.nodeName.toLowerCase();
                        0 !== t.indexOf("_") && "style" !== t && 0 !== t.indexOf("data-") && (r[t] = o.getAttrib(n, t))
                    }), r
                }

                function r(e, t) {
                    var n, r;
                    for (r in e)
                        if (Ne(e, r)) {
                            if (void 0 === (n = t[r])) return;
                            if (e[r] !== n) return;
                            delete t[r]
                        }
                    for (r in t)
                        if (Ne(t, r)) return;
                    return 1
                }
            }
        }
    }

    function tm(e) {
        var u = [],
            s = (e = e || {}).indent,
            c = im(e.indent_before || ""),
            l = im(e.indent_after || ""),
            f = Go.getEncodeFunc(e.entity_encoding || "raw", e.entities),
            d = "html" === e.element_format;
        return {
            start: function(e, t, n) {
                var r, o, i, a;
                if (s && c[e] && 0 < u.length && 0 < (a = u[u.length - 1]).length && "\n" !== a && u.push("\n"), u.push("<", e), t)
                    for (r = 0, o = t.length; r < o; r++) i = t[r], u.push(" ", i.name, '="', f(i.value, !0), '"');
                u[u.length] = !n || d ? ">" : " />", n && s && l[e] && 0 < u.length && 0 < (a = u[u.length - 1]).length && "\n" !== a && u.push("\n")
            },
            end: function(e) {
                var t;
                u.push("</", e, ">"), s && l[e] && 0 < u.length && 0 < (t = u[u.length - 1]).length && "\n" !== t && u.push("\n")
            },
            text: function(e, t) { 0 < e.length && (u[u.length] = t ? e : f(e)) },
            cdata: function(e) { u.push("<![CDATA[", e, "]]>") },
            comment: function(e) { u.push("\x3c!--", e, "--\x3e") },
            pi: function(e, t) { t ? u.push("<?", e, " ", f(t), "?>") : u.push("<?", e, "?>"), s && u.push("\n") },
            doctype: function(e) { u.push("<!DOCTYPE", e, ">", s ? "\n" : "") },
            reset: function() { u.length = 0 },
            getContent: function() { return u.join("").replace(/\n$/, "") }
        }
    }

    function nm(t, g) {
        void 0 === g && (g = to());
        var p = tm(t);
        return (t = t || {}).validate = !("validate" in t) || t.validate, {
            serialize: function(e) {
                var f = t.validate,
                    d = {
                        3: function(e) { p.text(e.value, e.raw) },
                        8: function(e) { p.comment(e.value) },
                        7: function(e) { p.pi(e.name, e.value) },
                        10: function(e) { p.doctype(e.value) },
                        4: function(e) { p.cdata(e.value) },
                        11: function(e) {
                            if (e = e.firstChild)
                                for (; m(e), e = e.next;);
                        }
                    };
                p.reset();
                var m = function(e) {
                    var t = d[e.type];
                    if (t) t(e);
                    else {
                        var n = e.name,
                            r = e.shortEnded,
                            o = e.attributes;
                        if (f && o && 1 < o.length) {
                            var i = [];
                            i.map = {};
                            var a = g.getElementRule(e.name);
                            if (a) {
                                for (var u = 0, s = a.attributesOrder.length; u < s; u++)(c = a.attributesOrder[u]) in o.map && (l = o.map[c], i.map[c] = l, i.push({ name: c, value: l }));
                                for (var c, l, u = 0, s = o.length; u < s; u++)(c = o[u].name) in i.map || (l = o.map[c], i.map[c] = l, i.push({ name: c, value: l }));
                                o = i
                            }
                        }
                        if (p.start(e.name, o, r), !r) {
                            if (e = e.firstChild)
                                for (; m(e), e = e.next;);
                            p.end(n)
                        }
                    }
                };
                return 1 !== e.type || t.inner ? d[11](e) : m(e), p.getContent()
            }
        }
    }
    Gd.findEndTag = Yd;
    var rm = Zd,
        om = Et.each,
        im = Et.makeMap,
        am = new Set;

    function um(e, t) { return we(e.parseStyle(e.getAttrib(t, "style"))) }

    function sm(n, r, o) { return ve.from(o.container()).filter(jn).exists(function(e) { var t = n ? 0 : -1; return r(e.data.charAt(o.offset() + t)) }) }

    function cm(e) { var t = e.container(); return jn(t) && (0 === t.data.length || xo(t.data) && Fl.isBookmarkNode(t.parentNode)) }

    function lm(t, n) { return function(e) { return ve.from(Gs(t ? 0 : -1, e)).filter(n).isSome() } }

    function fm(e) { return Kn(e) && "block" === xn(Nt.fromDom(e), "display") }

    function dm(e) { return Yn(e) && !(zn(t = e) && "all" === t.getAttribute("data-mce-bogus")); var t }

    function mm(e) { Xt(e), Pn(e, Nt.fromHtml('<br data-mce-bogus="1">')) }

    function gm(n) { Ut(n).each(function(t) { Bt(t).each(function(e) { lo(n) && Br(t) && lo(e) && Ln(t) }) }) }

    function pm(e, t) {
        return o = R, Ve(r = t, n = e) ? function(e, t) {
            for (var n = y(t) ? t : R, r = e.dom, o = []; null !== r.parentNode && void 0 !== r.parentNode;) {
                var i = r.parentNode,
                    a = Nt.fromDom(i);
                if (o.push(a), !0 === n(a)) break;
                r = i
            }
            return o
        }(n, function(e) { return o(e) || je(e, r) }).slice(0, -1) : [];
        var n, r, o
    }

    function hm(e, t) { return [e].concat(pm(e, t)) }

    function vm(e, t, n) { return Jl(e, t, n, cm) }

    function bm(e, t) { return M(hm(Nt.fromDom(t.container()), e), lo) }

    function ym(e, n, r) { return vm(e, n.dom, r).forall(function(t) { return bm(n, r).fold(function() { return !1 === Ys(t, r, n.dom) }, function(e) { return !1 === Ys(t, r, n.dom) && Ve(e, Nt.fromDom(t.container())) }) }) }

    function Cm(t, n, r) { return bm(n, r).fold(function() { return vm(t, n.dom, r).forall(function(e) { return !1 === Ys(e, r, n.dom) }) }, function(e) { return vm(t, e.dom, r).isNone() }) }

    function xm(e) { return nc(e).exists(Br) }

    function wm(e, t, n) { var r = Q(U(hm(Nt.fromDom(n.container()), t), lo)).getOr(t); return Gl(e, r.dom, n).filter(xm) }

    function Sm(e, t) { return nc(t).exists(Br) || wm(!0, e, t).isSome() }

    function Em(e, t) { return ve.from(t.getNode(!0)).map(Nt.fromDom).exists(Br) || wm(!1, e, t).isSome() }

    function Nm(e) { return as.isTextPosition(e) && !e.isAtStart() && !e.isAtEnd() }

    function km(e, t) { return Q(U(hm(Nt.fromDom(t.container()), e), lo)).getOr(e) }

    function _m(e, t) { return Nm(t) ? Kg(t) : Kg(t) || Zl(km(e, t).dom, t).exists(Kg) }

    function Am(e, t) { return Nm(t) ? Wg(t) : Wg(t) || Ql(km(e, t).dom, t).exists(Wg) }

    function Rm(e) { return nc(e).bind(function(e) { return pr(e, kn) }).exists(function(e) { return D(["pre", "pre-wrap"], xn(e, "white-space")) }) }

    function Dm(e, t) { return !Rm(t) && (np(e, t) || op(e, t) || Em(e, t) || _m(e, t)) }

    function Tm(e, t) { return !Rm(t) && (rp(e, t) || ip(e, t) || Sm(e, t) || Am(e, t)) }

    function Om(e, t) { return Dm(e, t) || Tm(e, (r = (n = t).container(), o = n.offset(), jn(r) && o < r.data.length ? as(r, o + 1) : n)); var n, r, o }

    function Bm(e, t) { return of(e.charAt(t)) }

    function Pm(e) { var t = e.container(); return jn(t) && Te(t.data, yo) }

    function Lm(g, e) {
        return ve.some(e).filter(Pm).bind(function(e) {
            var t, n, r, o, i, a, u, s, c, l = e.container(),
                f = g,
                d = (i = l).data,
                m = as(i, 0);
            return (!Bm(d, 0) || Om(f, m) ? (s = (a = l).data, (c = T(u = s.split(""), function(e, t) { return of(e) && 0 < t && t < u.length - 1 && Jc(u[t - 1]) && Jc(u[t + 1]) ? " " : e }).join("")) !== s && (a.data = c, 1)) : (i.data = " " + d.slice(1), 1)) || (t = g, r = (n = l).data, o = as(n, r.length - 1), Bm(r, r.length - 1) && !Om(t, o) && (n.data = r.slice(0, -1) + " ", 1)) ? ve.some(e) : ve.none()
        })
    }

    function Im(t) {
        var e = Nt.fromDom(t.getBody());
        t.selection.isCollapsed() && Lm(e, as.fromRangeStart(t.selection.getRng())).each(function(e) { t.selection.setRng(e.toRange()) })
    }

    function Mm(e, t, n) {
        var r, o, i, a, u, s, c, l;
        0 !== n && (o = gr(r = Nt.fromDom(e), lo).getOr(r), i = e.data.slice(t, t + n), a = t + n >= e.data.length && Tm(o, as(e, e.data.length)), u = 0 === t && Dm(o, as(e, 0)), e.replaceData(t, n, (c = u, l = a, L(s = i, function(e, t) { return Gc(t) || of(t) ? e.previousCharIsSpace || "" === e.str && c || e.str.length === s.length - 1 && l ? { previousCharIsSpace: !1, str: e.str + yo } : { previousCharIsSpace: !0, str: e.str + " " } : { previousCharIsSpace: !1, str: e.str + t } }, { previousCharIsSpace: !1, str: "" }).str)))
    }

    function Fm(e, t) {
        var n = e.data.slice(t);
        Mm(e, t, n.length - Qe(n).length)
    }

    function Um(e, t) {
        var n = e.data.slice(0, t),
            r = n.length - Ze(n).length;
        Mm(e, t - r, r)
    }

    function zm(e, t, n, r) {
        void 0 === r && (r = !0);
        var o = Ze(e.data).length,
            i = r ? e : t,
            a = r ? t : e;
        return r ? i.appendData(a.data) : i.insertData(0, a.data), Ln(Nt.fromDom(a)), n && Fm(i, o), i
    }

    function Hm(e, t) { return r = e, o = (n = t).container(), i = n.offset(), !1 === as.isTextPosition(n) && o === r.parentNode && i > as.before(r).offset() ? as(t.container(), t.offset() - 1) : t; var n, r, o, i }

    function jm(e) { return jr(e.previousSibling) ? ve.some((t = e.previousSibling, jn(t) ? as(t, t.data.length) : as.after(t))) : e.previousSibling ? tf(e.previousSibling) : ve.none(); var t }

    function Vm(e) { return jr(e.nextSibling) ? ve.some((t = e.nextSibling, jn(t) ? as(t, 0) : as.before(t))) : e.nextSibling ? ef(e.nextSibling) : ve.none(); var t }

    function qm(r, o) { return jm(o).orThunk(function() { return Vm(o) }).orThunk(function() { return e = r, n = as.before((t = o).previousSibling || t.parentNode), Zl(e, n).fold(function() { return Ql(e, as.after(t)) }, ve.some); var e, t, n }) }

    function $m(n, r) { return Vm(r).orThunk(function() { return jm(r) }).orThunk(function() { return Ql(e = n, as.after(t = r)).fold(function() { return Zl(e, as.before(t)) }, ve.some); var e, t }) }

    function Wm(t, n, e) { e.fold(function() { t.focus() }, function(e) { t.selection.setRng(e.toRange(), n) }) }

    function Km(e, t) { return t && Ne(e.schema.getBlockElements(), kt(t)) }

    function Xm(e) { if (Wr(e)) { var t = Nt.fromHtml('<br data-mce-bogus="1">'); return Xt(e), Pn(e, t), ve.some(as.before(t.dom)) } return ve.none() }

    function Ym(t, n, e, r) {
        void 0 === r && (r = !0);
        var o, i, a, u, s, c, l, f, d, m, g, p, h, v, b = (p = n, h = t.getBody(), v = e.dom, (p ? $m : qm)(h, v).map(A(Hm, v))),
            y = gr(e, A(Km, t), (o = t.getBody(), function(e) { return e.dom === o })),
            C = (u = b, i = a = e, s = Ne(t.schema.getTextInlineElements(), kt(i)), m = Bt(a).filter(_n), g = Pt(a).filter(_n), Ln(a), l = g, f = u, d = function(e, t, n) {
                var r = e.dom,
                    o = t.dom,
                    i = r.data.length;
                return zm(r, o, s), n.container() === o ? as(r, i) : n
            }, ((c = m).isSome() && l.isSome() && f.isSome() ? ve.some(d(c.getOrDie(), l.getOrDie(), f.getOrDie())) : ve.none()).orThunk(function() { return s && (m.each(function(e) { return Um(e.dom, e.dom.length) }), g.each(function(e) { return Fm(e.dom, 0) })), u }));
        t.dom.isEmpty(t.getBody()) ? (t.setContent(""), t.selection.setCursorLocation()) : y.bind(Xm).fold(function() { r && Wm(t, n, C) }, function(e) { r && Wm(t, n, ve.some(e)) })
    }

    function Gm(e) { return hu(e, "td,th") }

    function Jm(e, t) { return { start: e, end: t } }

    function Qm(e, t) { return br(Nt.fromDom(e), "td,th", t) }

    function Zm(e) { return !je(e.start, e.end) }

    function eg(e, n) { return Al(e.start, n).bind(function(t) { return Al(e.end, n).bind(function(e) { return je(t, e) ? ve.some(t) : ve.none() }) }) }

    function tg(e) { return function(t) { return eg(t, e).map(function(e) { return { rng: t, table: e, cells: Gm(e) } }) } }

    function ng(e, t, n, r) {
        if (n.collapsed || !e.forall(Zm)) return ve.none();
        if (t.isSameTable) { var o = e.bind(tg(r)); return ve.some({ start: o, end: o }) }
        var i, a, u = Qm(n.startContainer, r),
            s = Qm(n.endContainer, r),
            c = u.bind((a = r, function(t) { return Al(t, a).bind(function(e) { return Z(Gm(e)).map(function(e) { return Jm(t, e) }) }) })).bind(tg(r)),
            l = s.bind((i = r, function(t) { return Al(t, i).bind(function(e) { return Q(Gm(e)).map(function(e) { return Jm(e, t) }) }) })).bind(tg(r));
        return ve.some({ start: c, end: l })
    }

    function rg(e, t) { return z(e, function(e) { return je(e, t) }) }

    function og(n) { return dn(rg(n.cells, n.rng.start), rg(n.cells, n.rng.end), function(e, t) { return n.cells.slice(e, t + 1) }) }

    function ig(e, t) {
        var n = t.startTable,
            r = t.endTable,
            o = e.cloneRange();
        return n.each(function(e) { return o.setStartAfter(e.dom) }), r.each(function(e) { return o.setEndBefore(e.dom) }), o
    }

    function ag(e, t) {
        var n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b = (n = e, function(e) { return je(n, e) }),
            y = dn(Qm((r = t).startContainer, o = b), Qm(r.endContainer, o), Jm),
            C = (l = b, f = x((c = t).startContainer), d = x(c.endContainer), m = f.isSome(), g = d.isSome(), p = dn(f, d, je).getOr(!1), { startTable: f, endTable: d, isStartInTable: m, isEndInTable: g, isSameTable: p, isMultiTable: !p && m && g });

        function x(e) { return Al(Nt.fromDom(e), l) }
        return h = t, v = b, y.exists(function(e) { return !Zm(t = e) && eg(t, v).exists(function(e) { var t = e.dom.rows; return 1 === t.length && 1 === t[0].cells.length }) && Rl(e.start, h); var t }) ? y.map(function(e) { return sp.singleCellTable(t, e.start) }) : C.isMultiTable ? ng(y, u = C, s = t, b).bind(function(e) {
            var t = e.start,
                n = e.end,
                r = t.bind(og).getOr([]),
                o = n.bind(og).getOr([]);
            if (0 < r.length && 0 < o.length) { var i = ig(s, u); return ve.some(sp.multiTable(r, o, i)) }
            return ve.none()
        }) : ng(y, i = C, a = t, b).bind(function(e) {
            var t = e.start,
                n = e.end;
            return t.or(n)
        }).bind(function(e) {
            var t = i.isSameTable,
                n = og(e).getOr([]);
            if (t && e.cells.length === n.length) return ve.some(sp.fullTable(e.table));
            if (0 < n.length) { if (t) return ve.some(sp.partialTable(n, ve.none())); var r = ig(a, i); return ve.some(sp.partialTable(n, ve.some(_e(_e({}, i), { rng: r })))) }
            return ve.none()
        })
    }

    function ug(e) { return Y(e, function(e) { yn(e, "contenteditable"), mm(e) }), 0 }

    function sg(e, t, n, r) {
        var o = n.cloneRange();
        r ? (o.setStart(n.startContainer, n.startOffset), o.setEndAfter(t.dom.lastChild)) : (o.setStartBefore(t.dom.firstChild), o.setEnd(n.endContainer, n.endOffset)), lp(e, o, t, !1)
    }

    function cg(e) {
        var t = _l(e),
            n = Nt.fromDom(e.selection.getNode());
        Gn(n.dom) && Wr(n) ? e.selection.setCursorLocation(n.dom, 0) : e.selection.collapse(!0), 1 < t.length && F(t, function(e) { return je(e, n) }) && pn(n, "data-mce-selected", "1")
    }

    function lg(s, c, e) {
        var l = s.selection.getRng();
        return ug(e.bind(function(e) {
            var t, n, r, o = e.rng,
                i = e.isStartInTable,
                a = (t = i ? o.endContainer : o.startContainer, ve.from(s.dom.getParent(t, s.dom.isBlock)).map(Nt.fromDom));
            o.deleteContents(), n = s, r = i, a.filter(Wr).each(function(e) { r ? Ln(e) : (mm(e), n.selection.setCursorLocation(e.dom, 0)) });
            var u = i ? c[0] : c[c.length - 1];
            return sg(s, u, l, i), Wr(u) ? ve.none() : ve.some(i ? c.slice(1) : c.slice(0, -1))
        }).getOr(c)), cg(s), !0
    }

    function fg(e, t, n, r) {
        var o = e.selection.getRng(),
            i = t[0],
            a = n[n.length - 1];
        sg(e, i, o, !0), sg(e, a, o, !1);
        var u = Wr(i) ? t : t.slice(1),
            s = Wr(a) ? n : n.slice(0, -1);
        return ug(u.concat(s)), r.deleteContents(), cg(e), !0
    }

    function dg(e, t) { return Ym(e, !1, t), !0 }

    function mg(e, t) { return M(hm(t, e), ho) }

    function gg(e, t) { return (e ? Qg : Zg)(t) }

    function pg(f, d, s) { var m = Nt.fromDom(f.getBody()); return fp(m, s).fold(function() { return o = f, i = d, a = m, e = s, u = as.fromRangeStart(o.selection.getRng()), mg(a, e).bind(function(e) { return Wr(e) ? dp(o, e) : (t = a, n = e, r = u, Fc(i, o.getBody(), r).bind(function(e) { return mg(t, Nt.fromDom(e.getNode())).map(function(e) { return !1 === je(e, n) }) })); var t, n, r }).getOr(!1) || (n = d, r = as.fromRangeStart((t = f).selection.getRng()), gg(n, r) || Gl(n, t.getBody(), r).exists(function(e) { return gg(n, e) })); var o, i, a, e, u, t, n, r }, function(e) { return n = d, r = m, o = e, i = as.fromRangeStart((t = f).selection.getRng()), (Wr(o) ? dp(t, o) : (u = r, c = o, l = i, Fc(s = n, (a = t).getBody(), l).bind(function(e) { return r = s, o = l, i = e, ef((n = c).dom).bind(function(t) { return tf(n.dom).map(function(e) { return r ? o.isEqual(t) && i.isEqual(e) : o.isEqual(e) && i.isEqual(t) }) }).getOr(!0) ? dp(a, c) : (t = c, fp(u, Nt.fromDom(e.getNode())).map(function(e) { return !1 === je(e, t) })); var t, n, r, o, i }).or(ve.some(!0)))).getOr(!1); var a, u, s, c, l, t, n, r, o, i }) }

    function hg(e, t) {
        var n, r, o, i, a, u, s, c, l = Nt.fromDom(e.selection.getStart(!0)),
            f = _l(e);
        return e.selection.isCollapsed() && 0 === f.length ? pg(e, t, l) : (r = l, o = f, i = Nt.fromDom((n = e).getBody()), a = n.selection.getRng(), 0 !== o.length ? lg(n, o, ve.none()) : (u = n, c = a, fp(s = i, r).fold(function() { return t = u, ag(s, c).map(function(e) { return e.fold(A(lp, t), A(dg, t), A(lg, t), A(fg, t)) }); var t }, function(e) { return dp(u, e) }).getOr(!1)))
    }

    function vg(e) { return e.collapsed ? e : (a = e, u = as.fromRangeStart(a), s = as.fromRangeEnd(a), c = a.commonAncestorContainer, Gl(!1, c, s).map(function(e) { return !Ys(u, s, c) && Ys(u, e, c) ? (t = u.container(), n = u.offset(), r = e.container(), o = e.offset(), (i = document.createRange()).setStart(t, n), i.setEnd(r, o), i) : a; var t, n, r, o, i }).getOr(a)); var a, u, s, c }

    function bg(e, t) {
        var n, r, o, i, a, u = t.firstChild,
            s = t.lastChild;
        return u && "meta" === u.name && (u = u.next), r = s = s && "mce_marker" === s.attr("id") ? s.prev : s, o = (n = e).getNonEmptyElements(), r && (r.isEmpty(o) || (i = r, n.getBlockElements()[i.name] && i.firstChild && i.firstChild === i.lastChild && ("br" === (a = i.firstChild).name || a.value === yo))) && (s = s.prev), u && u === s && ("ul" === u.name || "ol" === u.name)
    }

    function yg(e) { return 0 < e.length && (!(r = e[e.length - 1]).firstChild || (t = r) && t.firstChild && t.firstChild === t.lastChild && ((n = t.firstChild).data === yo || Wn(n))) ? e.slice(0, -1) : e; var t, n, r }

    function Cg(e, t) { var n = e.getParent(t, e.isBlock); return n && "LI" === n.nodeName ? n : null }

    function xg(e, t) {
        var n = as.after(e),
            r = Pc(t).prev(n);
        return r ? r.toRange() : null
    }

    function wg(e, o, i, t) {
        function n(e) {
            var t = as.fromRangeStart(i),
                n = Pc(o.getRoot()),
                r = 1 === e ? n.prev(t) : n.next(t);
            return !r || Cg(o, r.getNode()) !== R
        }
        var r, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C, x, w, S, E, N, k, _, A = (r = o, c = e.serialize(t), u = (a = r.createFragment(c)).firstChild, s = a.lastChild, u && "META" === u.nodeName && u.parentNode.removeChild(u), s && "mce_marker" === s.id && s.parentNode.removeChild(s), a),
            R = Cg(o, i.startContainer),
            D = yg(U(A.firstChild.childNodes, function(e) { return "LI" === e.nodeName })),
            T = o.getRoot();
        return n(1) ? (S = T, _ = (w = R).parentNode, Et.each(D, function(e) { _.insertBefore(e, w) }), E = S, N = as.before(w), (k = Pc(E).next(N)) ? k.toRange() : null) : n(2) ? (l = R, d = T, o.insertAfter((f = D).reverse(), l), xg(f[0], d)) : (g = D, p = T, h = m = R, b = (v = i).cloneRange(), y = v.cloneRange(), b.setStartBefore(h), y.setEndAfter(h), C = [b.cloneContents(), y.cloneContents()], (x = m.parentNode).insertBefore(C[0], m), Et.each(g, function(e) { x.insertBefore(e, m) }), x.insertBefore(C[1], m), x.removeChild(m), xg(g[g.length - 1], p))
    }

    function Sg(e, t, n) {
        var r, o, i, a, u = e.selection,
            s = e.dom;
        /^ | $/.test(t) && (r = s, o = u.getRng(), i = t, i = Dm(a = Nt.fromDom(r.getRoot()), as.fromRangeStart(o)) ? i.replace(/^ /, "&nbsp;") : i.replace(/^&nbsp;/, " "), t = i = Tm(a, as.fromRangeEnd(o)) ? i.replace(/(&nbsp;| )(<br( \/)>)?$/, "&nbsp;") : i.replace(/&nbsp;(<br( \/)?>)?$/, " "));
        var c = e.parser,
            l = n.merge,
            f = nm({ validate: e.getParam("validate") }, e.schema),
            d = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;</span>',
            m = e.fire("BeforeSetContent", { content: t, format: "html", selection: !0, paste: n.paste });
        if (m.isDefaultPrevented()) e.fire("SetContent", { content: m.content, format: "html", selection: !0, paste: n.paste });
        else {
            -1 === (t = m.content).indexOf("{$caret}") && (t += "{$caret}"), t = t.replace(/\{\$caret\}/, d);
            var g, p, h = (g = u.getRng()).startContainer || (g.parentElement ? g.parentElement() : null),
                v = e.getBody();
            h === v && u.isCollapsed() && s.isBlock(v.firstChild) && ((p = v.firstChild) && !e.schema.getShortEndedElements()[p.nodeName]) && s.isEmpty(v.firstChild) && ((g = s.createRng()).setStart(v.firstChild, 0), g.setEnd(v.firstChild, 0), u.setRng(g)), u.isCollapsed() || function(e) {
                var t = e.dom,
                    n = vg(e.selection.getRng());
                e.selection.setRng(n);
                var r, o = t.getParent(n.startContainer, mp),
                    i = n;
                null !== (r = o) && r === t.getParent(i.endContainer, mp) && Rl(Nt.fromDom(r), i) ? lp(e, n, Nt.fromDom(o)) : e.getDoc().execCommand("Delete", !1, null)
            }(e);
            var b, y, C, x, w, S, E, N, k, _, A, R, D, T, O = { context: (I = u.getNode()).nodeName.toLowerCase(), data: n.data, insert: !0 },
                B = c.parse(t, O);
            if (!0 === n.paste && bg(e.schema, B) && Cg(s, I)) return g = wg(f, s, u.getRng(), B), u.setRng(g), void e.fire("SetContent", m);
            if (function() { for (var e = B; e = e.walk();) 1 === e.type && e.attr("data-mce-fragment", "1") }(), "mce_marker" === (L = B.lastChild).attr("id"))
                for (var P = L, L = L.prev; L; L = L.walk(!0))
                    if (3 === L.type || !s.isBlock(L.name)) { e.schema.isValidChild(L.parent.name, "span") && L.parent.insert(P, L, "br" === L.name); break }
            if (e._selectionOverrides.showBlockCaretContainer(I), O.invalid) {
                e.selection.setContent(d);
                var I = u.getNode(),
                    M = e.getBody();
                for (9 === I.nodeType ? I = L = M : L = I; L !== M;) L = (I = L).parentNode;
                t = I === M ? M.innerHTML : s.getOuterHTML(I), t = f.serialize(c.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function() { return f.serialize(B) }))), I === M ? s.setHTML(M, t) : s.setOuterHTML(I, t)
            } else b = e, y = t = f.serialize(B), "all" === (C = I).getAttribute("data-mce-bogus") ? C.parentNode.insertBefore(b.dom.createFragment(y), C) : (x = C.firstChild, w = C.lastChild, !x || x === w && "BR" === x.nodeName ? b.dom.setHTML(C, y) : b.selection.setContent(y));
            E = l, _ = (S = e).schema.getTextInlineElements(), A = S.dom, E && (N = S.getBody(), k = em(A), Et.each(A.select("*[data-mce-fragment]"), function(e) {
                    if (V(_[e.nodeName.toLowerCase()]) && j(um(A, e), function(e) { return !am.has(e) }))
                        for (var t = e.parentNode; V(t) && t !== N && ! function(r, o, i) {
                                function a(e) {
                                    var t = r.getStyle(o, e),
                                        n = r.getStyle(i, e);
                                    return Be(t) && Be(n) && t !== n
                                }
                                var e = um(r, o),
                                    u = um(r, i);
                                return F(e, function(t) {
                                    function e(e) { return F(e, function(e) { return e === t }) }
                                    if (e(u) || !e($g)) return a(t);
                                    var n = U(u, function(t) { return F($g, function(e) { return Ge(t, e) }) });
                                    return F(n, a)
                                })
                            }(A, e, t); t = t.parentNode)
                            if (k.compare(t, e)) { A.remove(e, !0); break }
                })),
                function(n, e) {
                    var t, r = n.dom,
                        o = n.selection;
                    if (e) {
                        o.scrollIntoView(e);
                        var i = pf(n.getBody(), e);
                        if ("false" === r.getContentEditable(i)) return r.remove(e), o.select(i);
                        var a, u = r.createRng(),
                            s = e.previousSibling;
                        jn(s) ? (u.setStart(s, s.nodeValue.length), xt.ie || (a = e.nextSibling, jn(a) && (s.appendData(a.data), a.parentNode.removeChild(a)))) : (u.setStartBefore(e), u.setEndBefore(e));
                        var c = r.getParent(e, r.isBlock);
                        r.remove(e), c && r.isEmpty(c) && (n.$(c).empty(), u.setStart(c, 0), u.setEnd(c, 0), mp(c) || c.getAttribute("data-mce-fragment") || !(t = function(e) { var t = as.fromRangeStart(e); if (t = Pc(n.getBody()).next(t)) return t.toRange() }(u)) ? r.add(c, r.create("br", { "data-mce-bogus": "1" })) : (u = t, r.remove(c))), o.setRng(u)
                    }
                }(e, s.get("mce_marker")), R = e.getBody(), Et.each(R.getElementsByTagName("*"), function(e) { e.removeAttribute("data-mce-fragment") }), D = s, T = u.getStart(), ve.from(D.getParent(T, "td,th")).map(Nt.fromDom).each(gm), e.fire("SetContent", m), e.addVisual()
        }
    }

    function Eg(e) { return e instanceof Ud }

    function Ng(e, t, n) {
        var r;
        e.dom.setHTML(e.getBody(), t), !0 !== n && vd(r = e) && ef(r.getBody()).each(function(e) {
            var t = e.getNode(),
                n = cn(t) ? ef(t).getOr(e) : e;
            r.selection.setRng(n.toRange())
        })
    }

    function kg(u, s, e) {
        var t, n = (t = s, _e(_e({ format: "html" }, e), { set: !0, content: Eg(t) ? "" : t })),
            c = e.no_events ? n : u.fire("BeforeSetContent", n);
        return Eg(s) || (s = c.content), ve.from(u.getBody()).fold(J(s), function(e) {
            return Eg(s) ? function(e, t, n, r) {
                var o, i, u, a;
                o = e.parser.getNodeFilters(), i = e.parser.getAttributeFilters(), u = n, a = function(e, n) {
                    var t, r, o = {},
                        i = {},
                        a = [];
                    for (t in u.firstChild && gp(u.firstChild, function(t) { Y(e, function(e) { e.name === t.name && (o[e.name] ? o[e.name].nodes.push(t) : o[e.name] = { filter: e, nodes: [t] }) }), Y(n, function(e) { "string" == typeof t.attr(e.name) && (i[e.name] ? i[e.name].nodes.push(t) : i[e.name] = { filter: e, nodes: [t] }) }) }), o) Ne(o, t) && a.push(o[t]);
                    for (r in i) Ne(i, r) && a.push(i[r]);
                    return a
                }(o, i), Y(a, function(t) { Y(t.filter.callbacks, function(e) { e(t.nodes, t.filter.name, {}) }) });
                var s = nm({ validate: e.validate }, e.schema).serialize(n);
                return r.content = vo(Nt.fromDom(t)) ? s : Et.trim(s), Ng(e, r.content, r.no_selection), r.no_events || e.fire("SetContent", r), n
            }(u, e, s, c) : (t = u, n = e, o = c, 0 === (r = s).length || /^\s+$/.test(r) ? (i = '<br data-mce-bogus="1">', "TABLE" === n.nodeName ? r = "<tr><td>" + i + "</td></tr>" : /^(UL|OL)$/.test(n.nodeName) && (r = "<li>" + i + "</li>"), r = (a = Ss(t)) && t.schema.isValidChild(n.nodeName.toLowerCase(), a.toLowerCase()) ? (r = i, t.dom.createHTML(a, Es(t), r)) : r || '<br data-mce-bogus="1">', Ng(t, r, o.no_selection), t.fire("SetContent", o)) : ("raw" !== o.format && (r = nm({ validate: t.validate }, t.schema).serialize(t.parser.parse(r, { isRootContent: !0, insert: !0 }))), o.content = vo(Nt.fromDom(n)) ? r : Et.trim(r), Ng(t, o.content, o.no_selection), o.no_events || t.fire("SetContent", o)), o.content);
            var t, n, r, o, i, a
        })
    }

    function _g(e) { return y(e) ? e : R }

    function Ag(i, e, t) {
        var n = e(i),
            a = _g(t);
        return n.orThunk(function() {
            return a(i) ? ve.none() : function(e) {
                for (var t = i.dom, n = _g(a); t.parentNode;) {
                    var t = t.parentNode,
                        r = Nt.fromDom(t),
                        o = e(r);
                    if (o.isSome()) return o;
                    if (n(r)) break
                }
                return ve.none()
            }(e)
        })
    }

    function Rg(e, t, n) {
        var r = e.formatter.get(n);
        if (r)
            for (var o = 0; o < r.length; o++) { var i = r[o]; if (fl(i) && !1 === i.inherit && e.dom.is(t, i.selector)) return 1 }
    }

    function Dg(t, e, n, r, o) { var i = t.dom.getRoot(); return e !== i && (e = t.dom.getParent(e, function(e) { return !!Rg(t, e, n) || e.parentNode === i || !!hp(t, e, n, r, !0) }), !!hp(t, e, n, r, o)) }

    function Tg(e, t, n) { return !!pp(t, n.inline) || !!pp(t, n.block) || (n.selector ? 1 === t.nodeType && e.is(t, n.selector) : void 0) }

    function Og(e, t, n, r, o, i) {
        var a = n[r];
        if (y(n.onmatch)) return n.onmatch(t, n, r);
        if (a)
            if (b(a.length)) {
                for (var u in a)
                    if (Ne(a, u)) {
                        var s = "attributes" === r ? e.getAttrib(t, u) : al(e, t, u),
                            c = rl(a[u], i),
                            l = K(s) || Pe(s);
                        if (!l || !K(c)) { if (o && l && !n.exact) return; if ((!o || n.exact) && !pp(s, il(e, c, u))) return }
                    }
            } else
                for (var f = 0; f < a.length; f++)
                    if ("attributes" === r ? e.getAttrib(t, a[f]) : al(e, t, a[f])) return 1;
        return 1
    }

    function Bg(e, t, n, r, o) { if (r) return Dg(e, r, t, n, o); if (r = e.selection.getNode(), Dg(e, r, t, n, o)) return !0; var i = e.selection.getStart(); return !(i === r || !Dg(e, i, t, n, o)) }

    function Pg(e) {
        return 0 < function(e) {
            for (var t = []; e;) {
                if (3 === e.nodeType && e.nodeValue !== vp || 1 < e.childNodes.length) return [];
                1 === e.nodeType && t.push(e), e = e.firstChild
            }
            return t
        }(e).length
    }

    function Lg(e) {
        if (e) {
            var t = new Rr(e, e);
            for (e = t.current(); e; e = t.next())
                if (jn(e)) return e
        }
        return null
    }

    function Ig(e) { var t = Nt.fromTag("span"); return hn(t, { id: bp, "data-mce-bogus": "1", "data-mce-type": "format-caret" }), e && Pn(t, Nt.fromText(vp)), t }

    function Mg(e, t, n) {
        void 0 === n && (n = !0);
        var r, o, i, a, u, s, c, l, f = e.dom,
            d = e.selection;
        Pg(t) ? Ym(e, !1, Nt.fromDom(t), n) : (r = d.getRng(), o = f.getParent(t, f.isBlock), i = r.startContainer, a = r.startOffset, u = r.endContainer, s = r.endOffset, (l = Lg(t)) && l.nodeValue.charAt(0) === vp && l.deleteData(0, 1), c = l, f.remove(t, !0), i === c && 0 < a && r.setStart(c, a - 1), u === c && 0 < s && r.setEnd(c, s - 1), o && f.isEmpty(o) && mm(Nt.fromDom(o)), d.setRng(r))
    }

    function Fg(e, t, n) {
        void 0 === n && (n = !0);
        var r = e.dom,
            o = e.selection;
        if (t) Mg(e, t, n);
        else if (!(t = Hc(e.getBody(), o.getStart())))
            for (; t = r.get(bp);) Mg(e, t, !1)
    }

    function Ug(e, t) { return e.appendChild(t), t }

    function zg(e, t) { var n = P(e, function(e, t) { return Ug(e, t.cloneNode(!1)) }, t); return Ug(n, n.ownerDocument.createTextNode(vp)) }

    function Hg(o, e, t, i, n, r) {
        var a, u, s = o.formatter,
            c = o.dom,
            l = U(we(s.get()), function(e) { return e !== i && !Te(e, "removeformat") });
        if (0 < U((a = o, u = t, L(l, function(e, t) { var n = cl(a, t); return a.formatter.matchNode(u, t, {}, n) ? e.concat([t]) : e }, [])), function(e) {
                return n = i, r = ["inline", "block", "selector", "attributes", "styles", "classes"], !F((t = o).formatter.get(e), function(e) {
                    var i = a(e);
                    return F(t.formatter.get(n), function(e) {
                        var t, n = a(e),
                            r = i,
                            o = n;
                        return d(t = void 0 === t ? p : t).eq(r, o)
                    })
                });

                function a(e) { return ae(e, function(e, t) { return F(r, function(e) { return e === t }) }) }
                var t, n, r
            }).length) { var f = t.cloneNode(!1); return c.add(e, f), s.remove(i, n, f, r), c.remove(f), ve.some(f) }
        return ve.none()
    }

    function jg(e, t, n, r) {
        var o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y = e.dom,
            C = e.selection,
            x = [],
            w = C.getRng(),
            S = w.startContainer,
            E = w.startOffset,
            N = S;
        for (3 === S.nodeType && (E !== S.nodeValue.length && (o = !0), N = N.parentNode); N;) {
            if (hp(e, N, t, n, r)) { i = N; break }
            N.nextSibling && (o = !0), x.push(N), N = N.parentNode
        }
        i && (o ? (a = C.getBookmark(), w.collapse(!0), u = Tf(Sl(e, w, e.formatter.get(t), !0)), e.formatter.remove(t, n, u, r), C.moveToBookmark(a)) : (s = Hc(e.getBody(), i), d = c = Ig(!1).dom, (p = (g = e.dom).getParent(m = null !== s ? s : i, A(tl, e))) && g.isEmpty(p) ? m.parentNode.replaceChild(d, m) : (h = Nt.fromDom(m), v = hu(h, "br"), b = U(function() { for (var e = [], t = h.dom; t;) e.push(Nt.fromDom(t)), t = t.lastChild; return e }().slice(-1), Br), v.length === b.length && Y(b, Ln), g.isEmpty(m) ? m.parentNode.replaceChild(d, m) : g.insertAfter(d, m)), l = Hg(e, c, i, t, n, r), f = zg(x.concat(l.toArray()), c), Mg(e, s, !1), C.setCursorLocation(f, 1), y.isEmpty(i) && y.remove(i)))
    }

    function Vg(e, t) { var n = e.schema.getTextInlineElements(); return Ne(n, kt(t)) && !zc(t.dom) && !sn(t.dom) }
    Y(["margin", "margin-left", "margin-right", "margin-top", "margin-bottom", "padding", "padding-left", "padding-right", "padding-top", "padding-bottom", "border", "border-width", "border-style", "border-color", "background", "background-attachment", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-repeat", "background-size", "float", "position", "left", "right", "top", "bottom", "z-index", "display", "transform", "width", "max-width", "min-width", "height", "max-height", "min-height", "overflow", "overflow-x", "overflow-y", "text-overflow", "vertical-align", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function"], function(e) { am.add(e) });
    var qg, $g = ["font", "text-decoration", "text-emphasis"],
        Wg = A(sm, !0, Gc),
        Kg = A(sm, !1, Gc),
        Xg = lm(!0, fm),
        Yg = lm(!1, fm),
        Gg = lm(!0, Jn),
        Jg = lm(!1, Jn),
        Qg = lm(!0, cn),
        Zg = lm(!1, cn),
        ep = lm(!0, dm),
        tp = lm(!1, dm),
        np = A(Cm, !1),
        rp = A(Cm, !0),
        op = A(ym, !1),
        ip = A(ym, !0),
        ap = A(wm, !1),
        up = A(wm, !0),
        sp = or([{ singleCellTable: ["rng", "cell"] }, { fullTable: ["table"] }, { partialTable: ["cells", "outsideDetails"] }, { multiTable: ["startTableCells", "endTableCells", "betweenRng"] }]),
        cp = function(e) { var t; return (8 === _t(t = e) || "#comment" === kt(t) ? Bt : Ut)(e).bind(cp).orThunk(function() { return ve.some(e) }) },
        lp = function(e, t, n, r) {
            void 0 === r && (r = !0), t.deleteContents();
            var o, i = cp(n).getOr(n),
                a = Nt.fromDom(e.dom.getParent(i.dom, e.dom.isBlock));
            return Wr(a) && (mm(a), r && e.selection.setCursorLocation(a.dom, 0)), je(n, a) || Y((fn(Ot(a), n) ? [] : Ot(o = a).map(Dn).map(function(e) { return U(e, function(e) { return !je(o, e) }) }).getOr([])).concat(Dn(n)), function(e) { je(e, a) || Ve(e, a) || !Wr(e) || Ln(e) }), !0
        },
        fp = function(e, t) { return M(hm(t, e), function(e) { return kn(e) && "caption" === kt(e) }) },
        dp = function(e, t) { return mm(t), e.selection.setCursorLocation(t.dom, 0), ve.some(!0) },
        mp = Gn,
        gp = function(e, t) { t(e), e.firstChild && gp(e.firstChild, t), e.next && gp(e.next, t) },
        pp = ol,
        hp = function(e, t, n, r, o) {
            var i = e.formatter.get(n),
                a = e.dom;
            if (i && t)
                for (var u = 0; u < i.length; u++) {
                    var s = i[u];
                    if (Tg(e.dom, t, s) && Og(a, t, s, "attributes", o, r) && Og(a, t, s, "styles", o, r)) {
                        var c = s.classes;
                        if (c)
                            for (var l = 0; l < c.length; l++)
                                if (!e.dom.hasClass(t, rl(c[l], r))) return;
                        return s
                    }
                }
        },
        vp = Co,
        bp = "_mce_caret",
        yp = {},
        Cp = fe,
        xp = ce;

    function wp(e) { return zn(e) && !Yc(e) && !zc(e) && !sn(e) }

    function Sp(e, t) { for (var n = e; n; n = n[t]) { if (jn(n) && Be(n.data)) return e; if (zn(n) && !Yc(n)) return n } return e }

    function Ep(e, t, n) {
        var r = em(e);
        if (t && n && (t = Sp(t, "previousSibling"), n = Sp(n, "nextSibling"), r.compare(t, n))) {
            for (var o = t.nextSibling; o && o !== n;) {
                var i = o,
                    o = o.nextSibling;
                t.appendChild(i)
            }
            return e.remove(n), Et.each(Et.grep(n.childNodes), function(e) { t.appendChild(e) }), t
        }
        return n
    }

    function Np(e, t, n, r) {
        var o;
        r && !1 !== t.merge_siblings && (o = Ep(e, el(r), r), Ep(e, o, el(o, !0)))
    }

    function kp(t, n) { return function(e) { return !(!e || !al(t, e, n)) } }

    function _p(r, o, i) {
        return function(e) {
            var t, n;
            r.setStyle(e, o, i), "" === e.getAttribute("style") && e.removeAttribute("style"), t = r, "SPAN" === (n = e).nodeName && 0 === t.getAttribs(n).length && t.remove(n, !0)
        }
    }

    function Ap(e, t, n) { return e.isChildOf(t, n) && t !== n && !e.isBlock(n) }

    function Rp(e, t, n) {
        var r, o = t[n ? "startContainer" : "endContainer"],
            i = t[n ? "startOffset" : "endOffset"];
        return zn(o) && (r = o.childNodes.length - 1, !n && i && i--, o = o.childNodes[r < i ? r : i]), jn(o) && n && i >= o.nodeValue.length && (o = new Rr(o, e.getBody()).next() || o), jn(o) && !n && 0 === i && new Rr(o, e.getBody()).prev() || o
    }

    function Dp(e, t) { var n = t ? "firstChild" : "lastChild"; if (/^(TR|TH|TD)$/.test(e.nodeName) && e[n]) { var r = e[n]; return "TR" === e.nodeName && r[n] || r } return e }

    function Tp(e, t, n, r) { var o = e.create(n, r); return t.parentNode.insertBefore(o, t), o.appendChild(t), o }

    function Op(e, t, n, r, o) {
        var i = Nt.fromDom(t),
            a = Nt.fromDom(e.create(r, o));
        return Kt(a, (n ? It : Lt)(i)), n ? (qt(i, a), Wt(a, i)) : ($t(i, a), Pn(a, i)), a.dom
    }

    function Bp(e, t, n, r) { var o = el(t, n, r); return K(o) || "BR" === o.nodeName || e.isBlock(o) }

    function Pp(e, r, o, t, i) {
        var n, a, u = e.dom,
            s = u,
            c = t;
        if (!(dl(a = r) && kh(c, a.inline) || ll(a) && kh(c, a.block) || fl(a) && (zn(c) && s.is(c, a.selector)) || r.links && "A" === t.nodeName)) return Sh.keep();
        var l, f, d, m, g, p, h, v, b = t;
        if (dl(r) && "all" === r.remove && S(r.preserve_attributes)) { var y = U(u.getAttribs(b), function(e) { return D(r.preserve_attributes, e.name.toLowerCase()) }); if (u.removeAllAttribs(b), Y(y, function(e) { return u.setAttrib(b, e.name, e.value) }), 0 < y.length) return Sh.rename("span") }
        if ("all" !== r.remove) {
            Nh(r.styles, function(e, t) { e = il(u, rl(e, o), t + ""), E(t) && (t = e, i = null), !r.remove_similar && i && !kh(al(u, i, t), e) || u.setStyle(b, t, ""), n = !0 }), n && "" === u.getAttrib(b, "style") && (b.removeAttribute("style"), b.removeAttribute("data-mce-style")), Nh(r.attributes, function(e, t) {
                var n;
                if (e = rl(e, o), E(t) && (t = e, i = null), r.remove_similar || !i || kh(u.getAttrib(i, t), e))
                    if ("class" === t && (e = u.getAttrib(b, t)) && (n = "", Y(e.split(/\s+/), function(e) { /mce\-\w+/.test(e) && (n += (n ? " " : "") + e) }), n)) u.setAttrib(b, t, n);
                    else { if (Eh.test(t) && b.removeAttribute("data-mce-" + t), "style" === t && on(["li"])(b) && "none" === u.getStyle(b, "list-style-type")) return b.removeAttribute(t), void u.setStyle(b, "list-style-type", "none"); "class" === t && b.removeAttribute("className"), b.removeAttribute(t) }
            }), Nh(r.classes, function(e) { e = rl(e, o), i && !u.hasClass(i, e) || u.removeClass(b, e) });
            for (var C = u.getAttribs(b), x = 0; x < C.length; x++) { var w = C[x].nodeName; if (0 !== w.indexOf("_") && 0 !== w.indexOf("data-")) return Sh.keep() }
        }
        return "none" !== r.remove ? (l = e, d = r, p = (f = b).parentNode, h = l.dom, v = Ss(l), ll(d) && (v ? p === h.getRoot() && (d.list_block && kh(f, d.list_block) || Y(xe(f.childNodes), function(e) { nl(l, v, e.nodeName.toLowerCase()) ? m ? m.appendChild(e) : (m = Tp(h, e, v), h.setAttribs(m, l.settings.forced_root_block_attrs)) : m = null })) : h.isBlock(f) && !h.isBlock(p) && (Bp(h, f, !1) || Bp(h, f.firstChild, !0, !0) || f.insertBefore(h.create("br"), f.firstChild), Bp(h, f, !0) || Bp(h, f.lastChild, !1, !0) || f.appendChild(h.create("br")))), fl(g = d) && dl(g) && fn(ue(g, "mixed"), !0) && !kh(d.inline, f) || h.remove(f, !0), Sh.removed()) : Sh.keep()
    }

    function Lp(t, e, n, r, o) { return Pp(t, e, n, r, o).fold(R, function(e) { return t.dom.rename(r, e), !0 }, w) }

    function Ip(u, s, c, e, l) {
        function a(e) {
            var n, r, o, i, a, t = (r = s, o = c, i = l, Y(sl((n = u).dom, e.parentNode).reverse(), function(e) {
                var t;
                a || "_start" === e.id || "_end" === e.id || (t = hp(n, e, r, o, i)) && !1 !== t.split && (a = e)
            }), a);
            return function(e, t, n, r, o, i, a, u) {
                var s, c, l = e.dom;
                if (n) {
                    for (var f = n.parentNode, d = r.parentNode; d && d !== f; d = d.parentNode) {
                        for (var m = l.clone(d, !1), g = 0; g < t.length && null !== (m = function(t, e, n) { return Pp(t, e, u, n, n).fold(J(n), function(e) { return t.dom.createFragment().appendChild(n), t.dom.rename(n, e) }, J(null)) }(e, t[g], m)); g++);
                        m && (s && m.appendChild(s), c = c || m, s = m)
                    }!i || a.mixed && l.isBlock(n) || (r = l.split(n, r)), s && (o.parentNode.insertBefore(s, o), c.appendChild(o), dl(a) && Np(l, a, 0, s))
                }
                return r
            }(u, m, t, e, e, !0, g, c)
        }

        function f(t) { return F(m, function(e) { return Lp(u, e, c, t, t) }) }

        function d(e) {
            var t, n = h.get(e ? "_start" : "_end"),
                r = n[e ? "firstChild" : "lastChild"];
            return Yc(t = r) && zn(t) && ("_start" === t.id || "_end" === t.id) && (r = r[e ? "firstChild" : "lastChild"]), jn(r) && 0 === r.data.length && (r = e ? n.previousSibling || n.nextSibling : n.nextSibling || n.previousSibling), h.remove(n, !0), r
        }

        function t(e) {
            var t = Sl(u, e, m, e.collapsed);
            if (g.split) {
                if (t = Tf(t), (r = Rp(u, t, !0)) !== (o = Rp(u, t))) {
                    if (r = Dp(r, !0), o = Dp(o, !1), Ap(h, r, o)) { var n = ve.from(r.firstChild).getOr(r); return a(Op(h, n, !0, "span", { id: "_start", "data-mce-type": "bookmark" })), void d(!0) }
                    if (Ap(h, o, r)) return n = ve.from(o.lastChild).getOr(o), a(Op(h, n, !1, "span", { id: "_end", "data-mce-type": "bookmark" })), void d(!1);
                    var r = Tp(h, r, "span", { id: "_start", "data-mce-type": "bookmark" }),
                        o = Tp(h, o, "span", { id: "_end", "data-mce-type": "bookmark" }),
                        i = h.createRng();
                    i.setStartAfter(r), i.setEndBefore(o), El(h, i, function(e) { Y(e, function(e) { Yc(e) || Yc(e.parentNode) || a(e) }) }), a(r), a(o), r = d(!0), o = d()
                } else r = o = a(r);
                t.startContainer = r.parentNode || r, t.startOffset = h.nodeIndex(r), t.endContainer = o.parentNode || o, t.endOffset = h.nodeIndex(o) + 1
            }
            El(h, t, function(e) { Y(e, v) })
        }
        var n, m = u.formatter.get(s),
            g = m[0],
            p = !0,
            h = u.dom,
            r = u.selection,
            v = function(t) {
                var e = !0,
                    n = !1;
                zn(t) && h.getContentEditable(t) && (e = p, p = "true" === h.getContentEditable(t), n = !0);
                var r, o, i = xe(t.childNodes);
                if (p && !n && (r = f(t), o = t.parentNode, !r && V(o) && ml(g) && f(o)), g.deep && i.length) {
                    for (var a = 0; a < i.length; a++) v(i[a]);
                    n && (p = e)
                }
                Y(["underline", "line-through", "overline"], function(e) { zn(t) && u.dom.getStyle(t, "text-decoration") === e && t.parentNode && ul(h, t.parentNode) === e && Lp(u, { deep: !1, exact: !0, inline: "span", styles: { textDecoration: e } }, null, t) })
            };
        if (e) return Qc(e) ? ((n = h.createRng()).setStartBefore(e), n.setEndAfter(e), t(n)) : t(e), void yf(u, s, e, c);
        if ("false" !== h.getContentEditable(r.getNode())) r.isCollapsed() && dl(g) && !_l(u).length ? jg(u, s, c, l) : (Bl(r, !0, function() { Ol(u, t) }), dl(g) && Bg(u, s, c, r.getStart()) && Zc(h, r, r.getRng()), u.nodeChanged()), yf(u, s, e, c);
        else {
            e = r.getNode();
            for (var o = 0; o < m.length && (!m[o].ceFalseOverride || !Lp(u, m[o], c, e, e)); o++);
            yf(u, s, e, c)
        }
    }

    function Mp(e) { return zn(e) && !Yc(e) && !zc(e) && !sn(e) }

    function Fp(e) { return Ne(e, "vars") }

    function Up(n, e, r, o, i) { return I(e, function(e) { var t = n.formatter.matchNode(e, r, null != i ? i : {}, o); return !b(t) }, function(e) { return Rg(n, e, r) || !o && V(n.formatter.matchNode(e, r, i, !0)) }) }

    function zp(e, t) { var n = null != t ? t : Dh(e); return U(sl(e.dom, n), function(e) { return zn(e) && !sn(e) }) }

    function Hp(e, o, i, a, t, n) {
        var r, u, s, c, l, f, d, m, g;
        return null === o.get() && (u = e, (r = o).set({}), u.on("NodeChange", function(e) { Th(u, e.element, r.get()) }), u.on("FormatApply FormatRemove", function(e) {
            var t = ve.from(e.node).map(function(e) { return Qc(e) ? e : e.startContainer }).bind(function(e) { return zn(e) ? ve.some(e) : ve.from(e.parentElement) }).getOrThunk(function() { return Dh(u) });
            Th(u, t, r.get())
        })), s = e, l = i, f = a, d = t, m = n, g = (c = o).get(), Y(l.split(","), function(t) {
            function e() { var e = zp(s); return Up(s, e, t, d, m).isSome() }
            var n, r = ue(g, t).getOrThunk(function() { var e = { withSimilar: { state: ru(!1), similar: !0, callbacks: [] }, withoutSimilar: { state: ru(!1), similar: !1, callbacks: [] }, withVars: [] }; return g[t] = e });
            b(m) ? ((n = d ? r.withSimilar : r.withoutSimilar).callbacks.push(f), 1 === n.callbacks.length && n.state.set(e())) : r.withVars.push({ state: ru(e()), similar: d, vars: m, callback: f })
        }), c.set(g), {
            unbind: function() {
                var e, t = i,
                    n = a,
                    r = (e = o).get();
                Y(t.split(","), function(t) { return ue(r, t).each(function(e) { r[t] = { withSimilar: _e(_e({}, e.withSimilar), { callbacks: U(e.withSimilar.callbacks, function(e) { return e !== n }) }), withoutSimilar: _e(_e({}, e.withoutSimilar), { callbacks: U(e.withoutSimilar.callbacks, function(e) { return e !== n }) }), withVars: U(e.withVars, function(e) { return e.callback !== n }) } }) }), e.set(r)
            }
        }
    }

    function jp(e, t) { var n = (t || document).createDocumentFragment(); return Y(e, function(e) { n.appendChild(e.dom) }), Nt.fromDom(n) }

    function Vp(e, t, n) { return { element: e, width: t, rows: n } }

    function qp(e, t) { return { element: e, cells: t } }

    function $p(e, t) { var n = parseInt(vn(e, t), 10); return isNaN(n) ? 1 : n }

    function Wp(e) { return L(e, function(e, t) { return t.cells.length > e ? t.cells.length : e }, 0) }

    function Kp(e, t) {
        for (var n = e.rows, r = 0; r < n.length; r++)
            for (var o = n[r].cells, i = 0; i < o.length; i++)
                if (je(o[i], t)) return ve.some({ x: i, y: r });
        return ve.none()
    }

    function Xp(e, t, n, r, o) {
        for (var i = [], a = e.rows, u = n; u <= o; u++) {
            var s = a[u].cells,
                c = t < r ? s.slice(t, r + 1) : s.slice(r, t + 1);
            i.push(qp(a[u].element, c))
        }
        return i
    }

    function Yp(e) { var o = Vp(wu(e), 0, []); return Y(hu(e, "tr"), function(n, r) { Y(hu(n, "td,th"), function(e, t) {! function(e, t, n, r, o) { for (var i = $p(o, "rowspan"), a = $p(o, "colspan"), u = e.rows, s = n; s < n + i; s++) { u[s] || (u[s] = qp(Su(r), [])); for (var c = t; c < t + a; c++) u[s].cells[c] = s === n && c === t ? o : wu(o) } }(o, function(e, t, n) { for (; r = t, ((o = e.rows)[n] ? o[n].cells : [])[r];) t++; var r, o; return t }(o, t, r), r, n, e) }) }), Vp(o.element, Wp(o.rows), o.rows) }

    function Gp(e, t) {
        var n, r, o, i = Nt.fromDom(t.commonAncestorContainer),
            a = hm(i, e),
            u = U(a, function(e) { return Or(e) || co(e) }),
            s = (o = t, M(r = a, function(e) { return "li" === kt(e) && Rl(e, o) }).fold(J([]), function(e) { return M(r, function(e) { return "ul" === kt(e) || "ol" === kt(e) }).map(function(e) { var t = Nt.fromTag(kt(e)); return Cn(t, ae(Sn(e), function(e, t) { return Ge(t, "list-style") })), [Nt.fromTag("li"), t] }).getOr([]) }));
        return T(u.concat(s.length ? s : go(n = i) ? Ot(n).filter(mo).fold(J([]), function(e) { return [n, e] }) : mo(n) ? [n] : []), wu)
    }

    function Jp() { return jp([]) }

    function Qp(e, i) {
        return hr(i[0], "table", A(je, e)).bind(function(e) {
            var s, t, n = i[0],
                r = i[i.length - 1],
                o = Yp(e);
            return t = r, Kp(s = o, n).bind(function(u) { return Kp(s, t).map(function(e) { return t = s, n = u.x, r = u.y, o = e.x, a = r < (i = e.y) ? Xp(t, n, r, o, i) : Xp(t, n, i, o, r), Vp(t.element, Wp(a), a); var t, n, r, o, i, a }) }).map(function(e) {
                return jp([(n = T((t = e).rows, function(e) {
                    var t = T(e.cells, function(e) { var t = Su(e); return yn(t, "colspan"), yn(t, "rowspan"), t }),
                        n = wu(e.element);
                    return Kt(n, t), n
                }), r = wu(t.element), Kt(o = Nt.fromTag("tbody"), n), Pn(r, o), r)]);
                var t, n, r, o
            })
        }).getOrThunk(Jp)
    }

    function Zp(e, t) { var n, r, o, i, a, u, s, c = kl(t, e); return 0 < c.length ? Qp(e, c) : (n = e, 0 < (r = t).length && r[0].collapsed ? Jp() : (o = n, i = r[0], a = Nt.fromDom(i.cloneContents()), s = L(u = Gp(o, i), function(e, t) { return Pn(t, e), t }, a), 0 < u.length ? jp([s]) : s)) }

    function eh(e, t) { return 0 <= t && t < e.length && Gc(e.charAt(t)) }

    function th(e, t) { var n = wo(e.innerText); return t ? n.replace(/^[ \f\n\r\t\v]+/, "") : n }

    function nh(e) { return zn(e) ? e.outerHTML : jn(e) ? Go.encodeRaw(e.data, !1) : Vn(e) ? "\x3c!--" + e.data + "--\x3e" : "" }

    function rh(e, c) {
        var l = 0;
        Y(e, function(e) {
            var t, n, r, o, i, a, u, s;
            0 === e[0] ? l++ : 1 === e[0] ? (o = c, i = e[1], a = l, s = function(e) {
                var t, n = document.createElement("div"),
                    r = document.createDocumentFragment();
                for (e && (n.innerHTML = e); t = n.firstChild;) r.appendChild(t);
                return r
            }(i), o.hasChildNodes() && a < o.childNodes.length ? (u = o.childNodes[a]).parentNode.insertBefore(s, u) : o.appendChild(s), l++) : 2 === e[0] && (n = l, (t = c).hasChildNodes() && n < t.childNodes.length && (r = t.childNodes[n]).parentNode.removeChild(r))
        })
    }

    function oh(n) {
        var e, t = H((e = n.getBody(), U(T(xe(e.childNodes), nh), function(e) { return 0 < e.length })), function(e) { var t = Zd(n.serializer, e); return 0 < t.length ? [t] : [] }),
            r = t.join("");
        return -1 !== r.indexOf("</iframe>") ? { type: "fragmented", fragments: t, content: "", bookmark: null, beforeBookmark: null } : { type: "complete", fragments: null, content: r, bookmark: null, beforeBookmark: null }
    }

    function ih(e, t, n) {
        var r, o, i, g, p, a, h, v, c, l, u, s = n ? t.beforeBookmark : t.bookmark;

        function b(e, t, n, r) { for (var o = e; o - t < r && o < n && g[o] === p[o - t];) ++o; return { start: e, end: o, diag: t } }
        "fragmented" === t.type ? (r = t.fragments, o = e.getBody(), i = T(xe(o.childNodes), nh), rh((p = r, a = (g = i).length + p.length + 2, h = new Array(a), v = new Array(a), c = function(e, t, n, r, o) {
            var i = l(e, t, n, r);
            if (null === i || i.start === t && i.diag === t - r || i.end === e && i.diag === e - n)
                for (var a = e, u = n; a < t || u < r;) a < t && u < r && g[a] === p[u] ? (o.push([0, g[a]]), ++a, ++u) : r - n < t - e ? (o.push([2, g[a]]), ++a) : (o.push([1, p[u]]), ++u);
            else {
                c(e, i.start, n, i.start - i.diag, o);
                for (var s = i.start; s < i.end; ++s) o.push([0, g[s]]);
                c(i.end, t, i.end - i.diag, r, o)
            }
        }, l = function(e, t, n, r) {
            var o = t - e,
                i = r - n;
            if (0 == o || 0 == i) return null;
            var a, u, s, c, l, f = o - i,
                d = i + o,
                m = (d % 2 == 0 ? d : 1 + d) / 2;
            for (h[1 + m] = e, v[1 + m] = t + 1, a = 0; a <= m; ++a) { for (u = -a; u <= a; u += 2) { for (s = u + m, u === -a || u !== a && h[s - 1] < h[s + 1] ? h[s] = h[s + 1] : h[s] = h[s - 1] + 1, l = (c = h[s]) - e + n - u; c < t && l < r && g[c] === p[l];) h[s] = ++c, ++l; if (f % 2 != 0 && f - a <= u && u <= f + a && v[s - f] <= h[s]) return b(v[s - f], u + e - n, t, r) } for (u = f - a; u <= f + a; u += 2) { for (s = u + m - f, u === f - a || u !== f + a && v[s + 1] <= v[s - 1] ? v[s] = v[s + 1] - 1 : v[s] = v[s - 1], l = (c = v[s] - 1) - e + n - u; e <= c && n <= l && g[c] === p[l];) v[s] = c--, l--; if (f % 2 == 0 && -a <= u && u <= a && v[s] <= h[s + f]) return b(v[s], u + e - n, t, r) } }
        }, u = [], c(0, g.length, 0, p.length, u), u), o)) : e.setContent(t.content, { format: "raw", no_selection: !V(s) || !jc(s) || !s.isFakeCaret }), e.selection.moveToBookmark(s)
    }

    function ah(e) { return "fragmented" === e.type ? e.fragments.join("") : e.content }

    function uh(e) { var t = Nt.fromTag("body", Oh()); return Cu(t, ah(e)), Y(hu(t, "*[data-mce-bogus]"), Yt), t.dom.innerHTML }

    function sh(e, t) { return !(!e || !t) && (r = t, ah(e) === ah(r) || (n = t, uh(e) === uh(n))); var n, r }

    function ch(e) { return 0 === e.get() }

    function lh(e, t, n) { ch(n) && (e.typing = t) }

    function fh(e, t) { e.typing && (lh(e, !1, t), e.add()) }

    function dh(c) {
        return {
            undoManager: {
                beforeChange: function(e, t) {
                    var n = c,
                        r = t;
                    ch(e) && r.set(mc(n.selection))
                },
                add: function(e, t, n, r, o, i) {
                    return function(e, t, n, r, o, i, a) {
                        var u = oh(e);
                        if (i = Et.extend(i = i || {}, u), !1 === ch(r) || e.removed) return null;
                        var s = t.data[n.get()];
                        if (e.fire("BeforeAddUndo", { level: i, lastLevel: s, originalEvent: a }).isDefaultPrevented()) return null;
                        if (s && sh(s, i)) return null;
                        t.data[n.get()] && o.get().each(function(e) { t.data[n.get()].beforeBookmark = e });
                        var c = e.getParam("custom_undo_redo_levels", 0, "number");
                        if (c && t.data.length > c) {
                            for (var l = 0; l < t.data.length - 1; l++) t.data[l] = t.data[l + 1];
                            t.data.length--, n.set(t.data.length)
                        }
                        i.bookmark = mc(e.selection), n.get() < t.data.length - 1 && (t.data.length = n.get() + 1), t.data.push(i), n.set(t.data.length - 1);
                        var f = { level: i, lastLevel: s, originalEvent: a };
                        return 0 < n.get() ? (e.setDirty(!0), e.fire("AddUndo", f), e.fire("change", f)) : e.fire("AddUndo", f), i
                    }(c, e, t, n, r, o, i)
                },
                undo: function(e, t, n) { return r = c, i = t, a = n, (o = e).typing && (o.add(), o.typing = !1, lh(o, !1, i)), 0 < a.get() && (a.set(a.get() - 1), ih(r, u = o.data[a.get()], !0), r.setDirty(!0), r.fire("Undo", { level: u })), u; var r, o, i, a, u },
                redo: function(e, t) { return n = c, o = t, (r = e).get() < o.length - 1 && (r.set(r.get() + 1), ih(n, i = o[r.get()], !1), n.setDirty(!0), n.fire("Redo", { level: i })), i; var n, r, o, i },
                clear: function(e, t) {
                    var n, r = c,
                        o = t;
                    (n = e).data = [], o.set(0), n.typing = !1, r.fire("ClearUndos")
                },
                reset: function(e) {
                    var t;
                    (t = e).clear(), t.add()
                },
                hasUndo: function(e, t) { return n = c, r = e, 0 < t.get() || r.typing && r.data[0] && !sh(oh(n), r.data[0]); var n, r },
                hasRedo: function(e, t) { return n = e, t.get() < n.data.length - 1 && !n.typing; var n },
                transact: function(e, t, n) { return o = n, fh(r = e, t), r.beforeChange(), r.ignore(o), r.add(); var r, o },
                ignore: function(e, t) { try { e.set(e.get() + 1), t() } finally { e.set(e.get() - 1) } },
                extra: function(e, t, n, r) {
                    var o, i, a = c,
                        u = t,
                        s = r;
                    (o = e).transact(n) && (i = o.data[u.get()].bookmark, ih(a, o.data[u.get() - 1], !0), o.transact(s) && (o.data[u.get() - 1].beforeBookmark = i))
                }
            },
            formatter: {
                match: function(e, t, n, r) { return Bg(c, e, t, n, r) },
                matchAll: function(e, t) { return o = e, i = t, a = [], u = {}, n = (r = c).selection.getStart(), r.dom.getParent(n, function(e) { for (var t = 0; t < o.length; t++) { var n = o[t];!u[n] && hp(r, e, n, i) && (u[n] = !0, a.push(n)) } }, r.dom.getRoot()), a; var r, o, i, a, u, n },
                matchNode: function(e, t, n, r) { return hp(c, e, t, n, r) },
                canApply: function(u) {
                    return function(e) {
                        var t = e.formatter.get(u),
                            n = e.dom;
                        if (t)
                            for (var r = sl(n, e.selection.getStart()), o = t.length - 1; 0 <= o; o--) {
                                var i = t[o];
                                if (!fl(i) || V(i.defaultBlock)) return !0;
                                for (var a = r.length - 1; 0 <= a; a--)
                                    if (n.is(r[a], i.selector)) return !0
                            }
                        return !1
                    }(c)
                },
                closest: function(e) {
                    return r = c, o = e, ve.from(r.selection.getStart(!0)).bind(function(e) { return Ag(Nt.fromDom(e), function(n) { return ee(o, function(e) { return hp(r, n.dom, t = e) ? ve.some(t) : ve.none(); var t }) }, t) }).getOrNull();

                    function t(e) { return je(e, Nt.fromDom(r.getBody())) }
                    var r, o
                },
                apply: function(e, t, n) { return Rh(c, e, t, n) },
                remove: function(e, t, n, r) { return Ip(c, e, t, n, r) },
                toggle: function(e, t, n) {
                    var r, o = e,
                        i = t,
                        a = n,
                        u = (r = c).formatter.get(o);
                    (!Bg(r, o, i, a) || "toggle" in u[0] && !u[0].toggle ? Rh : Ip)(r, o, i, a)
                },
                formatChanged: function(e, t, n, r, o) { return Hp(c, e, t, n, r, o) }
            },
            editor: {
                getContent: function(e, t) { return d = c, m = e, g = t, ve.from(d.getBody()).fold(J("tree" === m.format ? new Ud("body", 11) : ""), function(e) { return t = d, r = e, o = g, c = _e(_e({}, n = m), { format: o, get: !0, getInner: !0 }), l = n.no_events ? c : t.fire("BeforeGetContent", c), f = "raw" === l.format ? Et.trim(rm(t.serializer, r.innerHTML)) : "text" === l.format ? t.dom.isEmpty(r) ? "" : wo(r.innerText || r.textContent) : "tree" === l.format ? t.serializer.serialize(r, l) : (a = (i = t).serializer.serialize(r, l), u = Ss(i), s = new RegExp("^(<" + u + "[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/" + u + ">[\r\n]*|<br \\/>[\r\n]*)$"), a.replace(s, "")), D(["text", "tree"], l.format) || vo(Nt.fromDom(r)) ? l.content = f : l.content = Et.trim(f), (l.no_events ? l : t.fire("GetContent", l)).content; var t, n, r, o, i, a, u, s, c, l, f }); var d, m, g },
                setContent: function(e, t) { return kg(c, e, t) },
                insertContent: function(e, t) { return Sg(c, e, t) },
                addVisual: function(e) {
                    var i, t = e,
                        a = (i = c).dom,
                        n = V(t) ? t : i.getBody();
                    b(i.hasVisual) && (i.hasVisual = i.getParam("visual", !0, "boolean")), Y(a.select("table,a", n), function(e) {
                        switch (e.nodeName) {
                            case "TABLE":
                                var t = i.getParam("visual_table_class", "mce-item-table", "string"),
                                    n = a.getAttrib(e, "border");
                                n && "0" !== n || !i.hasVisual ? a.removeClass(e, t) : a.addClass(e, t);
                                break;
                            case "A":
                                var r, o;
                                a.getAttrib(e, "href") || (r = a.getAttrib(e, "name") || e.id, o = i.getParam("visual_anchor_class", "mce-item-anchor", "string"), r && i.hasVisual ? a.addClass(e, o) : a.removeClass(e, o))
                        }
                    }), i.fire("VisualAid", { element: t, hasVisual: i.hasVisual })
                }
            },
            selection: {
                getContent: function(e, t) {
                    return function(e, t, n) {
                        var r, o = (r = t, _e(_e({}, n = void 0 === n ? {} : n), { format: r, get: !0, selection: !0 })),
                            i = e.fire("BeforeGetContent", o);
                        if (i.isDefaultPrevented()) return e.fire("GetContent", i), i.content;
                        if ("text" === i.format) return m = e, ve.from(m.selection.getRng()).map(function(e) {
                            var t = ve.from(m.dom.getParent(e.commonAncestorContainer, m.dom.isBlock)),
                                n = m.getBody(),
                                r = t.map(function(e) { return e.nodeName }).getOr("div").toLowerCase(),
                                o = xt.browser.isIE() && "pre" !== r,
                                i = m.dom.add(n, r, { "data-mce-bogus": "all", style: "overflow: hidden; opacity: 0;" }, e.cloneContents()),
                                a = th(i, o),
                                u = wo(i.textContent);
                            if (m.dom.remove(i), eh(u, 0) || eh(u, u.length - 1)) {
                                var s = th(t.getOr(n), o),
                                    c = s.indexOf(a);
                                return -1 === c ? a : (eh(s, c - 1) ? " " : "") + a + (eh(s, c + a.length) ? " " : "")
                            }
                            return a
                        }).getOr("");
                        i.getInner = !0;
                        var a, u, s, c, l, f, d, m, g = (u = i, s = (a = e).selection.getRng(), c = a.dom.create("body"), l = a.selection.getSel(), f = wd(a, Nl(l)), (d = u.contextual ? Zp(Nt.fromDom(a.getBody()), f).dom : s.cloneContents()) && c.appendChild(d), a.selection.serializer.serialize(c, u));
                        return "tree" === i.format ? g : (i.content = e.selection.isCollapsed() ? "" : g, e.fire("GetContent", i), i.content)
                    }(c, e, t)
                }
            },
            raw: { getModel: function() { return ve.none() } }
        }
    }

    function mh(e) { return Ne(e.plugins, "rtc") }

    function gh(e) {
        var u = e;
        return ue(e.plugins, "rtc").bind(function(e) { return ve.from(e.setup) }).fold(function() { return u.rtcInstance = dh(e), ve.none() }, function(e) {
            var t, n;
            return u.rtcInstance = (t = J(null), n = J(""), { undoManager: { beforeChange: te, add: t, undo: t, redo: t, clear: te, reset: te, hasUndo: R, hasRedo: R, transact: t, ignore: te, extra: te }, formatter: { match: R, matchAll: J([]), matchNode: J(void 0), canApply: R, closest: n, apply: te, remove: te, toggle: te, formatChanged: J({ unbind: te }) }, editor: { getContent: n, setContent: n, insertContent: te, addVisual: te }, selection: { getContent: n }, raw: { getModel: J(ve.none()) } }), ve.some(function() {
                return e().then(function(e) {
                    return u.rtcInstance = (i = e.undoManager, a = e.formatter, n = e.editor, r = e.selection, t = e.raw, { undoManager: { beforeChange: i.beforeChange, add: i.add, undo: i.undo, redo: i.redo, clear: i.clear, reset: i.reset, hasUndo: i.hasUndo, hasRedo: i.hasRedo, transact: function(e, t, n) { return i.transact(n) }, ignore: function(e, t) { return i.ignore(t) }, extra: function(e, t, n, r) { return i.extra(n, r) } }, formatter: { match: function(e, t, n, r) { return a.match(e, o(t), r) }, matchAll: a.matchAll, matchNode: a.matchNode, canApply: function(e) { return a.canApply(e) }, closest: function(e) { return a.closest(e) }, apply: function(e, t, n) { return a.apply(e, o(t)) }, remove: function(e, t, n, r) { return a.remove(e, o(t)) }, toggle: function(e, t, n) { return a.toggle(e, o(t)) }, formatChanged: function(e, t, n, r, o) { return a.formatChanged(t, n, r, o) } }, editor: { getContent: function(e, t) { return n.getContent(e) }, setContent: function(e, t) { return n.setContent(e, t) }, insertContent: function(e, t) { return n.insertContent(e) }, addVisual: n.addVisual }, selection: { getContent: function(e, t) { return r.getContent(t) } }, raw: { getModel: function() { return ve.some(t.getRawModel()) } } }), e.rtc.isRemote;

                    function o(e) { return h(e) ? e : {} }
                    var i, a, n, r, t
                })
            })
        })
    }

    function ph(e) { return e.rtcInstance || dh(e) }

    function hh(e) { var t = e.rtcInstance; if (t) return t; throw new Error("Failed to get RTC instance not yet initialized.") }

    function vh(e) { return 0 === e.dom.length ? (Ln(e), ve.none()) : ve.some(e) }

    function bh(e, t, u, s) {
        e.bind(function(a) {
            return (s ? Um : Fm)(a.dom, s ? a.dom.length : 0), t.filter(_n).map(function(e) {
                var t = u,
                    n = s,
                    r = a.dom,
                    o = e.dom,
                    i = (n ? r : o).length;
                n ? (zm(r, o, !1, !n), t.setStart(o, i)) : (zm(o, r, !1, !n), t.setEnd(o, i))
            })
        }).orThunk(function() {
            var e = s;
            return t.filter(function(e) { return Fl.isBookmarkNode(e.dom) }).bind(e ? Pt : Bt).or(t).filter(_n).map(function(e) {
                var n, r = s;
                Ot(n = e).each(function(e) {
                    var t = n.dom;
                    r && Dm(e, as(t, 0)) ? Fm(t, 0) : !r && Tm(e, as(t, t.length)) && Um(t, t.length)
                })
            })
        })
    }

    function yh(e, t, n) {
        var r, o = (r = t, _e(_e({ format: "html" }, n = void 0 === n ? {} : n), { set: !0, selection: !0, content: r })),
            i = o;
        if (!o.no_events) {
            var a = e.fire("BeforeSetContent", o);
            if (a.isDefaultPrevented()) return void e.fire("SetContent", a);
            i = a
        }
        i.content = function(e, t) {
            if ("raw" === t.format) return t.content;
            var n = e.selection.getRng(),
                r = e.dom.getParent(n.commonAncestorContainer, e.dom.isBlock),
                o = r ? { context: r.nodeName.toLowerCase() } : {},
                i = e.parser.parse(t.content, _e(_e({ isRootContent: !0, forced_root_block: !1 }, o), t));
            return nm({ validate: e.validate }, e.schema).serialize(i)
        }(e, i);
        var u = e.selection.getRng();
        ! function(e, t) {
            var n = ve.from(t.firstChild).map(Nt.fromDom),
                r = ve.from(t.lastChild).map(Nt.fromDom);
            e.deleteContents(), e.insertNode(t);
            var o = n.bind(Bt).filter(_n).bind(vh),
                i = r.bind(Pt).filter(_n).bind(vh);
            bh(o, n, e, !0), bh(i, r, e, !1), e.collapse(!1)
        }(u, u.createContextualFragment(i.content)), e.selection.setRng(u), Zf(e, u), i.no_events || e.fire("SetContent", i)
    }

    function Ch(e, t, n) {
        var r;
        e && Ne(e, t) && (0 === (r = U(e[t], function(e) { return e !== n })).length ? delete e[t] : e[t] = r)
    }
    qg = function(e) {
        var t, n = e.selection.getRng(),
            r = on(["pre"]);
        n.collapsed || (t = e.selection.getSelectedBlocks(), xp(Cp(Cp(t, r), function(e) { return r(e.previousSibling) && -1 !== de(t, e.previousSibling) }), function(e) {
            var t, n = e.previousSibling;
            Wa(t = e).remove(), Wa(n).append("<br><br>").append(t.childNodes)
        }))
    }, yp["pre"] || (yp.pre = []), yp.pre.push(qg);
    var xh = Et.each,
        wh = function(e, t, n) { xh(e.childNodes, function(e) { wp(e) && (t(e) && n(e), e.hasChildNodes() && wh(e, t, n)) }) },
        Sh = or([{ keep: [] }, { rename: ["name"] }, { removed: [] }]),
        Eh = /^(src|href|style)$/,
        Nh = Et.each,
        kh = ol,
        _h = Et.each,
        Ah = Et.each,
        Rh = function(S, E, N, r) {
            function k(n, e) {
                var t;
                y((e = void 0 === e ? A : e).onformat) && e.onformat(n, e, N, r), Ah(e.styles, function(e, t) { u.setStyle(n, t, rl(e, N)) }), !e.styles || (t = u.getAttrib(n, "style")) && u.setAttrib(n, "data-mce-style", t), Ah(e.attributes, function(e, t) { u.setAttrib(n, t, rl(e, N)) }), Ah(e.classes, function(e) { e = rl(e, N), u.hasClass(n, e) || u.addClass(n, e) })
            }

            function g(e, t) { var n = !1; return Ah(e, function(e) { return !!fl(e) && (V(e.collapsed) && e.collapsed !== a || !u.is(t, e.selector) || zc(t) ? void 0 : (k(t, e), !(n = !0))) }), n }

            function o(x, e, l) {
                var w = [],
                    f = !0,
                    d = A.inline || A.block,
                    m = function(e) { if (X(e)) { var t = u.create(e); return k(t), t } return null }(d);
                El(x, e, function(e) {
                    var s, c = function(e) {
                        var t = !1,
                            n = f,
                            r = e.nodeName.toLowerCase(),
                            o = e.parentNode,
                            i = o.nodeName.toLowerCase();
                        if (zn(e) && x.getContentEditable(e) && (n = f, f = "true" === x.getContentEditable(e), t = !0), Wn(e) && ! function(e, t, n, r) {
                                if (e.getParam("format_empty_lines", !1, "boolean") && dl(t)) {
                                    var o = _e(_e({}, e.schema.getTextBlockElements()), { td: {}, th: {}, li: {}, dt: {}, dd: {}, figcaption: {}, caption: {}, details: {}, summary: {} }),
                                        i = (a = Nt.fromDom(n), s = function(e) { return zc(e.dom) }, ((c = (u = a).dom).parentNode ? Nr(Nt.fromDom(c.parentNode), function(e) { return !je(u, e) && s(e) }) : ve.none()).isSome());
                                    return se(o, r) && Wr(Nt.fromDom(n.parentNode), !1) && !i
                                }
                                var a, u, s, c
                            }(S, A, e, i)) return s = null, void(ll(A) && x.remove(e));
                        if (ll(A) && A.wrapper && hp(S, e, E, N)) s = null;
                        else { if (f && !t && ll(A) && !A.wrapper && tl(S, r) && nl(S, i, d)) { var a = x.rename(e, d); return k(a), w.push(a), void(s = null) } if (fl(A)) { var u = g(_, e); if (!u && V(o) && ml(A) && (u = g(_, o)), !dl(A) || u) return void(s = null) }!f || t || !nl(S, d, r) || !nl(S, i, d) || !l && jn(e) && xo(e.data) || zc(e) || dl(A) && x.isBlock(e) ? (s = null, Y(xe(e.childNodes), c), t && (f = n), s = null) : (s || (s = x.clone(m, !1), e.parentNode.insertBefore(s, e), w.push(s)), s.appendChild(e)) }
                    };
                    Y(e, c)
                }), !0 === A.links && Y(w, function(e) {
                    var t = function(e) { "A" === e.nodeName && k(e, A), Y(xe(e.childNodes), t) };
                    t(e)
                }), Y(w, function(e) {
                    var n, t, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y = (n = 0, Y(e.childNodes, function(e) {
                        var t;
                        V(t = e) && jn(t) && 0 === t.length || Yc(e) || n++
                    }), n);

                    function C(e) {
                        var t;
                        1 === e.nodeType && e.parentNode && 1 === e.parentNode.nodeType && (t = ul(m, e.parentNode), m.getStyle(e, "color") && t ? m.setStyle(e, "text-decoration", t) : m.getStyle(e, "text-decoration") === t && m.setStyle(e, "text-decoration", null))
                    }!(1 < w.length) && x.isBlock(e) || 0 !== y ? (dl(A) || ll(A) && A.wrapper) && (A.exact || 1 !== y || (e = M((d = e).childNodes, Mp).filter(function(e) { return Tg(x, e, A) }).map(function(e) { var t = x.clone(e, !1); return k(t), x.replace(t, d, !0), x.remove(e, !0), t }).getOr(d)), h = S, v = N, b = e, _h(_, function(t) {
                        var r, e, n;
                        dl(t) && _h(h.dom.select(t.inline, b), function(e) { wp(e) && Lp(h, t, v, e, t.exact ? e : null) }), r = h.dom, (e = t).clear_child_styles && (n = e.links ? "*:not(a)" : "*", xh(r.select(n, b), function(n) { wp(n) && xh(e.styles, function(e, t) { r.setStyle(n, t, "") }) }))
                    }), s = A, hp(u = S, (f = e).parentNode, c = E, l = N) && Lp(u, s, l, f) || s.merge_with_parents && u.dom.getParent(f.parentNode, function(e) { if (hp(u, e, c, l)) return Lp(u, s, l, f), !0 }), a = e, (i = A).styles && i.styles.backgroundColor && wh(a, kp(x, "fontSize"), _p(x, "backgroundColor", rl(i.styles.backgroundColor, N))), m = x, p = e, (g = A).styles && (g.styles.color || g.styles.textDecoration) && (Et.walk(p, C, "childNodes"), C(p)), t = x, o = e, !dl(r = A) || "sub" !== r.inline && "sup" !== r.inline || (wh(o, kp(t, "fontSize"), _p(t, "fontSize", "")), t.remove(t.select("sup" === r.inline ? "sub" : "sup", o), !0)), Np(x, A, 0, e)) : x.remove(e, !0)
                })
            }
            var e, t, n, i, _ = S.formatter.get(E),
                A = _[0],
                a = !r && S.selection.isCollapsed(),
                u = S.dom,
                s = S.selection;
            if ("false" !== u.getContentEditable(s.getNode())) A && (r ? Qc(r) ? g(_, r) || ((e = u.createRng()).setStartBefore(r), e.setEndAfter(r), o(u, Sl(S, e, _), !0)) : o(u, r, !0) : a && dl(A) && !_l(S).length ? function(e, t, n) {
                var r, o = e.selection,
                    i = o.getRng(),
                    a = i.startOffset,
                    u = i.startContainer.nodeValue,
                    s = Hc(e.getBody(), o.getStart());
                s && (r = Lg(s));
                var c, l, f, d, m = /[^\s\u00a0\u00ad\u200b\ufeff]/;
                u && 0 < a && a < u.length && m.test(u.charAt(a)) && m.test(u.charAt(a - 1)) ? (c = o.getBookmark(), i.collapse(!0), l = Tf(Sl(e, i, e.formatter.get(t))), e.formatter.apply(t, n, l), o.moveToBookmark(c)) : (s && r.nodeValue === vp || (f = e.getDoc(), d = Ig(!0).dom, r = (s = f.importNode(d, !0)).firstChild, i.insertNode(s), a = 1), e.formatter.apply(t, n, s), o.setCursorLocation(r, a))
            }(S, E, N) : (t = s.getNode(), n = _[0], S.settings.forced_root_block || !n.defaultBlock || u.getParent(t, u.isBlock) || Rh(S, n.defaultBlock), s.setRng(vg(s.getRng())), Bl(s, !0, function() {
                Ol(S, function(e, t) {
                    var n = t ? e : Sl(S, e, _);
                    o(u, n, !1)
                })
            }), Zc(u, s, s.getRng()), S.nodeChanged()), i = S, xp(yp[E], function(e) { e(i) })), bf(S, E, r, N);
            else {
                r = s.getNode();
                for (var c = 0, l = _.length; c < l; c++) { var f = _[c]; if (f.ceFalseOverride && fl(f) && u.is(r, f.selector)) { k(r, f); break } }
                bf(S, E, r, N)
            }
        },
        Dh = function(e) { return e.selection.getStart() },
        Th = function(i, a, e) {
            var u = zp(i, a);
            ne(e, function(e, o) {
                function t(e) {
                    var t, n = Up(i, u, o, e.similar, Fp(e) ? e.vars : void 0),
                        r = n.isSome();
                    e.state.get() !== r && (e.state.set(r), t = n.getOr(a), Fp(e) ? e.callback(r, { node: t, format: o, parents: u }) : Y(e.callbacks, function(e) { return e(r, { node: t, format: o, parents: u }) }))
                }
                Y([e.withSimilar, e.withoutSimilar], t), Y(e.withVars, t)
            })
        },
        Oh = Re(function() { return document.implementation.createHTMLDocument("undo") });

    function Bh(e) { return e.select }

    function Ph(e) { return e && e.ownerDocument && Ve(Nt.fromDom(e.ownerDocument), Nt.fromDom(e)) }

    function Lh(a, u, e, s) {
        function t(e, t) { return yh(s, e, t) }

        function n() {
            var e = c(),
                t = null == e ? void 0 : e.anchorNode,
                n = null == e ? void 0 : e.focusNode;
            if (!e || !t || !n || rn(t) || rn(n)) return !0;
            var r = a.createRng();
            r.setStart(t, e.anchorOffset), r.collapse(!0);
            var o = a.createRng();
            return o.setStart(n, e.focusOffset), o.collapse(!0), r.compareBoundaryPoints(r.START_TO_START, o) <= 0
        }

        function r(e) {
            var t = p();
            t.collapse(!!e), h(t)
        }

        function c() { return u.getSelection ? u.getSelection() : u.document.selection }
        var l, f, o, i, d, m, g = function(e, t) {
                return d || (d = {}, m = {}, i.on("NodeChange", function(e) {
                    var n = e.element,
                        r = x(n),
                        o = {};
                    Et.each(d, function(e, n) { C(n, r).each(function(t) { m[n] || (Y(e, function(e) { e(!0, { node: t, selector: n, parents: r }) }), m[n] = e), o[n] = e }) }), Et.each(m, function(e, t) { o[t] || (delete m[t], Et.each(e, function(e) { e(!1, { node: n, selector: t, parents: r }) })) })
                })), d[e] || (d[e] = []), d[e].push(t), C(e, x(i.selection.getStart())).each(function() { m[e] = d[e] }), { unbind: function() { Ch(d, e, t), Ch(m, e, t) } }
            },
            p = function() {
                function e(e, t, n) { try { return t.compareBoundaryPoints(e, n) } catch (e) { return -1 } }
                var t, n, r, o = u.document;
                if (void 0 !== s.bookmark && !1 === vd(s)) { var i = ld(s); if (i.isSome()) return i.map(function(e) { return wd(s, [e])[0] }).getOr(o.createRange()) }
                try {
                    (t = c()) && !rn(t.anchorNode) && (n = 0 < t.rangeCount ? t.getRangeAt(0) : (t.createRange ? t : o).createRange(), n = wd(s, [n])[0])
                } catch (e) {}
                return (n = n || (o.createRange ? o.createRange() : o.body.createTextRange())).setStart && 9 === n.startContainer.nodeType && n.collapsed && (r = a.getRoot(), n.setStart(r, 0), n.setEnd(r, 0)), l && f && (0 === e(n.START_TO_START, n, l) && 0 === e(n.END_TO_END, n, l) ? n = f : f = l = null), n
            },
            h = function(e, t) {
                var n;
                if ((r = e) && (Bh(r) || Ph(r.startContainer) && Ph(r.endContainer))) {
                    var r, o = Bh(e) ? e : null;
                    if (o) { f = null; try { o.select() } catch (e) {} } else {
                        var i = c();
                        if (e = s.fire("SetSelectionRange", { range: e, forward: t }).range, i) { f = e; try { i.removeAllRanges(), i.addRange(e) } catch (e) {}!1 === t && i.extend && (i.collapse(e.endContainer, e.endOffset), i.extend(e.startContainer, e.startOffset)), l = 0 < i.rangeCount ? i.getRangeAt(0) : null }
                        e.collapsed || e.startContainer !== e.endContainer || !i.setBaseAndExtent || xt.ie || e.endOffset - e.startOffset < 2 && e.startContainer.hasChildNodes() && (n = e.startContainer.childNodes[e.startOffset]) && "IMG" === n.tagName && (i.setBaseAndExtent(e.startContainer, e.startOffset, e.endContainer, e.endOffset), i.anchorNode === e.startContainer && i.focusNode === e.endContainer || i.setBaseAndExtent(n, 0, n, 1)), s.fire("AfterSetSelectionRange", { range: e, forward: t })
                    }
                }
            },
            v = {
                bookmarkManager: null,
                controlSelection: null,
                dom: o = a,
                win: u,
                serializer: e,
                editor: i = s,
                collapse: r,
                setCursorLocation: function(e, t) {
                    var n = a.createRng();
                    V(e) && V(t) ? (n.setStart(e, t), n.setEnd(e, t), h(n), r(!1)) : (Dl(a, n, s.getBody(), !0), h(n))
                },
                getContent: function(e) { return n = (t = void 0 === (t = e) ? {} : t).format || "html", r = t, hh(s).selection.getContent(n, r); var t, n, r },
                setContent: t,
                getBookmark: function(e, t) { return b.getBookmark(e, t) },
                moveToBookmark: function(e) { return b.moveToBookmark(e) },
                select: function(e, t) {
                    var r = a,
                        o = t;
                    return ve.from(e).map(function(e) {
                        var t = r.nodeIndex(e),
                            n = r.createRng();
                        return n.setStart(e.parentNode, t), n.setEnd(e.parentNode, t + 1), o && (Dl(r, n, e, !0), Dl(r, n, e, !1)), n
                    }).each(h), e
                },
                isCollapsed: function() {
                    var e = p(),
                        t = c();
                    return !(!e || e.item) && (e.compareEndPoints ? 0 === e.compareEndPoints("StartToEnd", e) : !t || e.collapsed)
                },
                isForward: n,
                setNode: function(e) { return t(a.getOuterHTML(e)), e },
                getNode: function() {
                    return function(e, t) {
                        if (!t) return e;
                        var n = t.startContainer,
                            r = t.endContainer,
                            o = t.startOffset,
                            i = t.endOffset,
                            a = t.commonAncestorContainer;
                        return !t.collapsed && (n === r && i - o < 2 && n.hasChildNodes() && (a = n.childNodes[o]), 3 === n.nodeType && 3 === r.nodeType && (n = n.length === o ? xd(n.nextSibling, !0) : n.parentNode, r = 0 === i ? xd(r.previousSibling, !1) : r.parentNode, n && n === r)) ? n : a && 3 === a.nodeType ? a.parentNode : a
                    }(s.getBody(), p())
                },
                getSel: c,
                setRng: h,
                getRng: p,
                getStart: function(e) { return yd(s.getBody(), p(), e) },
                getEnd: function(e) { return Cd(s.getBody(), p(), e) },
                getSelectedBlocks: function(e, t) {
                    return function(e, t, n, r) {
                        var o = [],
                            i = e.getRoot();
                        if (n = e.getParent(n || yd(i, t, t.collapsed), e.isBlock), r = e.getParent(r || Cd(i, t, t.collapsed), e.isBlock), n && n !== i && o.push(n), n && r && n !== r)
                            for (var a, u = new Rr(n, i);
                                (a = u.next()) && a !== r;) e.isBlock(a) && o.push(a);
                        return r && n !== r && r !== i && o.push(r), o
                    }(a, p(), e, t)
                },
                normalize: function() { var e = p(); if (1 < Nl(c()).length || !Tl(s)) return e; var t = Rf(a, e); return t.each(function(e) { h(e, n()) }), t.getOr(e) },
                selectorChanged: function(e, t) { return g(e, t), v },
                selectorChangedWithUnbind: g,
                getScrollContainer: function() {
                    for (var e, t = a.getRoot(); t && "BODY" !== t.nodeName;) {
                        if (t.scrollHeight > t.clientHeight) { e = t; break }
                        t = t.parentNode
                    }
                    return e
                },
                scrollIntoView: function(e, t) { V(e) ? (s.inline ? Gf : Qf)(s, e, t) : Zf(s, p(), t) },
                placeCaretAt: function(e, t) { return h(wf(e, t, s.getDoc())) },
                getBoundingClientRect: function() { var e = p(); return e.collapsed ? as.fromRangeStart(e).getClientRects()[0] : e.getBoundingClientRect() },
                destroy: function() { u = l = f = null, y.destroy() }
            },
            b = Fl(v),
            y = Cf(v, s);

        function C(t, e) { return M(e, function(e) { return o.is(e, t) }) }

        function x(e) { return o.getParents(e, null, o.getRoot()) }
        return v.bookmarkManager = b, v.controlSelection = y, v
    }

    function Ih(e, t) {
        var n, r, a, u, o = ro();
        t.convert_fonts_to_spans && (r = e, a = o, u = Et.explode(t.font_size_legacy_values), r.addNodeFilter("font", function(e) {
            Y(e, function(e) {
                var t, n = a.parse(e.attr("style")),
                    r = e.attr("color"),
                    o = e.attr("face"),
                    i = e.attr("size");
                r && (n.color = r), o && (n["font-family"] = o), i && (n["font-size"] = u[parseInt(e.attr("size"), 10) - 1]), e.name = "span", e.attr("style", a.serialize(n)), t = e, Y(["color", "face", "size"], function(e) { t.attr(e, null) })
            })
        })), n = o, e.addNodeFilter("strike", function(e) {
            Y(e, function(e) {
                var t = n.parse(e.attr("style"));
                t["text-decoration"] = "line-through", e.name = "span", e.attr("style", n.serialize(t))
            })
        })
    }

    function Mh(e) {
        var t, n = decodeURIComponent(e).split(","),
            r = /data:([^;]+)/.exec(n[0]);
        return { type: t = r ? r[1] : t, data: n[1] }
    }

    function Fh(e, t) { var n; try { n = atob(t) } catch (e) { return ve.none() } for (var r = new Uint8Array(n.length), o = 0; o < r.length; o++) r[o] = n.charCodeAt(o); return ve.some(new Blob([r], { type: e })) }

    function Uh(e) {
        return 0 === e.indexOf("blob:") ? (o = e, new kr(function(e, t) {
            function n() { t("Cannot convert " + o + " to Blob. Resource might not exist or is inaccessible.") }
            try {
                var r = new XMLHttpRequest;
                r.open("GET", o, !0), r.responseType = "blob", r.onload = function() { 200 === r.status ? e(r.response) : n() }, r.onerror = n, r.send()
            } catch (e) { n() }
        })) : 0 === e.indexOf("data:") ? (n = e, new kr(function(e) {
            var t = Mh(n);
            Fh(t.type, t.data).fold(function() { return e(new Blob([])) }, e)
        })) : null;
        var o, n
    }

    function zh(e) { return (e || "blobid") + lv++ }

    function Hh(r, d) {
        var o = {};
        return {
            findAll: function(e, n) {
                n = n || w;
                var t = T(U(e ? xe(e.getElementsByTagName("img")) : [], function(e) { var t = e.src; return xt.fileApi && !e.hasAttribute("data-mce-bogus") && !e.hasAttribute("data-mce-placeholder") && t && t !== xt.transparentSrc && (0 === t.indexOf("blob:") ? !r.isUploaded(t) && n(e) : 0 === t.indexOf("data:") && n(e)) }), function(f) {
                    if (void 0 !== o[f.src]) return new kr(function(t) { o[f.src].then(function(e) { return "string" == typeof e ? e : void t({ image: f, blobInfo: e.blobInfo }) }) });
                    var e = new kr(function(e, t) {
                        var r, o, i, n, a, u, s, c, l;
                        r = d, i = e, n = t, 0 !== (o = f).src.indexOf("blob:") ? (u = (a = Mh(o.src)).data, s = a.type, c = u, (l = r.getByData(c, s)) ? i({ image: o, blobInfo: l }) : Uh(o.src).then(function(e) { l = r.create(zh(), e, c), r.add(l), i({ image: o, blobInfo: l }) }, function(e) { n(e) })) : (l = r.getByUri(o.src)) ? i({ image: o, blobInfo: l }) : Uh(o.src).then(function(t) {
                            var n = t;
                            new kr(function(e) {
                                var t = new FileReader;
                                t.onloadend = function() { e(t.result) }, t.readAsDataURL(n)
                            }).then(function(e) { c = Mh(e).data, l = r.create(zh(), t, c), r.add(l), i({ image: o, blobInfo: l }) })
                        }, function(e) { n(e) })
                    }).then(function(e) { return delete o[e.image.src], e }).catch(function(e) { return delete o[f.src], e });
                    return o[f.src] = e
                });
                return kr.all(t)
            }
        }
    }

    function jh(e, t, n, r) {
        (e.padd_empty_with_br || t.insert) && n[r.name] ? r.empty().append(new Ud("br", 1)).shortEnded = !0 : r.empty().append(new Ud("#text", 3)).value = yo
    }

    function Vh(n, e, t, r) { return r.isEmpty(e, t, function(e) { return (t = n.getElementRule(e.name)) && t.paddEmpty; var t }) }

    function qh(e, p) {
        var t, o, i, h = e.schema;

        function n(t) {
            var e, n, r = t.attr("src");
            (e = t).attr("src") === xt.transparentSrc || V(e.attr("data-mce-placeholder")) || V(t.attr("data-mce-bogus")) || ((n = /data:([^;]+);base64,([a-z0-9\+\/=\s]+)/i.exec(r)) ? ve.some({ type: n[1], data: decodeURIComponent(n[2]) }) : ve.none()).filter(function() { return function(e, t) { if (t.images_dataimg_filter) { var n = new Image; return n.src = e.attr("src"), ne(e.attributes.map, function(e, t) { n.setAttribute(t, e) }), t.images_dataimg_filter(n) } return !0 }(t, o) }).bind(function(e) {
                var t = e.type,
                    n = e.data;
                return ve.from(i.getByData(n, t)).orThunk(function() { return Fh(t, n).map(function(e) { var t = i.create(zh(), e, n); return i.add(t), t }) })
            }).each(function(e) { t.attr("src", e.blobUri()) })
        }
        p.remove_trailing_brs && e.addNodeFilter("br", function(e, t, n) {
            var r, o, i, a, u, s, c, l, f = e.length,
                d = Et.extend({}, h.getBlockElements()),
                m = h.getNonEmptyElements(),
                g = h.getWhiteSpaceElements();
            for (d.body = 1, r = 0; r < f; r++)
                if (i = (o = e[r]).parent, d[o.parent.name] && o === i.lastChild) {
                    for (u = o.prev; u;) {
                        if ("span" !== (s = u.name) || "bookmark" !== u.attr("data-mce-type")) { "br" === s && (o = null); break }
                        u = u.prev
                    }
                    o && (o.remove(), Vh(h, m, g, i) && (c = h.getElementRule(i.name)) && (c.removeEmpty ? i.remove() : c.paddEmpty && jh(p, n, d, i)))
                } else {
                    for (a = o; i && i.firstChild === a && i.lastChild === a && !d[(a = i).name];) i = i.parent;
                    a === i && !0 !== p.padd_empty_with_br && ((l = new Ud("#text", 3)).value = yo, o.replace(l))
                }
        }), e.addAttributeFilter("href", function(e) {
            var t, n, r = e.length;
            if (!p.allow_unsafe_link_target)
                for (; r--;) { var o = e[r]; "a" === o.name && "_blank" === o.attr("target") && o.attr("rel", (n = void 0, n = (t = o.attr("rel")) ? Et.trim(t) : "", /\b(noopener)\b/g.test(n) ? n : n.split(" ").filter(function(e) { return 0 < e.length }).concat(["noopener"]).sort().join(" "))) }
        }), p.allow_html_in_named_anchor || e.addAttributeFilter("id,name", function(e) {
            for (var t, n, r, o, i = e.length; i--;)
                if ("a" === (o = e[i]).name && o.firstChild && !o.attr("href"))
                    for (r = o.parent, t = o.lastChild; n = t.prev, r.insert(t, o), t = n;);
        }), p.fix_list_elements && e.addNodeFilter("ul,ol", function(e) { for (var t, n, r, o = e.length; o--;) "ul" !== (r = (n = e[o]).parent).name && "ol" !== r.name || (n.prev && "li" === n.prev.name ? n.prev.append(n) : ((t = new Ud("li", 1)).attr("style", "list-style-type: none"), n.wrap(t))) }), p.validate && h.getValidClasses() && e.addAttributeFilter("class", function(e) {
            for (var t = h.getValidClasses(), n = e.length; n--;) {
                for (var r = e[n], o = r.attr("class").split(" "), i = "", a = 0; a < o.length; a++) {
                    var u = o[a],
                        s = !1,
                        c = t["*"];
                    c && c[u] && (s = !0), c = t[r.name], (s = !(s || !c || !c[u]) || s) && (i && (i += " "), i += u)
                }
                i.length || (i = null), r.attr("class", i)
            }
        }), t = e, (i = (o = p).blob_cache) && t.addAttributeFilter("src", function(e) { return Y(e, n) })
    }

    function $h(_, A) {
        void 0 === A && (A = to());
        var R = {},
            D = [],
            T = {},
            O = {};
        (_ = _ || {}).validate = !("validate" in _) || _.validate, _.root_name = _.root_name || "body";

        function B(e) {
            var t = e.name;
            t in R && ((r = T[t]) ? r.push(e) : T[t] = [e]);
            for (var n = D.length; n--;) {
                var r, o = D[n].name;
                o in e.attributes.map && ((r = O[o]) ? r.push(e) : O[o] = [e])
            }
            return e
        }
        var e = {
            schema: A,
            addAttributeFilter: function(e, n) {
                mv(gv(e), function(e) {
                    for (var t = 0; t < D.length; t++)
                        if (D[t].name === e) return void D[t].callbacks.push(n);
                    D.push({ name: e, callbacks: [n] })
                })
            },
            getAttributeFilters: function() { return [].concat(D) },
            addNodeFilter: function(e, n) {
                mv(gv(e), function(e) {
                    var t = R[e];
                    t || (R[e] = t = []), t.push(n)
                })
            },
            getNodeFilters: function() { var e, t = []; for (e in R) Ne(R, e) && t.push({ name: e, callbacks: R[e] }); return t },
            filterNode: B,
            parse: function(e, u) {
                var t, n, r, o, i, s, a, c, l = [];

                function f(e) {
                    for (var t = A.getBlockElements(), n = e.prev; n && 3 === n.type;) {
                        var r = n.value.replace(x, "");
                        if (0 < r.length) return n.value = r, 0;
                        var o = n.next;
                        if (o) { if (3 === o.type && o.value.length) { n = n.prev; continue } if (!t[o.name] && "script" !== o.name && "style" !== o.name) { n = n.prev; continue } }
                        var i = n.prev;
                        n.remove(), n = i
                    }
                }
                u = u || {}, T = {}, O = {};

                function d(e, t) { var n, r = new Ud(e, t); return e in R && ((n = T[e]) ? n.push(r) : T[e] = [r]), r }
                var m = pv(dv("script,style,head,html,body,title,meta,param"), A.getBlockElements()),
                    g = A.getNonEmptyElements(),
                    p = A.children,
                    h = _.validate,
                    v = ("forced_root_block" in u ? u : _).forced_root_block,
                    b = !1 === v ? "" : !0 === v ? "p" : v,
                    y = A.getWhiteSpaceElements(),
                    C = /^[ \t\r\n]+/,
                    x = /[ \t\r\n]+$/,
                    w = /[ \t\r\n]+/g,
                    S = /^[ \t\r\n]+$/,
                    E = Ne(y, u.context) || Ne(y, _.root_name),
                    N = Gd({
                        validate: h,
                        document: _.document,
                        allow_html_data_urls: _.allow_html_data_urls,
                        allow_svg_data_urls: _.allow_svg_data_urls,
                        allow_script_urls: _.allow_script_urls,
                        allow_conditional_comments: _.allow_conditional_comments,
                        preserve_cdata: _.preserve_cdata,
                        self_closing_elements: function(e) { var t, n = {}; for (t in e) "li" !== t && "p" !== t && (n[t] = e[t]); return n }(A.getSelfClosingElements()),
                        cdata: function(e) { c.append(d("#cdata", 4)).value = e },
                        text: function(e, t) {
                            var n, r;
                            E || (e = e.replace(w, " "), (r = c.lastChild) && (Ne(m, r.name) || "br" === r.name) && (e = e.replace(C, ""))), 0 !== e.length && ((n = d("#text", 3)).raw = !!t, c.append(n).value = e)
                        },
                        comment: function(e) { c.append(d("#comment", 8)).value = e },
                        pi: function(e, t) { c.append(d(e, 7)).value = t, f(c) },
                        doctype: function(e) { c.append(d("#doctype", 10)).value = e, f(c) },
                        start: function(e, t, n) {
                            var r = h ? A.getElementRule(e) : {};
                            if (r) {
                                var o = d(r.outputName || e, 1);
                                o.attributes = t, o.shortEnded = n, c.append(o);
                                var i = p[c.name];
                                i && p[o.name] && !i[o.name] && l.push(o);
                                for (var a = D.length; a--;) {
                                    var u = D[a].name;
                                    u in t.map && ((s = O[u]) ? s.push(o) : O[u] = [o])
                                }
                                m[e] && f(o), n || (c = o), !E && y[e] && (E = !0)
                            }
                        },
                        end: function(e) {
                            var t, n, r, o, i, a = h ? A.getElementRule(e) : {};
                            if (a) {
                                if (m[e] && !E) {
                                    if ((t = c.firstChild) && 3 === t.type)
                                        if (0 < (n = t.value.replace(C, "")).length) t.value = n, t = t.next;
                                        else
                                            for (r = t.next, t.remove(), t = r; t && 3 === t.type;) n = t.value, r = t.next, 0 !== n.length && !S.test(n) || (t.remove(), t = r), t = r;
                                    if ((t = c.lastChild) && 3 === t.type)
                                        if (0 < (n = t.value.replace(x, "")).length) t.value = n, t = t.prev;
                                        else
                                            for (r = t.prev, t.remove(), t = r; t && 3 === t.type;) n = t.value, r = t.prev, 0 !== n.length && !S.test(n) || (t.remove(), t = r), t = r
                                }
                                if (E && y[e] && (E = !1), a.removeEmpty && Vh(A, g, y, c)) return o = c.parent, m[c.name] ? c.empty().remove() : c.unwrap(), void(c = o);
                                a.paddEmpty && (fv(i = c, "#text") && i.firstChild.value === yo || Vh(A, g, y, c)) && jh(_, u, m, c), c = c.parent
                            }
                        }
                    }, A),
                    k = c = new Ud(u.context || _.root_name, 11);
                if (N.parse(e, u.format), h && l.length && (u.context ? u.invalid = !0 : function(e) {
                        for (var t = dv("tr,td,th,tbody,thead,tfoot,table"), n = A.getNonEmptyElements(), r = A.getWhiteSpaceElements(), o = A.getTextBlockElements(), i = A.getSpecialElements(), a = function(e, t) {
                                if (void 0 === t && (t = e.parent), i[e.name]) e.empty().remove();
                                else {
                                    for (var n = 0, r = e.children(); n < r.length; n++) {
                                        var o = r[n];
                                        A.isValidChild(t.name, o.name) || a(o, t)
                                    }
                                    e.unwrap()
                                }
                            }, u = 0; u < e.length; u++) {
                            var s, c = e[u],
                                l = void 0,
                                f = void 0;
                            if (c.parent && !c.fixed)
                                if (o[c.name] && "li" === c.parent.name) {
                                    for (var d = c.next; d && o[d.name];) d.name = "li", d.fixed = !0, c.parent.insert(d, c.parent), d = d.next;
                                    c.unwrap()
                                } else {
                                    for (var m = [c], l = c.parent; l && !A.isValidChild(l.name, c.name) && !t[l.name]; l = l.parent) m.push(l);
                                    if (l && 1 < m.length)
                                        if (A.isValidChild(l.name, c.name)) {
                                            m.reverse();
                                            for (var g = s = B(m[0].clone()), p = 0; p < m.length - 1; p++) {
                                                A.isValidChild(g.name, m[p].name) ? (f = B(m[p].clone()), g.append(f)) : f = g;
                                                for (var h = m[p].firstChild; h && h !== m[p + 1];) {
                                                    var v = h.next;
                                                    f.append(h), h = v
                                                }
                                                g = f
                                            }
                                            Vh(A, n, r, s) ? l.insert(c, m[0], !0) : (l.insert(s, m[0], !0), l.insert(c, s)), l = m[0], (Vh(A, n, r, l) || fv(l, "br")) && l.empty().remove()
                                        } else a(c);
                                    else c.parent && ("li" !== c.name ? A.isValidChild(c.parent.name, "div") && A.isValidChild("div", c.name) ? c.wrap(B(new Ud("div", 1))) : a(c) : !(d = c.prev) || "ul" !== d.name && "ol" !== d.name ? !(d = c.next) || "ul" !== d.name && "ol" !== d.name ? c.wrap(B(new Ud("ul", 1))) : d.insert(c, d.firstChild, !0) : d.append(c))
                                }
                        }
                    }(l)), b && ("body" === k.name || u.isRootContent) && function() {
                        function e(e) { e && ((t = e.firstChild) && 3 === t.type && (t.value = t.value.replace(C, "")), (t = e.lastChild) && 3 === t.type && (t.value = t.value.replace(x, ""))) }
                        var t = k.firstChild,
                            n = null;
                        if (A.isValidChild(k.name, b.toLowerCase())) {
                            for (; t;) {
                                var r = t.next;
                                3 === t.type || 1 === t.type && "p" !== t.name && !m[t.name] && !t.attr("data-mce-type") ? (n || ((n = d(b, 1)).attr(_.forced_root_block_attrs), k.insert(n, t)), n.append(t)) : (e(n), n = null), t = r
                            }
                            e(n)
                        }
                    }(), !u.invalid) {
                    for (a in T)
                        if (Ne(T, a)) { for (s = R[a], o = (t = T[a]).length; o--;) t[o].parent || t.splice(o, 1); for (n = 0, r = s.length; n < r; n++) s[n](t, a, u) }
                    for (n = 0, r = D.length; n < r; n++)
                        if ((s = D[n]).name in O) { for (o = (t = O[s.name]).length; o--;) t[o].parent || t.splice(o, 1); for (o = 0, i = s.callbacks.length; o < i; o++) s.callbacks[o](t, s.name, u) }
                }
                return k
            }
        };
        return qh(e, _), _.inline_styles && Ih(e, _), e
    }

    function Wh(e, t, n) {-1 === Et.inArray(t, n) && (e.addAttributeFilter(n, function(e, t) { for (var n = e.length; n--;) e[n].attr(t, null) }), t.push(n)) }

    function Kh(L, I) {
        var e = ["data-mce-selected"],
            M = I && I.dom ? I.dom : Ja.DOM,
            F = I && I.schema ? I.schema : to(L);
        L.entity_encoding = L.entity_encoding || "named", L.remove_trailing_brs = !("remove_trailing_brs" in L) || L.remove_trailing_brs;
        var t, U = $h(L, F),
            s = L,
            c = M;
        return (t = U).addAttributeFilter("data-mce-tabindex", function(e, t) {
            for (var n = e.length; n--;) {
                var r = e[n];
                r.attr("tabindex", r.attr("data-mce-tabindex")), r.attr(t, null)
            }
        }), t.addAttributeFilter("src,href,style", function(e, t) {
            for (var n = "data-mce-" + t, r = s.url_converter, o = s.url_converter_scope, i = e.length; i--;) {
                var a = e[i],
                    u = a.attr(n);
                void 0 !== u ? (a.attr(t, 0 < u.length ? u : null), a.attr(n, null)) : (u = a.attr(t), "style" === t ? u = c.serializeStyle(c.parseStyle(u), a.name) : r && (u = r.call(o, u, t, a.name)), a.attr(t, 0 < u.length ? u : null))
            }
        }), t.addAttributeFilter("class", function(e) {
            for (var t = e.length; t--;) {
                var n, r = e[t];
                r.attr("class") && (n = r.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ""), r.attr("class", 0 < n.length ? n : null))
            }
        }), t.addAttributeFilter("data-mce-type", function(e, t, n) { for (var r = e.length; r--;) { var o = e[r]; "bookmark" !== o.attr("data-mce-type") || n.cleanup || (ve.from(o.firstChild).exists(function(e) { return !xo(e.value) }) ? o.unwrap() : o.remove()) } }), t.addNodeFilter("noscript", function(e) {
            for (var t = e.length; t--;) {
                var n = e[t].firstChild;
                n && (n.value = Go.decode(n.value))
            }
        }), t.addNodeFilter("script,style", function(e, t) {
            for (var n = function(e) { return e.replace(/(<!--\[CDATA\[|\]\]-->)/g, "\n").replace(/^[\r\n]*|[\r\n]*$/g, "").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, "").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, "") }, r = e.length; r--;) {
                var o, i = e[r],
                    a = i.firstChild ? i.firstChild.value : "";
                "script" === t ? ((o = i.attr("type")) && i.attr("type", "mce-no/type" === o ? null : o.replace(/^mce\-/, "")), "xhtml" === s.element_format && 0 < a.length && (i.firstChild.value = "// <![CDATA[\n" + n(a) + "\n// ]]>")) : "xhtml" === s.element_format && 0 < a.length && (i.firstChild.value = "\x3c!--\n" + n(a) + "\n--\x3e")
            }
        }), t.addNodeFilter("#comment", function(e) {
            for (var t = e.length; t--;) {
                var n = e[t];
                s.preserve_cdata && 0 === n.value.indexOf("[CDATA[") ? (n.name = "#cdata", n.type = 4, n.value = c.decode(n.value.replace(/^\[CDATA\[|\]\]$/g, ""))) : 0 === n.value.indexOf("mce:protected ") && (n.name = "#text", n.type = 3, n.raw = !0, n.value = unescape(n.value).substr(14))
            }
        }), t.addNodeFilter("xml:namespace,input", function(e, t) {
            for (var n = e.length; n--;) {
                var r = e[n];
                7 === r.type ? r.remove() : 1 === r.type && ("input" !== t || r.attr("type") || r.attr("type", "text"))
            }
        }), t.addAttributeFilter("data-mce-type", function(e) { Y(e, function(e) { "format-caret" === e.attr("data-mce-type") && (e.isEmpty(t.schema.getNonEmptyElements()) ? e.remove() : e.unwrap()) }) }), t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize,data-mce-placeholder", function(e, t) { for (var n = e.length; n--;) e[n].attr(t, null) }), {
            schema: F,
            addNodeFilter: U.addNodeFilter,
            addAttributeFilter: U.addAttributeFilter,
            serialize: function(e, t) {
                var n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C, x, w, S, E, N, k, _, A, R, D, T = _e({ format: "html" }, t = void 0 === t ? {} : t),
                    O = (n = (m = e, E = g = T, (d = I) && d.hasEventListeners("PreProcess") && !E.no_events ? (h = g, x = (p = d).dom, w = m.cloneNode(!0), (S = document.implementation).createHTMLDocument && (b = S.createHTMLDocument(""), Et.each("BODY" === w.nodeName ? w.childNodes : [w], function(e) { b.body.appendChild(b.importNode(e, !0)) }), w = "BODY" !== w.nodeName ? b.body.firstChild : b.body, v = x.doc, x.doc = b), y = p, C = _e(_e({}, h), { node: w }), y.fire("PreProcess", C), v && (x.doc = v), w) : m), o = wo((r = T).getInner ? n.innerHTML : M.getOuterHTML(n)), r.selection || vo(Nt.fromDom(n)) ? o : Et.trim(o)),
                    B = (i = U, a = O, s = (u = T).selection ? _e({ forced_root_block: !1 }, u) : u, c = i.parse(a, s), !P(f = c.lastChild) || P(l = f.prev) && (f.remove(), l.remove()), c);

                function P(e) { return e && "br" === e.name }
                return "tree" === T.format ? B : (N = I, k = T, _ = B, D = nm(L, F).serialize(_), k.no_events || !N ? D : (A = N, R = _e(_e({}, k), { content: D }), A.fire("PostProcess", R).content))
            },
            addRules: F.addValidElements,
            setRules: F.setValidElements,
            addTempAttr: A(Wh, U, e),
            getTempAttrs: J(e),
            getNodeFilters: U.getNodeFilters,
            getAttributeFilters: U.getAttributeFilters
        }
    }

    function Xh(e, t) { var n = Kh(e, t); return { schema: n.schema, addNodeFilter: n.addNodeFilter, addAttributeFilter: n.addAttributeFilter, serialize: n.serialize, addRules: n.addRules, setRules: n.setRules, addTempAttr: n.addTempAttr, getTempAttrs: n.getTempAttrs, getNodeFilters: n.getNodeFilters, getAttributeFilters: n.getAttributeFilters } }

    function Yh(e, t, n) { return r = n = void 0 === n ? {} : n, ph(e).editor.setContent(t, r); var r }

    function Gh(e) { return ve.from(e).each(function(e) { return e.destroy() }) }

    function Jh(e, t) {
        var n, r, o, i, a, u, s, c = (n = e, r = U(bv, function(e) { return Ne(n, e) }), !1 !== (o = n.forced_root_block) && "" !== o || r.push("forced_root_block (false only)"), W(r)),
            l = (s = Et.makeMap(t.plugins, " "), W(Ae(Ae([], U(yv, g), !0), H(Cv, function(e) { return g(e) ? [e + " (moving to premium)"] : [] }), !0))),
            f = 0 < l.length,
            d = 0 < c.length,
            m = "mobile" === t.theme;

        function g(e) { return Ne(s, e) }(f || d || m) && (i = m ? "\n\nThemes:\n- mobile" : "", a = f ? "\n\nPlugins:\n- " + l.join("\n- ") : "", u = d ? "\n\nSettings:\n- " + c.join("\n- ") : "", console.warn("The following deprecated features are currently enabled, these will be removed in TinyMCE 6.0. See https://www.tiny.cloud/docs/release-notes/6.0-upcoming-changes/ for more information." + i + a + u))
    }

    function Qh(e) { var t = S(e) ? e.join(" ") : e; return U(T(X(t) ? t.split(" ") : [], Je), function(e) { return 0 < e.length }) }

    function Zh(e, t) { return Ne(e.sections(), t) }

    function ev(e, t) { return ue(e, "toolbar_mode").orThunk(function() { return ue(e, "toolbar_drawer").map(function(e) { return !1 === e ? "wrap" : e }) }).getOr(t) }

    function tv(e, t, n, r) {
        var o, i, a, u, s, c, l, f, d = Qh(n.forced_plugins),
            m = Qh(r.plugins),
            g = Zh(o = t, "mobile") ? o.sections().mobile : {},
            p = g.plugins ? Qh(g.plugins) : m,
            h = (i = (u = t, s = m, c = p, (a = e) && (0, f = (l = u).sections(), Zh(l, "mobile") && "mobile" === f.mobile.theme) ? U(c, A(D, Nv)) : a && Zh(u, "mobile") ? c : s), [].concat(Qh(d)).concat(Qh(i)));
        if (xt.browser.isIE() && D(h, "rtc")) throw new Error("RTC plugin is not supported on IE 11.");
        return Et.extend(r, { plugins: h.join(" ") })
    }

    function nv(e, t, n, r, o) {
        var i, a, u, s, c, l, f, d, m = e ? { mobile: (i = t, a = { resize: !1, toolbar_mode: ev(o.mobile || {}, "scrolling"), toolbar_sticky: !1 }, _e(_e(_e({}, kv), a), i ? { menubar: !1 } : {})) } : {},
            g = (c = ["mobile"], ie(vv(m, o), function(e, t) { return D(c, t) }, oe(l = {}), oe(f = {})), { sections: J((d = { t: l, f: f }).t), settings: J(d.f) }),
            p = Et.extend(n, r, g.settings(), e && Zh(g, "mobile") ? function(e) { void 0 === e && (e = {}); var t = ue(g.sections(), "mobile").getOr({}); return Et.extend({}, e, t) }() : {}, { validate: !0, external_plugins: (u = r, s = g.settings().external_plugins || {}, u && u.external_plugins ? Et.extend({}, u.external_plugins, s) : s) });
        return tv(e, g, r, p)
    }

    function rv(e, t, n) { return ve.from(t.settings[n]).filter(e) }

    function ov(e, t) { return t.dom[e] }

    function iv(e, t) { return parseInt(xn(t, e), 10) }

    function av(e, t, n) {
        var r, o, i, a, u, s, c = Nt.fromDom(e.getBody()),
            l = e.inline ? c : Nt.fromDom(Dt(c).dom.documentElement),
            f = (r = e.inline, i = t, a = n, u = (o = l).dom.getBoundingClientRect(), { x: i - (r ? u.left + o.dom.clientLeft + Tv(o) : 0), y: a - (r ? u.top + o.dom.clientTop + Dv(o) : 0) }),
            d = f.x,
            m = f.y,
            g = Av(s = l),
            p = Rv(s);
        return 0 <= d && 0 <= m && d <= g && m <= p
    }

    function uv(o) {
        function i() {
            var e = o.theme;
            return e && e.getNotificationManagerImpl ? e.getNotificationManagerImpl() : { open: t, close: t, reposition: t, getArgs: t };

            function t() { throw new Error("Theme did not provide a NotificationManager implementation.") }
        }

        function a() { return ve.from(c[0]) }

        function u() { 0 < c.length && i().reposition(c) }

        function s(t) { z(c, function(e) { return e === t }).each(function(e) { c.splice(e, 1) }) }

        function t(n, e) { if (void 0 === e && (e = !0), !o.removed && (r = (t = o).inline ? t.getBody() : t.getContentAreaContainer(), ve.from(r).map(Nt.fromDom).map(In).getOr(!1))) return e && o.fire("BeforeOpenNotification", { notification: n }), M(c, function(e) { return !((t = i().getArgs(e)).type !== n.type || t.text !== n.text || t.progressBar || t.timeout || n.progressBar || n.timeout); var t }).getOrThunk(function() { o.editorManager.setActive(o); var e = i().open(n, function() { s(e), u(), a().fold(function() { return o.focus() }, function(e) { return Nt.fromDom(e.getEl()).dom.focus() }) }); return c.push(e), u(), o.fire("OpenNotification", { notification: _e({}, e) }), e }); var t, r }
        var n, c = [],
            e = J(c);
        return (n = o).on("SkinLoaded", function() {
            var e = n.getParam("service_message");
            e && t({ text: e, type: "warning", timeout: 0 }, !1), u()
        }), n.on("show ResizeEditor ResizeWindow NodeChange", function() { _r.requestAnimationFrame(u) }), n.on("remove", function() { Y(c.slice(), function(e) { i().close(e) }) }), { open: t, close: function() { a().each(function(e) { i().close(e), s(e), u() }) }, getNotifications: e }
    }
    var sv, cv, lv = 0,
        fv = function(e, t) { return e && e.firstChild && e.firstChild === e.lastChild && e.firstChild.name === t },
        dv = Et.makeMap,
        mv = Et.each,
        gv = Et.explode,
        pv = Et.extend,
        hv = Ja.DOM,
        vv = (sv = function(e, t) { return h(e) && h(t) ? vv(e, t) : t }, function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; if (0 === e.length) throw new Error("Can't merge zero objects"); for (var n = {}, r = 0; r < e.length; r++) { var o, i = e[r]; for (o in i) Ne(i, o) && (n[o] = sv(n[o], i[o])) } return n }),
        bv = "autoresize_on_init,content_editable_state,convert_fonts_to_spans,inline_styles,padd_empty_with_br,block_elements,boolean_attributes,editor_deselector,editor_selector,elements,file_browser_callback_types,filepicker_validator_handler,force_hex_style_colors,force_p_newlines,gecko_spellcheck,images_dataimg_filter,media_scripts,mode,move_caret_before_on_enter_elements,non_empty_elements,self_closing_elements,short_ended_elements,special,spellchecker_select_languages,spellchecker_whitelist,tab_focus,table_responsive_width,text_block_elements,text_inline_elements,toolbar_drawer,types,validate,whitespace_elements,paste_word_valid_elements,paste_retain_style_properties,paste_convert_word_fake_lists".split(","),
        yv = "bbcode,colorpicker,contextmenu,fullpage,legacyoutput,spellchecker,textcolor".split(","),
        Cv = "imagetools,toc".split(","),
        xv = dt().deviceType,
        wv = xv.isTouch(),
        Sv = xv.isPhone(),
        Ev = xv.isTablet(),
        Nv = ["lists", "autolink", "autosave"],
        kv = { table_grid: !1, object_resizing: !1, resize: !1 },
        _v = (cv = {}, { add: function(e, t) { cv[e] = t }, get: function(e) { return cv[e] || { icons: {} } }, has: function(e) { return Ne(cv, e) } }),
        Av = A(ov, "clientWidth"),
        Rv = A(ov, "clientHeight"),
        Dv = A(iv, "margin-top"),
        Tv = A(iv, "margin-left"),
        Ov = su.PluginManager,
        Bv = su.ThemeManager;

    function Pv(r) {
        function o() {
            var e = r.theme;
            return e && e.getWindowManagerImpl ? e.getWindowManagerImpl() : { open: t, openUrl: t, alert: t, confirm: t, close: t, getParams: t, setParams: t };

            function t() { throw new Error("Theme did not provide a WindowManager implementation.") }
        }

        function i(n, r) { return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return r ? r.apply(n, e) : void 0 } }

        function n(t) { r.fire("CloseWindow", { dialog: t }), 0 === (u = U(u, function(e) { return e !== t })).length && r.focus() }

        function a(e) { r.editorManager.setActive(r), cd(r); var t, n = e(); return t = n, u.push(t), r.fire("OpenWindow", { dialog: t }), n }
        var u = [];
        return r.on("remove", function() { Y(u, function(e) { o().close(e) }) }), {
            open: function(e, t) { return a(function() { return o().open(e, t, n) }) },
            openUrl: function(e) { return a(function() { return o().openUrl(e, n) }) },
            alert: function(e, t, n) {
                var r = o();
                r.alert(e, i(n || r, t))
            },
            confirm: function(e, t, n) {
                var r = o();
                r.confirm(e, i(n || r, t))
            },
            close: function() { ve.from(u[u.length - 1]).each(function(e) { o().close(e), n(e) }) }
        }
    }

    function Lv(e, t) { e.notificationManager.open({ type: "error", text: t }) }

    function Iv(e, t) { e._skinLoaded ? Lv(e, t) : e.on("SkinLoaded", function() { Lv(e, t) }) }

    function Mv(e, t, n) { vf(e, t, { message: n }), console.error(n) }

    function Fv(e, t, n) { return n ? "Failed to load " + e + ": " + n + " from url " + t : "Failed to load " + e + " url: " + t }

    function Uv(e, t, n) { Mv(e, "PluginLoadError", Fv("plugin", t, n)) }

    function zv(e) {
        var t, n;
        e.contentCSS = e.contentCSS.concat(cy(e, (n = (t = e).getParam("content_css"), X(n) ? T(n.split(","), Je) : S(n) ? n : !1 === n || t.inline ? [] : ["default"])), cy(e, Ds(e)))
    }

    function Hv() {
        function n(e, t) { return { status: e, resultUri: t } }

        function t(e) { return e in r }
        var r = {};
        return { hasBlobUri: t, getResultUri: function(e) { var t = r[e]; return t ? t.resultUri : null }, isPending: function(e) { return !!t(e) && 1 === r[e].status }, isUploaded: function(e) { return !!t(e) && 2 === r[e].status }, markPending: function(e) { r[e] = n(1, null) }, markUploaded: function(e, t) { r[e] = n(2, t) }, removeFailed: function(e) { delete r[e] }, destroy: function() { r = {} } }
    }

    function jv(e) {
        return e + ly++ + ("s" + (new Date).getTime().toString(36) + t() + t() + t());

        function t() { return Math.round(4294967295 * Math.random()).toString(36) }
    }

    function Vv() {
        function e(e) { return M(n, e).getOrUndefined() }

        function i(e) {
            if (!e.blob || !e.base64) throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");
            var t = e.id || jv("blobid"),
                n = e.name || t,
                r = e.blob;
            return { id: J(t), name: J(n), filename: J(e.filename || n + "." + ({ "image/jpeg": "jpg", "image/jpg": "jpg", "image/gif": "gif", "image/png": "png", "image/apng": "apng", "image/avif": "avif", "image/svg+xml": "svg", "image/webp": "webp", "image/bmp": "bmp", "image/tiff": "tiff" }[r.type.toLowerCase()] || "dat")), blob: J(r), base64: J(e.base64), blobUri: J(e.blobUri || URL.createObjectURL(r)), uri: J(e.uri) }
        }

        function t(t) { return e(function(e) { return e.id() === t }) }
        var n = [];
        return { create: function(e, t, n, r, o) { if (X(e)) return i({ id: e, name: r, filename: o, blob: t, base64: n }); if (h(e)) return i(e); throw new Error("Unknown input type") }, add: function(e) { t(e.id()) || n.push(e) }, get: t, getByUri: function(t) { return e(function(e) { return e.blobUri() === t }) }, getByData: function(t, n) { return e(function(e) { return e.base64() === t && e.blob().type === n }) }, findFirst: e, removeByUri: function(t) { n = U(n, function(e) { return e.blobUri() !== t || void URL.revokeObjectURL(e.blobUri()) }) }, destroy: function() { Y(n, function(e) { URL.revokeObjectURL(e.blobUri()) }), n = [] } }
    }

    function qv(u, s) {
        function o(e, r, o, t) {
            var i = new XMLHttpRequest;
            i.open("POST", s.url), i.withCredentials = s.credentials, i.upload.onprogress = function(e) { t(e.loaded / e.total * 100) }, i.onerror = function() { o("Image upload failed due to a XHR Transport error. Code: " + i.status) }, i.onload = function() {
                var e, t, n;
                i.status < 200 || 300 <= i.status ? o("HTTP Error: " + i.status) : (e = JSON.parse(i.responseText)) && "string" == typeof e.location ? r((t = s.basePath, n = e.location, t ? t.replace(/\/$/, "") + "/" + n.replace(/^\//, "") : n)) : o("Invalid JSON: " + i.responseText)
            };
            var n = new FormData;
            n.append("file", e.blob(), e.filename()), i.send(n)
        }

        function c(e, t) { return { url: t, blobInfo: e, status: !0 } }

        function l(e, t, n) { return { url: "", blobInfo: e, status: !1, error: { message: t, options: n } } }

        function f(e, t) { Et.each(d[e], function(e) { e(t) }), delete d[e] }
        var d = {};
        return !1 === y(s.handler) && (s.handler = o), {
            upload: function(e, t) {
                return s.url || s.handler !== o ? (n = e, r = t, n = Et.grep(e, function(e) { return !u.isUploaded(e.blobUri()) }), kr.all(Et.map(n, function(e) {
                    return u.isPending(e.blobUri()) ? (n = e.blobUri(), new kr(function(e) { d[n] = d[n] || [], d[n].push(e) })) : (i = e, t = s.handler, a = r, u.markPending(i.blobUri()), new kr(function(r) {
                        var n;
                        try {
                            var o = function() { n && n.close() };
                            t(i, function(e) { o(), u.markUploaded(i.blobUri(), e), f(i.blobUri(), c(i, e)), r(c(i, e)) }, function(e, t) {
                                var n = t || {};
                                o(), u.removeFailed(i.blobUri()), f(i.blobUri(), l(i, e, n)), r(l(i, e, n))
                            }, function(t) {
                                t < 0 || 100 < t || ve.from(n).orThunk(function() { return ve.from(a).map(C) }).each(function(e) {
                                    (n = e).progressBar.value(t)
                                })
                            })
                        } catch (e) { r(l(i, e.message, {})) }
                    }));
                    var i, t, a, n
                }))) : new kr(function(e) { e([]) });
                var n, r
            }
        }
    }

    function $v(e) { return function() { return e.notificationManager.open({ text: e.translate("Image uploading..."), type: "info", timeout: -1, progressBar: !0 }) } }

    function Wv(e, t) { return qv(t, { url: e.getParam("images_upload_url", "", "string"), basePath: e.getParam("images_upload_base_path", "", "string"), credentials: e.getParam("images_upload_credentials", !1, "boolean"), handler: e.getParam("images_upload_handler", null, "function") }) }

    function Kv(l) {
        function t(t) { return function(e) { return l.selection ? t(e) : [] } }

        function r(e, t, n) { for (var r = 0; - 1 !== (r = e.indexOf(t, r)) && (e = e.substring(0, r) + n + e.substr(r + t.length), r += n.length - t.length + 1), -1 !== r;); return e }

        function o(e, t, n) { return e = r(e, 'src="' + t + '"', 'src="' + n + '"' + (n === xt.transparentSrc ? ' data-mce-placeholder="1"' : "")), r(e, 'data-mce-src="' + t + '"', 'data-mce-src="' + n + '"') }

        function f(t, n) { Y(l.undoManager.data, function(e) { "fragmented" === e.type ? e.fragments = T(e.fragments, function(e) { return o(e, t, n) }) : e.content = o(e.content, t, n) }) }

        function n(n) {
            return u = u || Wv(l, g), v().then(t(function(c) {
                var e = T(c, function(e) { return e.blobInfo });
                return u.upload(e, $v(l)).then(t(function(e) {
                    var s = [],
                        t = T(e, function(e, t) {
                            var n, r, o, i, a = c[t].blobInfo,
                                u = c[t].image;
                            return e.status && l.getParam("images_replace_blob_uris", !0, "boolean") ? (m.removeByUri(u.src), mh(l) || (r = u, o = e.url, i = l.convertURL(o, "src"), f(r.src, o), l.$(r).attr({ src: l.getParam("images_reuse_filename", !1, "boolean") ? o + (-1 === o.indexOf("?") ? "?" : "&") + (new Date).getTime() : o, "data-mce-src": i }))) : e.error && (e.error.options.remove && (f(u.getAttribute("src"), xt.transparentSrc), s.push(u)), n = e.error.message, Iv(l, uu.translate(["Failed to upload image: {0}", n]))), { element: u, status: e.status, uploadUri: e.url, blobInfo: a }
                        });
                    return 0 < t.length && h.fireIfChanged(), 0 < s.length && (mh(l) ? console.error("Removing images on failed uploads is currently unsupported for RTC") : l.undoManager.transact(function() { Y(s, function(e) { l.dom.remove(e), m.removeByUri(e.src) }) })), n && n(t), t
                }))
            }))
        }

        function e(e) { if (Ns(l)) return n(e) }

        function i(t) { return !1 !== j(p, function(e) { return e(t) }) && (0 !== t.getAttribute("src").indexOf("data:") || l.getParam("images_dataimg_filter", w, "function")(t)) }

        function a(e) { return e.replace(/src="(blob:[^"]+)"/g, function(e, n) { var t = g.getResultUri(n); if (t) return 'src="' + t + '"'; var r = (r = m.getByUri(n)) || L(l.editorManager.get(), function(e, t) { return e || t.editorUpload && t.editorUpload.blobCache.getByUri(n) }, null); return r ? 'src="data:' + r.blob().type + ";base64," + r.base64() + '"' : e }) }
        var u, s, c, d, m = Vv(),
            g = Hv(),
            p = [],
            h = (d = ru(null), (c = l).on("change AddUndo", function(e) { d.set(_e({}, e.level)) }), {
                fireIfChanged: function() {
                    var t = c.undoManager.data;
                    Z(t).filter(function(e) { return !sh(d.get(), e) }).each(function(e) { c.setDirty(!0), c.fire("change", { level: e, lastLevel: G(t, t.length - 2).getOrNull() }) })
                }
            }),
            v = function() { return (s = s || Hh(g, m)).findAll(l.getBody(), i).then(t(function(e) { return e = U(e, function(e) { return "string" != typeof e || void Iv(l, e) }), mh(l) || Y(e, function(e) { f(e.image.src, e.blobInfo.blobUri()), e.image.src = e.blobInfo.blobUri(), e.image.removeAttribute("data-mce-src") }), e })) };
        return l.on("SetContent", function() {
            (Ns(l) ? e : v)()
        }), l.on("RawSaveContent", function(e) { e.content = a(e.content) }), l.on("GetContent", function(e) { e.source_view || "raw" === e.format || "tree" === e.format || (e.content = a(e.content)) }), l.on("PostRender", function() {
            l.parser.addNodeFilter("img", function(e) {
                Y(e, function(e) {
                    var t, n = e.attr("src");
                    m.getByUri(n) || (t = g.getResultUri(n)) && e.attr("src", t)
                })
            })
        }), { blobCache: m, addFilter: function(e) { p.push(e) }, uploadImages: n, uploadImagesAuto: e, scanForImages: v, destroy: function() { m.destroy(), g.destroy(), s = u = null } }
    }

    function Xv(e, t) {
        function m(e) {
            o = "string" == typeof e ? { name: e, classes: [], attrs: {} } : e;
            var t, n = dy.create(o.name),
                r = n;
            return (t = o).classes.length && dy.addClass(r, t.classes.join(" ")), dy.setAttribs(r, t.attrs), n
        }
        var n, o, r, g = t && t.schema || to({}),
            p = function(n, e, t) {
                var r, o, i, a, u, s, c, l = 0 < e.length && e[0],
                    f = l && l.name,
                    d = (a = f, u = "string" != typeof(i = n) ? i.nodeName.toLowerCase() : i, !(!(c = (s = g.getElementRule(u)) && s.parentsRequired) || !c.length) && (a && -1 !== Et.inArray(c, a) ? a : c[0]));
                if (d) f === d ? (o = e[0], e = e.slice(1)) : o = d;
                else if (l) o = e[0], e = e.slice(1);
                else if (!t) return n;
                return o && (r = m(o)).appendChild(n), t && (r || (r = dy.create("div")).appendChild(n), Et.each(t, function(e) {
                    var t = m(e);
                    r.insertBefore(t, n)
                })), p(r, e, o && o.siblings)
            };
        return e && e.length ? (n = m(o = e[0]), (r = dy.create("div")).appendChild(p(n, e.slice(1), o.siblings)), r) : ""
    }

    function Yv(e) {
        var t, a = { classes: [], attrs: {} };
        return "*" !== (e = a.selector = Et.trim(e)) && (t = e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function(e, t, n, r, o) {
            switch (t) {
                case "#":
                    a.attrs.id = n;
                    break;
                case ".":
                    a.classes.push(n);
                    break;
                case ":":
                    -1 !== Et.inArray("checked disabled enabled read-only required".split(" "), n) && (a.attrs[n] = n)
            }
            var i;
            return "[" !== r || (i = o.match(/([\w\-]+)(?:\=\"([^\"]+))?/)) && (a.attrs[i[1]] = i[2]), ""
        })), a.name = t || "div", a
    }

    function Gv(n, e) {
        var r, t, o = "",
            i = (t = n.getParam("preview_styles", "font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"), X(t) ? t : "");
        if ("" === i) return "";

        function a(e) { return e.replace(/%(\w+)/g, "") }
        if ("string" == typeof e) {
            if (!(e = n.formatter.get(e))) return;
            e = e[0]
        }
        if ("preview" in e) {
            var u = ue(e, "preview");
            if (fn(u, !1)) return "";
            i = u.getOr(i)
        }
        var s, c = e.block || e.inline || "span",
            l = (s = e.selector) && "string" == typeof s ? (s = (s = s.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g, "$1"), Et.map(s.split(/(?:>|\s+(?![^\[\]]+\]))/), function(e) {
                var t = Et.map(e.split(/(?:~\+|~|\+)/), Yv),
                    n = t.pop();
                return t.length && (n.siblings = t), n
            }).reverse()) : [],
            f = l.length ? (l[0].name || (l[0].name = c), c = e.selector, Xv(l, n)) : Xv([c], n),
            d = dy.select(c, f)[0] || f.firstChild;
        return fy(e.styles, function(e, t) {
            var n = a(e);
            n && dy.setStyle(d, t, n)
        }), fy(e.attributes, function(e, t) {
            var n = a(e);
            n && dy.setAttrib(d, t, n)
        }), fy(e.classes, function(e) {
            var t = a(e);
            dy.hasClass(d, t) || dy.addClass(d, t)
        }), n.fire("PreviewFormats"), dy.setStyles(f, { position: "absolute", left: -65535 }), n.getBody().appendChild(f), r = dy.getStyle(n.getBody(), "fontSize", !0), r = /px$/.test(r) ? parseInt(r, 10) : 0, fy(i.split(" "), function(e) {
            var t = dy.getStyle(d, e, !0);
            if (!("background-color" === e && /transparent|rgba\s*\([^)]+,\s*0\)/.test(t) && (t = dy.getStyle(n.getBody(), e, !0), "#ffffff" === dy.toHex(t).toLowerCase()) || "color" === e && "#000000" === dy.toHex(t).toLowerCase())) {
                if ("font-size" === e && /em|%$/.test(t)) {
                    if (0 === r) return;
                    t = parseFloat(t) / (/%$/.test(t) ? 100 : 1) * r + "px"
                }
                "border" === e && t && (o += "padding:0 2px;"), o += e + ":" + t + ";"
            }
        }), n.fire("AfterPreviewFormats"), dy.remove(f), o
    }

    function Jv(c) {
        var e, r, t, n, o, i, a = (n = {}, (o = function(e, t) { e && (X(e) ? (Y(t = !S(t) ? [t] : t, function(e) { b(e.deep) && (e.deep = !fl(e)), b(e.split) && (e.split = !fl(e) || dl(e)), b(e.remove) && fl(e) && !dl(e) && (e.remove = "none"), fl(e) && dl(e) && (e.mixed = !0, e.block_expand = !0), X(e.classes) && (e.classes = e.classes.split(/\s+/)) }), n[e] = t) : ne(e, function(e, t) { o(t, e) })) })((r = (e = c).dom, t = { valigntop: [{ selector: "td,th", styles: { verticalAlign: "top" } }], valignmiddle: [{ selector: "td,th", styles: { verticalAlign: "middle" } }], valignbottom: [{ selector: "td,th", styles: { verticalAlign: "bottom" } }], alignleft: [{ selector: "figure.image", collapsed: !1, classes: "align-left", ceFalseOverride: !0, preview: "font-family font-size" }, { selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "left" }, inherit: !1, preview: !1, defaultBlock: "div" }, { selector: "img,table,audio,video", collapsed: !1, styles: { float: "left" }, preview: "font-family font-size" }], aligncenter: [{ selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "center" }, inherit: !1, preview: "font-family font-size", defaultBlock: "div" }, { selector: "figure.image", collapsed: !1, classes: "align-center", ceFalseOverride: !0, preview: "font-family font-size" }, { selector: "img,audio,video", collapsed: !1, styles: { display: "block", marginLeft: "auto", marginRight: "auto" }, preview: !1 }, { selector: "table", collapsed: !1, styles: { marginLeft: "auto", marginRight: "auto" }, preview: "font-family font-size" }], alignright: [{ selector: "figure.image", collapsed: !1, classes: "align-right", ceFalseOverride: !0, preview: "font-family font-size" }, { selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "right" }, inherit: !1, preview: "font-family font-size", defaultBlock: "div" }, { selector: "img,table,audio,video", collapsed: !1, styles: { float: "right" }, preview: "font-family font-size" }], alignjustify: [{ selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "justify" }, inherit: !1, defaultBlock: "div", preview: "font-family font-size" }], bold: [{ inline: "strong", remove: "all", preserve_attributes: ["class", "style"] }, { inline: "span", styles: { fontWeight: "bold" } }, { inline: "b", remove: "all", preserve_attributes: ["class", "style"] }], italic: [{ inline: "em", remove: "all", preserve_attributes: ["class", "style"] }, { inline: "span", styles: { fontStyle: "italic" } }, { inline: "i", remove: "all", preserve_attributes: ["class", "style"] }], underline: [{ inline: "span", styles: { textDecoration: "underline" }, exact: !0 }, { inline: "u", remove: "all", preserve_attributes: ["class", "style"] }], strikethrough: [{ inline: "span", styles: { textDecoration: "line-through" }, exact: !0 }, { inline: "strike", remove: "all", preserve_attributes: ["class", "style"] }, { inline: "s", remove: "all", preserve_attributes: ["class", "style"] }], forecolor: { inline: "span", styles: { color: "%value" }, links: !0, remove_similar: !0, clear_child_styles: !0 }, hilitecolor: { inline: "span", styles: { backgroundColor: "%value" }, links: !0, remove_similar: !0, clear_child_styles: !0 }, fontname: { inline: "span", toggle: !1, styles: { fontFamily: "%value" }, clear_child_styles: !0 }, fontsize: { inline: "span", toggle: !1, styles: { fontSize: "%value" }, clear_child_styles: !0 }, lineheight: { selector: "h1,h2,h3,h4,h5,h6,p,li,td,th,div", defaultBlock: "p", styles: { lineHeight: "%value" } }, fontsize_class: { inline: "span", attributes: { class: "%value" } }, blockquote: { block: "blockquote", wrapper: !0, remove: "all" }, subscript: { inline: "sub" }, superscript: { inline: "sup" }, code: { inline: "code" }, link: { inline: "a", selector: "a", remove: "all", split: !0, deep: !0, onmatch: function(e, t, n) { return zn(e) && e.hasAttribute("href") }, onformat: function(n, e, t) { Et.each(t, function(e, t) { r.setAttrib(n, t, e) }) } }, lang: { inline: "span", clear_child_styles: !0, remove_similar: !0, attributes: { lang: "%value", "data-mce-lang": function(e) { var t; return null !== (t = null == e ? void 0 : e.customValue) && void 0 !== t ? t : null } } }, removeformat: [{ selector: "b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small", remove: "all", split: !0, expand: !1, block_expand: !0, deep: !0 }, { selector: "span", attributes: ["style", "class"], remove: "empty", split: !0, expand: !1, deep: !0 }, { selector: "*", attributes: ["style", "class"], split: !1, expand: !1, deep: !0 }] }, Et.each("p h1 h2 h3 h4 h5 h6 div address pre dt dd samp".split(/\s/), function(e) { t[e] = { block: e, remove: "all" } }), t)), o(e.getParam("formats")), { get: function(e) { return V(e) ? n[e] : n }, has: function(e) { return Ne(n, e) }, register: o, unregister: function(e) { return e && n[e] && delete n[e], n } }),
            l = ru(null);
        return function(e) {
            e.addShortcut("meta+b", "", "Bold"), e.addShortcut("meta+i", "", "Italic"), e.addShortcut("meta+u", "", "Underline");
            for (var t = 1; t <= 6; t++) e.addShortcut("access+" + t, "", ["FormatBlock", !1, "h" + t]);
            e.addShortcut("access+7", "", ["FormatBlock", !1, "p"]), e.addShortcut("access+8", "", ["FormatBlock", !1, "div"]), e.addShortcut("access+9", "", ["FormatBlock", !1, "address"])
        }(c), (i = c).on("mouseup keydown", function(e) {
            var t = i,
                n = e.keyCode,
                r = t.selection,
                o = t.getBody();
            Fg(t, null, !1), 8 !== n && 46 !== n || !r.isCollapsed() || r.getStart().innerHTML !== vp || Fg(t, Hc(o, r.getStart())), 37 !== n && 39 !== n || Fg(t, Hc(o, r.getStart()))
        }), {
            get: a.get,
            has: a.has,
            register: a.register,
            unregister: a.unregister,
            apply: function(e, t, n) {
                var r = e,
                    o = t,
                    i = n;
                hh(c).formatter.apply(r, o, i)
            },
            remove: function(e, t, n, r) {
                var o = e,
                    i = t,
                    a = n,
                    u = r;
                hh(c).formatter.remove(o, i, a, u)
            },
            toggle: function(e, t, n) {
                var r = e,
                    o = t,
                    i = n;
                hh(c).formatter.toggle(r, o, i)
            },
            match: function(e, t, n, r) { return o = e, i = t, a = n, u = r, hh(c).formatter.match(o, i, a, u); var o, i, a, u },
            closest: function(e) { return t = e, hh(c).formatter.closest(t); var t },
            matchAll: function(e, t) { return n = e, r = t, hh(c).formatter.matchAll(n, r); var n, r },
            matchNode: function(e, t, n, r) { return o = e, i = t, a = n, u = r, hh(c).formatter.matchNode(o, i, a, u); var o, i, a, u },
            canApply: function(e) { return t = e, hh(c).formatter.canApply(t); var t },
            formatChanged: function(e, t, n, r) { return o = l, i = e, a = t, u = n, s = r, hh(c).formatter.formatChanged(o, i, a, u, s); var o, i, a, u, s },
            getCssText: A(Gv, c)
        }
    }

    function Qv(e) {
        switch (e.toLowerCase()) {
            case "undo":
            case "redo":
            case "mcerepaint":
            case "mcefocus":
                return 1;
            default:
                return
        }
    }

    function Zv(s) {
        var e, n, r, o, i, c = cu(),
            l = ru(0),
            f = ru(0),
            d = {
                data: [],
                typing: !1,
                beforeChange: function() {
                    var e = l,
                        t = c;
                    hh(s).undoManager.beforeChange(e, t)
                },
                add: function(e, t) { return n = d, r = f, o = l, i = c, a = e, u = t, hh(s).undoManager.add(n, r, o, i, a, u); var n, r, o, i, a, u },
                undo: function() { return e = d, t = l, n = f, hh(s).undoManager.undo(e, t, n); var e, t, n },
                redo: function() { return e = f, t = d.data, hh(s).undoManager.redo(e, t); var e, t },
                clear: function() {
                    var e = d,
                        t = f;
                    hh(s).undoManager.clear(e, t)
                },
                reset: function() {
                    var e = d;
                    hh(s).undoManager.reset(e)
                },
                hasUndo: function() { return e = d, t = f, hh(s).undoManager.hasUndo(e, t); var e, t },
                hasRedo: function() { return e = d, t = f, hh(s).undoManager.hasRedo(e, t); var e, t },
                transact: function(e) { return t = d, n = l, r = e, hh(s).undoManager.transact(t, n, r); var t, n, r },
                ignore: function(e) {
                    var t = l,
                        n = e;
                    hh(s).undoManager.ignore(t, n)
                },
                extra: function(e, t) {
                    var n = d,
                        r = f,
                        o = e,
                        i = t;
                    hh(s).undoManager.extra(n, r, o, i)
                }
            };
        return mh(s) || (r = d, o = l, i = ru(!1), (n = s).on("init", function() { r.add() }), n.on("BeforeExecCommand", function(e) { Qv(e.command) || (fh(r, o), r.beforeChange()) }), n.on("ExecCommand", function(e) { Qv(e.command) || a(e) }), n.on("ObjectResizeStart cut", function() { r.beforeChange() }), n.on("SaveContent ObjectResized blur", a), n.on("dragend", a), n.on("keyup", function(e) {
            var t = e.keyCode;
            e.isDefaultPrevented() || ((33 <= t && t <= 36 || 37 <= t && t <= 40 || 45 === t || e.ctrlKey) && (a(), n.nodeChanged()), 46 !== t && 8 !== t || n.nodeChanged(), i.get() && r.typing && !1 === sh(oh(n), r.data[0]) && (!1 === n.isDirty() && (n.setDirty(!0), n.fire("change", { level: r.data[0], lastLevel: null })), n.fire("TypingUndo"), i.set(!1), n.nodeChanged()))
        }), n.on("keydown", function(e) {
            var t, n = e.keyCode;
            e.isDefaultPrevented() || (33 <= n && n <= 36 || 37 <= n && n <= 40 || 45 === n ? r.typing && a(e) : (t = e.ctrlKey && !e.altKey || e.metaKey, !(n < 16 || 20 < n) || 224 === n || 91 === n || r.typing || t || (r.beforeChange(), lh(r, !0, o), r.add({}, e), i.set(!0))))
        }), n.on("mousedown", function(e) { r.typing && a(e) }), n.on("input", function(e) { e.inputType && ("insertReplacementText" === e.inputType || "insertText" === e.inputType && null === e.data || "insertFromPaste" === e.inputType || "insertFromDrop" === e.inputType) && a(e) }), n.on("AddUndo Undo Redo ClearUndos", function(e) { e.isDefaultPrevented() || n.nodeChanged() })), (e = s).addShortcut("meta+z", "", "Undo"), e.addShortcut("meta+y,meta+shift+z", "", "Redo"), d;

        function a(e) { lh(r, !1, o), r.add({}, e) }
    }

    function eb(e) { return "keydown" === e.type || "keyup" === e.type }

    function tb(e) { var t = e.keyCode; return t === Bf.BACKSPACE || t === Bf.DELETE }

    function nb(e, t) { return ze(Nt.fromDom(t), e.getParam("inline_boundaries_selector", "a[href],code,.mce-annotation", "string")) }

    function rb(e, t, n) { var r, o, i = (r = e, o = t, U(Ja.DOM.getParents(n.container(), "*", o), r)); return ve.from(i[i.length - 1]) }

    function ob(e, t) {
        if (!t) return t;
        var n = t.container(),
            r = t.offset();
        return e ? Lr(n) ? jn(n.nextSibling) ? as(n.nextSibling, 0) : as.after(n) : Fr(t) ? as(n, r + 1) : t : Lr(n) ? jn(n.previousSibling) ? as(n.previousSibling, n.previousSibling.data.length) : as.before(n) : Ur(t) ? as(n, r - 1) : t
    }

    function ib(e) { return fo(e) || go(e) }

    function ab(e, t) { return Ve(e, t) ? pr(t, ib, (n = e, function(e) { return je(n, Nt.fromDom(e.dom.parentNode)) })) : ve.none(); var n }

    function ub(e) {
        var t, n, r;
        e.dom.isEmpty(e.getBody()) && (e.setContent(""), r = (n = (t = e).getBody()).firstChild && t.dom.isBlock(n.firstChild) ? n.firstChild : n, t.selection.setCursorLocation(r, 0))
    }

    function sb(e, t) { return { from: e, to: t } }

    function cb(e, t) { return ab(Nt.fromDom(e), Nt.fromDom(t.container())).map(function(e) { return { block: e, position: t } }) }

    function lb(e) { var t, n = z(t = Dn(e), lo).fold(J(t), function(e) { return t.slice(0, e) }); return Y(n, Ln), n }

    function fb(e, t) { return M(hm(t, e).reverse(), function(e) { return Wr(e) }).each(Ln) }

    function db(e, t, n, r) {
        if (Wr(n)) return mm(n), ef(n.dom);
        0 === U(Lt(r), function(e) { return !Wr(e) }).length && Wr(t) && qt(r, Nt.fromTag("br"));
        var o = Zl(n.dom, as.before(r.dom));
        return Y(lb(t), function(e) { qt(r, e) }), fb(e, t), o
    }

    function mb(e, t, n) { if (Wr(n)) return Ln(n), Wr(t) && mm(t), ef(t.dom); var r = tf(n.dom); return Y(lb(t), function(e) { Pn(n, e) }), fb(e, t), r }

    function gb(e, t) { Uc(e, t.dom).map(function(e) { return e.getNode() }).map(Nt.fromDom).filter(Br).each(Ln) }

    function pb(e, t, n) { return gb(!0, t), gb(!1, n), (Ve(o = n, r = t) ? (i = hm(r, o), ve.from(i[i.length - 1])) : ve.none()).fold(A(mb, e, t, n), A(db, e, t, n)); var r, o, i }

    function hb(e, t, n, r) { return t ? pb(e, r, n) : pb(e, n, r) }

    function vb(t, n) {
        var e, r, o, i, a, u, s, c = Nt.fromDom(t.getBody()),
            l = (e = c.dom, r = n, ((o = t.selection.getRng()).collapsed ? (a = r, u = cb(i = e, as.fromRangeStart(o)), s = u.bind(function(e) { return Gl(a, i, e.position).bind(function(e) { return cb(i, e).map(function(e) { return t = i, n = a, Wn((r = e).position.getNode()) && !1 === Wr(r.block) ? Uc(!1, r.block.dom).bind(function(e) { return e.isEqual(r.position) ? Gl(n, t, e).bind(function(e) { return cb(t, e) }) : ve.some(r) }).getOr(r) : r; var t, n, r }) }) }), dn(u, s, sb).filter(function(e) { return !1 === je(e.from.block, e.to.block) && Ot((n = e).from.block).bind(function(t) { return Ot(n.to.block).filter(function(e) { return je(t, e) }) }).isSome() && !1 === Yn((t = e).from.block.dom) && !1 === Yn(t.to.block.dom); var t, n })) : ve.none()).bind(function(e) { return hb(c, n, e.from.block, e.to.block) }));
        return l.each(function(e) { t.selection.setRng(e.toRange()) }), l.isSome()
    }

    function bb(e, t) {
        var n = Nt.fromDom(t),
            r = A(je, e);
        return gr(n, ho, r).isSome()
    }

    function yb(e) {
        var n, r, o, t, i, a, u, s, c, l, f = Nt.fromDom(e.getBody()),
            d = e.selection.getRng();
        return a = d, c = Zl((i = f).dom, as.fromRangeStart(a)).isNone(), l = Ql(i.dom, as.fromRangeEnd(a)).isNone(), !bb(u = i, (s = a).startContainer) && !bb(u, s.endContainer) && c && l ? ((t = e).setContent(""), t.selection.setCursorLocation(), !0) : (n = f, r = e.selection, o = r.getRng(), dn(ab(n, Nt.fromDom(o.startContainer)), ab(n, Nt.fromDom(o.endContainer)), function(e, t) { return !1 === je(e, t) && (o.deleteContents(), hb(n, !0, e, t).each(function(e) { r.setRng(e.toRange()) }), !0) }).getOr(!1))
    }

    function Cb(e, t) { return !e.selection.isCollapsed() && yb(e) }

    function xb(e, t, n, r, o) { return ve.from(t._selectionOverrides.showCaret(e, n, r, o)) }

    function wb(e, t) { var n, r; return e.fire("BeforeObjectSelected", { target: t }).isDefaultPrevented() ? ve.none() : ve.some(((r = (n = t).ownerDocument.createRange()).selectNode(n), r)) }

    function Sb(e, t, n) {
        var r = Zs(1, e.getBody(), t),
            o = as.fromRangeStart(r),
            i = o.getNode();
        if (wc(i)) return xb(1, e, i, !o.isAtEnd(), !1);
        var a = o.getNode(!0);
        if (wc(a)) return xb(1, e, a, !1, !1);
        var u = e.dom.getParent(o.getNode(), function(e) { return yy(e) || by(e) });
        return wc(u) ? xb(1, e, u, !1, n) : ve.none()
    }

    function Eb(e, t, n) { return t.collapsed ? Sb(e, t, n).getOr(t) : t }

    function Nb(e) { return ep(e) || Gg(e) }

    function kb(e) { return tp(e) || Jg(e) }

    function _b(n, r, e, t, o, i) {
        var a, u;
        return xb(t, n, i.getNode(!o), o, !0).each(function(e) {
            var t;
            r.collapsed ? (t = r.cloneRange(), o ? t.setEnd(e.startContainer, e.startOffset) : t.setStart(e.endContainer, e.endOffset), t.deleteContents()) : r.deleteContents(), n.selection.setRng(e)
        }), a = n.dom, jn(u = e) && 0 === u.data.length && a.remove(u), !0
    }

    function Ab(e, t) {
        var n = e.selection.getRng();
        if (!jn(n.commonAncestorContainer)) return !1;
        var r = t ? ic.Forwards : ic.Backwards,
            o = Pc(e.getBody()),
            i = A(rc, t ? o.next : o.prev),
            a = t ? Nb : kb,
            u = tc(r, e.getBody(), n),
            s = ob(t, i(u));
        if (!s || !oc(u, s)) return !1;
        if (a(s)) return _b(e, n, u.getNode(), r, t, s);
        var c = i(s);
        return !!(c && a(c) && oc(s, c)) && _b(e, n, u.getNode(), r, t, c)
    }

    function Rb(l, f, d) {
        return Gl(f, l, d).bind(function(e) {
            return s = e.getNode(), ho(Nt.fromDom(s)) || go(Nt.fromDom(s)) || (o = l, u = e, ec(!(i = f), a = d).fold(function() { return ec(i, u).fold(R, c) }, c)) ? ve.none() : f && Yn(e.getNode()) || !1 === f && Yn(e.getNode(!0)) ? (t = l, n = d, r = e.getNode(!1 === f), ab(Nt.fromDom(t), Nt.fromDom(n.getNode())).map(function(e) { return Wr(e) ? Cy.remove(e.dom) : Cy.moveToElement(r) }).orThunk(function() { return ve.some(Cy.moveToElement(r)) })) : f && tp(d) || !1 === f && ep(d) ? ve.some(Cy.moveToPosition(e)) : ve.none();
            var t, n, r, o, i, a, u, s;

            function c(e) { return Or(Nt.fromDom(e)) && !Ys(a, u, o) }
        })
    }

    function Db(e, t) { return ve.from(pf(e.getBody(), t)) }

    function Tb(m, g) { var e = m.selection.getNode(); return Db(m, e).filter(Yn).fold(function() { return s = m.getBody(), l = Zs((c = g) ? 1 : -1, s, m.selection.getRng()), f = as.fromRangeStart(l), d = Nt.fromDom(s), (!1 === c && tp(f) ? ve.some(Cy.remove(f.getNode(!0))) : c && ep(f) ? ve.some(Cy.remove(f.getNode())) : !1 === c && ep(f) && Em(d, f) ? ap(d, f).map(function(e) { return Cy.remove(e.getNode()) }) : c && tp(f) && Sm(d, f) ? up(d, f).map(function(e) { return Cy.remove(e.getNode()) }) : (r = s, e = c, a = (o = f).getNode(!1 === (i = e)), u = i ? "after" : "before", zn(a) && a.getAttribute("data-mce-caret") === u ? (n = o.getNode(!1 === (t = e)), (t && Yn(n.nextSibling) ? ve.some(Cy.moveToElement(n.nextSibling)) : !1 === t && Yn(n.previousSibling) ? ve.some(Cy.moveToElement(n.previousSibling)) : ve.none()).fold(function() { return Rb(r, e, o) }, ve.some)) : Rb(r, e, o).bind(function(e) { return t = r, n = o, e.fold(function(e) { return ve.some(Cy.remove(e)) }, function(e) { return ve.some(Cy.moveToElement(e)) }, function(e) { return Ys(n, e, t) ? ve.none() : ve.some(Cy.moveToPosition(e)) }); var t, n }))).exists(function(e) { return e.fold(function(e) { return o._selectionOverrides.hideFakeCaret(), Ym(o, i, Nt.fromDom(e)), !0 }, (r = i = g, function(e) { var t = r ? as.before(e) : as.after(e); return n.selection.setRng(t.toRange()), !0 }), (t = n = o = m, function(e) { return t.selection.setRng(e.toRange()), !0 })); var t, n, r, o, i }); var r, e, o, t, n, i, a, u, s, c, l, f, d }, w) }

    function Ob(e, t) { var n = e.selection.getNode(); return !(!Yn(n) || Gn(n)) && Db(e, n.parentNode).filter(Yn).fold(function() { return Y(hu(Nt.fromDom(e.getBody()), ".mce-offscreen-selection"), Ln), Ym(e, t, Nt.fromDom(e.selection.getNode())), ub(e), !0 }, w) }

    function Bb(e) {
        var t, n = e.dom,
            r = e.selection,
            o = pf(e.getBody(), r.getNode());
        return Xn(o) && n.isBlock(o) && n.isEmpty(o) && (t = n.create("br", { "data-mce-bogus": "1" }), n.setHTML(o, ""), o.appendChild(t), r.setRng(as.before(t).toRange())), !0
    }

    function Pb(e, t) { return (e.selection.isCollapsed() ? Tb : Ob)(e, t) }

    function Lb(e, t) { return !!e.selection.isCollapsed() && (n = e, r = t, o = as.fromRangeStart(n.selection.getRng()), Gl(r, n.getBody(), o).filter(function(e) { return (r ? Xg : Yg)(e) }).bind(function(e) { return ve.from(Gs(r ? 0 : -1, e)) }).exists(function(e) { return n.selection.select(e), !0 })); var n, r, o }

    function Ib(e) { return xy(e) && e.data[0] === Co }

    function Mb(e) { return xy(e) && e.data[e.data.length - 1] === Co }

    function Fb(e) { return e.ownerDocument.createTextNode(Co) }

    function Ub(e, t) { return (e ? function(e) { if (xy(e.previousSibling)) return Mb(e.previousSibling) || e.previousSibling.appendData(Co), e.previousSibling; if (xy(e)) return Ib(e) || e.insertData(0, Co), e; var t = Fb(e); return e.parentNode.insertBefore(t, e), t } : function(e) { if (xy(e.nextSibling)) return Ib(e.nextSibling) || e.nextSibling.insertData(0, Co), e.nextSibling; if (xy(e)) return Mb(e) || e.appendData(Co), e; var t = Fb(e); return e.nextSibling ? e.parentNode.insertBefore(t, e.nextSibling) : e.parentNode.appendChild(t), t })(t) }

    function zb(e, t) { return jn(e.container()) ? Ub(t, e.container()) : Ub(t, e.getNode()) }

    function Hb(e, t) { var n = t.get(); return n && e.container() === n && Lr(n) }

    function jb(n, e) {
        return e.fold(function(e) { vc(n.get()); var t = wy(e); return n.set(t), ve.some(as(t, t.length - 1)) }, function(e) {
            return ef(e).map(function(e) {
                if (Hb(e, n)) return as(n.get(), 1);
                vc(n.get());
                var t = zb(e, !0);
                return n.set(t), as(t, 1)
            })
        }, function(e) {
            return tf(e).map(function(e) {
                if (Hb(e, n)) return as(n.get(), n.get().length - 1);
                vc(n.get());
                var t = zb(e, !1);
                return n.set(t), as(t, t.length - 1)
            })
        }, function(e) { vc(n.get()); var t = Sy(e); return n.set(t), ve.some(as(t, 1)) })
    }

    function Vb(e, t) { for (var n = 0; n < e.length; n++) { var r = e[n].apply(null, t); if (r.isSome()) return r } return ve.none() }

    function qb(e, t) { return Xs(t, e) || e }

    function $b(e, t, n) {
        var r = hy(n),
            o = qb(t, r.container());
        return rb(e, o, r).fold(function() { return Ql(o, r).bind(A(rb, e, o)).map(function(e) { return Ey.before(e) }) }, ve.none)
    }

    function Wb(e, t) { return null === Hc(e, t) }

    function Kb(e, t, n) { return rb(e, t, n).filter(A(Wb, t)) }

    function Xb(e, t, n) { var r = vy(n); return Kb(e, t, r).bind(function(e) { return Zl(e, r).isNone() ? ve.some(Ey.start(e)) : ve.none() }) }

    function Yb(e, t, n) { var r = hy(n); return Kb(e, t, r).bind(function(e) { return Ql(e, r).isNone() ? ve.some(Ey.end(e)) : ve.none() }) }

    function Gb(e, t, n) {
        var r = vy(n),
            o = qb(t, r.container());
        return rb(e, o, r).fold(function() { return Zl(o, r).bind(A(rb, e, o)).map(function(e) { return Ey.after(e) }) }, ve.none)
    }

    function Jb(e) { return !1 === (t = Ny(e), "rtl" === Ja.DOM.getStyle(t, "direction", !0) || (n = t.textContent, py.test(n))); var t, n }

    function Qb(e, t, n) { return Vb([$b, Xb, Yb, Gb], [e, t, n]).filter(Jb) }

    function Zb(e) { return e.fold(J("before"), J("start"), J("end"), J("after")) }

    function ey(e) { return e.fold(Ey.before, Ey.before, Ey.after, Ey.after) }

    function ty(e) { return e.fold(Ey.start, Ey.start, Ey.end, Ey.end) }

    function ny(a, e, u, t, n, s) { return dn(rb(e, u, t), rb(e, u, n), function(e, t) { return e !== t && (r = t, o = Xs(e, n = u), i = Xs(r, n), o && o === i) ? Ey.after(a ? e : t) : s; var n, r, o, i }).getOr(s) }

    function ry(e, r) { return e.fold(w, function(e) { return n = r, !(Zb(t = e) === Zb(n) && Ny(t) === Ny(n)); var t, n }) }

    function oy(e, t) { return e ? t.fold(i(ve.some, Ey.start), ve.none, i(ve.some, Ey.after), ve.none) : t.fold(ve.none, i(ve.some, Ey.before), ve.none, i(ve.some, Ey.end)) }

    function iy(e, a, u, s) {
        var t = ob(e, s),
            c = Qb(a, u, t);
        return Qb(a, u, t).bind(A(oy, e)).orThunk(function() { return n = a, r = u, o = c, i = ob(t = e, s), Gl(t, r, i).map(A(ob, t)).fold(function() { return o.map(ey) }, function(e) { return Qb(n, r, e).map(A(ny, t, n, r, i, e)).filter(A(ry, o)) }).filter(Jb); var t, n, r, o, i })
    }

    function ay(e) {
        for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
        var r = window.console;
        r && (r.error || r.log).apply(r, Ae([e], t, !1))
    }
    var uy, sy, cy = function(t, e) {
            var n = t.editorManager.baseURL + "/skins/content",
                r = "content" + t.editorManager.suffix + ".css",
                o = !0 === t.inline;
            return T(e, function(e) { return /^[a-z0-9\-]+$/i.test(e) && !o ? n + "/" + e + "/" + r : t.documentBaseURI.toAbsolute(e) })
        },
        ly = 0,
        fy = Et.each,
        dy = Ja.DOM,
        my = [9, 27, Bf.HOME, Bf.END, 19, 20, 44, 144, 145, 33, 34, 45, 16, 17, 18, 91, 92, 93, Bf.DOWN, Bf.UP, Bf.LEFT, Bf.RIGHT].concat(xt.browser.isFirefox() ? [224] : []),
        gy = "data-mce-placeholder",
        py = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,
        hy = A(ob, !0),
        vy = A(ob, !1),
        by = Xn,
        yy = Yn,
        Cy = or([{ remove: ["element"] }, { moveToElement: ["element"] }, { moveToPosition: ["position"] }]),
        xy = jn,
        wy = A(Ub, !0),
        Sy = A(Ub, !1),
        Ey = or([{ before: ["element"] }, { start: ["element"] }, { end: ["element"] }, { after: ["element"] }]),
        Ny = function(e) { return e.fold(u, u, u, u) };

    function ky(e, t, n) { var r = e ? 1 : -1; return t.setRng(as(n.container(), n.offset() + r).toRange()), t.getSel().modify("move", e ? "forward" : "backward", "word"), !0 }

    function _y(e, t) { return e === ic.Backwards ? q(t) : t }

    function Ay(e, t, n, r) {
        for (var o, i, a, u, s = Pc(n), c = r, l = []; c;) {
            var f = (a = s, u = c, t === ic.Forwards ? a.next(u) : a.prev(u));
            if (!f) break;
            if (Wn(f.getNode(!1))) return t === ic.Forwards ? { positions: _y(t, l).concat([f]), breakType: uy.Br, breakAt: ve.some(f) } : { positions: _y(t, l), breakType: uy.Br, breakAt: ve.some(f) };
            if (f.isVisible()) {
                if (e(c, f)) { var d = (o = c, Wn((i = f).getNode(t === ic.Forwards)) ? uy.Br : !1 === Ys(o, i) ? uy.Block : uy.Wrap); return { positions: _y(t, l), breakType: d, breakAt: ve.some(f) } }
                l.push(f), c = f
            } else c = f
        }
        return { positions: _y(t, l), breakType: uy.Eol, breakAt: ve.none() }
    }

    function Ry(n, r, o, e) { return r(o, e).breakAt.map(function(e) { var t = r(o, e).positions; return n === ic.Backwards ? t.concat(e) : [e].concat(t) }).getOr([]) }

    function Dy(e, i) { return L(e, function(e, o) { return e.fold(function() { return ve.some(o) }, function(r) { return dn(Q(r.getClientRects()), Q(o.getClientRects()), function(e, t) { var n = Math.abs(i - e.left); return Math.abs(i - t.left) <= n ? o : r }).or(e) }) }, ve.none()) }

    function Ty(t, e) { return Q(e.getClientRects()).bind(function(e) { return Dy(t, e.left) }) }

    function Oy(n) {
        function e(e) { return T(e, function(e) { var t = ku(e); return t.node = n, t }) }
        if (zn(n)) return e(n.getClientRects());
        if (jn(n)) { var t = n.ownerDocument.createRange(); return t.setStart(n, 0), t.setEnd(n, n.data.length), e(t.getClientRects()) }
    }

    function By(e) { return H(e, Oy) }
    A(iy, !1), A(iy, !0), (sy = uy = {})[sy.Br = 0] = "Br", sy[sy.Block = 1] = "Block", sy[sy.Wrap = 2] = "Wrap", sy[sy.Eol = 3] = "Eol";
    var Py, Ly, Iy = A(Ay, as.isAbove, -1),
        My = A(Ay, as.isBelow, 1),
        Fy = A(Ry, -1, Iy),
        Uy = A(Ry, 1, My);

    function zy(o, i, a, e, u, t) {
        function n(e) {
            var t = By([e]); - 1 === o && (t = t.reverse());
            for (var n = 0; n < t.length; n++) {
                var r = t[n];
                if (!a(r, l)) {
                    if (0 < c.length && i(r, pe(c)) && s++, r.line = s, u(r)) return !0;
                    c.push(r)
                }
            }
        }
        var s = 0,
            c = [],
            l = pe(t.getClientRects());
        if (!l) return c;
        var r = t.getNode();
        return n(r),
            function(e, t, n, r) {
                for (; r = Ks(r, e, Vr, t);)
                    if (n(r)) return
            }(o, e, n, r), c
    }

    function Hy(t) { return function(e) { return e.line > t } }

    function jy(t) { return function(e) { return e.line === t } }

    function Vy(e, t) { return Math.abs(e.left - t) }

    function qy(e, t) { return Math.abs(e.right - t) }

    function $y(e, t) { return e >= t.left && e <= t.right }

    function Wy(e, t) { return e >= t.top && e <= t.bottom }

    function Ky(e, o, i) {
        return void 0 === i && (i = w), me(e, function(e, t) {
            if ($y(o, t)) return i(t) ? t : e;
            if ($y(o, e)) return i(e) ? e : t;
            var n = Math.min(Vy(e, o), qy(e, o)),
                r = Math.min(Vy(t, o), qy(t, o));
            return r === n && se(t, "node") && MC(t.node) || r < n ? t : e
        })
    }

    function Xy(e, t, n, r, o) {
        var i = FC(r, e, Vr, t, !o);
        do { if (!i || n(i)) return } while (i = FC(i, e, Vr, t))
    }

    function Yy(e, t, n) {
        function r(e) { return !cn(e.node) && !Jn(e.node) }
        var o, i, a, u = By(U(xe(e.getElementsByTagName("*")), $s)),
            s = U(u, A(Wy, n));
        if ((a = Ky(s, t, r)) && ((a = Ky(function(e, r, t) {
                function n(t, e) { var n = U(By([e]), function(e) { return !t(e, r) }); return o = o.concat(n), 0 === n.length }
                void 0 === t && (t = !0);
                var o = [];
                return o.push(r), Xy(Py.Up, e, A(n, Ru), r.node, t), Xy(Py.Down, e, A(n, Du), r.node, t), o
            }(e, a, r(a)), t, r)) && $s(a.node))) return { node: (o = a).node, before: Vy(o, i = t) < qy(o, i) };
        return null
    }

    function Gy(e, t) { e.selection.setRng(t), Zf(e, e.selection.getRng()) }

    function Jy(e, t, n) { return ve.some(Eb(e, t, n)) }

    function Qy(e, t, n, r, o, i) {
        var a = t === ic.Forwards,
            u = Pc(e.getBody()),
            s = A(rc, a ? u.next : u.prev),
            c = a ? r : o;
        if (!n.collapsed) { var l = Ou(n); if (i(l)) return xb(t, e, l, t === ic.Backwards, !1) }
        var f = tc(t, e.getBody(), n);
        if (c(f)) return wb(e, f.getNode(!a));
        var d = ob(a, s(f)),
            m = Hr(n);
        if (!d) return m ? ve.some(n) : ve.none();
        if (c(d)) return xb(t, e, d.getNode(!a), a, !1);
        var g = s(d);
        return g && c(g) && oc(d, g) ? xb(t, e, g.getNode(!a), a, !1) : m ? Jy(e, d.toRange(), !1) : ve.none()
    }

    function Zy(t, e, n, r, o, i) {
        var a = tc(e, t.getBody(), n),
            u = pe(a.getClientRects()),
            s = e === Py.Down;
        if (!u) return ve.none();
        var c, l = U((s ? IC : LC)(t.getBody(), Hy(1), a), jy(1)),
            f = u.left,
            d = Ky(l, f);
        if (d && i(d.node)) {
            var m = Math.abs(f - d.left),
                g = Math.abs(f - d.right);
            return xb(e, t, d.node, m < g, !1)
        }
        if (c = r(a) ? a.getNode() : o(a) ? a.getNode(!0) : Ou(n)) {
            var p = function(e, t, n, r) {
                    function o(e) { return pe(e.getClientRects()) }
                    var i, a, u, s = Pc(t),
                        c = [],
                        l = 0,
                        f = 1 === e ? (i = s.next, a = Du, u = Ru, as.after(r)) : (i = s.prev, a = Ru, u = Du, as.before(r)),
                        d = o(f);
                    do {
                        if (f.isVisible()) {
                            var m = o(f);
                            if (!u(m, d)) {
                                0 < c.length && a(m, pe(c)) && l++;
                                var g = ku(m);
                                if (g.position = f, g.line = l, n(g)) return c;
                                c.push(g)
                            }
                        }
                    } while (f = i(f));
                    return c
                }(e, t.getBody(), Hy(1), c),
                h = Ky(U(p, jy(1)), f);
            if (h) return Jy(t, h.position.toRange(), !1);
            if (h = pe(U(p, jy(0)))) return Jy(t, h.position.toRange(), !1)
        }
        return 0 === l.length ? UC(t, s).filter(s ? o : r).map(function(e) { return Eb(t, e.toRange(), !1) }) : ve.none()
    }

    function e0(t, e, n) { return UC(t, e).filter(n).exists(function(e) { return t.selection.setRng(e.toRange()), !0 }) }

    function t0(e, t) {
        var n = e.dom.createRng();
        n.setStart(t.container(), t.offset()), n.setEnd(t.container(), t.offset()), e.selection.setRng(n)
    }

    function n0(e, t) { e ? t.setAttribute("data-mce-selected", "inline-boundary") : t.removeAttribute("data-mce-selected") }

    function r0(t, e, n) { return jb(e, n).map(function(e) { return t0(t, e), n }) }

    function o0(e, t, n) { return !!Ps(e) && (o = t, i = n, a = (r = e).getBody(), u = as.fromRangeStart(r.selection.getRng()), iy(i, A(nb, r), a, u).bind(function(e) { return r0(r, o, e) }).isSome()); var r, o, i, a, u }

    function i0(e, t, n) { return !!Ps(t) && (r = e, i = (o = t).selection.getRng(), a = r ? as.fromRangeEnd(i) : as.fromRangeStart(i), !!y(o.selection.getSel().modify) && (r && Fr(a) ? ky(!0, o.selection, a) : !(r || !Ur(a)) && ky(!1, o.selection, a))); var r, o, i, a }

    function a0(g) {
        var p = ru(null),
            h = A(nb, g);
        return g.on("NodeChange", function(e) {
            var n, r, o, t, i, a, u, s, c, l, f, d, m;
            !Ps(g) || xt.browser.isIE() && e.initial || (i = h, a = g.dom, u = e.parents, Y($(s = U(T(hu(Nt.fromDom(a.getRoot()), '*[data-mce-selected="inline-boundary"]'), function(e) { return e.dom }), i), c = U(u, i)), A(n0, !1)), Y($(c, s), A(n0, !0)), f = p, (l = g).selection.isCollapsed() && !0 !== l.composing && f.get() && (d = as.fromRangeStart(l.selection.getRng()), as.isTextPosition(d) && !1 === (Fr(m = d) || Ur(m)) && (t0(l, Hs(f.get(), d)), f.set(null))), n = h, r = g, o = p, t = e.parents, r.selection.isCollapsed() && Y(U(t, n), function(e) {
                var t = as.fromRangeStart(r.selection.getRng());
                Qb(n, r.getBody(), t).bind(function(e) { return r0(r, o, e) })
            }))
        }), p
    }

    function u0(n, t, r) { if (Ps(n)) { var e = UC(n, t).getOrThunk(function() { var e = n.selection.getRng(); return t ? as.fromRangeEnd(e) : as.fromRangeStart(e) }); return Qb(A(nb, n), n.getBody(), e).exists(function(e) { var t = ey(e); return jb(r, t).exists(function(e) { return t0(n, e), !0 }) }) } return !1 }

    function s0(t, n) { return function(e) { return jb(n, e).exists(function(e) { return t0(t, e), !0 }) } }

    function c0(r, o, i, a) {
        var u = r.getBody(),
            s = A(nb, r);
        r.undoManager.ignore(function() {
            var e, t, n;
            r.selection.setRng((e = i, t = a, (n = document.createRange()).setStart(e.container(), e.offset()), n.setEnd(t.container(), t.offset()), n)), r.execCommand("Delete"), Qb(s, u, as.fromRangeStart(r.selection.getRng())).map(ty).map(s0(r, o))
        }), r.nodeChanged()
    }

    function l0(e, t, n) {
        if (e.selection.isCollapsed() && Ps(e)) {
            var r = as.fromRangeStart(e.selection.getRng());
            return o = t, a = n, u = r, s = (i = e).getBody(), c = Xs(u.container(), s) || s, l = A(nb, i), (f = Qb(l, c, u)).bind(function(e) { return a ? e.fold(J(ve.some(ty(e))), ve.none, J(ve.some(ey(e))), ve.none) : e.fold(ve.none, J(ve.some(ey(e))), ve.none, J(ve.some(ty(e)))) }).map(s0(i, o)).getOrThunk(function() {
                var t = Fc(a, c, u),
                    e = t.bind(function(e) { return Qb(l, c, e) });
                return dn(f, e, function() {
                    return rb(l, c, u).exists(function(e) {
                        return !!dn(ef(o = e), tf(o), function(e, t) {
                            var n = ob(!0, e),
                                r = ob(!1, t);
                            return Ql(o, n).forall(function(e) { return e.isEqual(r) })
                        }).getOr(!0) && (Ym(i, a, Nt.fromDom(e)), !0);
                        var o
                    })
                }).orThunk(function() { return e.bind(function(e) { return t.map(function(e) { return a ? c0(i, o, u, e) : c0(i, o, e, u), !0 }) }) }).getOr(!1)
            })
        }
        var i, o, a, u, s, c, l, f;
        return !1
    }

    function f0(e) { return 1 === zt(e) }

    function d0(g, p) {
        var t, e = Nt.fromDom(g.getBody()),
            n = Nt.fromDom(g.selection.getStart()),
            h = U(z(t = hm(n, e), lo).fold(J(t), function(e) { return t.slice(0, e) }), f0);
        return Z(h).exists(function(e) {
            var t, n, r, o, i, a, u, s, c, l = as.fromRangeStart(g.selection.getRng()),
                f = p,
                d = l,
                m = e.dom;
            return !(!dn(ef(m), tf(m), function(e, t) {
                var n = ob(!0, e),
                    r = ob(!1, t),
                    o = ob(!1, d);
                return f ? Ql(m, o).exists(function(e) { return e.isEqual(r) && d.isEqual(n) }) : Zl(m, o).exists(function(e) { return e.isEqual(n) && d.isEqual(r) })
            }).getOr(!0) || zc((t = e).dom) && Pg(t.dom) || (n = p, o = e, 0 === (c = T(U(h, A(Vg, r = g)), function(e) { return e.dom })).length ? Ym(r, n, o) : (a = o.dom, s = zg(c, (u = Ig(!1)).dom), qt(Nt.fromDom(a), u), Ln(Nt.fromDom(a)), i = as(s, 0), r.selection.setRng(i.toRange())), 0))
        })
    }

    function m0(e, t) { return !!e.selection.isCollapsed() && d0(e, t) }

    function g0(e, t, n) { return e._selectionOverrides.hideFakeCaret(), Ym(e, t, Nt.fromDom(n)), !0 }

    function p0(e, t) { return e.selection.isCollapsed() ? (i = e, u = (a = t) ? Gg : Jg, s = a ? ic.Forwards : ic.Backwards, c = tc(s, i.getBody(), i.selection.getRng()), u(c) ? g0(i, a, c.getNode(!a)) : ve.from(ob(a, c)).filter(function(e) { return u(e) && oc(c, e) }).exists(function(e) { return g0(i, a, e.getNode(!a)) })) : (r = t, o = (n = e).selection.getNode(), !!Jn(o) && g0(n, r, o)); var n, r, o, i, a, u, s, c }

    function h0(e) { var t = parseInt(e, 10); return isNaN(t) ? 0 : t }

    function v0(e, t) { return (e || "table" === kt(t) ? "margin" : "padding") + ("rtl" === xn(t, "direction") ? "-right" : "-left") }

    function b0(e) { var n, t = jC(e); return !e.mode.isReadOnly() && (1 < t.length || (n = e, j(t, function(e) { var t = wn(e, v0(Rs(n), e)).map(h0).getOr(0); return "false" !== n.dom.getContentEditable(e.dom) && 0 < t }))) }

    function y0(e) { return mo(e) || go(e) }

    function C0(e, s) {
        var c = e.dom,
            t = e.selection,
            n = e.formatter,
            r = e.getParam("indentation", "40px", "string"),
            l = /[a-z%]+$/i.exec(r)[0],
            f = parseInt(r, 10),
            d = Rs(e),
            o = Ss(e);
        e.queryCommandState("InsertUnorderedList") || e.queryCommandState("InsertOrderedList") || "" !== o || c.getParent(t.getNode(), c.isBlock) || n.apply("div"), Y(jC(e), function(e) {
            var t, n = c,
                r = s,
                o = f,
                i = l,
                a = e.dom,
                u = v0(d, Nt.fromDom(a));
            "outdent" === r ? (t = Math.max(0, h0(a.style[u]) - o), n.setStyle(a, u, t ? t + i : "")) : (t = h0(a.style[u]) + o + i, n.setStyle(a, u, t))
        })
    }

    function x0(e, t) {
        if (e.selection.isCollapsed() && b0(e)) {
            var n = e.dom,
                r = e.selection.getRng(),
                o = as.fromRangeStart(r),
                i = n.getParent(r.startContainer, n.isBlock);
            if (null !== i && np(Nt.fromDom(i), o)) return C0(e, "outdent"), !0
        }
        return !1
    }

    function w0(e, t) { e.getDoc().execCommand(t, !1, null) }

    function S0(e) { return void 0 === e.touches || 1 !== e.touches.length ? ve.none() : ve.some(e.touches[0]) }

    function E0(e, t) { return Ne(e, t.nodeName) }

    function N0(e) {
        var t, n, r, o = e.dom,
            i = e.selection,
            a = e.schema,
            u = a.getBlockElements(),
            s = i.getStart(),
            c = e.getBody(),
            l = Ss(e);
        if (s && zn(s) && l) {
            var f = c.nodeName.toLowerCase();
            if (a.isValidChild(f, l.toLowerCase()) && (d = u, m = c, g = s, !F(pm(Nt.fromDom(g), Nt.fromDom(m)), function(e) { return E0(d, e.dom) }))) {
                for (var d, m, g, p, h, v = i.getRng(), b = v.startContainer, y = v.startOffset, C = v.endContainer, x = v.endOffset, w = vd(e), s = c.firstChild; s;) p = u, jn(h = s) || zn(h) && !E0(p, h) && !Yc(h) ? function(e, t) { if (jn(t)) { if (0 === t.nodeValue.length) return 1; if (/^\s+$/.test(t.nodeValue) && (!t.nextSibling || E0(e, t.nextSibling))) return 1 } }(u, s) ? (s = (n = s).nextSibling, o.remove(n)) : (t || (t = o.create(l, Es(e)), s.parentNode.insertBefore(t, s), r = !0), s = (n = s).nextSibling, t.appendChild(n)) : (t = null, s = s.nextSibling);
                r && w && (v.setStart(b, y), v.setEnd(C, x), i.setRng(v), e.nodeChanged())
            }
        }
    }

    function k0(e, t) { t.hasAttribute("data-mce-caret") && (zr(t), e.selection.setRng(e.selection.getRng()), e.selection.scrollIntoView(t)) }

    function _0(e, t) { var n = vr(Nt.fromDom(e.getBody()), "*[data-mce-caret]").map(function(e) { return e.dom }).getOrNull(); if (n) return "compositionstart" === t.type ? (t.preventDefault(), t.stopPropagation(), void k0(e, n)) : void(Mr(n) && (k0(e, n), e.undoManager.add())) }

    function A0(e, t, n) {
        var r, o, i, a = Pc(e.getBody()),
            u = A(rc, 1 === t ? a.next : a.prev);
        !n.collapsed || "" === Ss(e) || (r = e.dom.getParent(n.startContainer, "PRE")) && (u(as.fromRangeStart(n)) || (i = e.dom.create(Ss(e)), (!xt.ie || 11 <= xt.ie) && (i.innerHTML = '<br data-mce-bogus="1">'), o = i, 1 === t ? e.$(r).after(o) : e.$(r).before(o), e.selection.select(o, !0), e.selection.collapse()))
    }

    function R0(t, e) { return n = t, r = e ? ic.Forwards : ic.Backwards, o = n.selection.getRng(), Qy(n, r, o, ep, tp, VC).orThunk(function() { return A0(n, r, o), ve.none() }).exists(function(e) { return Gy(t, e), !0 }); var n, r, o }

    function D0(t, e) { return r = e ? 1 : -1, o = (n = t).selection.getRng(), Zy(n, r, o, function(e) { return ep(e) || Qg(e) }, function(e) { return tp(e) || Zg(e) }, VC).orThunk(function() { return A0(n, r, o), ve.none() }).exists(function(e) { return Gy(t, e), !0 }); var n, r, o }

    function T0(e, t) { return e0(e, t, t ? tp : ep) }

    function O0(e) { return D(["figcaption"], kt(e)) }

    function B0(e) { var t = document.createRange(); return t.setStartBefore(e.dom), t.setEndBefore(e.dom), t }

    function P0(e, t, n) {
        (n ? Pn : Wt)(e, t)
    }

    function L0(h, v) {
        var b = Nt.fromDom(h.getBody()),
            y = as.fromRangeStart(h.selection.getRng()),
            C = Ss(h),
            x = Es(h),
            e = y,
            t = A(je, b);
        return pr(Nt.fromDom(e.container()), lo, t).filter(O0).exists(function() { if (d = b, m = y, v ? (p = d.dom, My(p, m).breakAt.isNone()) : (g = d.dom, Iy(g, m).breakAt.isNone())) { var e = (t = b, r = x, o = v, "" === (n = C) ? (l = o, P0(t, f = Nt.fromTag("br"), l), B0(f)) : (i = t, a = o, u = r, s = Nt.fromTag(n), c = Nt.fromTag("br"), hn(s, u), Pn(s, c), P0(i, s, a), B0(c))); return h.selection.setRng(e), !0 } var t, n, r, o, i, a, u, s, c, l, f, d, m, g, p; return !1 })
    }

    function I0(e, t) { return !!e.selection.isCollapsed() && L0(e, t) }

    function M0(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; return function() { return e.apply(null, t) } }

    function F0(e, t) { return M((n = t, H(T(e, function(e) { return _e({ shiftKey: !1, altKey: !1, ctrlKey: !1, metaKey: !1, keyCode: 0, action: te }, e) }), function(e) { return n.keyCode === e.keyCode && n.shiftKey === e.shiftKey && n.altKey === e.altKey && n.ctrlKey === e.ctrlKey && n.metaKey === e.metaKey ? [e] : [] })), function(e) { return e.action() }); var n }

    function U0(t, e) {
        var n = e ? ic.Forwards : ic.Backwards,
            r = t.selection.getRng();
        return Qy(t, n, r, Gg, Jg, Jn).exists(function(e) { return Gy(t, e), !0 })
    }

    function z0(t, e) {
        var n = e ? 1 : -1,
            r = t.selection.getRng();
        return Zy(t, n, r, Gg, Jg, Jn).exists(function(e) { return Gy(t, e), !0 })
    }

    function H0(e, t) { return e0(e, t, t ? Jg : Gg) }

    function j0(e, t, n, r, o) {
        var i, a = hu(Nt.fromDom(n), "td,th,caption").map(function(e) { return e.dom }),
            u = U((i = e, H(a, function(e) { var t, n = { left: (t = ku(e.getBoundingClientRect())).left - -1, top: t.top - -1, right: t.right + -2, bottom: t.bottom + -2, width: t.width + -1, height: t.height + -1 }; return [{ x: n.left, y: i(n), cell: e }, { x: n.right, y: i(n), cell: e }] })), function(e) { return t(e, o) }),
            s = r,
            c = o;
        return L(u, function(e, r) {
            return e.fold(function() { return ve.some(r) }, function(e) {
                var t = Math.sqrt(Math.abs(e.x - s) + Math.abs(e.y - c)),
                    n = Math.sqrt(Math.abs(r.x - s) + Math.abs(r.y - c));
                return ve.some(n < t ? r : e)
            })
        }, ve.none()).map(function(e) { return e.cell })
    }

    function V0(e, t, n) { var r, o, i = e(t, n); return i.breakType === uy.Wrap && 0 === i.positions.length || !Wn(n.getNode()) && i.breakType === uy.Br && 1 === i.positions.length ? (r = e, o = t, !i.breakAt.exists(function(e) { return r(o, e).breakAt.isSome() })) : i.breakAt.isNone() }

    function q0(t, e, n, r) {
        var o, i, a, u = t.selection.getRng(),
            s = e ? 1 : -1;
        return !(!qs() || (o = e, i = n, a = as.fromRangeStart(u), !Uc(!o, i).exists(function(e) { return e.isEqual(a) })) || (xb(s, t, n, !e, !1).each(function(e) { Gy(t, e) }), 0))
    }

    function $0(u, s, c) {
        var e, t, n = (e = !!s, t = c.getNode(e), zn(t) && "TABLE" === t.nodeName ? ve.some(t) : ve.none()),
            r = !1 === s;
        n.fold(function() { return Gy(u, c.toRange()) }, function(a) {
            return Uc(r, u.getBody()).filter(function(e) { return e.isEqual(c) }).fold(function() { return Gy(u, c.toRange()) }, function(e) {
                var n, r, o = s,
                    i = a,
                    t = c;
                (r = Ss(n = u)) ? n.undoManager.transact(function() {
                    var e = Nt.fromTag(r);
                    hn(e, Es(n)), Pn(e, Nt.fromTag("br")), (o ? $t : qt)(Nt.fromDom(i), e);
                    var t = n.dom.createRng();
                    t.setStart(e.dom, 0), t.setEnd(e.dom, 0), Gy(n, t)
                }): Gy(n, t.toRange())
            })
        })
    }

    function W0(e, t, n, r) {
        var o, i, a, u, s, c, l, f, d, m, g = e.selection.getRng(),
            p = as.fromRangeStart(g),
            h = e.getBody();
        if (t || !WC(r, p)) return !(!t || !KC(r, p)) && (o = h, d = i = n, $0(e, t, v = Z((m = a = p).getClientRects()).bind(function(e) { return $C(d, e.left, e.top) }).bind(function(e) { return Ty(ef(t = e).map(function(e) { return [e].concat(My(t, e).positions) }).getOr([]), m); var t }).orThunk(function() { return Q(a.getClientRects()).bind(function(e) { return Dy(Uy(o, as.after(i)), e.left) }) }).getOr(as.after(i))), !0);
        var v = (u = h, l = s = n, Q((f = c = p).getClientRects()).bind(function(e) { return qC(l, e.left, e.top) }).bind(function(e) { return Ty(tf(t = e).map(function(e) { return Iy(t, e).positions.concat(e) }).getOr([]), f); var t }).orThunk(function() { return Q(c.getClientRects()).bind(function(e) { return Dy(Fy(u, as.before(s)), e.left) }) }).getOr(as.before(s)));
        return $0(e, t, v), !0
    }

    function K0(n, r, o) { return ve.from(n.dom.getParent(n.selection.getNode(), "td,th")).bind(function(t) { return ve.from(n.dom.getParent(t, "table")).map(function(e) { return o(n, r, e, t) }) }).getOr(!1) }

    function X0(e, t) { return K0(e, t, q0) }

    function Y0(e, t) { return K0(e, t, W0) }

    function G0(e, t) {
        var n, r, o = t,
            i = e.dom,
            a = e.schema.getMoveCaretBeforeOnEnterElements();
        if (t) {
            !/^(LI|DT|DD)$/.test(t.nodeName) || (r = function(e) {
                for (; e;) {
                    if (1 === e.nodeType || 3 === e.nodeType && e.data && /[\r\n\s]/.test(e.data)) return e;
                    e = e.nextSibling
                }
            }(t.firstChild)) && /^(UL|OL|DL)$/.test(r.nodeName) && t.insertBefore(i.doc.createTextNode(yo), t.firstChild);
            var u = i.createRng();
            if (t.normalize(), t.hasChildNodes()) {
                for (var s = new Rr(t, t); n = s.current();) {
                    if (jn(n)) { u.setStart(n, 0), u.setEnd(n, 0); break }
                    if (a[n.nodeName.toLowerCase()]) { u.setStartBefore(n), u.setEndBefore(n); break }
                    o = n, n = s.next()
                }
                n || (u.setStart(o, 0), u.setEnd(o, 0))
            } else Wn(t) ? t.nextSibling && i.isBlock(t.nextSibling) ? (u.setStartBefore(t), u.setEndBefore(t)) : (u.setStartAfter(t), u.setEndAfter(t)) : (u.setStart(t, 0), u.setEnd(t, 0));
            e.selection.setRng(u), Zf(e, u)
        }
    }

    function J0(e) { return ve.from(e.dom.getParent(e.selection.getStart(!0), e.dom.isBlock)) }

    function Q0(e, t) { return e && e.parentNode && e.parentNode.nodeName === t }

    function Z0(e) { return e && /^(OL|UL|LI)$/.test(e.nodeName) }

    function eC(e) { var t = e.parentNode; return /^(LI|DT|DD)$/.test(t.nodeName) ? t : e }

    function tC(e, t, n) { for (var r = e[n ? "firstChild" : "lastChild"]; r && !zn(r);) r = r[n ? "nextSibling" : "previousSibling"]; return r === t }

    function nC(e) { e.innerHTML = '<br data-mce-bogus="1">' }

    function rC(e, t) { return e.nodeName === t || e.previousSibling && e.previousSibling.nodeName === t }

    function oC(e, t) { return t && e.isBlock(t) && !/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName) && !/^(fixed|absolute)/i.test(t.style.position) && "true" !== e.getContentEditable(t) }

    function iC(e, t, n) { return !1 === jn(t) ? n : e ? 1 === n && t.data.charAt(n - 1) === Co ? 0 : n : n === t.data.length - 1 && t.data.charAt(n) === Co ? t.data.length : n }

    function aC(e, t) { for (var n, r = e.getRoot(), o = t; o !== r && "false" !== e.getContentEditable(o);) "true" === e.getContentEditable(o) && (n = o), o = o.parentNode; return o !== r ? n : r }

    function uC(e, t) {
        var n = Ss(e);
        n && n.toLowerCase() === t.tagName.toLowerCase() && function(e, o, t) {
            var i = e.dom;
            ve.from(t.style).map(i.parseStyle).each(function(e) {
                var t = Sn(Nt.fromDom(o)),
                    n = _e(_e({}, t), e);
                i.setStyles(o, n)
            }), dn(ve.from(t.class).map(function(e) { return e.split(/\s+/) }), ve.from(o.className).map(function(e) { return U(e.split(/\s+/), function(e) { return "" !== e }) }), function(t, e) {
                var n = U(e, function(e) { return !D(t, e) }),
                    r = Ae(Ae([], t, !0), n, !0);
                i.setAttrib(o, "class", r.join(" "))
            });
            var n = ["style", "class"],
                r = ae(t, function(e, t) { return !D(n, t) });
            i.setAttribs(o, r)
        }(e, t, Es(e))
    }

    function sC(a, e) {
        function t(e) {
            var t, n = m,
                r = l.getTextInlineElements(),
                o = e || "TABLE" === C || "HR" === C ? c.create(e || p) : b.cloneNode(!1),
                i = o;
            if (!1 === a.getParam("keep_styles", !0)) c.setAttrib(o, "style", null), c.setAttrib(o, "class", null);
            else
                for (; r[n.nodeName] && (zc(n) || Yc(n) || (t = n.cloneNode(!1), c.setAttrib(t, "id", ""), o.hasChildNodes() ? t.appendChild(o.firstChild) : i = t, o.appendChild(t))), (n = n.parentNode) && n !== F;);
            return uC(a, o), nC(i), o
        }

        function n(e) {
            var t, n, r = iC(e, m, g);
            if (!jn(m) || !(e ? 0 < r : r < m.nodeValue.length)) {
                if (m.parentNode === b && s && !e) return 1;
                if (e && zn(m) && m === b.firstChild) return 1;
                if (rC(m, "TABLE") || rC(m, "HR")) return s && !e || !s && e;
                var o = new Rr(m, b);
                for (jn(m) && (e && 0 === r ? o.prev() : e || r !== m.nodeValue.length || o.next()); t = o.current();) {
                    if (zn(t)) { if (!t.getAttribute("data-mce-bogus") && (n = t.nodeName.toLowerCase(), f[n] && "br" !== n)) return } else if (jn(t) && !qr(t.nodeValue)) return;
                    e ? o.prev() : o.next()
                }
                return 1
            }
        }

        function r() { u = /^(H[1-6]|PRE|FIGURE)$/.test(C) && "HGROUP" !== x ? t(p) : t(), a.getParam("end_container_on_empty_block", !1) && oC(c, y) && c.isEmpty(b) ? u = c.split(y, b) : c.insertAfter(u, b), G0(a, u) }
        var o, u, i, s, c = a.dom,
            l = a.schema,
            f = l.getNonEmptyElements(),
            d = a.selection.getRng();
        Rf(c, d).each(function(e) { d.setStart(e.startContainer, e.startOffset), d.setEnd(e.endContainer, e.endOffset) });
        var m = d.startContainer,
            g = d.startOffset,
            p = Ss(a),
            h = !(!e || !e.shiftKey),
            v = !(!e || !e.ctrlKey);
        zn(m) && m.hasChildNodes() && (s = g > m.childNodes.length - 1, m = m.childNodes[Math.min(g, m.childNodes.length - 1)] || m, g = s && jn(m) ? m.nodeValue.length : 0);
        var b, y, C, x, w, S, p, E, N, k, _, A, R, D, T, O, B, P, L, I, M, F = aC(c, m);
        F && ((p && !h || !p && h) && (m = function(e, t, n, r) {
            var o, i, a, u, s, c, l = p || "P",
                f = e.dom,
                d = aC(f, n),
                m = f.getParent(n, f.isBlock);
            if (!m || !oC(f, m)) {
                if (s = ((m = m || d) === e.getBody() || (c = m) && /^(TD|TH|CAPTION)$/.test(c.nodeName) ? m : m.parentNode).nodeName.toLowerCase(), !m.hasChildNodes()) return uC(e, o = f.create(l)), m.appendChild(o), t.setStart(o, 0), t.setEnd(o, 0), o;
                for (a = n; a.parentNode !== m;) a = a.parentNode;
                for (; a && !f.isBlock(a);) a = (i = a).previousSibling;
                if (i && e.schema.isValidChild(s, l.toLowerCase())) {
                    for (uC(e, o = f.create(l)), i.parentNode.insertBefore(o, i), a = i; a && !f.isBlock(a);) u = a.nextSibling, o.appendChild(a), a = u;
                    t.setStart(n, r), t.setEnd(n, r)
                }
            }
            return n
        }(a, d, m, g)), y = (b = c.getParent(m, c.isBlock)) ? c.getParent(b.parentNode, c.isBlock) : null, C = b ? b.nodeName.toUpperCase() : "", "LI" !== (x = y ? y.nodeName.toUpperCase() : "") || v || (y = (b = y).parentNode, C = x), /^(LI|DT|DD)$/.test(C) && c.isEmpty(b) ? (N = t, k = y, _ = b, A = p, I = (E = a).dom, M = E.selection.getRng(), k !== E.getBody() && (D = (A = Z0(R = k) && Z0(R.parentNode) ? "LI" : A) ? N(A) : I.create("BR"), tC(k, _, !0) && tC(k, _, !1) ? Q0(k, "LI") ? (T = eC(k), I.insertAfter(D, T), (null === (L = (P = k).parentNode) || void 0 === L ? void 0 : L.firstChild) === P ? I.remove(T) : I.remove(k)) : I.replace(D, k) : (tC(k, _, !0) ? Q0(k, "LI") ? (I.insertAfter(D, eC(k)), D.appendChild(I.doc.createTextNode(" ")), D.appendChild(k)) : k.parentNode.insertBefore(D, k) : tC(k, _, !1) ? I.insertAfter(D, eC(k)) : (k = eC(k), (O = M.cloneRange()).setStartAfter(_), O.setEndAfter(k), B = O.extractContents(), "LI" === A && (B.firstChild && "LI" === B.firstChild.nodeName) ? (D = B.firstChild, I.insertAfter(B, k)) : (I.insertAfter(B, k), I.insertAfter(D, k))), I.remove(_)), G0(E, D))) : p && b === a.getBody() || (p = p || "P", Pr(b) ? (u = zr(b), c.isEmpty(b) && nC(b), uC(a, u), G0(a, u)) : n() ? r() : n(!0) ? (u = b.parentNode.insertBefore(t(), b), G0(a, rC(b, "HR") ? u : b)) : ((S = (w = d).cloneRange()).setStart(w.startContainer, iC(!0, w.startContainer, w.startOffset)), S.setEnd(w.endContainer, iC(!1, w.endContainer, w.endOffset)), (o = S.cloneRange()).setEndAfter(b), i = o.extractContents(), Y(Hu(Nt.fromDom(i), _n), function(e) {
            var t = e.dom;
            t.nodeValue = wo(t.nodeValue)
        }), function(e) { for (; jn(e) && (e.nodeValue = e.nodeValue.replace(/^[\r\n]+/, "")), e = e.firstChild;); }(i), u = i.firstChild, c.insertAfter(i, b), function(e, t) {
            var n, r, o = u,
                i = [];
            if (o) {
                for (; o = o.firstChild;) {
                    if (e.isBlock(o)) return;
                    zn(o) && !t[o.nodeName.toLowerCase()] && i.push(o)
                }
                for (n = i.length; n--;) !(o = i[n]).hasChildNodes() || o.firstChild === o.lastChild && "" === o.firstChild.nodeValue ? e.remove(o) : (r = o) && "A" === r.nodeName && e.isEmpty(r) && e.remove(o)
            }
        }(c, f), function(e, t) {
            t.normalize();
            var n = t.lastChild;
            n && !/^(left|right)$/gi.test(e.getStyle(n, "float", !0)) || e.add(t, "br")
        }(c, b), c.isEmpty(b) && nC(b), u.normalize(), c.isEmpty(u) ? (c.remove(u), r()) : (uC(a, u), G0(a, u))), c.setAttrib(u, "id", ""), a.fire("NewBlock", { newBlock: u })))
    }

    function cC(e, t, n) {
        var r = e.dom.createRng();
        n ? (r.setStartBefore(t), r.setEndBefore(t)) : (r.setStartAfter(t), r.setEndAfter(t)), e.selection.setRng(r), Zf(e, r)
    }

    function lC(e, t) {
        var n = Nt.fromTag("br");
        qt(Nt.fromDom(t), n), e.undoManager.add()
    }

    function fC(e, t) {
        XC(e.getBody(), t) || $t(Nt.fromDom(t), Nt.fromTag("br"));
        var n = Nt.fromTag("br");
        $t(Nt.fromDom(t), n), cC(e, n.dom, !1), e.undoManager.add()
    }

    function dC(e) { return e && "A" === e.nodeName && "href" in e }

    function mC(e) { return e.fold(R, dC, dC, R) }

    function gC(e, t) { t.fold(te, A(lC, e), A(fC, e), te) }

    function pC(e, t) {
        var n, r, o, i = (r = A(nb, n = e), o = as.fromRangeStart(n.selection.getRng()), Qb(r, n.getBody(), o).filter(mC));
        i.isSome() ? i.each(A(gC, e)) : function(e, t) {
            var n, r, o = e.selection,
                i = e.dom,
                a = o.getRng();
            Rf(i, a).each(function(e) { a.setStart(e.startContainer, e.startOffset), a.setEnd(e.endContainer, e.endOffset) });
            var u, s = a.startOffset,
                c = a.startContainer;
            1 === c.nodeType && c.hasChildNodes() && (u = s > c.childNodes.length - 1, c = c.childNodes[Math.min(s, c.childNodes.length - 1)] || c, s = u && 3 === c.nodeType ? c.nodeValue.length : 0);
            var l = i.getParent(c, i.isBlock),
                f = l ? i.getParent(l.parentNode, i.isBlock) : null,
                d = f ? f.nodeName.toUpperCase() : "",
                m = !(!t || !t.ctrlKey);
            "LI" !== d || m || (l = f), c && 3 === c.nodeType && s >= c.nodeValue.length && ! function(e) {
                for (var t, n = new Rr(c, l), r = e.getNonEmptyElements(); t = n.next();)
                    if (r[t.nodeName.toLowerCase()] || 0 < t.length) return 1
            }(e.schema) && (n = i.create("br"), a.insertNode(n), a.setStartAfter(n), a.setEndAfter(n), r = !0), n = i.create("br"), ss(i, a, n), cC(e, n, r), e.undoManager.add()
        }(e, t)
    }

    function hC(e, t) { return J0(e).filter(function(e) { return 0 < t.length && ze(Nt.fromDom(e), t) }).isSome() }

    function vC(e, t) { return hC(e, e.getParam("no_newline_selector", "")) }

    function bC(n) { return function(e, t) { return "" === Ss(e) === n } }

    function yC(n) { return function(e, t) { return J0(e).filter(function(e) { return go(Nt.fromDom(e)) }).isSome() === n } }

    function CC(n, r) { return function(e, t) { return J0(e).fold(J(""), function(e) { return e.nodeName.toUpperCase() }) === n.toUpperCase() === r } }

    function xC(e) { return CC("pre", e) }

    function wC(n) { return function(e, t) { return e.getParam("br_in_pre", !0) === n } }

    function SC(e, t) { return hC(e, e.getParam("br_newline_selector", ".mce-toc h2,figcaption,caption")) }

    function EC(e, t) { return t }

    function NC(e) {
        var t = Ss(e),
            n = function(e, t) { for (var n, r = e.getRoot(), o = t; o !== r && "false" !== e.getContentEditable(o);) "true" === e.getContentEditable(o) && (n = o), o = o.parentNode; return o !== r ? n : r }(e.dom, e.selection.getStart());
        return n && e.schema.isValidChild(n.nodeName, t || "P")
    }

    function kC(e, t) { return function(n, r) { return L(e, function(e, t) { return e && t(n, r) }, !0) ? ve.some(t) : ve.none() } }

    function _C(e, t) {
        var n, r;
        n = e, r = t, Vb([kC([vC], YC.none()), kC([CC("summary", !0)], YC.br()), kC([xC(!0), wC(!1), EC], YC.br()), kC([xC(!0), wC(!1)], YC.block()), kC([xC(!0), wC(!0), EC], YC.block()), kC([xC(!0), wC(!0)], YC.br()), kC([yC(!0), EC], YC.br()), kC([yC(!0)], YC.block()), kC([bC(!0), EC, NC], YC.block()), kC([bC(!0)], YC.br()), kC([SC], YC.br()), kC([bC(!1), EC], YC.br()), kC([NC], YC.block())], [n, !(!r || !r.shiftKey)]).getOr(YC.none()).fold(function() { pC(e, t) }, function() { sC(e, t) }, te)
    }

    function AC(e) { return e.stopImmediatePropagation() }

    function RC(e) { return e.keyCode === Bf.PAGE_UP || e.keyCode === Bf.PAGE_DOWN }

    function DC(e, t, n) { n && !e.get() ? t.on("NodeChange", AC, !0) : !n && e.get() && t.off("NodeChange", AC), e.set(n) }

    function TC(n, r) {
        var e = r.container(),
            t = r.offset();
        return jn(e) ? (e.insertData(t, n), ve.some(as(e, t + n.length))) : nc(r).map(function(e) { var t = Nt.fromText(n); return (r.isAtEnd() ? $t : qt)(e, t), as(t.dom, n.length) })
    }

    function OC(i, a) { return function(e) { return r = i, (!Rm(o = e) && (n = o, Zl((t = r).dom, n).isNone() || Ql(t.dom, n).isNone() || np(t, n) || rp(t, n) || Em(t, n) || Sm(t, n) || _m(r, o) || Am(r, o)) ? QC : ZC)(a); var t, n, r, o } }

    function BC(e) {
        var t, n, r = as.fromRangeStart(e.selection.getRng()),
            o = Nt.fromDom(e.getBody());
        if (e.selection.isCollapsed()) {
            var i = A(nb, e),
                a = as.fromRangeStart(e.selection.getRng());
            return Qb(i, e.getBody(), a).bind((n = o, function(e) { return e.fold(function(e) { return Zl(n.dom, as.before(e)) }, function(e) { return ef(e) }, function(e) { return tf(e) }, function(e) { return Ql(n.dom, as.after(e)) }) })).bind(OC(o, r)).exists((t = e, function(e) { return t.selection.setRng(e.toRange()), t.nodeChanged(), !0 }))
        }
        return !1
    }

    function PC(e) {
        var o, i, a, u, s, t, n, r, c, l, f, d, m, g, p = a0(e);
        return e.on("keyup compositionstart", A(_0, e)), g = p, (m = e).on("keydown", function(e) { var t, n, r, o;!1 === e.isDefaultPrevented() && (t = m, n = g, r = e, o = dt().os, F0([{ keyCode: Bf.RIGHT, action: M0(R0, t, !0) }, { keyCode: Bf.LEFT, action: M0(R0, t, !1) }, { keyCode: Bf.UP, action: M0(D0, t, !1) }, { keyCode: Bf.DOWN, action: M0(D0, t, !0) }, { keyCode: Bf.RIGHT, action: M0(X0, t, !0) }, { keyCode: Bf.LEFT, action: M0(X0, t, !1) }, { keyCode: Bf.UP, action: M0(Y0, t, !1) }, { keyCode: Bf.DOWN, action: M0(Y0, t, !0) }, { keyCode: Bf.RIGHT, action: M0(U0, t, !0) }, { keyCode: Bf.LEFT, action: M0(U0, t, !1) }, { keyCode: Bf.UP, action: M0(z0, t, !1) }, { keyCode: Bf.DOWN, action: M0(z0, t, !0) }, { keyCode: Bf.RIGHT, action: M0(o0, t, n, !0) }, { keyCode: Bf.LEFT, action: M0(o0, t, n, !1) }, { keyCode: Bf.RIGHT, ctrlKey: !o.isOSX(), altKey: o.isOSX(), action: M0(zC, t, n) }, { keyCode: Bf.LEFT, ctrlKey: !o.isOSX(), altKey: o.isOSX(), action: M0(HC, t, n) }, { keyCode: Bf.UP, action: M0(I0, t, !1) }, { keyCode: Bf.DOWN, action: M0(I0, t, !0) }], r).each(function(e) { r.preventDefault() })) }), d = p, (f = e).on("keydown", function(e) { var t, n, r;!1 === e.isDefaultPrevented() && (n = d, r = e, F0([{ keyCode: Bf.BACKSPACE, action: M0(x0, t = f, !1) }, { keyCode: Bf.BACKSPACE, action: M0(Pb, t, !1) }, { keyCode: Bf.DELETE, action: M0(Pb, t, !0) }, { keyCode: Bf.BACKSPACE, action: M0(Ab, t, !1) }, { keyCode: Bf.DELETE, action: M0(Ab, t, !0) }, { keyCode: Bf.BACKSPACE, action: M0(l0, t, n, !1) }, { keyCode: Bf.DELETE, action: M0(l0, t, n, !0) }, { keyCode: Bf.BACKSPACE, action: M0(hg, t, !1) }, { keyCode: Bf.DELETE, action: M0(hg, t, !0) }, { keyCode: Bf.BACKSPACE, action: M0(Lb, t, !1) }, { keyCode: Bf.DELETE, action: M0(Lb, t, !0) }, { keyCode: Bf.BACKSPACE, action: M0(p0, t, !1) }, { keyCode: Bf.DELETE, action: M0(p0, t, !0) }, { keyCode: Bf.BACKSPACE, action: M0(Cb, t, !1) }, { keyCode: Bf.DELETE, action: M0(Cb, t, !0) }, { keyCode: Bf.BACKSPACE, action: M0(vb, t, !1) }, { keyCode: Bf.DELETE, action: M0(vb, t, !0) }, { keyCode: Bf.BACKSPACE, action: M0(m0, t, !1) }, { keyCode: Bf.DELETE, action: M0(m0, t, !0) }], r).each(function(e) { r.preventDefault() })) }), f.on("keyup", function(e) { var t, n;!1 === e.isDefaultPrevented() && (n = e, F0([{ keyCode: Bf.BACKSPACE, action: M0(Bb, t = f) }, { keyCode: Bf.DELETE, action: M0(Bb, t) }], n)) }), (l = e).on("keydown", function(e) {
            var t, n, r;
            e.keyCode === Bf.ENTER && (t = l, (n = e).isDefaultPrevented() || (n.preventDefault(), (r = t.undoManager).typing && (r.typing = !1, r.add()), t.undoManager.transact(function() {!1 === t.selection.isCollapsed() && t.execCommand("Delete"), _C(t, n) })))
        }), (c = e).on("keydown", function(e) { var t;!1 === e.isDefaultPrevented() && (t = e, F0([{ keyCode: Bf.SPACEBAR, action: M0(BC, c) }], t).each(function(e) { t.preventDefault() })) }), n = t = e, r = lu(function() { n.composing || Im(n) }, 0), GC.isIE() && (n.on("keypress", function(e) { r.throttle() }), n.on("remove", function(e) { r.cancel() })), t.on("input", function(e) {!1 === e.isComposing && Im(t) }), s = p, (u = e).on("keydown", function(e) { var t, n, r;!1 === e.isDefaultPrevented() && (n = s, r = e, F0([{ keyCode: Bf.END, action: M0(T0, t = u, !0) }, { keyCode: Bf.HOME, action: M0(T0, t, !1) }, { keyCode: Bf.END, action: M0(H0, t, !0) }, { keyCode: Bf.HOME, action: M0(H0, t, !1) }, { keyCode: Bf.END, action: M0(u0, t, !0, n) }, { keyCode: Bf.HOME, action: M0(u0, t, !1, n) }], r).each(function(e) { r.preventDefault() })) }), o = e, i = p, JC.os.isOSX() || (a = ru(!1), o.on("keydown", function(e) { RC(e) && DC(a, o, !0) }), o.on("keyup", function(e) { var t, n, r;!1 === e.isDefaultPrevented() && (r = e, F0([{ keyCode: Bf.PAGE_UP, action: M0(u0, t = o, !1, n = i) }, { keyCode: Bf.PAGE_DOWN, action: M0(u0, t, !0, n) }], r)), RC(e) && a.get() && (DC(a, o, !1), o.nodeChanged()) })), p
    }(Ly = Py = Py || {})[Ly.Up = -1] = "Up", Ly[Ly.Down = 1] = "Down";
    var LC = A(zy, Py.Up, Ru, Du),
        IC = A(zy, Py.Down, Du, Ru),
        MC = Yn,
        FC = Ks,
        UC = function(e, t) {
            var n = e.selection.getRng(),
                r = e.getBody();
            if (t) {
                var o = as.fromRangeEnd(n),
                    i = My(r, o);
                return Z(i.positions)
            }
            return o = as.fromRangeStart(n), Q((i = Iy(r, o)).positions)
        },
        zC = A(i0, !0),
        HC = A(i0, !1),
        jC = function(e) { return U(T(e.selection.getSelectedBlocks(), Nt.fromDom), function(e) { return !y0(e) && !Ot(e).exists(y0) && pr(e, function(e) { return Xn(e.dom) || Yn(e.dom) }).exists(function(e) { return Xn(e.dom) }) }) },
        VC = Yn,
        qC = A(j0, function(e) { return e.bottom }, function(e, t) { return e.y < t }),
        $C = A(j0, function(e) { return e.top }, function(e, t) { return e.y > t }),
        WC = A(V0, Iy),
        KC = A(V0, My),
        XC = function(e, t) { return n = as.after(t), !!Wn(n.getNode()) || Ql(e, as.after(t)).map(function(e) { return Wn(e.getNode()) }).getOr(!1); var n },
        YC = or([{ br: [] }, { block: [] }, { none: [] }]),
        GC = dt().browser,
        JC = dt(),
        QC = A(TC, yo),
        ZC = A(TC, " "),
        e1 = (t1.prototype.nodeChanged = function(e) {
            var t, n, r, o = this.editor.selection;
            this.editor.initialized && o && !this.editor.getParam("disable_nodechange") && !this.editor.mode.isReadOnly() && (r = this.editor.getBody(), (t = o.getStart(!0) || r).ownerDocument === this.editor.getDoc() && this.editor.dom.isChildOf(t, r) || (t = r), n = [], this.editor.dom.getParent(t, function(e) { return e === r || void n.push(e) }), (e = e || {}).element = t, e.parents = n, this.editor.fire("NodeChange", e))
        }, t1.prototype.isSameElementPath = function(e) { var t, n = this.editor.$(e).parentsUntil(this.editor.getBody()).add(e); if (n.length === this.lastPath.length) { for (t = n.length; 0 <= t && n[t] === this.lastPath[t]; t--); if (-1 === t) return this.lastPath = n, !0 } return this.lastPath = n, !1 }, t1);

    function t1(r) {
        var o;
        this.lastPath = [], this.editor = r;
        var t = this;
        "onselectionchange" in r.getDoc() || r.on("NodeChange click mouseup keyup focus", function(e) {
            var t = r.selection.getRng(),
                n = { startContainer: t.startContainer, startOffset: t.startOffset, endContainer: t.endContainer, endOffset: t.endOffset };
            "nodechange" !== e.type && Sf(n, o) || r.fire("SelectionChange"), o = n
        }), r.on("contextmenu", function() { r.fire("SelectionChange") }), r.on("SelectionChange", function() { var e = r.selection.getStart(!0);!e || !xt.range && r.selection.isCollapsed() || Tl(r) && !t.isSameElementPath(e) && r.dom.isChildOf(e, r.getBody()) && r.nodeChanged({ selectionChange: !0 }) }), r.on("mouseup", function(e) {!e.isDefaultPrevented() && Tl(r) && ("IMG" === r.selection.getNode().nodeName ? _r.setEditorTimeout(r, function() { r.nodeChanged() }) : r.nodeChanged()) })
    }

    function n1(e) { return zn(e) && fo(Nt.fromDom(e)) }

    function r1(e) {
        var t = e.getBoundingClientRect(),
            n = e.ownerDocument,
            r = n.documentElement,
            o = n.defaultView;
        return { top: t.top + o.pageYOffset - r.clientTop, left: t.left + o.pageXOffset - r.clientLeft }
    }

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

    function i1(e, S) {
        var E = _r.throttle(function(e, t) { S._selectionOverrides.hideFakeCaret(), S.selection.placeCaretAt(e, t) }, 0);
        return S.on("remove", E.stop),
            function(w) {
                return e.on(function(e) {
                    var t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C, x = Math.max(Math.abs(w.screenX - e.screenX), Math.abs(w.screenY - e.screenY));
                    if (!e.dragging && 10 < x) {
                        if (S.fire("dragstart", { target: e.element }).isDefaultPrevented()) return;
                        e.dragging = !0, S.focus()
                    }
                    e.dragging && (d = e, t = {
                        pageX: (p = w, h = (g = S).inline ? r1(g.getBody()) : { left: 0, top: 0 }, C = (y = g).getBody(), v = y.inline ? { left: C.scrollLeft, top: C.scrollTop } : { left: 0, top: 0 }, (m = {
                            pageX: (b = function(e, t) {
                                if (t.target.ownerDocument === e.getDoc()) return { left: t.pageX, top: t.pageY };
                                var n, r, o, i, a, u = r1(e.getContentAreaContainer()),
                                    s = (r = (n = e).getBody(), o = n.getDoc().documentElement, i = { left: r.scrollLeft, top: r.scrollTop }, a = { left: r.scrollLeft || o.scrollLeft, top: r.scrollTop || o.scrollTop }, n.inline ? i : a);
                                return { left: t.pageX - u.left + s.left, top: t.pageY - u.top + s.top }
                            }(g, p)).left - h.left + v.left,
                            pageY: b.top - h.top + v.top
                        }).pageX - d.relX),
                        pageY: m.pageY + 5
                    }, l = e.ghost, f = S.getBody(), l.parentNode !== f && f.appendChild(l), n = e.ghost, o = e.width, i = e.height, a = e.maxX, u = e.maxY, c = s = 0, n.style.left = (r = t).pageX + "px", n.style.top = r.pageY + "px", u < r.pageY + i && (c = r.pageY + i - u), n.style.width = o - (s = a < r.pageX + o ? r.pageX + o - a : s) + "px", n.style.height = i - c + "px", E(w.clientX, w.clientY))
                })
            }
    }

    function a1(e) {
        function t(e) {
            var t, n, r, o, i, a;
            0 === e.button && (t = M(c.dom.getParents(e.target), function() {
                for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
                return function(e) {
                    for (var t = 0; t < n.length; t++)
                        if (n[t](e)) return !0;
                    return !1
                }
            }(D1, T1)).getOr(null), i = c.getBody(), D1(a = t) && a !== i && (n = c.dom.getPos(t), r = c.getBody(), o = c.getDoc().documentElement, u.set({
                element: t,
                dragging: !1,
                screenX: e.screenX,
                screenY: e.screenY,
                maxX: (c.inline ? r.scrollWidth : o.offsetWidth) - 2,
                maxY: (c.inline ? r.scrollHeight : o.offsetHeight) - 2,
                relX: e.pageX - n.x,
                relY: e.pageY - n.y,
                width: t.offsetWidth,
                height: t.offsetHeight,
                ghost: function(e, t, n) {
                    var r = c.dom,
                        o = e.cloneNode(!0);
                    r.setStyles(o, { width: t, height: n }), r.setAttrib(o, "data-mce-selected", null);
                    var i = r.create("div", { class: "mce-drag-container", "data-mce-bogus": "all", unselectable: "on", contenteditable: "false" });
                    return r.setStyles(i, { position: "absolute", opacity: .5, overflow: "hidden", border: 0, padding: 0, margin: 0, width: t, height: n }), r.setStyles(o, { margin: 0, boxSizing: "border-box" }), i.appendChild(o), i
                }(t, t.offsetWidth, t.offsetHeight)
            })))
        }

        function n(u) {
            i.on(function(e) {
                var t, n, r, o, i, a;
                e.dragging && ((o = 3 === (a = (r = s).selection.getSel().getRangeAt(0).startContainer).nodeType ? a.parentNode : a) === (i = e.element) || r.dom.isChildOf(o, i) || D1(o) || ((n = e.element.cloneNode(!0)).removeAttribute("data-mce-selected"), t = n, s.fire("drop", { clientX: u.clientX, clientY: u.clientY }).isDefaultPrevented() || s.undoManager.transact(function() { o1(e.element), s.insertContent(s.dom.getOuterHTML(t)), s._selectionOverrides.hideFakeCaret() })), s.fire("dragend"))
            }), O1(i)
        }
        var r, o, i, s, u, c, a = cu(),
            l = Ja.DOM,
            f = document,
            d = i1(u = a, c = e),
            m = (r = i = a, function() { r.on(function(e) { e.dragging && o.fire("dragend") }), O1(r) });
        (o = s = e).on("mousedown", t), e.on("mousemove", d), e.on("mouseup", n), l.bind(f, "mousemove", d), l.bind(f, "mouseup", m), e.on("remove", function() { l.unbind(f, "mousemove", d), l.unbind(f, "mouseup", m) }), e.on("keydown", function(e) { e.keyCode === Bf.ESC && m() })
    }

    function u1(e) {
        var n, i;

        function a(e) {
            var t;
            e.isDefaultPrevented() || (t = e.dataTransfer) && (D(t.types, "Files") || 0 < t.files.length) && (e.preventDefault(), "drop" === e.type && Iv(i, "Dropped file type is not supported"))
        }

        function u(e) { dd(i, e.target) && a(e) }

        function t() {
            var t = Ja.DOM,
                n = i.dom,
                r = document,
                o = i.inline ? i.getBody() : i.getDoc(),
                e = ["drop", "dragover"];
            Y(e, function(e) { t.bind(r, e, u), n.bind(o, e, a) }), i.on("remove", function() { Y(e, function(e) { t.unbind(r, e, u), n.unbind(o, e, a) }) })
        }
        a1(e), (n = e).on("drop", function(e) { var t = void 0 !== e.clientX ? n.getDoc().elementFromPoint(e.clientX, e.clientY) : null;!D1(t) && "false" !== n.dom.getContentEditableParent(t) || e.preventDefault() }), e.getParam("block_unsupported_drop", !0, "boolean") && (i = e).on("init", function() { _r.setEditorTimeout(i, t, 0) })
    }

    function s1(e, t) { return pf(e.getBody(), t) }

    function c1(l) {
        function f(e) { return e !== x && (P1(e) || Jn(e)) && y.isChildOf(e, x) }

        function c(e) { return ep(e) || tp(e) || Gg(e) || Jg(e) }

        function d(e) { e && b.setRng(e) }

        function m(e, t, n, r) { return void 0 === r && (r = !0), l.fire("ShowCaret", { target: t, direction: e, before: n }).isDefaultPrevented() ? null : (r && b.scrollIntoView(t, -1 === e), i.show(n, t)) }

        function t(e) { return Ir(e) || No(e) || ko(e) }

        function g(e) { return t(e.startContainer) || t(e.endContainer) }

        function p(e, t) {
            if (!e) return null;
            if (e.collapsed) {
                if (!g(e)) {
                    var n = t ? 1 : -1,
                        r = tc(n, x, e),
                        o = r.getNode(!t);
                    if ($s(o)) return m(n, o, !!t && !r.isAtEnd(), !1);
                    var i = r.getNode(t);
                    if ($s(i)) return m(n, i, !t && !r.isAtEnd(), !1)
                }
                return null
            }
            var a = e.startContainer,
                u = e.startOffset,
                s = e.endOffset;
            if (3 === a.nodeType && 0 === u && P1(a.parentNode) && (a = a.parentNode, u = y.nodeIndex(a), a = a.parentNode), 1 !== a.nodeType) return null;
            if (s === u + 1 && a === e.endContainer) {
                var c = a.childNodes[u];
                if (f(c)) return function(e) {
                    var t = e.cloneNode(!0),
                        n = l.fire("ObjectSelected", { target: e, targetClone: t });
                    if (n.isDefaultPrevented()) return null;
                    var r = function(e, t, n) {
                            var r = l.$,
                                o = vr(Nt.fromDom(l.getBody()), "#" + w).fold(function() { return r([]) }, function(e) { return r([e.dom]) });
                            0 === o.length && (o = r('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id", w)).appendTo(l.getBody());
                            var i = y.createRng();
                            t === n && xt.ie ? (o.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(t), i.setStartAfter(o[0].firstChild.firstChild), i.setEndAfter(t)) : (o.empty().append(yo).append(t).append(yo), i.setStart(o[0].firstChild, 1), i.setEnd(o[0].lastChild, 0)), o.css({ top: y.getPos(e, l.getBody()).y }), o[0].focus();
                            var a = b.getSel();
                            return a.removeAllRanges(), a.addRange(i), i
                        }(e, n.targetClone, t),
                        o = Nt.fromDom(e);
                    return Y(hu(Nt.fromDom(l.getBody()), "*[data-mce-selected]"), function(e) { je(o, e) || yn(e, S) }), y.getAttrib(e, S) || e.setAttribute(S, "1"), v = e, E(), r
                }(c)
            }
            return null
        }

        function h() { v && v.removeAttribute(S), vr(Nt.fromDom(l.getBody()), "#" + w).each(Ln), v = null }
        var v, n, e, o, b = l.selection,
            y = l.dom,
            C = y.isBlock,
            x = l.getBody(),
            i = Vs(l, x, C, function() { return vd(l) }),
            w = "sel-" + y.uniqueId(),
            S = "data-mce-selected",
            r = b.getRng,
            E = function() { i.hide() };
        return xt.ceFalse && !mh(l) && (l.on("mouseup", function(e) {
            var t = r();
            t.collapsed && av(l, e.clientX, e.clientY) && Sb(l, t, !1).each(d)
        }), l.on("click", function(e) {
            var t = s1(l, e.target);
            t && (P1(t) && (e.preventDefault(), l.focus()), B1(t) && y.isChildOf(t, b.getNode()) && h())
        }), l.on("blur NewBlock", h), l.on("ResizeWindow FullscreenStateChanged", i.reposition), l.on("tap", function(e) {
            var t = e.target,
                n = s1(l, t);
            P1(n) ? (e.preventDefault(), wb(l, n).each(p)) : f(t) && wb(l, t).each(p)
        }, !0), l.on("mousedown", function(e) {
            var t, n, r, o, i, a, u, s = e.target;
            s !== x && "HTML" !== s.nodeName && !y.isChildOf(s, x) || !1 === av(l, e.clientX, e.clientY) || ((t = s1(l, s)) ? P1(t) ? (e.preventDefault(), wb(l, t).each(p)) : (h(), B1(t) && e.shiftKey || hf(e.clientX, e.clientY, b.getRng()) || (E(), b.placeCaretAt(e.clientX, e.clientY))) : f(s) ? wb(l, s).each(p) : !1 === $s(s) && (h(), E(), (n = Yy(x, e.clientX, e.clientY)) && (r = s, o = n.node, a = y.getParent(r, C), u = y.getParent(o, C), !K(a) && (r !== u && y.isChildOf(a, u) && !1 === P1(s1(l, a)) || !y.isChildOf(u, a) && (i = u, y.getParent(a, C) !== y.getParent(i, C)) && function(e) { var t = e.firstChild; if (!K(t)) { var n = as.before(t); if (Wn(n.getNode()) && 1 === e.childNodes.length) return !c(n); var r = Pc(e).next(n); return r && !c(r) } }(a)) || (e.preventDefault(), d(m(1, n.node, n.before, !1)), l.getBody().focus()))))
        }), l.on("keypress", function(e) { Bf.modifierPressed(e) || P1(b.getNode()) && e.preventDefault() }), l.on("GetSelectionRange", function(e) {
            var t = e.range;
            v && (v.parentNode ? ((t = t.cloneRange()).selectNode(v), e.range = t) : v = null)
        }), l.on("SetSelectionRange", function(e) {
            var t, n, r, o, i, a, u;
            e.range = (t = e.range, n = l.schema.getShortEndedElements(), r = y.createRng(), o = t.startContainer, i = t.startOffset, a = t.endContainer, u = t.endOffset, Ne(n, o.nodeName.toLowerCase()) ? 0 === i ? r.setStartBefore(o) : r.setStartAfter(o) : r.setStart(o, i), Ne(n, a.nodeName.toLowerCase()) ? 0 === u ? r.setEndBefore(a) : r.setEndAfter(a) : r.setEnd(a, u), r);
            var s = p(e.range, e.forward);
            s && (e.range = s)
        }), l.on("AfterSetSelectionRange", function(e) {
            var t = e.range,
                n = t.startContainer.parentNode;
            g(t) || "mcepastebin" === n.id || E(), y.hasClass(n, "mce-offscreen-selection") || h()
        }), l.on("copy", function(e) {
            var t, n, r = e.clipboardData;
            e.isDefaultPrevented() || !e.clipboardData || xt.ie || (t = (n = y.get(w)) && n.getElementsByTagName("*")[0]) && (e.preventDefault(), r.clearData(), r.setData("text/html", t.outerHTML), r.setData("text/plain", t.outerText || t.innerText))
        }), u1(l), e = lu(function() {
            var e, t;
            n.removed || !n.getBody().contains(document.activeElement) || (e = n.selection.getRng()).collapsed && (t = Eb(n, e, !1), n.selection.setRng(t))
        }, 0), (n = l).on("focus", function() { e.throttle() }), n.on("blur", function() { e.cancel() }), (o = l).on("init", function() {
            o.on("focusin", function(e) {
                var t, n, r = e.target;
                Jn(r) && (t = pf(o.getBody(), r), n = Yn(t) ? t : r, o.selection.getNode() !== n && wb(o, n).each(function(e) { return o.selection.setRng(e) }))
            })
        })), { showCaret: m, showBlockCaretContainer: function(e) { e.hasAttribute("data-mce-caret") && (zr(e), d(r()), b.scrollIntoView(e)) }, hideFakeCaret: E, destroy: function() { i.destroy(), v = null } }
    }

    function l1(a) {
        function e(e, t) { try { a.getDoc().execCommand(e, !1, t) } catch (e) {} }

        function u(e) { return e.isDefaultPrevented() }

        function t() { a.shortcuts.add("meta+a", null, "SelectAll") }

        function n() {
            a.inline || b.bind(a.getDoc(), "mousedown mouseup", function(e) {
                var t;
                e.target === a.getDoc().documentElement && (t = y.getRng(), a.getBody().focus(), "mousedown" === e.type ? Ir(t.startContainer) || y.placeCaretAt(e.clientX, e.clientY) : y.setRng(t))
            })
        }

        function r() {
            Range.prototype.getClientRects || a.on("mousedown", function(e) {
                var t;
                u(e) || "HTML" !== e.target.nodeName || ((t = a.getBody()).blur(), _r.setEditorTimeout(a, function() { t.focus() }))
            })
        }

        function o() { a.on("click", function(e) { var t = e.target; /^(IMG|HR)$/.test(t.nodeName) && "false" !== b.getContentEditableParent(t) && (e.preventDefault(), a.selection.select(t), a.nodeChanged()), "A" === t.nodeName && b.hasClass(t, "mce-item-anchor") && (e.preventDefault(), y.select(t)) }) }

        function i() { a.on("keydown", function(e) { if (!u(e) && e.keyCode === h && y.isCollapsed() && 0 === y.getRng().startOffset) { var t = y.getNode().previousSibling; if (t && t.nodeName && "table" === t.nodeName.toLowerCase()) return e.preventDefault(), !1 } }) }

        function s() { a.getParam("readonly") || a.on("BeforeExecCommand mousedown", function() { e("StyleWithCSS", !1), e("enableInlineTableEditing", !1), Ts(a) || e("enableObjectResizing", !1) }) }

        function c() { a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}") }

        function l() { a.inline || a.on("keydown", function() { document.activeElement === document.body && a.getWin().focus() }) }

        function f() { a.inline || (a.contentStyles.push("body {min-height: 150px}"), a.on("click", function(e) { var t; "HTML" === e.target.nodeName && (11 < xt.ie ? a.getBody().focus() : (t = a.selection.getRng(), a.getBody().focus(), a.selection.setRng(t), a.selection.normalize(), a.nodeChanged())) })) }

        function d() { xt.mac && a.on("keydown", function(e) {!Bf.metaKeyPressed(e) || e.shiftKey || 37 !== e.keyCode && 39 !== e.keyCode || (e.preventDefault(), a.selection.getSel().modify("move", 37 === e.keyCode ? "backward" : "forward", "lineboundary")) }) }

        function m() {
            a.on("click", function(e) {
                var t = e.target;
                do { if ("A" === t.tagName) return void e.preventDefault() } while (t = t.parentNode)
            }), a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")
        }

        function g() { a.on("init", function() { a.dom.bind(a.getBody(), "submit", function(e) { e.preventDefault() }) }) }
        var p = Et.each,
            h = Bf.BACKSPACE,
            v = Bf.DELETE,
            b = a.dom,
            y = a.selection,
            C = a.parser,
            x = xt.gecko,
            w = xt.ie,
            S = xt.webkit,
            E = "data:text/mce-internal,",
            N = w ? "Text" : "URL",
            k = te;
        return mh(a) ? (S && (n(), o(), g(), t(), xt.iOS && (l(), f(), m())), x && (r(), s(), c(), d())) : (a.on("keydown", function(e) {
            if (!u(e) && e.keyCode === Bf.BACKSPACE) {
                var t, n = (t = y.getRng()).startContainer,
                    r = t.startOffset,
                    o = b.getRoot(),
                    i = n;
                if (t.collapsed && 0 === r) { for (; i && i.parentNode && i.parentNode.firstChild === i && i.parentNode !== o;) i = i.parentNode; "BLOCKQUOTE" === i.tagName && (a.formatter.toggle("blockquote", null, i), (t = b.createRng()).setStart(n, 0), t.setEnd(n, 0), y.setRng(t)) }
            }
        }), a.on("keydown", function(e) {
            var t, n, r, o, i = e.keyCode;
            u(e) || i !== v && i !== h || (t = a.selection.isCollapsed(), n = a.getBody(), t && !b.isEmpty(n) || !t && (r = R(a.selection.getRng()), (o = b.createRng()).selectNode(a.getBody()), r !== R(o)) || (e.preventDefault(), a.setContent(""), n.firstChild && b.isBlock(n.firstChild) ? a.selection.setCursorLocation(n.firstChild, 0) : a.selection.setCursorLocation(n, 0), a.nodeChanged()))
        }), xt.windowsPhone || a.on("keyup focusin mouseup", function(e) { Bf.modifierPressed(e) || y.normalize() }, !0), S && (n(), o(), Ss(a) && a.on("init", function() { e("DefaultParagraphSeparator", Ss(a)) }), g(), i(), C.addNodeFilter("br", function(e) { for (var t = e.length; t--;) "Apple-interchange-newline" === e[t].attr("class") && e[t].remove() }), xt.iOS ? (l(), f(), m()) : t()), 11 <= xt.ie && (f(), i()), xt.ie && (t(), e("AutoUrlDetect", !1), a.on("dragstart", function(e) {
            var t, n, r;
            (t = e).dataTransfer && (a.selection.isCollapsed() && "IMG" === t.target.tagName && y.select(t.target), 0 < (n = a.selection.getContent()).length && (r = E + escape(a.id) + "," + escape(n), t.dataTransfer.setData(N, r)))
        }), a.on("drop", function(e) {
            var t, n, r, o;
            u(e) || (t = e.dataTransfer && (o = e.dataTransfer.getData(N)) && 0 <= o.indexOf(E) ? (o = o.substr(E.length).split(","), { id: unescape(o[0]), html: unescape(o[1]) }) : null) && t.id !== a.id && (e.preventDefault(), n = wf(e.x, e.y, a.getDoc()), y.setRng(n), r = t.html, a.queryCommandSupported("mceInsertClipboardContent") ? a.execCommand("mceInsertClipboardContent", !1, { content: r, internal: !0 }) : a.execCommand("mceInsertContent", !1, r))
        })), x && (a.on("keydown", function(e) {
            if (!u(e) && e.keyCode === h && a.getBody().getElementsByTagName("hr").length && y.isCollapsed() && 0 === y.getRng().startOffset) {
                var t = y.getNode(),
                    n = t.previousSibling;
                if ("HR" === t.nodeName) return b.remove(t), void e.preventDefault();
                n && n.nodeName && "hr" === n.nodeName.toLowerCase() && (b.remove(n), e.preventDefault())
            }
        }), r(), a.on("keypress", function(e) { var t; if (!u(e) && (8 === e.keyCode || 46 === e.keyCode) && A()) return t = _(), a.getDoc().execCommand("delete", !1, null), t(), e.preventDefault(), !1 }), b.bind(a.getDoc(), "cut", function(e) { var t;!u(e) && A() && (t = _(), _r.setEditorTimeout(a, function() { t() })) }), s(), a.on("SetContent ExecCommand", function(e) {
            "setcontent" !== e.type && "mceInsertLink" !== e.command || p(b.select("a"), function(e) {
                var t = e.parentNode,
                    n = b.getRoot();
                if (t.lastChild === e) {
                    for (; t && !b.isBlock(t);) {
                        if (t.parentNode.lastChild !== t || t === n) return;
                        t = t.parentNode
                    }
                    b.add(t, "br", { "data-mce-bogus": 1 })
                }
            })
        }), c(), d(), i())), { refreshContentEditable: k, isHidden: function() { if (!x || a.removed) return !1; var e = a.selection.getSel(); return !e || !e.rangeCount || 0 === e.rangeCount } };

        function _() {
            var e = b.getAttribs(y.getStart().cloneNode(!1));
            return function() {
                var t = y.getStart();
                t !== a.getBody() && (b.setAttrib(t, "style", null), p(e, function(e) { t.setAttributeNode(e.cloneNode(!0)) }))
            }
        }

        function A() { return !y.isCollapsed() && b.getParent(y.getStart(), b.isBlock) !== b.getParent(y.getEnd(), b.isBlock) }

        function R(e) {
            var t = b.create("body"),
                n = e.cloneContents();
            return t.appendChild(n), y.serializer.serialize(t, { format: "html" })
        }
    }

    function f1(e) { return ae(e, function(e) { return !1 === b(e) }) }

    function d1(e) {
        var t = e.settings,
            n = e.editorUpload.blobCache;
        return f1({ allow_conditional_comments: t.allow_conditional_comments, allow_html_data_urls: t.allow_html_data_urls, allow_svg_data_urls: t.allow_svg_data_urls, allow_html_in_named_anchor: t.allow_html_in_named_anchor, allow_script_urls: t.allow_script_urls, allow_unsafe_link_target: t.allow_unsafe_link_target, convert_fonts_to_spans: t.convert_fonts_to_spans, fix_list_elements: t.fix_list_elements, font_size_legacy_values: t.font_size_legacy_values, forced_root_block: t.forced_root_block, forced_root_block_attrs: t.forced_root_block_attrs, padd_empty_with_br: t.padd_empty_with_br, preserve_cdata: t.preserve_cdata, remove_trailing_brs: t.remove_trailing_brs, inline_styles: t.inline_styles, root_name: e.inline ? e.getElement().nodeName.toLowerCase() : void 0, validate: !0, blob_cache: n, document: e.getDoc(), images_dataimg_filter: t.images_dataimg_filter })
    }

    function m1(e) {
        var t, u, n;
        e.bindPendingEventDelegates(), e.initialized = !0, e.fire("Init"), e.focus(!0), n = (u = e).dom.getRoot(), u.inline || Tl(u) && u.selection.getStart(!0) !== n || ef(n).each(function(e) {
            var t, n, r, o, i = e.getNode(),
                a = cn(i) ? ef(i).getOr(e) : e;
            xt.browser.isIE() ? (t = u, n = a.toRange(), r = Nt.fromDom(t.getBody()), o = (ad(t) ? ve.from(n) : ve.none()).map(ud).filter(id(r)), t.bookmark = o.isSome() ? o : t.bookmark) : u.selection.setRng(a.toRange())
        }), e.nodeChanged({ initial: !0 }), e.execCallback("init_instance_callback", e), (t = e).settings.auto_focus && _r.setEditorTimeout(t, function() {
            var e = !0 === t.settings.auto_focus ? t : t.editorManager.get(t.settings.auto_focus);
            e.destroyed || e.focus()
        }, 100)
    }

    function g1(e) { return (e.inline ? e.ui : e.dom).styleSheetLoader }

    function p1(e) {
        function t() { o.unloadAll(a), e.inline || e.ui.styleSheetLoader.unloadAll(i) }

        function n() { e.removed ? t() : e.on("remove", t) }
        var r, o = g1(e),
            i = Ds(e),
            a = e.contentCSS;
        0 < e.contentStyles.length && (r = "", Et.each(e.contentStyles, function(e) { r += e + "\r\n" }), e.dom.addStyle(r));
        var u, s, c, l, f, d, m, g, p, h = kr.all((u = e, s = a, c = i, l = [new kr(function(e, t) { return g1(u).loadAll(s, e, t) })], u.inline ? l : l.concat([new kr(function(e, t) { return u.ui.styleSheetLoader.loadAll(c, e, t) })]))).then(n).catch(n);
        return e.settings.content_style && (d = (f = e).settings.content_style, m = Nt.fromDom(f.getBody()), g = jt(Bn(m)), pn(p = Nt.fromTag("style"), "type", "text/css"), Pn(p, Nt.fromText(d)), Pn(g, p), f.on("remove", function() { Ln(p) })), h
    }

    function h1(e) { var t;!0 !== e.removed && (mh(t = e) || t.load({ initial: !0, format: "html" }), t.startContent = t.getContent({ format: "raw" }), m1(e)) }

    function v1(t, e) {
        var n = t.settings,
            r = t.getElement(),
            o = t.getDoc();
        n.inline || (t.getElement().style.visibility = t.orgVisibility), e || t.inline || (o.open(), o.write(t.iframeHTML), o.close()), t.inline && (L1.addClass(r, "mce-content-body"), t.contentDocument = o = document, t.contentWindow = window, t.bodyElement = r, t.contentAreaContainer = r);
        var u, i, a, s, c, l, f, d, m, g, p, h = t.getBody();
        h.disabled = !0, t.readonly = !!n.readonly, t.readonly || (t.inline && "static" === L1.getStyle(h, "position", !0) && (h.style.position = "relative"), h.contentEditable = t.getParam("content_editable_state", !0)), h.disabled = !1, t.editorUpload = Kv(t), t.schema = to(n), t.dom = Ja(o, { keep_values: !0, url_converter: t.convertURL, url_converter_scope: t, hex_colors: n.force_hex_style_colors, update_styles: !0, root_element: t.inline ? t.getBody() : null, collect: function() { return t.inline }, schema: t.schema, contentCssCors: t.getParam("content_css_cors", !1, "boolean"), referrerPolicy: _s(t), onSetAttrib: function(e) { t.fire("SetAttrib", e) } }), t.parser = ((i = $h(d1(u = t), u.schema)).addAttributeFilter("src,href,style,tabindex", function(e, t) { for (var n, r, o = e.length, i = u.dom, a = "data-mce-" + t; o--;)(r = (n = e[o]).attr(t)) && !n.attr(a) && 0 !== r.indexOf("data:") && 0 !== r.indexOf("blob:") && ("style" === t ? ((r = i.serializeStyle(i.parseStyle(r), n.name)).length || (r = null), n.attr(a, r), n.attr(t, r)) : "tabindex" === t ? (n.attr(a, r), n.attr(t, null)) : n.attr(a, u.convertURL(r, t, n.name))) }), i.addNodeFilter("script", function(e) {
            for (var t = e.length; t--;) {
                var n = e[t],
                    r = n.attr("type") || "no/type";
                0 !== r.indexOf("mce-") && n.attr("type", "mce-" + r)
            }
        }), u.settings.preserve_cdata && i.addNodeFilter("#cdata", function(e) {
            for (var t = e.length; t--;) {
                var n = e[t];
                n.type = 8, n.name = "#comment", n.value = "[CDATA[" + u.dom.encode(n.value) + "]]"
            }
        }), i.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div", function(e) {
            for (var t = e.length, n = u.schema.getNonEmptyElements(); t--;) {
                var r = e[t];
                r.isEmpty(n) && 0 === r.getAll("br").length && (r.append(new Ud("br", 1)).shortEnded = !0)
            }
        }), i), t.serializer = Xh((a = t.settings, _e(_e({}, d1(t)), f1({ url_converter: a.url_converter, url_converter_scope: a.url_converter_scope, element_format: a.element_format, entities: a.entities, entity_encoding: a.entity_encoding, indent: a.indent, indent_after: a.indent_after, indent_before: a.indent_before, block_elements: a.block_elements, boolean_attributes: a.boolean_attributes, custom_elements: a.custom_elements, extended_valid_elements: a.extended_valid_elements, invalid_elements: a.invalid_elements, invalid_styles: a.invalid_styles, move_caret_before_on_enter_elements: a.move_caret_before_on_enter_elements, non_empty_elements: a.non_empty_elements, schema: a.schema, self_closing_elements: a.self_closing_elements, short_ended_elements: a.short_ended_elements, special: a.special, text_block_elements: a.text_block_elements, text_inline_elements: a.text_inline_elements, valid_children: a.valid_children, valid_classes: a.valid_classes, valid_elements: a.valid_elements, valid_styles: a.valid_styles, verify_html: a.verify_html, whitespace_elements: a.whitespace_elements }))), t), t.selection = Lh(t.dom, t.getWin(), t.serializer, t), t.annotator = Ml(t), t.formatter = Jv(t), t.undoManager = Zv(t), t._nodeChangeDispatcher = new e1(t), t._selectionOverrides = c1(t), d = t, m = cu(), g = ru(!1), p = fu(function(e) { d.fire("longpress", _e(_e({}, e), { type: "longpress" })), g.set(!0) }, 400), d.on("touchstart", function(n) {
            S0(n).each(function(e) {
                p.cancel();
                var t = { x: e.clientX, y: e.clientY, target: n.target };
                p.throttle(n), g.set(!1), m.set(t)
            })
        }, !0), d.on("touchmove", function(e) {
            p.cancel(), S0(e).each(function(i) {
                m.on(function(e) {
                    var t = i,
                        n = e,
                        r = Math.abs(t.clientX - n.x),
                        o = Math.abs(t.clientY - n.y);
                    (5 < r || 5 < o) && (m.clear(), g.set(!1), d.fire("longpresscancel"))
                })
            })
        }, !0), d.on("touchend touchcancel", function(t) { p.cancel(), "touchcancel" !== t.type && m.get().filter(function(e) { return e.target.isEqualNode(t.target) }).each(function() { g.get() ? t.preventDefault() : d.fire("tap", _e(_e({}, t), { type: "tap" })) }) }, !0), (l = c = t).on("click", function(e) { l.dom.getParent(e.target, "details") && e.preventDefault() }), (f = c).parser.addNodeFilter("details", function(e) { Y(e, function(e) { e.attr("data-mce-open", e.attr("open")), e.attr("open", "open") }) }), f.serializer.addNodeFilter("details", function(e) {
            Y(e, function(e) {
                var t = e.attr("data-mce-open");
                e.attr("open", X(t) ? t : null), e.attr("data-mce-open", null)
            })
        }), mh(t) || (s = t).on("click", function(e) {
            var t, n, r, o, i;
            3 <= e.detail && (r = (t = s).selection.getRng(), o = as.fromRangeStart(r), i = as.fromRangeEnd(r), !as.isElementPosition(o) || n1(n = o.container()) && ef(n).each(function(e) { return r.setStart(e.container(), e.offset()) }), !as.isElementPosition(i) || n1(n = o.container()) && tf(n).each(function(e) { return r.setEnd(e.container(), e.offset()) }), t.selection.setRng(vg(r)))
        });
        var v, b, y, C, x, w, S, E, N, k = mh(v = t) ? ru(null) : PC(v);
        N = k, (E = t).addCommand("delete", function() {
            var e, t = N;
            x0(e = E) || Pb(e, !1) || Ab(e, !1) || l0(e, t, !1) || vb(e, !1) || hg(e) || Lb(e, !1) || p0(e, !1) || Cb(e) || m0(e, !1) || (w0(e, "Delete"), ub(e))
        }), E.addCommand("forwardDelete", function() {
            var e, t = N;
            Pb(e = E, !0) || Ab(e, !0) || l0(e, t, !0) || vb(e, !0) || hg(e) || Lb(e, !0) || p0(e, !0) || Cb(e) || m0(e, !0) || w0(e, "ForwardDelete")
        }), Ss(b = t) && b.on("NodeChange", A(N0, b)), C = (y = t).dom, x = Ss(y), w = y.getParam("placeholder", gc.getAttrib(y.getElement(), "placeholder"), "string"), S = function(e, t) {
            var n, r, o;
            ! function(e) { if (eb(e)) { var t = e.keyCode; return !tb(e) && (Bf.metaKeyPressed(e) || e.altKey || 112 <= t && t <= 123 || D(my, t)) } }(e) && (n = y.getBody(), r = !(eb(o = e) && !(tb(o) || "keyup" === o.type && 229 === o.keyCode)) && function(e, t, n) {
                if (Wr(Nt.fromDom(t), !1)) {
                    var r = "" === n,
                        o = t.firstElementChild;
                    return !o || !e.getStyle(t.firstElementChild, "padding-left") && !e.getStyle(t.firstElementChild, "padding-right") && (r ? !e.isBlock(o) : n === o.nodeName.toLowerCase())
                }
                return !1
            }(C, n, x), "" !== C.getAttrib(n, gy) === r && !t || (C.setAttrib(n, gy, r ? w : null), C.setAttrib(n, "aria-placeholder", r ? w : null), y.fire("PlaceholderToggle", { state: r }), y.on(r ? "keydown" : "keyup", S), y.off(r ? "keyup" : "keydown", S)))
        }, w && y.on("init", function(e) { S(e, !0), y.on("change SetContent ExecCommand", S), y.on("paste", function(e) { return _r.setEditorTimeout(y, function() { return S(e) }) }) });
        var _ = gh(t);
        (function(t) {
            var e = t.settings,
                n = t.getDoc(),
                r = t.getBody();
            t.fire("PreInit"), e.browser_spellcheck || e.gecko_spellcheck || (n.body.spellcheck = !1, L1.setAttrib(r, "spellcheck", "false")), t.quirks = l1(t), t.fire("PostRender");
            var o = t.getParam("directionality", uu.isRtl() ? "rtl" : void 0);
            void 0 !== o && (r.dir = o), e.protect && t.on("BeforeSetContent", function(t) { Et.each(e.protect, function(e) { t.content = t.content.replace(e, function(e) { return "\x3c!--mce:protected " + escape(e) + "--\x3e" }) }) }), t.on("SetContent", function() { t.addVisual(t.getBody()) }), t.on("compositionstart compositionend", function(e) { t.composing = "compositionstart" === e.type })
        })(t), _.fold(function() { p1(t).then(function() { return h1(t) }) }, function(e) { t.setProgressState(!0), p1(t).then(function() { e().then(function(e) { t.setProgressState(!1), h1(t) }, function(e) { t.notificationManager.open({ type: "error", text: String(e) }), h1(t) }) }) })
    }

    function b1(e, t) {
        var n, r, o, i, a = e.translate("Rich Text Area"),
            u = (n = e.id, r = a, t.height, o = e.getParam("iframe_attrs", {}), hn(i = Nt.fromTag("iframe"), o), hn(i, { id: n + "_ifr", frameBorder: "0", allowTransparency: "true", title: r }), gu(i, "tox-edit-area__iframe"), i.dom);
        u.onload = function() { u.onload = null, e.fire("load") };
        var s = function(e, t) {
            if (document.domain !== window.location.hostname && xt.browser.isIE()) {
                var n = jv("mce");
                e[n] = function() { v1(e) };
                var r = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinymce.get("' + e.id + '");document.write(ed.iframeHTML);document.close();ed.' + n + "(true);})()";
                return I1.setAttrib(t, "src", r), !0
            }
            return !1
        }(e, u);
        return e.contentAreaContainer = t.iframeContainer, e.iframeElement = u, e.iframeHTML = function(e) {
            var t = e.getParam("doctype", "<!DOCTYPE html>") + "<html><head>";
            e.getParam("document_base_url", "") !== e.documentBaseUrl && (t += '<base href="' + e.documentBaseURI.getURI() + '" />'), t += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
            var n = xs(e, "body_id", "tinymce"),
                r = xs(e, "body_class", ""),
                o = e.translate(e.getParam("iframe_aria_text", "Rich Text Area. Press ALT-0 for help.", "string"));
            return ws(e) && (t += '<meta http-equiv="Content-Security-Policy" content="' + ws(e) + '" />'), t + ('</head><body id="' + n + '" class="mce-content-body ' + r + '" data-id="' + e.id) + '" aria-label="' + o + '"><br></body></html>'
        }(e), I1.add(t.iframeContainer, u), s
    }

    function y1(e) { return e.replace(/^\-/, "") }

    function C1(e) { return { editorContainer: e, iframeContainer: e, api: {} } }

    function x1(e) { var t, n, r, o, i, a, u, s = e.getElement(); return e.orgDisplay = s.style.display, X(Bs(e)) ? e.theme.renderUI() : y(Bs(e)) ? (n = (t = e).getElement(), (r = Bs(t)(t, n)).editorContainer.nodeType && (r.editorContainer.id = r.editorContainer.id || t.id + "_parent"), r.iframeContainer && r.iframeContainer.nodeType && (r.iframeContainer.id = r.iframeContainer.id || t.id + "_iframecontainer"), r.height = r.iframeHeight || n.offsetHeight, r) : (u = (o = e).getElement(), o.inline ? C1(null) : (i = u, a = M1.create("div"), M1.insertAfter(a, i), C1(a))) }

    function w1(e) {
        var n, t, r, o, i, a, u, s;
        e.fire("ScriptsLoaded"), n = e, t = Et.trim(ks(n)), r = n.ui.registry.getAll().icons, ne(_e(_e({}, _v.get("default").icons), _v.get(t).icons), function(e, t) { Ne(r, t) || n.ui.registry.addIcon(t, e) }), a = Bs(o = e), X(a) ? (o.settings.theme = y1(a), i = Bv.get(a), o.theme = new i(o, Bv.urls[a]), o.theme.init && o.theme.init(o, Bv.urls[a] || o.documentBaseUrl.replace(/\/$/, ""), o.$)) : o.theme = {}, s = [], Et.each(Ls(u = e).split(/[ ,]/), function(e) { F1(u, s, y1(e)) });
        var c = x1(e),
            l = e,
            f = ve.from(c.api).getOr({}),
            d = { show: ve.from(f.show).getOr(te), hide: ve.from(f.hide).getOr(te), disable: ve.from(f.disable).getOr(te), isDisabled: ve.from(f.isDisabled).getOr(R), enable: function() { l.mode.isReadOnly() || ve.from(f.enable).map(x) } };
        l.ui = _e(_e({}, l.ui), d);
        var m, g, p, h = { editorContainer: c.editorContainer, iframeContainer: c.iframeContainer };
        return e.editorContainer = h.editorContainer || null, zv(e), e.inline ? v1(e) : (p = b1(m = e, g = h), g.editorContainer && (I1.get(g.editorContainer).style.display = m.orgDisplay, m.hidden = I1.isHidden(g.editorContainer)), m.getElement().style.display = "none", I1.setAttrib(m.id, "aria-hidden", "true"), void(p || v1(m)))
    }

    function S1(e) { return "-" === e.charAt(0) }

    function E1(t, e, n) { return ve.from(e).filter(function(e) { return 0 < e.length && !_v.has(e) }).map(function(e) { return { url: t.editorManager.baseURL + "/icons/" + e + "/icons" + n + ".js", name: ve.some(e) } }) }

    function N1(c, l) {
        var e, t, f = tu.ScriptLoader,
            n = f,
            r = l,
            o = function() {
                var r, o, t, n, e, i, a, u, s;
                e = f, u = As(i = c), s = i.getParam("language_url", "", "string"), !1 === uu.hasCode(u) && "en" !== u && (a = "" !== s ? s : i.editorManager.baseURL + "/langs/" + u + ".js", e.add(a, te, void 0, function() { Mv(i, "LanguageLoadError", Fv("language", a, u)) })), t = f, Y(function(e) { for (var t = [], n = function(e) { t.push(e) }, r = 0; r < e.length; r++) e[r].each(n); return t }([E1(n = c, "default", l), ve.from(n.getParam("icons_url", "", "string")).filter(function(e) { return 0 < e.length }).map(function(e) { return { url: e, name: ve.none() } }).orThunk(function() { return E1(n, ks(n), "") })]), function(e) { t.add(e.url, te, void 0, function() { Mv(n, "IconsLoadError", Fv("icons", e.url, e.name.getOrUndefined())) }) }), r = c, o = l, Et.each(r.getParam("external_plugins"), function(e, t) { Ov.load(t, e, te, void 0, function() { Uv(r, e, t) }), r.settings.plugins += " " + t }), Et.each(Ls(r).split(/[ ,]/), function(e) {
                    var t, n;
                    (e = Et.trim(e)) && !Ov.urls[e] && (S1(e) ? (e = e.substr(1, e.length), t = Ov.dependencies(e), Et.each(t, function(e) {
                        var t = Ov.createUrl({ prefix: "plugins/", resource: e, suffix: "/plugin" + o + ".js" }, e);
                        Ov.load(t.resource, t, te, void 0, function() { Uv(r, t.prefix + t.resource + t.suffix, t.resource) })
                    })) : (n = { prefix: "plugins/", resource: e, suffix: "/plugin" + o + ".js" }, Ov.load(e, n, te, void 0, function() { Uv(r, n.prefix + n.resource + n.suffix, e) })))
                }), f.loadQueue(function() { c.removed || w1(c) }, c, function() { c.removed || w1(c) })
            },
            i = Bs(e = c);
        X(i) ? (S1(i) || Ne(Bv.urls, i) || ((t = e.getParam("theme_url")) ? Bv.load(i, e.documentBaseURI.toAbsolute(t)) : Bv.load(i, "themes/" + i + "/theme" + r + ".js")), n.loadQueue(function() { Bv.waitFor(i, o) })) : o()
    }

    function k1(a) { return function(i, e) { return ve.from(e).map(Nt.fromDom).filter(kn).bind(function(e) { return n = a, t = i, r = e.dom, Ag(Nt.fromDom(r), function(e) { return wn(t = e, n).orThunk(function() { return "font" === kt(t) ? ue(z1, n).bind(function(e) { return bn(t, e) }) : ve.none() }); var t }, function(e) { return je(Nt.fromDom(t), e) }).or((o = e.dom, ve.from(Ja.DOM.getStyle(o, a, !0)))); var n, t, r, o }).getOr("") } }

    function _1(e) { return ef(e.getBody()).map(function(e) { var t = e.container(); return jn(t) ? t.parentNode : t }) }

    function A1(e, t) { return n = e, r = a(ve.some, t), o = n, ve.from(o.selection.getRng()).bind(function(e) { var t = o.getBody(); return e.startContainer === t && 0 === e.startOffset ? ve.none() : ve.from(o.selection.getStart(!0)) }).orThunk(A(_1, n)).map(Nt.fromDom).filter(kn).bind(r); var n, r, o }

    function R1(e, t) {
        if (/^[0-9.]+$/.test(t)) {
            var n = parseInt(t, 10);
            if (1 <= n && n <= 7) {
                var r = Et.explode(e.getParam("font_size_style_values", "xx-small,x-small,small,medium,large,x-large,xx-large")),
                    o = Et.explode(e.getParam("font_size_classes", ""));
                return o ? o[n - 1] || t : r[n - 1] || t
            }
            return t
        }
        return t
    }
    var D1 = Yn,
        T1 = Xn,
        O1 = function(e) { e.on(function(e) { o1(e.ghost) }), e.clear() },
        B1 = Xn,
        P1 = Yn,
        L1 = Ja.DOM,
        I1 = Ja.DOM,
        M1 = Ja.DOM,
        F1 = function(t, n, r) {
            var o, i, a, u, e = Ov.get(r),
                s = Ov.urls[r] || t.documentBaseUrl.replace(/\/$/, "");
            if (r = Et.trim(r), e && -1 === Et.inArray(n, r) && (Et.each(Ov.dependencies(r), function(e) { F1(t, n, e) }), !t.plugins[r])) try {
                var c = new e(t, s, t.$);
                (t.plugins[r] = c).init && (c.init(t, s), n.push(r))
            } catch (e) { i = r, a = e, vf(o = t, "PluginLoadError", { message: u = uu.translate(["Failed to initialize plugin: {0}", i]) }), ay(u, a), Iv(o, u) }
        },
        U1 = Ja.DOM,
        z1 = { "font-size": "size", "font-family": "face" },
        H1 = k1("font-size"),
        j1 = i(function(e) { return e.replace(/[\'\"\\]/g, "").replace(/,\s+/g, ",") }, k1("font-family")),
        V1 = Et.each,
        q1 = Et.map,
        $1 = Et.inArray,
        W1 = (K1.prototype.execCommand = function(t, n, r, e) {
            var o, i, a = !1,
                u = this;
            if (!u.editor.removed) { if ("mcefocus" !== t.toLowerCase() && (/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t) || e && e.skip_focus ? ld(i = u.editor).each(function(e) { return i.selection.setRng(e) }) : u.editor.focus()), (e = u.editor.fire("BeforeExecCommand", { command: t, ui: n, value: r })).isDefaultPrevented()) return !1; var s = t.toLowerCase(); if (o = u.commands.exec[s]) return o(s, n, r), u.editor.fire("ExecCommand", { command: t, ui: n, value: r }), !0; if (V1(this.editor.plugins, function(e) { if (e.execCommand && e.execCommand(t, n, r)) return u.editor.fire("ExecCommand", { command: t, ui: n, value: r }), !(a = !0) }), a) return a; if (u.editor.theme && u.editor.theme.execCommand && u.editor.theme.execCommand(t, n, r)) return u.editor.fire("ExecCommand", { command: t, ui: n, value: r }), !0; try { a = u.editor.getDoc().execCommand(t, n, r) } catch (e) {} return !!a && (u.editor.fire("ExecCommand", { command: t, ui: n, value: r }), !0) }
        }, K1.prototype.queryCommandState = function(e) { var t; if (!this.editor.quirks.isHidden() && !this.editor.removed) { if (e = e.toLowerCase(), t = this.commands.state[e]) return t(e); try { return this.editor.getDoc().queryCommandState(e) } catch (e) {} return !1 } }, K1.prototype.queryCommandValue = function(e) { var t; if (!this.editor.quirks.isHidden() && !this.editor.removed) { if (e = e.toLowerCase(), t = this.commands.value[e]) return t(e); try { return this.editor.getDoc().queryCommandValue(e) } catch (e) {} } }, K1.prototype.addCommands = function(e, n) {
            void 0 === n && (n = "exec");
            var r = this;
            V1(e, function(t, e) { V1(e.toLowerCase().split(","), function(e) { r.commands[n][e] = t }) })
        }, K1.prototype.addCommand = function(e, o, i) {
            var a = this;
            e = e.toLowerCase(), this.commands.exec[e] = function(e, t, n, r) { return o.call(i || a.editor, t, n, r) }
        }, K1.prototype.queryCommandSupported = function(e) { if (e = e.toLowerCase(), this.commands.exec[e]) return !0; try { return this.editor.getDoc().queryCommandSupported(e) } catch (e) {} return !1 }, K1.prototype.addQueryStateHandler = function(e, t, n) {
            var r = this;
            e = e.toLowerCase(), this.commands.state[e] = function() { return t.call(n || r.editor) }
        }, K1.prototype.addQueryValueHandler = function(e, t, n) {
            var r = this;
            e = e.toLowerCase(), this.commands.value[e] = function() { return t.call(n || r.editor) }
        }, K1.prototype.hasCustomCommand = function(e) { return e = e.toLowerCase(), !!this.commands.exec[e] }, K1.prototype.execNativeCommand = function(e, t, n) { return void 0 === t && (t = !1), void 0 === n && (n = null), this.editor.getDoc().execCommand(e, t, n) }, K1.prototype.isFormatMatch = function(e) { return this.editor.formatter.match(e) }, K1.prototype.toggleFormat = function(e, t) { this.editor.formatter.toggle(e, t), this.editor.nodeChanged() }, K1.prototype.storeSelection = function(e) { this.selectionBookmark = this.editor.selection.getBookmark(e) }, K1.prototype.restoreSelection = function() { this.editor.selection.moveToBookmark(this.selectionBookmark) }, K1.prototype.setupCommands = function(u) {
            var o = this;

            function e(r) {
                return function() {
                    var e = u.selection,
                        t = e.isCollapsed() ? [u.dom.getParent(e.getNode(), u.dom.isBlock)] : e.getSelectedBlocks(),
                        n = q1(t, function(e) { return !!u.formatter.matchNode(e, r) });
                    return -1 !== $1(n, !0)
                }
            }
            this.addCommands({
                "mceResetDesignMode,mceBeginUndoLevel": te,
                "mceEndUndoLevel,mceAddUndoLevel": function() { u.undoManager.add() },
                mceFocus: function(e, t, n) {
                    var r, o;
                    o = n, (r = u).removed || (o ? Md : function(t) {
                        var e = t.selection,
                            n = t.getBody(),
                            r = e.getRng();
                        t.quirks.refreshContentEditable(), void 0 !== t.bookmark && !1 === vd(t) && ld(t).each(function(e) { t.selection.setRng(e), r = e });
                        var o, i, a = (o = t, i = e.getNode(), o.dom.getParent(i, function(e) { return "true" === o.dom.getContentEditable(e) }));
                        if (t.$.contains(n, a)) return hd(a), pd(t, r), Md(t);
                        t.inline || (xt.opera || hd(n), t.getWin().focus()), (xt.gecko || t.inline) && (hd(n), pd(t, r)), Md(t)
                    })(r)
                },
                "Cut,Copy,Paste": function(e) { var t, n, r = u.getDoc(); try { o.execNativeCommand(e) } catch (e) { t = !0 }!(t = "paste" === e && !r.queryCommandEnabled(e) || t) && r.queryCommandSupported(e) || (n = u.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead."), xt.mac && (n = n.replace(/Ctrl\+/g, "\u2318+")), u.notificationManager.open({ text: n, type: "error" })) },
                unlink: function() {
                    var e;
                    u.selection.isCollapsed() ? (e = u.dom.getParent(u.selection.getStart(), "a")) && u.dom.remove(e, !0) : u.formatter.remove("link")
                },
                "JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone": function(e) { var t = e.substring(7); "full" === t && (t = "justify"), V1("left,center,right,justify".split(","), function(e) { t !== e && u.formatter.remove("align" + e) }), "none" !== t && o.toggleFormat("align" + t) },
                "InsertUnorderedList,InsertOrderedList": function(e) {
                    var t;
                    o.execNativeCommand(e);
                    var n = u.dom.getParent(u.selection.getNode(), "ol,ul");
                    n && (t = n.parentNode, /^(H[1-6]|P|ADDRESS|PRE)$/.test(t.nodeName) && (o.storeSelection(), u.dom.split(t, n), o.restoreSelection()))
                },
                "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function(e) { o.toggleFormat(e) },
                "ForeColor,HiliteColor": function(e, t, n) { o.toggleFormat(e, { value: n }) },
                FontName: function(e, t, n) {
                    var r, o;
                    o = R1(r = u, n), r.formatter.toggle("fontname", { value: T(o.split(/\s*,\s*/), function(e) { return -1 === e.indexOf(" ") || Ge(e, '"') || Ge(e, "'") ? e : "'" + e + "'" }).join(",") }), r.nodeChanged()
                },
                FontSize: function(e, t, n) {
                    var r;
                    (r = u).formatter.toggle("fontsize", { value: R1(r, n) }), r.nodeChanged()
                },
                LineHeight: function(e, t, n) {
                    var r;
                    (r = u).formatter.toggle("lineheight", { value: String(n) }), r.nodeChanged()
                },
                Lang: function(e, t, n) { o.toggleFormat(e, { value: n.code, customValue: n.customCode }) },
                RemoveFormat: function(e) { u.formatter.remove(e) },
                mceBlockQuote: function() { o.toggleFormat("blockquote") },
                FormatBlock: function(e, t, n) { return o.toggleFormat(n || "p") },
                mceCleanup: function() {
                    var e = u.selection.getBookmark();
                    u.setContent(u.getContent()), u.selection.moveToBookmark(e)
                },
                mceRemoveNode: function(e, t, n) {
                    var r = n || u.selection.getNode();
                    r !== u.getBody() && (o.storeSelection(), u.dom.remove(r, !0), o.restoreSelection())
                },
                mceSelectNodeDepth: function(e, t, n) {
                    var r = 0;
                    u.dom.getParent(u.selection.getNode(), function(e) { if (1 === e.nodeType && r++ === n) return u.selection.select(e), !1 }, u.getBody())
                },
                mceSelectNode: function(e, t, n) { u.selection.select(n) },
                mceInsertContent: function(e, t, n) {
                    var r, o, i, a;
                    r = u, o = function(e) { if ("string" == typeof e) return { content: e, details: {} }; var t = Et.extend({ paste: e.paste, data: { paste: e.paste } }, e); return { content: e.content, details: t } }(n), i = o.content, a = o.details, ph(r).editor.insertContent(i, a)
                },
                mceInsertRawHTML: function(e, t, n) {
                    u.selection.setContent("tiny_mce_marker");
                    var r = u.getContent();
                    u.setContent(r.replace(/tiny_mce_marker/g, function() { return n }))
                },
                mceInsertNewLine: function(e, t, n) { _C(u, n) },
                mceToggleFormat: function(e, t, n) { o.toggleFormat(n) },
                mceSetContent: function(e, t, n) { u.setContent(n) },
                "Indent,Outdent": function(e) { C0(u, e) },
                mceRepaint: te,
                InsertHorizontalRule: function() { u.execCommand("mceInsertContent", !1, "<hr />") },
                mceToggleVisualAid: function() { u.hasVisual = !u.hasVisual, u.addVisual() },
                mceReplaceContent: function(e, t, n) { u.execCommand("mceInsertContent", !1, n.replace(/\{\$selection\}/g, u.selection.getContent({ format: "text" }))) },
                mceInsertLink: function(e, t, n) {
                    "string" == typeof n && (n = { href: n });
                    var r = u.dom.getParent(u.selection.getNode(), "a");
                    n.href = n.href.replace(/ /g, "%20"), r && n.href || u.formatter.remove("link"), n.href && u.formatter.apply("link", n, r)
                },
                selectAll: function() {
                    var e, t = u.dom.getParent(u.selection.getStart(), Xn);
                    t && ((e = u.dom.createRng()).selectNodeContents(t), u.selection.setRng(e))
                },
                mceNewDocument: function() { u.setContent("") },
                InsertLineBreak: function(e, t, n) { return pC(u, n), !0 }
            }), o.addCommands({ JustifyLeft: e("alignleft"), JustifyCenter: e("aligncenter"), JustifyRight: e("alignright"), JustifyFull: e("alignjustify"), "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function(e) { return o.isFormatMatch(e) }, mceBlockQuote: function() { return o.isFormatMatch("blockquote") }, Outdent: function() { return b0(u) }, "InsertUnorderedList,InsertOrderedList": function(e) { var t = u.dom.getParent(u.selection.getNode(), "ul,ol"); return t && ("insertunorderedlist" === e && "UL" === t.tagName || "insertorderedlist" === e && "OL" === t.tagName) } }, "state"), o.addCommands({ Undo: function() { u.undoManager.undo() }, Redo: function() { u.undoManager.redo() } }), o.addQueryValueHandler("FontName", function() { return A1(t = u, function(e) { return j1(t.getBody(), e.dom) }).getOr(""); var t }, this), o.addQueryValueHandler("FontSize", function() { return A1(t = u, function(e) { return H1(t.getBody(), e.dom) }).getOr(""); var t }, this), o.addQueryValueHandler("LineHeight", function() {
                return A1(t = u, function(n) {
                    var e = Nt.fromDom(t.getBody());
                    return Ag(n, function(e) { return wn(e, "line-height") }, A(je, e)).getOrThunk(function() {
                        var e = parseFloat(xn(n, "line-height")),
                            t = parseFloat(xn(n, "font-size"));
                        return String(e / t)
                    })
                }).getOr("");
                var t
            }, this)
        }, K1);

    function K1(e) { this.commands = { state: {}, exec: {}, value: {} }, this.editor = e, this.setupCommands(e) }

    function X1(e, t, n) {
        var r, o, i, a, u, s;
        pu(e, t) && !1 === n ? (o = t, mu(r = e) ? r.dom.classList.remove(o) : (u = o, 0 < (s = U(du(a = r, "class"), function(e) { return e !== u })).length ? pn(a, "class", s.join(" ")) : yn(a, "class")), 0 === (mu(i = r) ? i.dom.classList : du(i, "class")).length && yn(i, "class")) : n && gu(e, t)
    }

    function Y1(e, t, n) { try { e.getDoc().execCommand(t, !1, String(n)) } catch (e) {} }

    function G1(e, t) { e.dom.contentEditable = t ? "true" : "false" }

    function J1(e, t) {
        var n, r, o = Nt.fromDom(e.getBody());
        X1(o, "mce-content-readonly", t), t ? (e.selection.controlSelection.hideResizeRect(), e._selectionOverrides.hideFakeCaret(), ve.from(e.selection.getNode()).each(function(e) { e.removeAttribute("data-mce-selected") }), G1(o, !(e.readonly = !0)), Y(hu(o, '*[contenteditable="true"]'), function(e) { pn(e, ex, "true"), G1(e, !1) })) : (G1(o, !(e.readonly = !1)), Y(hu(o, "*[" + ex + '="true"]'), function(e) { yn(e, ex), G1(e, !0) }), Y1(e, "StyleWithCSS", !1), Y1(e, "enableInlineTableEditing", !1), Y1(e, "enableObjectResizing", !1), (vd(n = e) || (r = n, td(Bn(Nt.fromDom(r.getElement()))).filter(function(e) { return !(void 0 !== (t = e.dom.classList) && (t.contains("tox-edit-area") || t.contains("tox-edit-area__iframe") || t.contains("mce-content-body"))) && dd(r, e.dom); var t }).isSome())) && e.focus(), e.selection.setRng(e.selection.getRng()), e.nodeChanged())
    }

    function Q1(e) { return e.readonly }

    function Z1(t) { t.parser.addAttributeFilter("contenteditable", function(e) { Q1(t) && Y(e, function(e) { e.attr(ex, e.attr("contenteditable")), e.attr("contenteditable", "false") }) }), t.serializer.addAttributeFilter(ex, function(e) { Q1(t) && Y(e, function(e) { e.attr("contenteditable", e.attr(ex)) }) }), t.serializer.addTempAttr(ex) }
    var ex = "data-mce-contenteditable",
        tx = Et.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel", " "),
        nx = (rx.isNative = function(e) { return !!tx[e.toLowerCase()] }, rx.prototype.fire = function(e, t) {
            var n = e.toLowerCase(),
                r = io(n, t || {}, this.scope);
            this.settings.beforeFire && this.settings.beforeFire(r);
            var o = this.bindings[n];
            if (o)
                for (var i = 0, a = o.length; i < a; i++) { var u = o[i]; if (!u.removed) { if (u.once && this.off(n, u.func), r.isImmediatePropagationStopped()) return r; if (!1 === u.func.call(this.scope, r)) return r.preventDefault(), r } }
            return r
        }, rx.prototype.on = function(e, t, n, r) {
            if (t = !1 === t ? R : t) {
                var o = { func: t, removed: !1 };
                r && Et.extend(o, r);
                for (var i = e.toLowerCase().split(" "), a = i.length; a--;) {
                    var u = i[a],
                        s = this.bindings[u];
                    s || (s = [], this.toggleEvent(u, !0)), s = n ? Ae([o], s, !0) : Ae(Ae([], s, !0), [o], !1), this.bindings[u] = s
                }
            }
            return this
        }, rx.prototype.off = function(e, t) {
            var n = this;
            if (e)
                for (var r = e.toLowerCase().split(" "), o = r.length; o--;) {
                    var i, a = r[o],
                        u = this.bindings[a];
                    if (!a) return ne(this.bindings, function(e, t) { n.toggleEvent(t, !1), delete n.bindings[t] }), this;
                    u && (t ? (u = (i = B(u, function(e) { return e.func === t })).fail, this.bindings[a] = u, Y(i.pass, function(e) { e.removed = !0 })) : u.length = 0, u.length || (this.toggleEvent(e, !1), delete this.bindings[a]))
                } else ne(this.bindings, function(e, t) { n.toggleEvent(t, !1) }), this.bindings = {};
            return this
        }, rx.prototype.once = function(e, t, n) { return this.on(e, t, n, { once: !0 }) }, rx.prototype.has = function(e) { return e = e.toLowerCase(), !(!this.bindings[e] || 0 === this.bindings[e].length) }, rx);

    function rx(e) { this.bindings = {}, this.settings = e || {}, this.scope = this.settings.scope || this, this.toggleEvent = this.settings.toggleEvent || R }

    function ox(n) { return n._eventDispatcher || (n._eventDispatcher = new nx({ scope: n, toggleEvent: function(e, t) { nx.isNative(e) && n.toggleNativeEvent && n.toggleNativeEvent(e, t) } })), n._eventDispatcher }

    function ix(e, t) { if ("selectionchange" === t) return e.getDoc(); if (!e.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)) return e.getDoc().documentElement; var n = Os(e); return n ? (e.eventRoot || (e.eventRoot = dx.select(n)[0]), e.eventRoot) : e.getBody() }

    function ax(e, t, n) {
        var r, o, i, a;
        e.hidden || Q1(e) ? Q1(e) && (r = e, "click" !== (o = n).type || Bf.metaKeyPressed(o) || (i = Nt.fromDom(o.target), a = r, br(i, "a", function(e) { return je(e, Nt.fromDom(a.getBody())) }).bind(function(e) { return bn(e, "href") }).each(function(e) {
            var t, n;
            o.preventDefault(), /^#/.test(e) ? (t = r.dom.select(e + ',[name="' + (Ge(n = e, "#") ? n.substring("#".length) : n) + '"]')).length && r.selection.scrollIntoView(t[0], !0) : window.open(e, "_blank", "rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes")
        }))) : e.fire(t, n)
    }

    function ux(i, a) {
        var e, t;
        i.delegates || (i.delegates = {}), i.delegates[a] || i.removed || (t = ix(i, a), Os(i) ? (lx || (lx = {}, i.editorManager.on("removeEditor", function() { i.editorManager.activeEditor || lx && (ne(lx, function(e, t) { i.dom.unbind(ix(i, t)) }), lx = null) })), lx[a] || (lx[a] = e = function(e) {
            for (var t = e.target, n = i.editorManager.get(), r = n.length; r--;) {
                var o = n[r].getBody();
                o !== t && !dx.isChildOf(t, o) || ax(n[r], a, e)
            }
        }, dx.bind(t, a, e))) : (dx.bind(t, a, e = function(e) { ax(i, a, e) }), i.delegates[a] = e))
    }

    function sx(e, t, n, r) {
        var o = n[t.get()],
            i = n[r];
        try { i.activate() } catch (e) { return void console.error("problem while activating editor mode " + r + ":", e) }
        o.deactivate(), o.editorReadOnly !== i.editorReadOnly && J1(e, i.editorReadOnly), t.set(r), e.fire("SwitchMode", { mode: r })
    }

    function cx(e) {
        var t, n = {};
        px(hx(e.toLowerCase(), "+"), function(e) { e in bx ? n[e] = !0 : /^[0-9]{2,}$/.test(e) ? n.keyCode = parseInt(e, 10) : (n.charCode = e.charCodeAt(0), n.keyCode = vx[e] || e.toUpperCase().charCodeAt(0)) });
        var r = [n.keyCode];
        for (t in bx) n[t] ? r.push(t) : n[t] = !1;
        return n.id = r.join(","), n.access && (n.alt = !0, xt.mac ? n.ctrl = !0 : n.shift = !0), n.meta && (xt.mac ? n.meta = !0 : (n.ctrl = !0, n.meta = !1)), n
    }
    var lx, fx = {
            fire: function(e, t, n) {
                if (this.removed && "remove" !== e && "detach" !== e) return t;
                var r = ox(this).fire(e, t);
                if (!1 !== n && this.parent)
                    for (var o = this.parent(); o && !r.isPropagationStopped();) o.fire(e, r, !1), o = o.parent();
                return r
            },
            on: function(e, t, n) { return ox(this).on(e, t, n) },
            off: function(e, t) { return ox(this).off(e, t) },
            once: function(e, t) { return ox(this).once(e, t) },
            hasEventListeners: function(e) { return ox(this).has(e) }
        },
        dx = Ja.DOM,
        mx = _e(_e({}, fx), {
            bindPendingEventDelegates: function() {
                var t = this;
                Et.each(t._pendingNativeEvents, function(e) { ux(t, e) })
            },
            toggleNativeEvent: function(e, t) { var n = this; "focus" !== e && "blur" !== e && (n.removed || (t ? n.initialized ? ux(n, e) : n._pendingNativeEvents ? n._pendingNativeEvents.push(e) : n._pendingNativeEvents = [e] : n.initialized && (n.dom.unbind(ix(n, e), e, n.delegates[e]), delete n.delegates[e]))) },
            unbindAllNativeEvents: function() {
                var n = this,
                    e = n.getBody(),
                    t = n.dom;
                n.delegates && (ne(n.delegates, function(e, t) { n.dom.unbind(ix(n, t), t, e) }), delete n.delegates), !n.inline && e && t && (e.onload = null, t.unbind(n.getWin()), t.unbind(n.getDoc())), t && (t.unbind(e), t.unbind(n.getContainer()))
            }
        }),
        gx = ["design", "readonly"],
        px = Et.each,
        hx = Et.explode,
        vx = { f1: 112, f2: 113, f3: 114, f4: 115, f5: 116, f6: 117, f7: 118, f8: 119, f9: 120, f10: 121, f11: 122, f12: 123 },
        bx = Et.makeMap("alt,ctrl,shift,meta,access"),
        yx = (Cx.prototype.add = function(e, n, t, r) {
            var o = this,
                i = o.normalizeCommandFunc(t);
            return px(hx(Et.trim(e)), function(e) {
                var t = o.createShortcut(e, n, i, r);
                o.shortcuts[t.id] = t
            }), !0
        }, Cx.prototype.remove = function(e) { var t = this.createShortcut(e); return !!this.shortcuts[t.id] && (delete this.shortcuts[t.id], !0) }, Cx.prototype.normalizeCommandFunc = function(e) {
            var t = this,
                n = e;
            return "string" == typeof n ? function() { t.editor.execCommand(n, !1, null) } : Et.isArray(n) ? function() { t.editor.execCommand(n[0], n[1], n[2]) } : n
        }, Cx.prototype.createShortcut = function(e, t, n, r) { var o = Et.map(hx(e, ">"), cx); return o[o.length - 1] = Et.extend(o[o.length - 1], { func: n, scope: r || this.editor }), Et.extend(o[0], { desc: this.editor.translate(t), subpatterns: o.slice(1) }) }, Cx.prototype.hasModifier = function(e) { return e.altKey || e.ctrlKey || e.metaKey }, Cx.prototype.isFunctionKey = function(e) { return "keydown" === e.type && 112 <= e.keyCode && e.keyCode <= 123 }, Cx.prototype.matchShortcut = function(e, t) { return !!t && t.ctrl === e.ctrlKey && t.meta === e.metaKey && t.alt === e.altKey && t.shift === e.shiftKey && !!(e.keyCode === t.keyCode || e.charCode && e.charCode === t.charCode) && (e.preventDefault(), !0) }, Cx.prototype.executeShortcutAction = function(e) { return e.func ? e.func.call(e.scope) : null }, Cx);

    function Cx(e) {
        this.shortcuts = {}, this.pendingPatterns = [], this.editor = e;
        var n = this;
        e.on("keyup keypress keydown", function(t) {!n.hasModifier(t) && !n.isFunctionKey(t) || t.isDefaultPrevented() || (px(n.shortcuts, function(e) { if (n.matchShortcut(t, e)) return n.pendingPatterns = e.subpatterns.slice(0), "keydown" === t.type && n.executeShortcutAction(e), !0 }), n.matchShortcut(t, n.pendingPatterns[0]) && (1 === n.pendingPatterns.length && "keydown" === t.type && n.executeShortcutAction(n.pendingPatterns[0]), n.pendingPatterns.shift())) })
    }
    var xx = Ja.DOM,
        wx = Et.extend,
        Sx = Et.each,
        Ex = Et.resolve,
        Nx = xt.ie,
        kx = (_x.prototype.render = function() {
            ! function(t) {
                var e = t.id;
                uu.setCode(As(t));
                var n, r, o, i, a = function() { U1.unbind(window, "ready", a), t.render() };
                ai.Event.domLoaded ? t.getElement() && xt.contentEditable && (n = Nt.fromDom(t.getElement()), r = L(n.dom.attributes, function(e, t) { return e[t.name] = t.value, e }, {}), t.on("remove", function() { O(n.dom.attributes, function(e) { return yn(n, e.name), 0 }), hn(n, r) }), t.ui.styleSheetLoader = Ar.forElement(n, { contentCssCors: (o = t).getParam("content_css_cors"), referrerPolicy: _s(o) }), t.getParam("inline") ? t.inline = !0 : (t.orgVisibility = t.getElement().style.visibility, t.getElement().style.visibility = "hidden"), (i = t.getElement().form || U1.getParent(e, "form")) && (t.formElement = i, t.getParam("hidden_input") && !Hn(t.getElement()) && (U1.insertAfter(U1.create("input", { type: "hidden", name: e }), e), t.hasHiddenInput = !0), t.formEventDelegate = function(e) { t.fire(e.type, e) }, U1.bind(i, "submit reset", t.formEventDelegate), t.on("reset", function() { t.resetContent() }), !t.getParam("submit_patch") || i.submit.nodeType || i.submit.length || i._mceOldSubmit || (i._mceOldSubmit = i.submit, i.submit = function() { return t.editorManager.triggerSave(), t.setDirty(!1), i._mceOldSubmit(i) })), t.windowManager = Pv(t), t.notificationManager = uv(t), "xml" === t.getParam("encoding") && t.on("GetContent", function(e) { e.save && (e.content = U1.encode(e.content)) }), t.getParam("add_form_submit_trigger") && t.on("submit", function() { t.initialized && t.save() }), t.getParam("add_unload_trigger") && (t._beforeUnload = function() {!t.initialized || t.destroyed || t.isHidden() || t.save({ format: "raw", no_events: !0, set_dirty: !1 }) }, t.editorManager.on("BeforeUnload", t._beforeUnload)), t.editorManager.add(t), N1(t, t.suffix)) : U1.bind(window, "ready", a)
            }(this)
        }, _x.prototype.focus = function(e) { this.execCommand("mceFocus", !1, e) }, _x.prototype.hasFocus = function() { return vd(this) }, _x.prototype.execCallback = function(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; var r, o = this.settings[e]; if (o) return this.callbackLookup && (r = this.callbackLookup[e]) && (o = r.func, r = r.scope), "string" == typeof o && (r = (r = o.replace(/\.\w+$/, "")) ? Ex(r) : 0, o = Ex(o), this.callbackLookup = this.callbackLookup || {}, this.callbackLookup[e] = { func: o, scope: r }), o.apply(r || this, t) }, _x.prototype.translate = function(e) { return uu.translate(e) }, _x.prototype.getParam = function(e, t, n) {
            return i = t, a = n, l = (o = e) in (r = this).settings ? r.settings[o] : i, "hash" === a ? (c = {}, "string" == typeof(s = l) ? Y(0 < s.indexOf("=") ? s.split(/[;,](?![^=;,]*(?:[;,]|$))/) : s.split(","), function(e) {
                var t = e.split("=");
                1 < t.length ? c[Et.trim(t[0])] = Et.trim(t[1]) : c[Et.trim(t[0])] = Et.trim(t[0])
            }) : c = s, c) : "string" === a ? rv(X, r, o).getOr(i) : "number" === a ? rv(E, r, o).getOr(i) : "boolean" === a ? rv(v, r, o).getOr(i) : "object" === a ? rv(h, r, o).getOr(i) : "array" === a ? rv(S, r, o).getOr(i) : "string[]" === a ? rv((u = X, function(e) { return S(e) && j(e, u) }), r, o).getOr(i) : "function" === a ? rv(y, r, o).getOr(i) : l;
            var r, o, i, a, u, s, c, l
        }, _x.prototype.hasPlugin = function(e, t) { return !(!D(Ls(this).split(/[ ,]/), e) || t && void 0 === Ov.get(e)) }, _x.prototype.nodeChanged = function(e) { this._nodeChangeDispatcher.nodeChanged(e) }, _x.prototype.addCommand = function(e, t, n) { this.editorCommands.addCommand(e, t, n) }, _x.prototype.addQueryStateHandler = function(e, t, n) { this.editorCommands.addQueryStateHandler(e, t, n) }, _x.prototype.addQueryValueHandler = function(e, t, n) { this.editorCommands.addQueryValueHandler(e, t, n) }, _x.prototype.addShortcut = function(e, t, n, r) { this.shortcuts.add(e, t, n, r) }, _x.prototype.execCommand = function(e, t, n, r) { return this.editorCommands.execCommand(e, t, n, r) }, _x.prototype.queryCommandState = function(e) { return this.editorCommands.queryCommandState(e) }, _x.prototype.queryCommandValue = function(e) { return this.editorCommands.queryCommandValue(e) }, _x.prototype.queryCommandSupported = function(e) { return this.editorCommands.queryCommandSupported(e) }, _x.prototype.show = function() { this.hidden && (this.hidden = !1, this.inline ? this.getBody().contentEditable = "true" : (xx.show(this.getContainer()), xx.hide(this.id)), this.load(), this.fire("show")) }, _x.prototype.hide = function() {
            var e = this,
                t = e.getDoc();
            e.hidden || (Nx && t && !e.inline && t.execCommand("SelectAll"), e.save(), e.inline ? (e.getBody().contentEditable = "false", e === e.editorManager.focusedEditor && (e.editorManager.focusedEditor = null)) : (xx.hide(e.getContainer()), xx.setStyle(e.id, "display", e.orgDisplay)), e.hidden = !0, e.fire("hide"))
        }, _x.prototype.isHidden = function() { return !!this.hidden }, _x.prototype.setProgressState = function(e, t) { this.fire("ProgressState", { state: e, time: t }) }, _x.prototype.load = function(e) {
            var t = this.getElement();
            if (this.removed) return "";
            if (t) {
                (e = e || {}).load = !0;
                var n = Hn(t) ? t.value : t.innerHTML,
                    r = this.setContent(n, e);
                return e.element = t, e.no_events || this.fire("LoadContent", e), e.element = t = null, r
            }
        }, _x.prototype.save = function(e) {
            var t, n, r = this,
                o = r.getElement();
            if (o && r.initialized && !r.removed) return (e = e || {}).save = !0, e.element = o, e.content = r.getContent(e), e.no_events || r.fire("SaveContent", e), "raw" === e.format && r.fire("RawSaveContent", e), t = e.content, Hn(o) ? o.value = t : (!e.is_removing && r.inline || (o.innerHTML = t), (n = xx.getParent(r.id, "form")) && Sx(n.elements, function(e) { if (e.name === r.id) return e.value = t, !1 })), e.element = o = null, !1 !== e.set_dirty && r.setDirty(!1), t
        }, _x.prototype.setContent = function(e, t) { return Yh(this, e, t) }, _x.prototype.getContent = function(e) { return t = this, r = (n = void 0 === (n = e) ? {} : n).format || "html", o = n, ph(t).editor.getContent(o, r); var t, n, r, o }, _x.prototype.insertContent = function(e, t) { t && (e = wx({ content: e }, t)), this.execCommand("mceInsertContent", !1, e) }, _x.prototype.resetContent = function(e) { void 0 === e ? Yh(this, this.startContent, { format: "raw" }) : Yh(this, e), this.undoManager.reset(), this.setDirty(!1), this.nodeChanged() }, _x.prototype.isDirty = function() { return !this.isNotDirty }, _x.prototype.setDirty = function(e) {
            var t = !this.isNotDirty;
            this.isNotDirty = !e, e && e !== t && this.fire("dirty")
        }, _x.prototype.getContainer = function() { return this.container || (this.container = xx.get(this.editorContainer || this.id + "_parent")), this.container }, _x.prototype.getContentAreaContainer = function() { return this.contentAreaContainer }, _x.prototype.getElement = function() { return this.targetElm || (this.targetElm = xx.get(this.id)), this.targetElm }, _x.prototype.getWin = function() { var e; return this.contentWindow || (e = this.iframeElement) && (this.contentWindow = e.contentWindow), this.contentWindow }, _x.prototype.getDoc = function() { var e; return this.contentDocument || (e = this.getWin()) && (this.contentDocument = e.document), this.contentDocument }, _x.prototype.getBody = function() { var e = this.getDoc(); return this.bodyElement || (e ? e.body : null) }, _x.prototype.convertURL = function(e, t, n) { var r = this.settings; return r.urlconverter_callback ? this.execCallback("urlconverter_callback", e, n, !0, t) : !r.convert_urls || n && "LINK" === n.nodeName || 0 === e.indexOf("file:") || 0 === e.length ? e : r.relative_urls ? this.documentBaseURI.toRelative(e) : this.documentBaseURI.toAbsolute(e, r.remove_script_host) }, _x.prototype.addVisual = function(e) {
            var t;
            t = e, hh(this).editor.addVisual(t)
        }, _x.prototype.remove = function() {
            var e, t, n, r, o;
            (e = this).removed || (t = e._selectionOverrides, n = e.editorUpload, r = e.getBody(), o = e.getElement(), r && e.save({ is_removing: !0 }), e.removed = !0, e.unbindAllNativeEvents(), e.hasHiddenInput && o && hv.remove(o.nextSibling), e.fire("remove"), e.editorManager.remove(e), !e.inline && r && hv.setStyle(e.id, "display", e.orgDisplay), e.fire("detach"), hv.remove(e.getContainer()), Gh(t), Gh(n), e.destroy())
        }, _x.prototype.destroy = function(e) {
            var t, n, r, o, i, a, u;
            n = e, a = (t = this).selection, u = t.dom, t.destroyed || (n || t.removed ? (n || (t.editorManager.off("beforeunload", t._beforeUnload), t.theme && t.theme.destroy && t.theme.destroy(), Gh(a), Gh(u)), (o = (r = t).formElement) && (o._mceOldSubmit && (o.submit = o._mceOldSubmit, o._mceOldSubmit = null), hv.unbind(o, "submit reset", r.formEventDelegate)), (i = t).contentAreaContainer = i.formElement = i.container = i.editorContainer = null, i.bodyElement = i.contentDocument = i.contentWindow = null, i.iframeElement = i.targetElm = null, i.selection && (i.selection = i.selection.win = i.selection.dom = i.selection.dom.doc = null), t.destroyed = !0) : t.remove())
        }, _x.prototype.uploadImages = function(e) { return this.editorUpload.uploadImages(e) }, _x.prototype._scanForImages = function() { return this.editorUpload.scanForImages() }, _x.prototype.addButton = function() { throw new Error("editor.addButton has been removed in tinymce 5x, use editor.ui.registry.addButton or editor.ui.registry.addToggleButton or editor.ui.registry.addSplitButton instead") }, _x.prototype.addSidebar = function() { throw new Error("editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead") }, _x.prototype.addMenuItem = function() { throw new Error("editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead") }, _x.prototype.addContextToolbar = function() { throw new Error("editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead") }, _x);

    function _x(e, t, n) {
        var r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C, x = this;

        function w(n, r) { return function(e, t) { return n[e.toLowerCase()] = _e(_e({}, t), { type: r }) } }
        this.plugins = {}, this.contentCSS = [], this.contentStyles = [], this.loadedCSS = {}, this.isNotDirty = !1, this.editorManager = n, this.documentBaseUrl = n.documentBaseURL, wx(this, mx), this.settings = (d = (f = this).documentBaseUrl, m = n.defaultSettings, p = d, h = wv, v = f, b = { id: e, theme: "silver", toolbar_mode: ev(g = t, "floating"), plugins: "", document_base_url: p, add_form_submit_trigger: !0, submit_patch: !0, add_unload_trigger: !0, convert_urls: !0, relative_urls: !0, remove_script_host: !0, object_resizing: !0, doctype: "<!DOCTYPE html>", visual: !0, font_size_legacy_values: "xx-small,small,medium,large,x-large,xx-large,300%", forced_root_block: "p", hidden_input: !0, inline_styles: !0, convert_fonts_to_spans: !0, indent: !0, indent_before: "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist", indent_after: "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist", entity_encoding: "named", url_converter: v.convertURL, url_converter_scope: v }, y = _e(_e({}, b), h ? kv : {}), !1 !== (C = nv(Sv || Ev, Sv, y, m, g)).deprecation_warnings && Jh(g, C), C), this.settings.suffix && (n.suffix = this.settings.suffix), this.suffix = n.suffix, this.settings.base_url && n._setBaseUrl(this.settings.base_url), this.baseUri = n.baseURI, this.settings.referrer_policy && (tu.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy), Ja.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)), su.languageLoad = this.settings.language_load, su.baseURL = n.baseURL, this.id = e, this.setDirty(!1), this.documentBaseURI = new Kd(this.settings.document_base_url, { base_uri: this.baseUri }), this.baseURI = this.baseUri, this.inline = !!this.settings.inline, this.shortcuts = new yx(this), this.editorCommands = new W1(this), this.settings.cache_suffix && (xt.cacheSuffix = this.settings.cache_suffix.replace(/^[\?\&]+/, "")), this.ui = { registry: { addAutocompleter: (u = {}, (r = { addButton: w(o = {}, "button"), addGroupToolbarButton: w(o, "grouptoolbarbutton"), addToggleButton: w(o, "togglebutton"), addMenuButton: w(o, "menubutton"), addSplitButton: w(o, "splitbutton"), addMenuItem: w(i = {}, "menuitem"), addNestedMenuItem: w(i, "nestedmenuitem"), addToggleMenuItem: w(i, "togglemenuitem"), addAutocompleter: w(a = {}, "autocompleter"), addContextMenu: w(s = {}, "contextmenu"), addContextToolbar: w(c = {}, "contexttoolbar"), addContextForm: w(c, "contextform"), addSidebar: w(l = {}, "sidebar"), addIcon: function(e, t) { return u[e.toLowerCase()] = t }, getAll: function() { return { buttons: o, menuItems: i, icons: u, popups: a, contextMenus: s, contextToolbars: c, sidebars: l } } }).addAutocompleter), addButton: r.addButton, addContextForm: r.addContextForm, addContextMenu: r.addContextMenu, addContextToolbar: r.addContextToolbar, addIcon: r.addIcon, addMenuButton: r.addMenuButton, addMenuItem: r.addMenuItem, addNestedMenuItem: r.addNestedMenuItem, addSidebar: r.addSidebar, addSplitButton: r.addSplitButton, addToggleButton: r.addToggleButton, addGroupToolbarButton: r.addGroupToolbarButton, addToggleMenuItem: r.addToggleMenuItem, getAll: r.getAll }, styleSheetLoader: void 0, show: te, hide: te, enable: te, disable: te, isDisabled: R };
        var S, E, N, k, _, A = (k = ru("design"), _ = ru({ design: { activate: te, deactivate: te, editorReadOnly: !1 }, readonly: { activate: te, deactivate: te, editorReadOnly: !0 } }), (E = S = this).serializer ? Z1(E) : E.on("PreInit", function() { Z1(E) }), (N = S).on("ShowCaret", function(e) { Q1(N) && e.preventDefault() }), N.on("ObjectSelected", function(e) { Q1(N) && e.preventDefault() }), {
            isReadOnly: function() { return Q1(S) },
            set: function(e) {
                return function(e, t, n, r) {
                    if (r !== n.get()) {
                        if (!Ne(t, r)) throw new Error("Editor mode '" + r + "' is invalid");
                        e.initialized ? sx(e, n, t, r) : e.on("init", function() { return sx(e, n, t, r) })
                    }
                }(S, _.get(), k, e)
            },
            get: function() { return k.get() },
            register: function(e, t) { _.set(function(e, t, n) { var r; if (D(gx, t)) throw new Error("Cannot override default mode " + t); return _e(_e({}, e), ((r = {})[t] = _e(_e({}, n), { deactivate: function() { try { n.deactivate() } catch (e) { console.error("problem while deactivating editor mode " + t + ":", e) } } }), r)) }(_.get(), e, t)) }
        });
        this.mode = A, this.setMode = A.set, n.fire("SetupEditor", { editor: this }), this.execCallback("setup", this), this.$ = Wa.overrideDefaults(function() { return { context: x.inline ? x.getBody() : x.getDoc(), element: x.getBody() } })
    }

    function Ax(t) {
        var n = t.type;
        Px(Hx.get(), function(e) {
            switch (n) {
                case "scroll":
                    e.fire("ScrollWindow", t);
                    break;
                case "resize":
                    e.fire("ResizeWindow", t)
            }
        })
    }

    function Rx(e) { e !== Mx && (e ? Wa(window).on("resize scroll", Ax) : Wa(window).off("resize scroll", Ax), Mx = e) }

    function Dx(t) {
        var e = Ux;
        delete Fx[t.id];
        for (var n = 0; n < Fx.length; n++)
            if (Fx[n] === t) { Fx.splice(n, 1); break }
        return Ux = U(Ux, function(e) { return t !== e }), Hx.activeEditor === t && (Hx.activeEditor = 0 < Ux.length ? Ux[0] : null), Hx.focusedEditor === t && (Hx.focusedEditor = null), e.length !== Ux.length
    }
    var Tx, Ox = Ja.DOM,
        Bx = Et.explode,
        Px = Et.each,
        Lx = Et.extend,
        Ix = 0,
        Mx = !1,
        Fx = [],
        Ux = [],
        zx = "CSS1Compat" !== document.compatMode,
        Hx = _e(_e({}, fx), {
            baseURI: null,
            baseURL: null,
            defaultSettings: {},
            documentBaseURL: null,
            suffix: null,
            $: Wa,
            majorVersion: "5",
            minorVersion: "10.2",
            releaseDate: "2021-11-17",
            editors: Fx,
            i18n: uu,
            activeEditor: null,
            focusedEditor: null,
            settings: {},
            setup: function() {
                var e, t = "",
                    n = Kd.getDocumentBaseUrl(document.location);
                /^[^:]+:\/\/\/?[^\/]+\//.test(n) && (n = n.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""), /[\/\\]$/.test(n) || (n += "/"));
                var r = window.tinymce || window.tinyMCEPreInit;
                if (r) e = r.base || r.baseURL, t = r.suffix;
                else {
                    for (var o, i = document.getElementsByTagName("script"), a = 0; a < i.length; a++)
                        if ("" !== (o = i[a].src || "")) { var u = o.substring(o.lastIndexOf("/")); if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(o)) {-1 !== u.indexOf(".min") && (t = ".min"), e = o.substring(0, o.lastIndexOf("/")); break } }!e && document.currentScript && (-1 !== (o = document.currentScript.src).indexOf(".min") && (t = ".min"), e = o.substring(0, o.lastIndexOf("/")))
                }
                this.baseURL = new Kd(n).toAbsolute(e), this.documentBaseURL = n, this.baseURI = new Kd(this.baseURL), this.suffix = t, this.on("AddEditor", A(md, this)), this.on("RemoveEditor", A(gd, this))
            },
            overrideDefaults: function(e) {
                var t = e.base_url;
                t && this._setBaseUrl(t);
                var n = e.suffix;
                e.suffix && (this.suffix = n);
                var r = (this.defaultSettings = e).plugin_base_urls;
                void 0 !== r && ne(r, function(e, t) { su.PluginManager.urls[t] = e })
            },
            init: function(r) {
                function u(e) { var t = e.id; return t || (t = ue(e, "name").filter(function(e) { return !Ox.get(e) }).getOrThunk(Ox.uniqueId), e.setAttribute("id", t)), t }

                function s(e, t) { return t.constructor === RegExp ? t.test(e.className) : Ox.hasClass(e, t) }
                var n, c = this,
                    l = Et.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu", " "),
                    f = function(e) { n = e },
                    t = function() {
                        function n(e, t, n) {
                            var r = new kx(e, t, c);
                            a.push(r), r.on("init", function() {++i === o.length && f(a) }), r.targetElm = r.targetElm || n, r.render()
                        }
                        var o, e, i = 0,
                            a = [];
                        Ox.unbind(window, "ready", t), (e = r.onpageload) && e.apply(c, []), o = Wa.unique(function(t) {
                            var n = [];
                            if (xt.browser.isIE() && xt.browser.version.major < 11) return ay("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"), [];
                            if (zx) return ay("Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."), [];
                            if (t.types) return Px(t.types, function(e) { n = n.concat(Ox.select(e.selector)) }), n;
                            if (t.selector) return Ox.select(t.selector);
                            if (t.target) return [t.target];
                            switch (t.mode) {
                                case "exact":
                                    var e = t.elements || "";
                                    0 < e.length && Px(Bx(e), function(t) {
                                        var e = Ox.get(t);
                                        e ? n.push(e) : Px(document.forms, function(e) { Px(e.elements, function(e) { e.name === t && (t = "mce_editor_" + Ix++, Ox.setAttrib(e, "id", t), n.push(e)) }) })
                                    });
                                    break;
                                case "textareas":
                                case "specific_textareas":
                                    Px(Ox.select("textarea"), function(e) { t.editor_deselector && s(e, t.editor_deselector) || t.editor_selector && !s(e, t.editor_selector) || n.push(e) })
                            }
                            return n
                        }(r)), r.types ? Px(r.types, function(t) { Et.each(o, function(e) { return !Ox.is(e, t.selector) || (n(u(e), Lx({}, r, t), e), !1) }) }) : (Et.each(o, function(e) {
                            var t;
                            (t = c.get(e.id)) && t.initialized && !(t.getContainer() || t.getBody()).parentNode && (Dx(t), t.unbindAllNativeEvents(), t.destroy(!0), t.removed = !0)
                        }), 0 === (o = Et.grep(o, function(e) { return !c.get(e.id) })).length ? f([]) : Px(o, function(e) {
                            var t = e;
                            r.inline && t.tagName.toLowerCase() in l ? ay("Could not initialize inline editor on invalid inline target element", e) : n(u(e), r, e)
                        }))
                    };
                return c.settings = r, Ox.bind(window, "ready", t), new kr(function(t) { n ? t(n) : f = function(e) { t(e) } })
            },
            get: function(t) { return 0 === arguments.length ? Ux.slice(0) : X(t) ? M(Ux, function(e) { return e.id === t }).getOr(null) : E(t) && Ux[t] || null },
            add: function(e) { var n = this; return Fx[e.id] === e || (null === n.get(e.id) && ("length" !== e.id && (Fx[e.id] = e), Fx.push(e), Ux.push(e)), Rx(!0), n.activeEditor = e, n.fire("AddEditor", { editor: e }), Tx || (Tx = function(e) { var t = n.fire("BeforeUnload"); if (t.returnValue) return e.preventDefault(), e.returnValue = t.returnValue, t.returnValue }, window.addEventListener("beforeunload", Tx))), e },
            createEditor: function(e, t) { return this.add(new kx(e, t, this)) },
            remove: function(e) {
                var t, n, r = this;
                if (e) {
                    if (!X(e)) return n = e, l(r.get(n.id)) ? null : (Dx(n) && r.fire("RemoveEditor", { editor: n }), 0 === Ux.length && window.removeEventListener("beforeunload", Tx), n.remove(), Rx(0 < Ux.length), n);
                    Px(Ox.select(e), function(e) {
                        (n = r.get(e.id)) && r.remove(n)
                    })
                } else
                    for (t = Ux.length - 1; 0 <= t; t--) r.remove(Ux[t])
            },
            execCommand: function(e, t, n) {
                var r = this.get(n);
                switch (e) {
                    case "mceAddEditor":
                        return this.get(n) || new kx(n, this.settings, this).render(), !0;
                    case "mceRemoveEditor":
                        return r && r.remove(), !0;
                    case "mceToggleEditor":
                        return r ? r.isHidden() ? r.show() : r.hide() : this.execCommand("mceAddEditor", !1, n), !0
                }
                return !!this.activeEditor && this.activeEditor.execCommand(e, t, n)
            },
            triggerSave: function() { Px(Ux, function(e) { e.save() }) },
            addI18n: function(e, t) { uu.add(e, t) },
            translate: function(e) { return uu.translate(e) },
            setActive: function(e) {
                var t = this.activeEditor;
                this.activeEditor !== e && (t && t.fire("deactivate", { relatedTarget: e }), e.fire("activate", { relatedTarget: t })), this.activeEditor = e
            },
            _setBaseUrl: function(e) { this.baseURL = new Kd(this.documentBaseURL).toAbsolute(e.replace(/\/+$/, "")), this.baseURI = new Kd(this.baseURL) }
        });

    function jx(e, t, n) {
        var r = t.x,
            o = t.y,
            i = e.w,
            a = e.h,
            u = t.w,
            s = t.h,
            c = (n || "").split("");
        return "b" === c[0] && (o += s), "r" === c[1] && (r += u), "c" === c[0] && (o += Jx(s / 2)), "c" === c[1] && (r += Jx(u / 2)), "b" === c[3] && (o -= a), "r" === c[4] && (r -= i), "c" === c[3] && (o -= Jx(a / 2)), "c" === c[4] && (r -= Jx(i / 2)), qx(r, o, i, a)
    }

    function Vx() {}
    Hx.setup();

    function qx(e, t, n, r) { return { x: e, y: t, w: n, h: r } }
    var $x, Wx, Kx, Xx, Yx = Math.min,
        Gx = Math.max,
        Jx = Math.round,
        Qx = {
            inflate: function(e, t, n) { return qx(e.x - t, e.y - n, e.w + 2 * t, e.h + 2 * n) },
            relativePosition: jx,
            findBestRelativePosition: function(e, t, n, r) {
                for (var o, i = 0; i < r.length; i++)
                    if ((o = jx(e, t, r[i])).x >= n.x && o.x + o.w <= n.w + n.x && o.y >= n.y && o.y + o.h <= n.h + n.y) return r[i];
                return null
            },
            intersect: function(e, t) {
                var n = Gx(e.x, t.x),
                    r = Gx(e.y, t.y),
                    o = Yx(e.x + e.w, t.x + t.w),
                    i = Yx(e.y + e.h, t.y + t.h);
                return o - n < 0 || i - r < 0 ? null : qx(n, r, o - n, i - r)
            },
            clamp: function(e, t, n) {
                var r = e.x,
                    o = e.y,
                    i = e.x + e.w,
                    a = e.y + e.h,
                    u = t.x + t.w,
                    s = t.y + t.h,
                    c = Gx(0, t.x - r),
                    l = Gx(0, t.y - o),
                    f = Gx(0, i - u),
                    d = Gx(0, a - s);
                return r += c, o += l, n && (i += c, a += l, r -= f, o -= d), qx(r, o, (i -= f) - r, (a -= d) - o)
            },
            create: qx,
            fromClientRect: function(e) { return qx(e.left, e.top, e.width, e.height) }
        },
        Zx = ($x = {}, Wx = {}, {
            load: function(r, o) {
                var i = 'Script at URL "' + o + '" failed to load',
                    a = 'Script at URL "' + o + "\" did not call `tinymce.Resource.add('" + r + "', data)` within 1 second";
                if (void 0 !== $x[r]) return $x[r];
                var e = new kr(function(e, t) {
                    var n = function(e, t, n) {
                        function r(n) {
                            return function() {
                                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                                o || (o = !0, null !== i && (clearTimeout(i), i = null), n.apply(null, e))
                            }
                        }
                        void 0 === n && (n = 1e3);
                        var o = !1,
                            i = null,
                            a = r(e),
                            u = r(t);
                        return {
                            start: function() {
                                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                                o || null !== i || (i = setTimeout(function() { return u.apply(null, e) }, n))
                            },
                            resolve: a,
                            reject: u
                        }
                    }(e, t);
                    Wx[r] = n.resolve, tu.ScriptLoader.loadScript(o, function() { return n.start(a) }, function() { return n.reject(i) })
                });
                return $x[r] = e
            },
            add: function(e, t) { void 0 !== Wx[e] && (Wx[e](t), delete Wx[e]), $x[e] = kr.resolve(t) }
        }),
        ew = Et.each,
        tw = Et.extend;
    Vx.extend = Kx = function(n) {
        function r() {
            var e, t, n;
            if (!Xx && (this.init && this.init.apply(this, arguments), t = this.Mixins))
                for (e = t.length; e--;)(n = t[e]).init && n.init.apply(this, arguments)
        }

        function t() { return this }
        var o = this.prototype;
        Xx = !0;
        var i = new this;
        return Xx = !1, n.Mixins && (ew(n.Mixins, function(e) { for (var t in e) "init" !== t && (n[t] = e[t]) }), o.Mixins && (n.Mixins = o.Mixins.concat(n.Mixins))), n.Methods && ew(n.Methods.split(","), function(e) { n[e] = t }), n.Properties && ew(n.Properties.split(","), function(e) {
            var t = "_" + e;
            n[e] = function(e) { return void 0 !== e ? (this[t] = e, this) : this[t] }
        }), n.Statics && ew(n.Statics, function(e, t) { r[t] = e }), n.Defaults && o.Defaults && (n.Defaults = tw({}, o.Defaults, n.Defaults)), ne(n, function(e, t) {
            var n, r;
            "function" == typeof e && o[t] ? i[t] = (n = t, r = e, function() {
                var e = this._super;
                this._super = o[n];
                var t = r.apply(this, arguments);
                return this._super = e, t
            }) : i[t] = e
        }), r.prototype = i, (r.constructor = r).extend = Kx, r
    };
    var nw, rw, ow, iw = Math.min,
        aw = Math.max,
        uw = Math.round,
        sw = { serialize: function(e) { var t = JSON.stringify(e); return X(t) ? t.replace(/[\u0080-\uFFFF]/g, function(e) { var t = e.charCodeAt(0).toString(16); return "\\u" + "0000".substring(t.length) + t }) : t }, parse: function(e) { try { return JSON.parse(e) } catch (e) {} } },
        cw = {
            callbacks: {},
            count: 0,
            send: function(t) {
                var n = this,
                    r = Ja.DOM,
                    o = (void 0 !== t.count ? t : n).count,
                    i = "tinymce_jsonp_" + o;
                n.callbacks[o] = function(e) { r.remove(i), delete n.callbacks[o], t.callback(e) }, r.add(r.doc.body, "script", { id: i, src: t.url, type: "text/javascript" }), n.count++
            }
        },
        lw = _e(_e({}, fx), {
            send: function(e) {
                var t, n = 0,
                    r = function() {!e.async || 4 === t.readyState || 1e4 < n++ ? (e.success && n < 1e4 && 200 === t.status ? e.success.call(e.success_scope, "" + t.responseText, t, e) : e.error && e.error.call(e.error_scope, 1e4 < n ? "TIMED_OUT" : "GENERAL", t, e), t = null) : _r.setTimeout(r, 10) };
                if (e.scope = e.scope || this, e.success_scope = e.success_scope || e.scope, e.error_scope = e.error_scope || e.scope, e.async = !1 !== e.async, e.data = e.data || "", lw.fire("beforeInitialize", { settings: e }), (t = new XMLHttpRequest).overrideMimeType && t.overrideMimeType(e.content_type), t.open(e.type || (e.data ? "POST" : "GET"), e.url, e.async), e.crossDomain && (t.withCredentials = !0), e.content_type && t.setRequestHeader("Content-Type", e.content_type), e.requestheaders && Et.each(e.requestheaders, function(e) { t.setRequestHeader(e.key, e.value) }), t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), (t = lw.fire("beforeSend", { xhr: t, settings: e }).xhr).send(e.data), !e.async) return r();
                _r.setTimeout(r, 10)
            }
        }),
        fw = Et.extend,
        dw = (mw.sendRPC = function(e) { return (new mw).send(e) }, mw.prototype.send = function(e) {
            var n = e.error,
                r = e.success,
                o = fw(this.settings, e);
            o.success = function(e, t) {
                (e = void 0 === (e = sw.parse(e)) ? { error: "JSON Parse error." } : e).error ? n.call(o.error_scope || o.scope, e.error, t) : r.call(o.success_scope || o.scope, e.result)
            }, o.error = function(e, t) { n && n.call(o.error_scope || o.scope, e, t) }, o.data = sw.serialize({ id: e.id || "c" + this.count++, method: e.method, params: e.params }), o.content_type = "application/json", lw.send(o)
        }, mw);

    function mw(e) { this.settings = fw({}, e), this.count = 0 }
    try {
        var gw, pw = "__storage_test__";
        (gw = window.localStorage).setItem(pw, pw), gw.removeItem(pw)
    } catch (e) { nw = {}, rw = [], ow = { getItem: function(e) { return nw[e] || null }, setItem: function(e, t) { rw.push(e), nw[e] = String(t) }, key: function(e) { return rw[e] }, removeItem: function(t) { rw = rw.filter(function(e) { return e === t }), delete nw[t] }, clear: function() { rw = [], nw = {} }, length: 0 }, Object.defineProperty(ow, "length", { get: function() { return rw.length }, configurable: !1, enumerable: !1 }), gw = ow }
    var hw = {
            geom: { Rect: Qx },
            util: {
                Promise: kr,
                Delay: _r,
                Tools: Et,
                VK: Bf,
                URI: Kd,
                Class: Vx,
                EventDispatcher: nx,
                Observable: fx,
                I18n: uu,
                XHR: lw,
                JSON: sw,
                JSONRequest: dw,
                JSONP: cw,
                LocalStorage: gw,
                Color: function(e) {
                    function t(e) {
                        var t;
                        return "object" == typeof e ? "r" in e ? (u = e.r, s = e.g, c = e.b) : "v" in e && function(e, t, n) {
                            if (e = (parseInt(e, 10) || 0) % 360, t = parseInt(t, 10) / 100, n = parseInt(n, 10) / 100, t = aw(0, iw(t, 1)), n = aw(0, iw(n, 1)), 0 !== t) {
                                var r = e / 60,
                                    o = n * t,
                                    i = o * (1 - Math.abs(r % 2 - 1)),
                                    a = n - o;
                                switch (Math.floor(r)) {
                                    case 0:
                                        u = o, s = i, c = 0;
                                        break;
                                    case 1:
                                        u = i, s = o, c = 0;
                                        break;
                                    case 2:
                                        u = 0, s = o, c = i;
                                        break;
                                    case 3:
                                        u = 0, s = i, c = o;
                                        break;
                                    case 4:
                                        u = i, s = 0, c = o;
                                        break;
                                    case 5:
                                        u = o, s = 0, c = i;
                                        break;
                                    default:
                                        u = s = c = 0
                                }
                                u = uw(255 * (u + a)), s = uw(255 * (s + a)), c = uw(255 * (c + a))
                            } else u = s = c = uw(255 * n)
                        }(e.h, e.s, e.v) : (t = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e)) ? (u = parseInt(t[1], 10), s = parseInt(t[2], 10), c = parseInt(t[3], 10)) : (t = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e)) ? (u = parseInt(t[1], 16), s = parseInt(t[2], 16), c = parseInt(t[3], 16)) : (t = /#([0-F])([0-F])([0-F])/gi.exec(e)) && (u = parseInt(t[1] + t[1], 16), s = parseInt(t[2] + t[2], 16), c = parseInt(t[3] + t[3], 16)), u = u < 0 ? 0 : 255 < u ? 255 : u, s = s < 0 ? 0 : 255 < s ? 255 : s, c = c < 0 ? 0 : 255 < c ? 255 : c, n
                    }
                    var n = {},
                        u = 0,
                        s = 0,
                        c = 0;
                    return e && t(e), n.toRgb = function() { return { r: u, g: s, b: c } }, n.toHsv = function() { return e = u, t = s, n = c, o = 0, (i = iw(e /= 255, iw(t /= 255, n /= 255))) === (a = aw(e, aw(t, n))) ? { h: 0, s: 0, v: 100 * (o = i) } : (r = (a - i) / a, { h: uw(60 * ((e === i ? 3 : n === i ? 1 : 5) - (e === i ? t - n : n === i ? e - t : n - e) / ((o = a) - i))), s: uw(100 * r), v: uw(100 * o) }); var e, t, n, r, o, i, a }, n.toHex = function() {
                        function e(e) { return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e }
                        return "#" + e(u) + e(s) + e(c)
                    }, n.parse = t, n
                },
                ImageUploader: function(n) {
                    var e = Hv(),
                        r = Wv(n, e);
                    return { upload: function(e, t) { return r.upload(e, (t = void 0 === t || t) ? $v(n) : void 0) } }
                }
            },
            dom: { EventUtils: ai, Sizzle: aa, DomQuery: Wa, TreeWalker: Rr, TextSeeker: Nu, DOMUtils: Ja, ScriptLoader: tu, RangeUtils: Of, Serializer: Xh, StyleSheetLoader: wr, ControlSelection: Cf, BookmarkManager: Fl, Selection: Lh, Event: ai.Event },
            html: { Styles: ro, Entities: Go, Node: Ud, Schema: to, SaxParser: Gd, DomParser: $h, Writer: tm, Serializer: nm },
            Env: xt,
            AddOnManager: su,
            Annotator: Ml,
            Formatter: Jv,
            UndoManager: Zv,
            EditorCommands: W1,
            WindowManager: Pv,
            NotificationManager: uv,
            EditorObservable: mx,
            Shortcuts: yx,
            Editor: kx,
            FocusManager: Ld,
            EditorManager: Hx,
            DOM: Ja.DOM,
            ScriptLoader: tu.ScriptLoader,
            PluginManager: Ov,
            ThemeManager: Bv,
            IconManager: _v,
            Resource: Zx,
            trim: Et.trim,
            isArray: Et.isArray,
            is: Et.is,
            toArray: Et.toArray,
            makeMap: Et.makeMap,
            each: Et.each,
            map: Et.map,
            grep: Et.grep,
            inArray: Et.inArray,
            extend: Et.extend,
            create: Et.create,
            walk: Et.walk,
            createNS: Et.createNS,
            resolve: Et.resolve,
            explode: Et.explode,
            _addCacheSuffix: Et._addCacheSuffix,
            isOpera: xt.opera,
            isWebKit: xt.webkit,
            isIE: xt.ie,
            isGecko: xt.gecko,
            isMac: xt.mac
        },
        vw = Et.extend(Hx, hw),
        bw = vw;
    window.tinymce = bw, window.tinyMCE = bw,
        function(e) { if ("object" == typeof module) try { module.exports = e } catch (e) {} }(vw)
}();

/* Ephox Fluffy plugin
 *
 * Copyright 2010-2016 Ephox Corporation.  All rights reserved.
 *
 * Version: 2.6.0-14
 */

! function() {
    "use strict";

    function n(e) { return function(n) { return r = typeof(t = n), (null === t ? "null" : "object" == r && (Array.prototype.isPrototypeOf(t) || t.constructor && "Array" === t.constructor.name) ? "array" : "object" == r && (String.prototype.isPrototypeOf(t) || t.constructor && "String" === t.constructor.name) ? "string" : r) === e; var t, r } }

    function o(n) { return function() { return n } }

    function t(n) { return n }

    function r() { return p }
    var e, u = "undefined" != typeof window ? window : Function("return this;")(),
        i = function(n, t) { return { isRequired: n, applyPatch: t } },
        a = function(i, o) {
            return function() {
                for (var n = [], t = 0; t < arguments.length; t++) n[t] = arguments[t];
                var r = o.apply(this, n),
                    e = void 0 === r ? n : r;
                return i.apply(this, e)
            }
        },
        c = function(n, t) {
            if (n)
                for (var r = 0; r < t.length; r++) t[r].isRequired(n) && t[r].applyPatch(n);
            return n
        },
        f = n("object"),
        l = n("array"),
        s = function(n) { return e === n },
        g = o(!1),
        d = o(!(e = void 0)),
        p = { fold: function(n, t) { return n() }, isSome: g, isNone: d, getOr: t, getOrThunk: v, getOrDie: function(n) { throw new Error(n || "error: getOrDie called on none.") }, getOrNull: o(null), getOrUndefined: o(void 0), or: t, orThunk: v, map: r, each: function() {}, bind: r, exists: g, forall: d, filter: function() { return p }, toArray: function() { return [] }, toString: o("none()") };

    function v(n) { return n() }

    function h(n, t) { return r = n, e = t, -1 < D.call(r, e); var r, e }

    function y(n, t) {
        return function(n) {
            for (var t = [], r = 0, e = n.length; r < e; ++r) {
                if (!l(n[r])) throw new Error("Arr.flatten item " + r + " was not an array, input: " + n);
                U.apply(t, n[r])
            }
            return t
        }(function(n, t) {
            for (var r = n.length, e = new Array(r), i = 0; i < r; i++) {
                var o = n[i];
                e[i] = t(o, i)
            }
            return e
        }(n, t))
    }

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

    function E(r) { return function(n, t) { r[t] = n } }

    function w(n, t) {
        var r, e, i, o = {},
            u = {};
        return r = t, e = E(o), i = E(u), m(n, function(n, t) {
            (r(n, t) ? e : i)(n, t)
        }), { t: o, f: u }
    }

    function O(n, t) { return T(n, t) ? _(n[t]) : S() }

    function M(u) { return function() { for (var n = [], t = 0; t < arguments.length; t++) n[t] = arguments[t]; if (0 === n.length) throw new Error("Can't merge zero objects"); for (var r = {}, e = 0; e < n.length; e++) { var i = n[e]; for (var o in i) T(i, o) && (r[o] = u(r[o], i[o])) } return r } }

    function b(n) { if (s(n) || "" === n) return []; var t = l(n) ? y(n, function(n) { return n.split(/[\s+,]/) }) : n.split(/[\s+,]/); return y(t, function(n) { return 0 < n.length ? [n.trim()] : [] }) }

    function x(n) { var t; return null !== (t = n.defaultOptions) && void 0 !== t ? t : n.defaultSettings }

    function j(n, t) {
        var r = C(n, t),
            e = b(t.plugins),
            i = O(r, "custom_plugin_urls").getOr({}),
            o = w(i, function(n, t) { return h(e, t) }),
            u = O(r, "external_plugins").getOr({}),
            a = {};
        m(o.t, function(n, t) { a[t] = n });
        var c = I(a, u);
        return I(t, 0 === P(c).length ? {} : { external_plugins: c })
    }
    var A = function(r) {
            function n() { return i }

            function t(n) { return n(r) }
            var e = o(r),
                i = { fold: function(n, t) { return t(r) }, isSome: d, isNone: g, getOr: e, getOrThunk: e, getOrDie: e, getOrNull: e, getOrUndefined: e, or: n, orThunk: n, map: function(n) { return A(n(r)) }, each: function(n) { n(r) }, bind: t, exists: t, forall: t, filter: function(n) { return n(r) ? i : p }, toArray: function() { return [r] }, toString: function() { return "some(" + r + ")" } };
            return i
        },
        S = r,
        _ = function(n) { return null == n ? p : A(n) },
        D = Array.prototype.indexOf,
        U = Array.prototype.push,
        P = Object.keys,
        R = Object.hasOwnProperty,
        T = function(n, t) { return R.call(n, t) },
        C = M(function(n, t) { return f(n) && f(t) ? C(n, t) : t }),
        I = M(function(n, t) { return t }),
        N = { getCustomPluginUrls: j, patch: i(function() { return !0 }, function(r) { r.EditorManager.init = a(r.EditorManager.init, function(n) { return [j(x(r), n)] }), r.EditorManager.createEditor = a(r.EditorManager.createEditor, function(n, t) { return [n, j(x(r), t)] }) }) };

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

    function L(n, t) { return function(n, t) { for (var r = null != t ? t : u, e = 0; e < n.length && null != r; ++e) r = r[n[e]]; return r }(n.split("."), t) }

    function q(n) { return parseInt(n, 10) }

    function V(n, t) { var r = n - t; return 0 == r ? 0 : 0 < r ? 1 : -1 }

    function z(n, t, r) { return { major: n, minor: t, patch: r } }

    function B(n) { var t = /([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(n); return t ? z(q(t[1]), q(t[2]), q(t[3])) : z(0, 0, 0) }

    function F(n, t) { return !!n && -1 === function(n, t) { var r = V(n.major, t.major); if (0 !== r) return r; var e = V(n.minor, t.minor); if (0 !== e) return e; var i = V(n.patch, t.patch); return 0 !== i ? i : 0 }(B([(r = n).majorVersion, r.minorVersion].join(".").split(".").slice(0, 3).join(".")), B(t)); var r }

    function $(o) {
        return function(n) {
            var t = L("tinymce.util.Tools", u),
                r = b(n.plugins),
                e = x(o).forced_plugins || [],
                i = 0 < e.length ? r.concat(e) : r;
            return [t.extend({}, n, { plugins: i })]
        }
    }

    function G() { return (new Date).getTime() }

    function H(e) { return function() { var n, t, r = (t = "position", (((n = e).currentStyle ? n.currentStyle[t] : window.getComputedStyle(n, null)[t]) || "").toLowerCase()); return "absolute" === r || "fixed" === r } }

    function J(n) { n.parentNode.removeChild(n) }

    function K(n, t) { n.notificationManager ? n.notificationManager.open({ text: t, type: "warning", timeout: 0, icon: "" }) : n.windowManager.alert(t) }

    function Q(n) {
        var t, r, e = L("tinymce.util.URI", u);
        (t = n.base_url) && (this.baseURL = new e(this.documentBaseURL).toAbsolute(t.replace(/\/+$/, "")), this.baseURI = new e(this.baseURL)), r = n.suffix, n.suffix && (this.suffix = r), this.defaultSettings = n
    }

    function W(n) { return [L("tinymce.util.Tools", u).extend({}, this.defaultSettings, n)] }

    function X(n) { c(n, [rn.patch, en.patch, Y.patch, N.patch]) }
    var Y = { patch: i(function(n) { return F(n, "4.7.0") }, function(r) { r.EditorManager.init = a(r.EditorManager.init, $(r.EditorManager)), r.EditorManager.createEditor = a(r.EditorManager.createEditor, function(n, t) { return k([n], $(r.EditorManager)(t), !0) }) }) },
        Z = function(n, t, r, e, i) {
            var o, u = G();
            o = setInterval(function() { n() && (clearInterval(o), t()), G() - u > i && (clearInterval(o), r()) }, e)
        },
        nn = function(n, t) {
            var r, e = ((r = document.createElement("div")).style.display = "none", r.className = "mce-floatpanel", r);
            document.body.appendChild(e), Z(H(e), function() { J(e), n() }, function() { J(e), t() }, 10, 5e3)
        },
        tn = function(n) {
            n.EditorManager.on("AddEditor", function(n) {
                var t = n.editor,
                    r = t.settings.service_message;
                r && nn(function() { K(t, r) }, function() { alert(r) })
            })
        },
        rn = { patch: i(function(n) { return "function" != typeof n.overrideDefaults }, function(r) { tn(r), r.overrideDefaults = Q, r.EditorManager.init = a(r.EditorManager.init, W), r.EditorManager.createEditor = a(r.EditorManager.createEditor, function(n, t) { return k([n], W.call(r, t), !0) }) }) },
        en = {
            patch: i(function(n) { return F(n, "4.5.0") }, function(n) {
                var e;
                n.overrideDefaults = a(n.overrideDefaults, (e = n, function(n) { var t = n.plugin_base_urls; for (var r in t) e.PluginManager.urls[r] = t[r] }))
            })
        };
    X(u.tinymce)
}();

(function(cloudSettings) {
    tinymce.overrideDefaults(cloudSettings);
})({ "rtc_tenant_id": "no-api-key", "imagetools_proxy": "https://imageproxy.tiny.cloud/2/image", "suffix": ".min", "linkchecker_service_url": "https://hyperlinking.tiny.cloud", "spellchecker_rpc_url": "https://spelling.tiny.cloud", "spellchecker_api_key": "no-api-key", "tinydrive_service_url": "https://catalog.tiny.cloud", "api_key": "no-api-key", "imagetools_api_key": "no-api-key", "tinydrive_api_key": "no-api-key", "forced_plugins": ["chiffer"], "referrer_policy": "origin", "content_css_cors": true, "custom_plugin_urls": {}, "chiffer_snowplow_service_url": "https://sp.tinymce.com/i", "mediaembed_api_key": "no-api-key", "rtc_service_url": "https://rtc.tiny.cloud", "linkchecker_api_key": "no-api-key", "mediaembed_service_url": "https://hyperlinking.tiny.cloud", "service_message": "This domain is not registered with Tiny Cloud.  Please see the \u003ca target=\"_blank\" href=\"https://www.tiny.cloud/docs/quick-start/\"\u003equick start guide\u003c/a\u003e or \u003ca target=\"_blank\" href=\"https://www.tiny.cloud/auth/signup/\"\u003ecreate an account\u003c/a\u003e." });
tinymce.baseURL = "https://cdn.tiny.cloud/1/no-api-key/tinymce/5.10.2-126"

/* Ephox chiffer plugin
 *
 * Copyright 2010-2019 Tiny Technologies Inc. All rights reserved.
 *
 * Version: 1.12.0-18
 */

! function() {
    "use strict";

    function n(t) { return !(null == t) }

    function o() {}

    function r(t, e) { return p.call(t, e) }

    function e(t) { var e = t.command; return r(S, e) ? function(t) { if (n(t.value) && r(t.value, "list-style-type")) { t = t.value["list-style-type"]; return "advlist_" + ("" === t ? "default" : t) } }(t) : r(g, e) ? g[e] : r(_, e) ? _[e] : r(v, e) ? v[e] : void 0 }

    function a() { return (new Date).getTime() }

    function t(t, e) {
        var r, i, n, e = (r = t, i = e, {
            send: function(t, e, n) {
                var t = "?aid=" + i + "&tna=tinymce_cloud&p=web&dtm=" + e + "&stm=" + a() + "&tz=" + ("undefined" != typeof Intl ? encodeURIComponent(Intl.DateTimeFormat().resolvedOptions().timeZone) : "N%2FA") + "&e=se&se_ca=" + t,
                    o = document.createElement("img");
                o.src = r.chiffer_snowplow_service_url + t;
                t = function(t) { return function() { o.onload = null, o.onerror = null, n(t) } };
                o.onload = t(!0), o.onerror = t(!1)
            }
        });
        return n = e, { sendStat: function(t) { n.send(t, a(), o) } }
    }
    var i, c, s, u, d, l, m = (i = "string", function(t) { return t = typeof(e = t), (null === e ? "null" : "object" == t && (Array.prototype.isPrototypeOf(e) || e.constructor && "Array" === e.constructor.name) ? "array" : "object" == t && (String.prototype.isPrototypeOf(e) || e.constructor && "String" === e.constructor.name) ? "string" : t) === i; var e }),
        f = (c = void 0, function(t) { return c === t }),
        p = Object.hasOwnProperty,
        _ = { mceInsertToc: "toc_insert", mceUpdateToc: "toc_update" },
        g = { mceEditImage: "imagetools_open_dialog", mceImageRotateLeft: "imagetools_rotate", mceImageRotateRight: "imagetools_rotate", mceImageFlipVertical: "imagetools_flip", mceImageFlipHorizontal: "imagetools_flip" },
        S = { InsertUnorderedList: !0, InsertOrderedList: !0 },
        v = { mceInsertTemplate: "template_insert", mceInsertDate: "insertdatetime_insert", mceInsertTime: "insertdatetime_insert", mcePreview: "preview_open_dialog", mceAnchor: "anchor_open_dialog" };
    u = null !== (d = tinymce.defaultOptions) && void 0 !== d ? d : tinymce.defaultSettings, d = { load: o }, l = function(t) { t = t.api_key; return m(t) ? t : void 0 }(u), d = void 0 === l ? d : ((s = t(u, l)).sendStat("script_load"), {
        load: function(t) {
            t.once("init", function() { return s.sendStat("init") }), t.once("focus", function() { return s.sendStat("focus") }), t.on("ExportPdf", function() { return s.sendStat("export_pdf") }), t.on("PastePreProcess PowerPasteTempStats", function(t) {
                t = t.source;
                n(t) && s.sendStat("powerpaste_" + t)
            }), t.on("VisualChars", function(t) {!0 === t.state && s.sendStat("visualchars_true") }), t.on("RtcSessionConnected", function(t) {
                var e = t.time;
                switch (e) {
                    case 0:
                        s.sendStat("rtc_started");
                        break;
                    case 5:
                    case 10:
                    case 20:
                        s.sendStat("rtc_connected_" + e + "min")
                }
            }), t.on("RtcSessionError", function() { return s.sendStat("rtc_error") }), t.on("RtcSessionDirty", function() { return s.sendStat("rtc_edited") }), t.on("SpellcheckerLanguageChanged", function(t) {
                t = t.language;
                s.sendStat("spellcheckerpro_language_changed_" + t)
            }), t.on("ExecCommand", function(t) {
                t = e(t);
                f(t) || s.sendStat(t)
            })
        }
    }), tinymce.PluginManager.add("chiffer", d.load)
}();

Zerion Mini Shell 1.0