08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / assets_platform / tinymce / tinymce.min.js
/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.6.2 (2020-12-08)
 */
! function () {
  "use strict";
  var r = function (e) {
      if (null === e) return "null";
      if (e === undefined) 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
    },
    t = function (e) {
      return {
        eq: e
      }
    },
    s = t(function (e, t) {
      return e === t
    }),
    i = function (o) {
      return t(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
      })
    },
    c = function (e, r) {
      return n = i(e), o = function (e) {
        return t = e, n = r, Array.prototype.slice.call(t).sort(n);
        var t, n
      }, t(function (e, t) {
        return n.eq(o(e), o(t))
      });
      var n, o
    },
    u = function (u) {
      return t(function (e, t) {
        var n = Object.keys(e),
          r = Object.keys(t);
        if (!c(s).eq(n, r)) return !1;
        for (var o = n.length, i = 0; i < o; i++) {
          var a = n[i];
          if (!u.eq(e[a], t[a])) return !1
        }
        return !0
      })
    },
    l = t(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 ? i(l).eq(e, t) : "object" === n && u(l).eq(e, t))
    }),
    V = function () {},
    a = function (n, r) {
      return function () {
        for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
        return n(r.apply(null, e))
      }
    },
    E = function (e) {
      return function () {
        return e
      }
    },
    o = function (e) {
      return e
    };

  function N(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)
    }
  }
  var e, n, f, d = function (t) {
      return function (e) {
        return !t(e)
      }
    },
    m = function (e) {
      return function () {
        throw new Error(e)
      }
    },
    b = function (e) {
      e()
    },
    C = E(!1),
    k = E(!0),
    p = function () {
      return g
    },
    g = (e = function (e) {
      return e.isNone()
    }, {
      fold: function (e, t) {
        return e()
      },
      is: C,
      isSome: C,
      isNone: k,
      getOr: f = function (e) {
        return e
      },
      getOrThunk: n = function (e) {
        return e()
      },
      getOrDie: function (e) {
        throw new Error(e || "error: getOrDie called on none.")
      },
      getOrNull: E(null),
      getOrUndefined: E(undefined),
      or: f,
      orThunk: n,
      map: p,
      each: V,
      bind: p,
      exists: C,
      forall: k,
      filter: p,
      equals: e,
      equals_: e,
      toArray: function () {
        return []
      },
      toString: E("none()")
    }),
    h = function (n) {
      var e = E(n),
        t = function () {
          return o
        },
        r = function (e) {
          return e(n)
        },
        o = {
          fold: function (e, t) {
            return t(n)
          },
          is: function (e) {
            return n === e
          },
          isSome: k,
          isNone: C,
          getOr: e,
          getOrThunk: e,
          getOrDie: e,
          getOrNull: e,
          getOrUndefined: e,
          or: t,
          orThunk: t,
          map: function (e) {
            return h(e(n))
          },
          each: function (e) {
            e(n)
          },
          bind: r,
          exists: r,
          forall: r,
          filter: function (e) {
            return e(n) ? o : g
          },
          toArray: function () {
            return [n]
          },
          toString: function () {
            return "some(" + n + ")"
          },
          equals: function (e) {
            return e.is(n)
          },
          equals_: function (e, t) {
            return e.fold(C, function (e) {
              return t(n, e)
            })
          }
        };
      return o
    },
    U = {
      some: h,
      none: p,
      from: function (e) {
        return null === e || e === undefined ? g : h(e)
      }
    },
    v = function (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
      }
    },
    y = function (t) {
      return function (e) {
        return typeof e === t
      }
    },
    w = function (t) {
      return function (e) {
        return t === e
      }
    },
    q = v("string"),
    _ = v("object"),
    S = v("array"),
    x = w(null),
    A = y("boolean"),
    R = w(undefined),
    $ = function (e) {
      return null === e || e === undefined
    },
    D = function (e) {
      return !$(e)
    },
    T = y("function"),
    O = y("number"),
    B = Array.prototype.slice,
    P = Array.prototype.indexOf,
    L = Array.prototype.push,
    I = function (e, t) {
      return P.call(e, t)
    },
    M = function (e, t) {
      return -1 < I(e, t)
    },
    F = function (e, t) {
      for (var n = 0, r = e.length; n < r; n++) {
        if (t(e[n], n)) return !0
      }
      return !1
    },
    z = function (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
    },
    W = function (e, t) {
      for (var n = 0, r = e.length; n < r; n++) {
        t(e[n], n)
      }
    },
    j = function (e, t) {
      for (var n = e.length - 1; 0 <= n; n--) {
        t(e[n], n)
      }
    },
    H = function (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
    },
    K = function (e, t, n) {
      return j(e, function (e) {
        n = t(n, e)
      }), n
    },
    X = function (e, t, n) {
      return W(e, function (e) {
        n = t(n, e)
      }), n
    },
    Y = function (e, t) {
      return function (e, t, n) {
        for (var r = 0, o = e.length; r < o; r++) {
          var i = e[r];
          if (t(i, r)) return U.some(i);
          if (n(i, r)) break
        }
        return U.none()
      }(e, t, C)
    },
    G = function (e, t) {
      for (var n = 0, r = e.length; n < r; n++) {
        if (t(e[n], n)) return U.some(n)
      }
      return U.none()
    },
    J = function (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);
          L.apply(t, e[n])
        }
        return t
      }(z(e, t))
    },
    Q = function (e, t) {
      for (var n = 0, r = e.length; n < r; ++n) {
        if (!0 !== t(e[n], n)) return !1
      }
      return !0
    },
    Z = function (e) {
      var t = B.call(e, 0);
      return t.reverse(), t
    },
    ee = function (e, t) {
      return H(e, function (e) {
        return !M(t, e)
      })
    },
    te = function (e, t) {
      return 0 <= t && t < e.length ? U.some(e[t]) : U.none()
    },
    ne = function (e) {
      return te(e, 0)
    },
    re = function (e) {
      return te(e, e.length - 1)
    },
    oe = T(Array.from) ? Array.from : function (e) {
      return B.call(e)
    },
    ie = Object.keys,
    ae = Object.hasOwnProperty,
    ue = function (e, t) {
      for (var n = ie(e), r = 0, o = n.length; r < o; r++) {
        var i = n[r];
        t(e[i], i)
      }
    },
    se = function (e, n) {
      return ce(e, function (e, t) {
        return {
          k: t,
          v: n(e, t)
        }
      })
    },
    ce = function (e, r) {
      var o = {};
      return ue(e, function (e, t) {
        var n = r(e, t);
        o[n.k] = n.v
      }), o
    },
    le = function (n) {
      return function (e, t) {
        n[t] = e
      }
    },
    fe = function (e, n, r, o) {
      return ue(e, function (e, t) {
        (n(e, t) ? r : o)(e, t)
      }), {}
    },
    de = function (e, t) {
      var n = {},
        r = {};
      return fe(e, t, le(n), le(r)), {
        t: n,
        f: r
      }
    },
    me = function (e, t) {
      var n = {};
      return fe(e, t, le(n), V), n
    },
    pe = function (e) {
      return n = function (e) {
        return e
      }, r = [], ue(e, function (e, t) {
        r.push(n(e, t))
      }), r;
      var n, r
    },
    ge = function (e, t) {
      return he(e, t) ? U.from(e[t]) : U.none()
    },
    he = function (e, t) {
      return ae.call(e, t)
    },
    ve = function (e, t) {
      return he(e, t) && e[t] !== undefined && null !== e[t]
    },
    ye = Array.isArray,
    be = function (e, t, n) {
      var r, o;
      if (!e) return !1;
      if (n = n || e, e.length !== undefined) {
        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 (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r, e)) return !1;
      return !0
    },
    Ce = function (n, r) {
      var o = [];
      return be(n, function (e, t) {
        o.push(r(e, t, n))
      }), o
    },
    we = function (n, r) {
      var o = [];
      return be(n, function (e, t) {
        r && !r(e, t, n) || o.push(e)
      }), o
    },
    xe = function (e, t) {
      if (e)
        for (var n = 0, r = e.length; n < r; n++)
          if (e[n] === t) return n;
      return -1
    },
    Se = function (e, t, n, r) {
      for (var o = R(n) ? e[0] : n, i = 0; i < e.length; i++) o = t.call(r, o, e[i], i);
      return o
    },
    Ne = function (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
    },
    Ee = function (e) {
      return e[e.length - 1]
    },
    ke = function () {
      return (ke = 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 _e() {
    for (var e = 0, t = 0, n = arguments.length; t < n; t++) e += arguments[t].length;
    for (var r = Array(e), o = 0, t = 0; t < n; t++)
      for (var i = arguments[t], a = 0, u = i.length; a < u; a++, o++) r[o] = i[a];
    return r
  }
  var Ae, Re, Te, De, Oe, Be, Pe, Le = function (e, t) {
      var n = function (e, t) {
        for (var n = 0; n < e.length; n++) {
          var r = e[n];
          if (r.test(t)) return r
        }
        return undefined
      }(e, t);
      if (!n) return {
        major: 0,
        minor: 0
      };
      var r = function (e) {
        return Number(t.replace(n, "$" + e))
      };
      return Me(r(1), r(2))
    },
    Ie = function () {
      return Me(0, 0)
    },
    Me = function (e, t) {
      return {
        major: e,
        minor: t
      }
    },
    Fe = {
      nu: Me,
      detect: function (e, t) {
        var n = String(t).toLowerCase();
        return 0 === e.length ? Ie() : Le(e, n)
      },
      unknown: Ie
    },
    Ue = function (e, t) {
      var n = String(t).toLowerCase();
      return Y(e, function (e) {
        return e.search(n)
      })
    },
    ze = function (e, n) {
      return Ue(e, n).map(function (e) {
        var t = Fe.detect(e.versionRegexes, n);
        return {
          current: e.name,
          version: t
        }
      })
    },
    je = function (e, n) {
      return Ue(e, n).map(function (e) {
        var t = Fe.detect(e.versionRegexes, n);
        return {
          current: e.name,
          version: t
        }
      })
    },
    He = function (e, t) {
      return -1 !== e.indexOf(t)
    },
    Ve = function (e, t) {
      return n = e, o = 0, "" === (r = t) || n.length >= r.length && n.substr(o, o + r.length) === r;
      var n, r, o
    },
    qe = function (t) {
      return function (e) {
        return e.replace(t, "")
      }
    },
    $e = qe(/^\s+|\s+$/g),
    We = qe(/^\s+/g),
    Ke = qe(/\s+$/g),
    Xe = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
    Ye = function (t) {
      return function (e) {
        return He(e, t)
      }
    },
    Ge = [{
      name: "Edge",
      versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
      search: function (e) {
        return He(e, "edge/") && He(e, "chrome") && He(e, "safari") && He(e, "applewebkit")
      }
    }, {
      name: "Chrome",
      versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Xe],
      search: function (e) {
        return He(e, "chrome") && !He(e, "chromeframe")
      }
    }, {
      name: "IE",
      versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
      search: function (e) {
        return He(e, "msie") || He(e, "trident")
      }
    }, {
      name: "Opera",
      versionRegexes: [Xe, /.*?opera\/([0-9]+)\.([0-9]+).*/],
      search: Ye("opera")
    }, {
      name: "Firefox",
      versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
      search: Ye("firefox")
    }, {
      name: "Safari",
      versionRegexes: [Xe, /.*?cpu os ([0-9]+)_([0-9]+).*/],
      search: function (e) {
        return (He(e, "safari") || He(e, "mobile/")) && He(e, "applewebkit")
      }
    }],
    Je = [{
      name: "Windows",
      search: Ye("win"),
      versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
    }, {
      name: "iOS",
      search: function (e) {
        return He(e, "iphone") || He(e, "ipad")
      },
      versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]
    }, {
      name: "Android",
      search: Ye("android"),
      versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
    }, {
      name: "OSX",
      search: Ye("mac os x"),
      versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]
    }, {
      name: "Linux",
      search: Ye("linux"),
      versionRegexes: []
    }, {
      name: "Solaris",
      search: Ye("sunos"),
      versionRegexes: []
    }, {
      name: "FreeBSD",
      search: Ye("freebsd"),
      versionRegexes: []
    }, {
      name: "ChromeOS",
      search: Ye("cros"),
      versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/]
    }],
    Qe = {
      browsers: E(Ge),
      oses: E(Je)
    },
    Ze = "Firefox",
    et = function (e) {
      var t = e.current,
        n = e.version,
        r = function (e) {
          return function () {
            return t === e
          }
        };
      return {
        current: t,
        version: n,
        isEdge: r("Edge"),
        isChrome: r("Chrome"),
        isIE: r("IE"),
        isOpera: r("Opera"),
        isFirefox: r(Ze),
        isSafari: r("Safari")
      }
    },
    tt = {
      unknown: function () {
        return et({
          current: undefined,
          version: Fe.unknown()
        })
      },
      nu: et,
      edge: E("Edge"),
      chrome: E("Chrome"),
      ie: E("IE"),
      opera: E("Opera"),
      firefox: E(Ze),
      safari: E("Safari")
    },
    nt = "Windows",
    rt = "Android",
    ot = "Solaris",
    it = "FreeBSD",
    at = "ChromeOS",
    ut = function (e) {
      var t = e.current,
        n = e.version,
        r = function (e) {
          return function () {
            return t === e
          }
        };
      return {
        current: t,
        version: n,
        isWindows: r(nt),
        isiOS: r("iOS"),
        isAndroid: r(rt),
        isOSX: r("OSX"),
        isLinux: r("Linux"),
        isSolaris: r(ot),
        isFreeBSD: r(it),
        isChromeOS: r(at)
      }
    },
    st = {
      unknown: function () {
        return ut({
          current: undefined,
          version: Fe.unknown()
        })
      },
      nu: ut,
      windows: E(nt),
      ios: E("iOS"),
      android: E(rt),
      linux: E("Linux"),
      osx: E("OSX"),
      solaris: E(ot),
      freebsd: E(it),
      chromeos: E(at)
    },
    ct = function (e, t) {
      var n, r, o, i, a, u, s, c, l, f, d, m, p = Qe.browsers(),
        g = Qe.oses(),
        h = ze(p, e).fold(tt.unknown, tt.nu),
        v = je(g, e).fold(st.unknown, st.nu);
      return {
        browser: h,
        os: v,
        deviceType: (r = h, o = e, i = t, a = (n = v).isiOS() && !0 === /ipad/i.test(o), u = n.isiOS() && !a, s = n.isiOS() || n.isAndroid(), c = s || i("(pointer:coarse)"), l = a || !u && s && i("(min-device-width:768px)"), f = u || s && !l, d = r.isSafari() && n.isiOS() && !1 === /safari/i.test(o), m = !f && !l && !d, {
          isiPad: E(a),
          isiPhone: E(u),
          isTablet: E(l),
          isPhone: E(f),
          isTouch: E(c),
          isAndroid: n.isAndroid,
          isiOS: n.isiOS,
          isWebView: E(d),
          isDesktop: E(m)
        })
      }
    },
    lt = function (e) {
      return window.matchMedia(e).matches
    },
    ft = (Te = !(Ae = function () {
      return ct(navigator.userAgent, lt)
    }), function () {
      for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
      return Te || (Te = !0, Re = Ae.apply(null, e)), Re
    }),
    dt = function () {
      return ft()
    },
    mt = navigator.userAgent,
    pt = dt(),
    gt = pt.browser,
    ht = pt.os,
    vt = pt.deviceType,
    yt = /WebKit/.test(mt) && !gt.isEdge(),
    bt = "FormData" in window && "FileReader" in window && "URL" in window && !!URL.createObjectURL,
    Ct = -1 !== mt.indexOf("Windows Phone"),
    wt = {
      opera: gt.isOpera(),
      webkit: yt,
      ie: !(!gt.isIE() && !gt.isEdge()) && gt.version.major,
      gecko: gt.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: gt.isIE() ? document.documentMode || 7 : 10,
      fileApi: bt,
      ceFalse: !0,
      cacheSuffix: null,
      container: null,
      experimentalShadowDom: !1,
      canHaveCSP: !gt.isIE(),
      desktop: vt.isDesktop(),
      windowsPhone: Ct,
      browser: {
        current: gt.current,
        version: gt.version,
        isChrome: gt.isChrome,
        isEdge: gt.isEdge,
        isFirefox: gt.isFirefox,
        isIE: gt.isIE,
        isOpera: gt.isOpera,
        isSafari: gt.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
      }
    },
    xt = /^\s*|\s*$/g,
    St = function (e) {
      return null === e || e === undefined ? "" : ("" + e).replace(xt, "")
    },
    Nt = function (e, t) {
      return t ? !("array" !== t || !ye(e)) || typeof e === t : e !== undefined
    },
    Et = function (e, n, r, o) {
      o = o || this, e && (r && (e = e[r]), be(e, function (e, t) {
        return !1 !== n.call(o, e, t, r) && void Et(e, n, r, o)
      }))
    },
    kt = {
      trim: St,
      isArray: ye,
      is: Nt,
      toArray: function (e) {
        if (ye(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 || ",", "string" == typeof (e = e || []) && (e = e.split(t)), n = n || {}, r = e.length; r--;) n[e[r]] = {};
        return n
      },
      each: be,
      map: Ce,
      grep: we,
      inArray: xe,
      hasOwn: function (e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
      },
      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 = t[r];
          for (var a in i) {
            !i.hasOwnProperty(a) || (o = i[a]) !== undefined && (e[a] = o)
          }
        }
        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: Et,
      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 || Nt(e, "array") ? e : Ce(e.split(t || ","), St)
      },
      _addCacheSuffix: function (e) {
        var t = wt.cacheSuffix;
        return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e
      }
    },
    _t = function (e) {
      if (null === e || e === undefined) throw new Error("Node cannot be null or undefined");
      return {
        dom: e
      }
    },
    At = {
      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 _t(n.childNodes[0])
      },
      fromTag: function (e, t) {
        var n = (t || document).createElement(e);
        return _t(n)
      },
      fromText: function (e, t) {
        var n = (t || document).createTextNode(e);
        return _t(n)
      },
      fromDom: _t,
      fromPoint: function (e, t, n) {
        return U.from(e.dom.elementFromPoint(t, n)).map(_t)
      }
    },
    Rt = function (e, t) {
      for (var n = [], r = function (e) {
          return n.push(e), t(e)
        }, o = t(e);
        (o = o.bind(r)).isSome(););
      return n
    },
    Tt = function (e, t) {
      var n = e.dom;
      if (1 !== n.nodeType) return !1;
      var r = n;
      if (r.matches !== undefined) return r.matches(t);
      if (r.msMatchesSelector !== undefined) return r.msMatchesSelector(t);
      if (r.webkitMatchesSelector !== undefined) return r.webkitMatchesSelector(t);
      if (r.mozMatchesSelector !== undefined) return r.mozMatchesSelector(t);
      throw new Error("Browser lacks native selectors")
    },
    Dt = function (e) {
      return 1 !== e.nodeType && 9 !== e.nodeType && 11 !== e.nodeType || 0 === e.childElementCount
    },
    Ot = function (e, t) {
      return e.dom === t.dom
    },
    Bt = function (e, t) {
      return n = e.dom, r = t.dom, o = n, i = r, a = Node.DOCUMENT_POSITION_CONTAINED_BY, 0 != (o.compareDocumentPosition(i) & a);
      var n, r, o, i, a
    },
    Pt = function (e, t) {
      return dt().browser.isIE() ? Bt(e, t) : (n = t, r = e.dom, o = n.dom, r !== o && r.contains(o));
      var n, r, o
    },
    Lt = ("undefined" != typeof window || Function("return this;")(), function (e) {
      return e.dom.nodeName.toLowerCase()
    }),
    It = function (e) {
      return e.dom.nodeType
    },
    Mt = function (t) {
      return function (e) {
        return It(e) === t
      }
    },
    Ft = Mt(1),
    Ut = Mt(3),
    zt = Mt(9),
    jt = Mt(11),
    Ht = function (e) {
      return At.fromDom(e.dom.ownerDocument)
    },
    Vt = function (e) {
      return zt(e) ? e : Ht(e)
    },
    qt = function (e) {
      return At.fromDom(Vt(e).dom.defaultView)
    },
    $t = function (e) {
      return U.from(e.dom.parentNode).map(At.fromDom)
    },
    Wt = function (e) {
      return U.from(e.dom.previousSibling).map(At.fromDom)
    },
    Kt = function (e) {
      return U.from(e.dom.nextSibling).map(At.fromDom)
    },
    Xt = function (e) {
      return Z(Rt(e, Wt))
    },
    Yt = function (e) {
      return Rt(e, Kt)
    },
    Gt = function (e) {
      return z(e.dom.childNodes, At.fromDom)
    },
    Jt = function (e, t) {
      var n = e.dom.childNodes;
      return U.from(n[t]).map(At.fromDom)
    },
    Qt = function (e) {
      return Jt(e, 0)
    },
    Zt = function (e) {
      return Jt(e, e.dom.childNodes.length - 1)
    },
    en = function (e) {
      return jt(e)
    },
    tn = T(Element.prototype.attachShadow) && T(Node.prototype.getRootNode),
    nn = E(tn),
    rn = tn ? function (e) {
      return At.fromDom(e.dom.getRootNode())
    } : Vt,
    on = function (e) {
      return en(e) ? e : function (e) {
        var t = e.dom.head;
        if (null === t || t === undefined) throw new Error("Head is not available yet");
        return At.fromDom(t)
      }(Vt(e))
    },
    an = function (e) {
      return At.fromDom(e.dom.host)
    },
    un = function (e) {
      return D(e.dom.shadowRoot)
    },
    sn = function (t, n) {
      $t(t).each(function (e) {
        e.dom.insertBefore(n.dom, t.dom)
      })
    },
    cn = function (e, t) {
      Kt(e).fold(function () {
        $t(e).each(function (e) {
          fn(e, t)
        })
      }, function (e) {
        sn(e, t)
      })
    },
    ln = function (t, n) {
      Qt(t).fold(function () {
        fn(t, n)
      }, function (e) {
        t.dom.insertBefore(n.dom, e.dom)
      })
    },
    fn = function (e, t) {
      e.dom.appendChild(t.dom)
    },
    dn = function (t, e) {
      W(e, function (e) {
        fn(t, e)
      })
    },
    mn = function (e) {
      e.dom.textContent = "", W(Gt(e), function (e) {
        pn(e)
      })
    },
    pn = function (e) {
      var t = e.dom;
      null !== t.parentNode && t.parentNode.removeChild(t)
    },
    gn = function (e) {
      var t, n = Gt(e);
      0 < n.length && (t = e, W(n, function (e) {
        sn(t, e)
      })), pn(e)
    },
    hn = function (e) {
      var t = Ut(e) ? e.dom.parentNode : e.dom;
      if (t === undefined || null === t || null === t.ownerDocument) return !1;
      var n, r, o, i, a = t.ownerDocument;
      return o = At.fromDom(t), i = rn(o), (en(i) ? U.some(i) : U.none()).fold(function () {
        return a.body.contains(t)
      }, (n = hn, r = an, function (e) {
        return n(r(e))
      }))
    },
    vn = function (n, r) {
      return {
        left: n,
        top: r,
        translate: function (e, t) {
          return vn(n + e, r + t)
        }
      }
    },
    yn = vn,
    bn = function (e, t) {
      return e !== undefined ? e : t !== undefined ? t : 0
    },
    Cn = function (e) {
      var t, n = e.dom,
        r = n.ownerDocument.body;
      return r === n ? yn(r.offsetLeft, r.offsetTop) : hn(e) ? (t = n.getBoundingClientRect(), yn(t.left, t.top)) : yn(0, 0)
    },
    wn = function (e) {
      var t = e !== undefined ? e.dom : document,
        n = t.body.scrollLeft || t.documentElement.scrollLeft,
        r = t.body.scrollTop || t.documentElement.scrollTop;
      return yn(n, r)
    },
    xn = function (e, t, n) {
      var r = (n !== undefined ? n.dom : document).defaultView;
      r && r.scrollTo(e, t)
    },
    Sn = function (e, t) {
      dt().browser.isSafari() && T(e.dom.scrollIntoViewIfNeeded) ? e.dom.scrollIntoViewIfNeeded(!1) : e.dom.scrollIntoView(t)
    },
    Nn = function (e, t, n, r) {
      return {
        x: e,
        y: t,
        width: n,
        height: r,
        right: e + n,
        bottom: t + r
      }
    },
    En = function (e) {
      var t, n, r = e === undefined ? window : e,
        o = r.document,
        i = wn(At.fromDom(o));
      return n = (t = r) === undefined ? window : t, U.from(n.visualViewport).fold(function () {
        var e = r.document.documentElement,
          t = e.clientWidth,
          n = e.clientHeight;
        return Nn(i.left, i.top, t, n)
      }, function (e) {
        return Nn(Math.max(e.pageLeft, i.left), Math.max(e.pageTop, i.top), e.width, e.height)
      })
    },
    kn = function (t) {
      return function (e) {
        return !!e && e.nodeType === t
      }
    },
    _n = function (e) {
      return !!e && !Object.getPrototypeOf(e)
    },
    An = kn(1),
    Rn = function (e) {
      var n = e.map(function (e) {
        return e.toLowerCase()
      });
      return function (e) {
        if (e && e.nodeName) {
          var t = e.nodeName.toLowerCase();
          return M(n, t)
        }
        return !1
      }
    },
    Tn = function (r, e) {
      var o = e.toLowerCase().split(" ");
      return function (e) {
        var t;
        if (An(e))
          for (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
      }
    },
    Dn = function (t) {
      return function (e) {
        return An(e) && e.hasAttribute(t)
      }
    },
    On = function (e) {
      return An(e) && e.hasAttribute("data-mce-bogus")
    },
    Bn = function (e) {
      return An(e) && "TABLE" === e.tagName
    },
    Pn = function (t) {
      return function (e) {
        if (An(e)) {
          if (e.contentEditable === t) return !0;
          if (e.getAttribute("data-mce-contenteditable") === t) return !0
        }
        return !1
      }
    },
    Ln = Rn(["textarea", "input"]),
    In = kn(3),
    Mn = kn(8),
    Fn = kn(9),
    Un = kn(11),
    zn = Rn(["br"]),
    jn = Rn(["img"]),
    Hn = Pn("true"),
    Vn = Pn("false"),
    qn = Rn(["td", "th"]),
    $n = Rn(["video", "audio", "object", "embed"]),
    Wn = function (e) {
      return e.style !== undefined && T(e.style.getPropertyValue)
    },
    Kn = function (e, t, n) {
      if (!(q(n) || A(n) || O(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 + "")
    },
    Xn = function (e, t, n) {
      Kn(e.dom, t, n)
    },
    Yn = function (e, t) {
      var n = e.dom;
      ue(t, function (e, t) {
        Kn(n, t, e)
      })
    },
    Gn = function (e, t) {
      var n = e.dom.getAttribute(t);
      return null === n ? undefined : n
    },
    Jn = function (e, t) {
      return U.from(Gn(e, t))
    },
    Qn = function (e, t) {
      e.dom.removeAttribute(t)
    },
    Zn = function (e, t) {
      var n = e.dom;
      ue(t, function (e, t) {
        ! function (e, t, n) {
          if (!q(n)) throw console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e), new Error("CSS value must be a string: " + n);
          Wn(e) && e.style.setProperty(t, n)
        }(n, t, e)
      })
    },
    er = function (e, t) {
      var n = e.dom,
        r = window.getComputedStyle(n).getPropertyValue(t);
      return "" !== r || hn(e) ? r : tr(n, t)
    },
    tr = function (e, t) {
      return Wn(e) ? e.style.getPropertyValue(t) : ""
    },
    nr = function (e, t) {
      var n = e.dom,
        r = tr(n, t);
      return U.from(r).filter(function (e) {
        return 0 < e.length
      })
    },
    rr = function (e) {
      var t = {},
        n = e.dom;
      if (Wn(n))
        for (var r = 0; r < n.style.length; r++) {
          var o = n.style.item(r);
          t[o] = n.style[o]
        }
      return t
    },
    or = dt().browser,
    ir = function (e) {
      return Y(e, Ft)
    },
    ar = function (e, t) {
      return e.children && M(e.children, t)
    },
    ur = function (e, t, n) {
      var r, o, i, a = 0,
        u = 0,
        s = e.ownerDocument;
      if (n = n || e, t) {
        if (n === e && t.getBoundingClientRect && "static" === er(At.fromDom(e), "position")) return {
          x: a = (o = t.getBoundingClientRect()).left + (s.documentElement.scrollLeft || e.scrollLeft) - s.documentElement.clientLeft,
          y: u = o.top + (s.documentElement.scrollTop || e.scrollTop) - s.documentElement.clientTop
        };
        for (r = t; r && r !== n && r.nodeType && !ar(r, n);) a += r.offsetLeft || 0, u += r.offsetTop || 0, r = r.offsetParent;
        for (r = t.parentNode; r && r !== n && r.nodeType && !ar(r, n);) a -= r.scrollLeft || 0, u -= r.scrollTop || 0, r = r.parentNode;
        u += (i = At.fromDom(t), or.isFirefox() && "table" === Lt(i) ? ir(Gt(i)).filter(function (e) {
          return "caption" === Lt(e)
        }).bind(function (o) {
          return ir(Yt(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: a,
        y: u
      }
    },
    sr = {},
    cr = {
      exports: sr
    };
  De = undefined, Oe = sr, Be = cr, Pe = undefined,
    function (e) {
      "object" == typeof Oe && void 0 !== Be ? Be.exports = e() : "function" == typeof De && De.amd ? De([], e) : ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).EphoxContactWrapper = e()
    }(function () {
      return function l(i, a, u) {
        function s(t, e) {
          if (!a[t]) {
            if (!i[t]) {
              var n = "function" == typeof Pe && Pe;
              if (!e && n) return n(t, !0);
              if (c) return c(t, !0);
              var r = new Error("Cannot find module '" + t + "'");
              throw r.code = "MODULE_NOT_FOUND", r
            }
            var o = a[t] = {
              exports: {}
            };
            i[t][0].call(o.exports, function (e) {
              return s(i[t][1][e] || e)
            }, o, o.exports, l, i, a, u)
          }
          return a[t].exports
        }
        for (var c = "function" == typeof Pe && Pe, e = 0; e < u.length; e++) s(u[e]);
        return s
      }({
        1: [function (e, t, n) {
          var r, o, i = t.exports = {};

          function a() {
            throw new Error("setTimeout has not been defined")
          }

          function u() {
            throw new Error("clearTimeout has not been defined")
          }

          function s(e) {
            if (r === setTimeout) return setTimeout(e, 0);
            if ((r === a || !r) && setTimeout) return r = setTimeout, setTimeout(e, 0);
            try {
              return r(e, 0)
            } catch (t) {
              try {
                return r.call(null, e, 0)
              } catch (t) {
                return r.call(this, e, 0)
              }
            }
          }! function () {
            try {
              r = "function" == typeof setTimeout ? setTimeout : a
            } catch (e) {
              r = a
            }
            try {
              o = "function" == typeof clearTimeout ? clearTimeout : u
            } catch (e) {
              o = u
            }
          }();
          var c, l = [],
            f = !1,
            d = -1;

          function m() {
            f && c && (f = !1, c.length ? l = c.concat(l) : d = -1, l.length && p())
          }

          function p() {
            if (!f) {
              var e = s(m);
              f = !0;
              for (var t = l.length; t;) {
                for (c = l, l = []; ++d < t;) c && c[d].run();
                d = -1, t = l.length
              }
              c = null, f = !1,
                function (e) {
                  if (o === clearTimeout) return clearTimeout(e);
                  if ((o === u || !o) && clearTimeout) return o = clearTimeout, clearTimeout(e);
                  try {
                    o(e)
                  } catch (t) {
                    try {
                      return o.call(null, e)
                    } catch (t) {
                      return o.call(this, e)
                    }
                  }
                }(e)
            }
          }

          function g(e, t) {
            this.fun = e, this.array = t
          }

          function h() {}
          i.nextTick = function (e) {
            var t = new Array(arguments.length - 1);
            if (1 < arguments.length)
              for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
            l.push(new g(e, t)), 1 !== l.length || f || s(p)
          }, g.prototype.run = function () {
            this.fun.apply(null, this.array)
          }, i.title = "browser", i.browser = !0, i.env = {}, i.argv = [], i.version = "", i.versions = {}, i.on = h, i.addListener = h, i.once = h, i.off = h, i.removeListener = h, i.removeAllListeners = h, i.emit = h, i.prependListener = h, i.prependOnceListener = h, i.listeners = function (e) {
            return []
          }, i.binding = function (e) {
            throw new Error("process.binding is not supported")
          }, i.cwd = function () {
            return "/"
          }, i.chdir = function (e) {
            throw new Error("process.chdir is not supported")
          }, i.umask = function () {
            return 0
          }
        }, {}],
        2: [function (e, f, t) {
          (function (t) {
            function r() {}

            function a(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 = undefined, this._deferreds = [], l(e, this)
            }

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

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

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

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

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

            function l(e, t) {
              var n = !1;
              try {
                e(function (e) {
                  n || (n = !0, i(t, e))
                }, function (e) {
                  n || (n = !0, u(t, e))
                })
              } catch (r) {
                if (n) return;
                n = !0, u(t, r)
              }
            }
            var e, n;
            e = this, n = setTimeout, a.prototype["catch"] = function (e) {
              return this.then(null, e)
            }, a.prototype.then = function (e, t) {
              var n = new this.constructor(r);
              return o(this, new c(e, t, n)), n
            }, a.all = function (e) {
              var s = Array.prototype.slice.call(e);
              return new a(function (o, i) {
                if (0 === s.length) return o([]);
                var a = s.length;
                for (var e = 0; e < s.length; e++) ! function u(t, e) {
                  try {
                    if (e && ("object" == typeof e || "function" == typeof e)) {
                      var n = e.then;
                      if ("function" == typeof n) return void n.call(e, function (e) {
                        u(t, e)
                      }, i)
                    }
                    s[t] = e, 0 == --a && o(s)
                  } catch (r) {
                    i(r)
                  }
                }(e, s[e])
              })
            }, a.resolve = function (t) {
              return t && "object" == typeof t && t.constructor === a ? t : new a(function (e) {
                e(t)
              })
            }, a.reject = function (n) {
              return new a(function (e, t) {
                t(n)
              })
            }, a.race = function (o) {
              return new a(function (e, t) {
                for (var n = 0, r = o.length; n < r; n++) o[n].then(e, t)
              })
            }, a._immediateFn = "function" == typeof t ? function (e) {
              t(e)
            } : function (e) {
              n(e, 0)
            }, a._unhandledRejectionFn = function (e) {
              "undefined" != typeof console && console && console.warn("Possible Unhandled Promise Rejection:", e)
            }, a._setImmediateFn = function (e) {
              a._immediateFn = e
            }, a._setUnhandledRejectionFn = function (e) {
              a._unhandledRejectionFn = e
            }, void 0 !== f && f.exports ? f.exports = a : e.Promise || (e.Promise = a)
          }).call(this, e("timers").setImmediate)
        }, {
          timers: 3
        }],
        3: [function (s, e, c) {
          (function (e, t) {
            var r = s("process/browser.js").nextTick,
              n = Function.prototype.apply,
              o = Array.prototype.slice,
              i = {},
              a = 0;

            function u(e, t) {
              this._id = e, this._clearFn = t
            }
            c.setTimeout = function () {
              return new u(n.call(setTimeout, window, arguments), clearTimeout)
            }, c.setInterval = function () {
              return new u(n.call(setInterval, window, arguments), clearInterval)
            }, c.clearTimeout = c.clearInterval = function (e) {
              e.close()
            }, u.prototype.unref = u.prototype.ref = function () {}, u.prototype.close = function () {
              this._clearFn.call(window, this._id)
            }, c.enroll = function (e, t) {
              clearTimeout(e._idleTimeoutId), e._idleTimeout = t
            }, c.unenroll = function (e) {
              clearTimeout(e._idleTimeoutId), e._idleTimeout = -1
            }, c._unrefActive = c.active = function (e) {
              clearTimeout(e._idleTimeoutId);
              var t = e._idleTimeout;
              0 <= t && (e._idleTimeoutId = setTimeout(function () {
                e._onTimeout && e._onTimeout()
              }, t))
            }, c.setImmediate = "function" == typeof e ? e : function (e) {
              var t = a++,
                n = !(arguments.length < 2) && o.call(arguments, 1);
              return i[t] = !0, r(function () {
                i[t] && (n ? e.apply(null, n) : e.call(null), c.clearImmediate(t))
              }), t
            }, c.clearImmediate = "function" == typeof t ? t : function (e) {
              delete i[e]
            }
          }).call(this, s("timers").setImmediate, s("timers").clearImmediate)
        }, {
          "process/browser.js": 1,
          timers: 3
        }],
        4: [function (e, t, n) {
          var r = e("promise-polyfill"),
            o = "undefined" != typeof window ? window : Function("return this;")();
          t.exports = {
            boltExport: o.Promise || r
          }
        }, {
          "promise-polyfill": 2
        }]
      }, {}, [4])(4)
    });
  var lr = cr.exports.boltExport,
    fr = function (e) {
      var n = U.none(),
        t = [],
        r = function (e) {
          o() ? a(e) : t.push(e)
        },
        o = function () {
          return n.isSome()
        },
        i = function (e) {
          W(e, a)
        },
        a = function (t) {
          n.each(function (e) {
            setTimeout(function () {
              t(e)
            }, 0)
          })
        };
      return e(function (e) {
        o() || (n = U.some(e), i(t), t = [])
      }), {
        get: r,
        map: function (n) {
          return fr(function (t) {
            r(function (e) {
              t(n(e))
            })
          })
        },
        isReady: o
      }
    },
    dr = {
      nu: fr,
      pure: function (t) {
        return fr(function (e) {
          e(t)
        })
      }
    },
    mr = function (e) {
      setTimeout(function () {
        throw e
      }, 0)
    },
    pr = function (n) {
      var e = function (e) {
        n().then(e, mr)
      };
      return {
        map: function (e) {
          return pr(function () {
            return n().then(e)
          })
        },
        bind: function (t) {
          return pr(function () {
            return n().then(function (e) {
              return t(e).toPromise()
            })
          })
        },
        anonBind: function (e) {
          return pr(function () {
            return n().then(function () {
              return e.toPromise()
            })
          })
        },
        toLazy: function () {
          return dr.nu(e)
        },
        toCached: function () {
          var e = null;
          return pr(function () {
            return null === e && (e = n()), e
          })
        },
        toPromise: n,
        get: e
      }
    },
    gr = function (e) {
      return pr(function () {
        return new lr(e)
      })
    },
    hr = function (a, e) {
      return e(function (r) {
        var o = [],
          i = 0;
        0 === a.length ? r([]) : W(a, function (e, t) {
          var n;
          e.get((n = t, function (e) {
            o[n] = e, ++i >= a.length && r(o)
          }))
        })
      })
    },
    vr = function (n) {
      return {
        is: function (e) {
          return n === e
        },
        isValue: k,
        isError: C,
        getOr: E(n),
        getOrThunk: E(n),
        getOrDie: E(n),
        or: function (e) {
          return vr(n)
        },
        orThunk: function (e) {
          return vr(n)
        },
        fold: function (e, t) {
          return t(n)
        },
        map: function (e) {
          return vr(e(n))
        },
        mapError: function (e) {
          return vr(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 U.some(n)
        }
      }
    },
    yr = function (n) {
      return {
        is: C,
        isValue: C,
        isError: k,
        getOr: o,
        getOrThunk: function (e) {
          return e()
        },
        getOrDie: function () {
          return m(String(n))()
        },
        or: function (e) {
          return e
        },
        orThunk: function (e) {
          return e()
        },
        fold: function (e, t) {
          return e(n)
        },
        map: function (e) {
          return yr(n)
        },
        mapError: function (e) {
          return yr(e(n))
        },
        each: V,
        bind: function (e) {
          return yr(n)
        },
        exists: C,
        forall: k,
        toOptional: U.none
      }
    },
    br = {
      value: vr,
      error: yr,
      fromOption: function (e, t) {
        return e.fold(function () {
          return yr(t)
        }, vr)
      }
    },
    Cr = function (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 W(a, function (e, r) {
        var t = ie(e);
        if (1 !== t.length) throw new Error("one and only one name per case");
        var o = t[0],
          i = e[o];
        if (n[o] !== undefined) 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 () {
          var e = arguments.length;
          if (e !== i.length) throw new Error("Wrong number of arguments to case " + o + ". Expected " + i.length + " (" + i + "), got " + e);
          for (var n = new Array(e), t = 0; t < n.length; t++) n[t] = arguments[t];
          return {
            fold: function () {
              if (arguments.length !== a.length) throw new Error("Wrong number of arguments to fold. Expected " + a.length + ", got " + arguments.length);
              return arguments[r].apply(null, n)
            },
            match: function (e) {
              var t = ie(e);
              if (u.length !== t.length) throw new Error("Wrong number of arguments to match. Expected: " + u.join(",") + "\nActual: " + t.join(","));
              if (!Q(u, function (e) {
                  return M(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
    },
    wr = (Cr([{
      bothErrors: ["error1", "error2"]
    }, {
      firstError: ["error1", "value2"]
    }, {
      secondError: ["value1", "error2"]
    }, {
      bothValues: ["value1", "value2"]
    }]), function (e) {
      return e.fold(o, o)
    });

  function xr(e, t, n, r, o) {
    return e(n, r) ? U.some(n) : T(o) && o(n) ? U.none() : t(n, r, o)
  }
  var Sr, Nr, Er, kr, _r = function (e, t, n) {
      for (var r = e.dom, o = T(n) ? n : C; r.parentNode;) {
        r = r.parentNode;
        var i = At.fromDom(r);
        if (t(i)) return U.some(i);
        if (o(i)) break
      }
      return U.none()
    },
    Ar = function (e, t, n) {
      return xr(function (e, t) {
        return t(e)
      }, _r, e, t, n)
    },
    Rr = function (e, t) {
      return Y(e.dom.childNodes, function (e) {
        return t(At.fromDom(e))
      }).map(At.fromDom)
    },
    Tr = function (e, t, n) {
      return _r(e, function (e) {
        return Tt(e, t)
      }, n)
    },
    Dr = function (e, t) {
      return n = t, o = (r = e) === undefined ? document : r.dom, Dt(o) ? U.none() : U.from(o.querySelector(n)).map(At.fromDom);
      var n, r, o
    },
    Or = function (e, t, n) {
      return xr(Tt, Tr, e, t, n)
    },
    Br = window.Promise ? window.Promise : (Sr = Array.isArray || function (e) {
      return "[object Array]" === Object.prototype.toString.call(e)
    }, Er = (Nr = function (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 = null, this._value = null, this._deferreds = [], zr(e, Pr(Ir, this), Pr(Mr, this))
    }).immediateFn || "function" == typeof setImmediate && setImmediate || function (e) {
      setTimeout(e, 1)
    }, Nr.prototype["catch"] = function (e) {
      return this.then(null, e)
    }, Nr.prototype.then = function (n, r) {
      var o = this;
      return new Nr(function (e, t) {
        Lr.call(o, new Ur(n, r, e, t))
      })
    }, Nr.all = function () {
      var s = Array.prototype.slice.call(1 === arguments.length && Sr(arguments[0]) ? arguments[0] : arguments);
      return new Nr(function (o, i) {
        if (0 === s.length) return o([]);
        for (var a = s.length, e = 0; e < s.length; e++) ! function u(t, e) {
          try {
            if (e && ("object" == typeof e || "function" == typeof e)) {
              var n = e.then;
              if ("function" == typeof n) return void n.call(e, function (e) {
                u(t, e)
              }, i)
            }
            s[t] = e, 0 == --a && o(s)
          } catch (r) {
            i(r)
          }
        }(e, s[e])
      })
    }, Nr.resolve = function (t) {
      return t && "object" == typeof t && t.constructor === Nr ? t : new Nr(function (e) {
        e(t)
      })
    }, Nr.reject = function (n) {
      return new Nr(function (e, t) {
        t(n)
      })
    }, Nr.race = function (o) {
      return new Nr(function (e, t) {
        for (var n = 0, r = o.length; n < r; n++) o[n].then(e, t)
      })
    }, Nr);

  function Pr(e, t) {
    return function () {
      e.apply(t, arguments)
    }
  }

  function Lr(r) {
    var o = this;
    null !== this._state ? Er(function () {
      var e, t = o._state ? r.onFulfilled : r.onRejected;
      if (null !== t) {
        try {
          e = t(o._value)
        } catch (n) {
          return void r.reject(n)
        }
        r.resolve(e)
      } else(o._state ? r.resolve : r.reject)(o._value)
    }) : this._deferreds.push(r)
  }

  function Ir(e) {
    try {
      if (e === this) throw new TypeError("A promise cannot be resolved with itself.");
      if (e && ("object" == typeof e || "function" == typeof e)) {
        var t = e.then;
        if ("function" == typeof t) return void zr(Pr(t, e), Pr(Ir, this), Pr(Mr, this))
      }
      this._state = !0, this._value = e, Fr.call(this)
    } catch (n) {
      Mr.call(this, n)
    }
  }

  function Mr(e) {
    this._state = !1, this._value = e, Fr.call(this)
  }

  function Fr() {
    for (var e = 0, t = this._deferreds.length; e < t; e++) Lr.call(this, this._deferreds[e]);
    this._deferreds = null
  }

  function Ur(e, t, n, r) {
    this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.resolve = n, this.reject = r
  }

  function zr(e, t, n) {
    var r = !1;
    try {
      e(function (e) {
        r || (r = !0, t(e))
      }, function (e) {
        r || (r = !0, n(e))
      })
    } catch (o) {
      if (r) return;
      r = !0, n(o)
    }
  }
  var jr = function (e, t) {
      return "number" != typeof t && (t = 0), setTimeout(e, t)
    },
    Hr = function (e, t) {
      return "number" != typeof t && (t = 1), setInterval(e, t)
    },
    Vr = function (n, r) {
      var o, e = function () {
        for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
        clearTimeout(o), o = jr(function () {
          n.apply(this, e)
        }, r)
      };
      return e.stop = function () {
        clearTimeout(o)
      }, e
    },
    qr = {
      requestAnimationFrame: function (e, t) {
        kr ? kr.then(e) : kr = new Br(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: jr,
      setInterval: Hr,
      setEditorTimeout: function (e, t, n) {
        return jr(function () {
          e.removed || t()
        }, n)
      },
      setEditorInterval: function (e, t, n) {
        var r = Hr(function () {
          e.removed ? clearInterval(r) : t()
        }, n);
        return r
      },
      debounce: Vr,
      throttle: Vr,
      clearInterval: function (e) {
        return clearInterval(e)
      },
      clearTimeout: function (e) {
        return clearTimeout(e)
      }
    };

  function $r(m, p) {
    void 0 === p && (p = {});
    var g = 0,
      h = {},
      v = At.fromDom(m),
      y = Vt(v),
      b = p.maxLoadTime || 5e3,
      n = function (e, t, n) {
        var r, o = kt._addCacheSuffix(e),
          i = ge(h, o).getOrThunk(function () {
            return {
              id: "mce-u" + g++,
              passed: [],
              failed: [],
              count: 0
            }
          });
        (h[o] = i).count++;
        var a, u, s, c = function (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)
          },
          l = function () {
            return c(i.passed, 2)
          },
          f = function () {
            return c(i.failed, 3)
          },
          d = function () {
            var e;
            e = d,
              function () {
                for (var e = m.styleSheets, t = e.length; t--;) {
                  var n = e[t].ownerNode;
                  if (n && n.id === r.id) return l(), 1
                }
              }() || (Date.now() - u < b ? qr.setTimeout(e) : f())
          };
        t && i.passed.push(t), n && i.failed.push(n), 1 !== i.status && (2 !== i.status ? 3 !== i.status ? (i.status = 1, a = At.fromTag("link", y.dom), Yn(a, {
          rel: "stylesheet",
          type: "text/css",
          id: i.id
        }), u = Date.now(), p.contentCssCors && Xn(a, "crossOrigin", "anonymous"), p.referrerPolicy && Xn(a, "referrerpolicy", p.referrerPolicy), (r = a.dom).onload = d, r.onerror = f, s = a, fn(on(v), s), Xn(a, "href", o)) : f() : l())
      },
      o = function (t) {
        return gr(function (e) {
          n(t, a(e, E(br.value(t))), a(e, E(br.error(t))))
        })
      },
      t = function (e) {
        var r = kt._addCacheSuffix(e);
        ge(h, r).each(function (e) {
          var t, n;
          0 == --e.count && (delete h[r], t = e.id, n = on(v), Dr(n, "#" + t).each(pn))
        })
      };
    return {
      load: n,
      loadAll: function (e, n, r) {
        var t;
        t = z(e, o), hr(t, gr).get(function (e) {
          var t = function (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
            }
          }(e, function (e) {
            return e.isValue()
          });
          0 < t.fail.length ? r(t.fail.map(wr)) : n(t.pass.map(wr))
        })
      },
      unload: t,
      unloadAll: function (e) {
        W(e, function (e) {
          t(e)
        })
      },
      _setReferrerPolicy: function (e) {
        p.referrerPolicy = e
      }
    }
  }
  var Wr, Kr = (Wr = new WeakMap, {
      forElement: function (e, t) {
        var n = rn(e).dom;
        return U.from(Wr.get(n)).getOrThunk(function () {
          var e = $r(n, t);
          return Wr.set(n, e), e
        })
      }
    }),
    Xr = (Yr.prototype.current = function () {
      return this.node
    }, Yr.prototype.next = function (e) {
      return this.node = this.findSibling(this.node, "firstChild", "nextSibling", e), this.node
    }, Yr.prototype.prev = function (e) {
      return this.node = this.findSibling(this.node, "lastChild", "previousSibling", e), this.node
    }, Yr.prototype.prev2 = function (e) {
      return this.node = this.findPreviousNode(this.node, "lastChild", "previousSibling", e), this.node
    }, Yr.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
        }
      }
    }, Yr.prototype.findPreviousNode = function (e, t, n, r) {
      var o, i, a;
      if (e) {
        if (o = e[n], this.rootNode && o === this.rootNode) return;
        if (o) {
          if (!r)
            for (a = o[t]; a; a = a[t])
              if (!a[t]) return a;
          return o
        }
        if ((i = e.parentNode) && i !== this.rootNode) return i
      }
    }, Yr);

  function Yr(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)
  }
  var Gr, Jr, Qr = function (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, k)).hasOwnProperty(Lt(e))
      }
    },
    Zr = Qr(["h1", "h2", "h3", "h4", "h5", "h6"]),
    eo = Qr(["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"]),
    to = function (e) {
      return Ft(e) && !eo(e)
    },
    no = function (e) {
      return Ft(e) && "br" === Lt(e)
    },
    ro = Qr(["h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "address", "pre", "form", "blockquote", "center", "dir", "fieldset", "header", "footer", "article", "section", "hgroup", "aside", "nav", "figure"]),
    oo = Qr(["ul", "ol", "dl"]),
    io = Qr(["li", "dd", "dt"]),
    ao = Qr(["thead", "tbody", "tfoot"]),
    uo = Qr(["td", "th"]),
    so = Qr(["pre", "script", "textarea", "style"]),
    co = "\ufeff",
    lo = "\xa0",
    fo = co,
    mo = function (e) {
      return e === co
    },
    po = function (e) {
      return e.replace(/\uFEFF/g, "")
    },
    go = An,
    ho = In,
    vo = function (e) {
      return ho(e) && (e = e.parentNode), go(e) && e.hasAttribute("data-mce-caret")
    },
    yo = function (e) {
      return ho(e) && mo(e.data)
    },
    bo = function (e) {
      return vo(e) || yo(e)
    },
    Co = function (e) {
      return e.firstChild !== e.lastChild || !zn(e.firstChild)
    },
    wo = function (e) {
      var t = e.container();
      return !!In(t) && (t.data.charAt(e.offset()) === fo || e.isAtStart() && yo(t.previousSibling))
    },
    xo = function (e) {
      var t = e.container();
      return !!In(t) && (t.data.charAt(e.offset() - 1) === fo || e.isAtEnd() && yo(t.nextSibling))
    },
    So = 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
    },
    No = function (e) {
      return ho(e) && e.data[0] === fo
    },
    Eo = function (e) {
      return ho(e) && e.data[e.data.length - 1] === fo
    },
    ko = function (e) {
      return e && e.hasAttribute("data-mce-caret") ? (t = e.getElementsByTagName("br"), n = t[t.length - 1], On(n) && 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
    },
    _o = Hn,
    Ao = Vn,
    Ro = zn,
    To = In,
    Do = Rn(["script", "style", "textarea"]),
    Oo = Rn(["img", "input", "textarea", "hr", "iframe", "video", "audio", "object", "embed"]),
    Bo = Rn(["table"]),
    Po = bo,
    Lo = function (e) {
      return !Po(e) && (To(e) ? !Do(e.parentNode) : Oo(e) || Ro(e) || Bo(e) || Io(e))
    },
    Io = function (e) {
      return !1 === (An(t = e) && "true" === t.getAttribute("unselectable")) && Ao(e);
      var t
    },
    Mo = function (e, t) {
      return Lo(e) && function (e, t) {
        for (e = e.parentNode; e && e !== t; e = e.parentNode) {
          if (Io(e)) return !1;
          if (_o(e)) return !0
        }
        return !0
      }(e, t)
    },
    Fo = /^[ \t\r\n]*$/,
    Uo = function (e) {
      return Fo.test(e)
    },
    zo = function (e, t) {
      var n, r, o, i = At.fromDom(t),
        a = At.fromDom(e);
      return n = a, r = "pre,code", o = N(Ot, i), Tr(n, r, o).isSome()
    },
    jo = function (e, t) {
      return Lo(e) && !1 === (o = t, In(r = e) && Uo(r.data) && !1 === zo(r, o)) || An(n = e) && "A" === n.nodeName && !n.hasAttribute("href") && (n.hasAttribute("name") || n.hasAttribute("id")) || Ho(e);
      var n, r, o
    },
    Ho = Dn("data-mce-bookmark"),
    Vo = Dn("data-mce-bogus"),
    qo = (Gr = "data-mce-bogus", Jr = "all", function (e) {
      return An(e) && e.getAttribute(Gr) === Jr
    }),
    $o = function (e, t) {
      return void 0 === t && (t = !0),
        function (e, t) {
          var n, r = 0;
          if (jo(e, e)) return !1;
          if (!(n = e.firstChild)) return !0;
          var o = new Xr(n, e);
          do {
            if (t) {
              if (qo(n)) {
                n = o.next(!0);
                continue
              }
              if (Vo(n)) {
                n = o.next();
                continue
              }
            }
            if (zn(n)) r++, n = o.next();
            else {
              if (jo(n, e)) return !1;
              n = o.next()
            }
          } while (n);
          return r <= 1
        }(e.dom, t)
    },
    Wo = function (e, t) {
      return D(e) && (jo(e, t) || to(At.fromDom(e)))
    },
    Ko = function (e) {
      return "span" === e.nodeName.toLowerCase() && "bookmark" === e.getAttribute("data-mce-type")
    },
    Xo = function (e, t) {
      return In(e) && 0 < e.data.length && (o = new Xr(n = e, r = t).prev(!1), i = new Xr(n, r).next(!1), a = R(o) || Wo(o, r), u = R(i) || Wo(i, r), a && u);
      var n, r, o, i, a, u
    },
    Yo = function (e, t, n) {
      var r = n || t;
      if (An(t) && Ko(t)) return t;
      for (var o, i, a, u = t.childNodes, s = u.length - 1; 0 <= s; s--) Yo(e, u[s], r);
      return !An(t) || 1 === (o = t.childNodes).length && Ko(o[0]) && t.parentNode.insertBefore(o[0], t), Un(a = t) || Fn(a) || jo(t, r) || An(i = t) && 0 < i.childNodes.length || Xo(t, r) || e.remove(t), t
    },
    Go = kt.makeMap,
    Jo = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
    Qo = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
    Zo = /[<>&\"\']/g,
    ei = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
    ti = {
      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"
    },
    ni = {
      '"': "&quot;",
      "'": "&#39;",
      "<": "&lt;",
      ">": "&gt;",
      "&": "&amp;",
      "`": "&#96;"
    },
    ri = {
      "&lt;": "<",
      "&gt;": ">",
      "&amp;": "&",
      "&quot;": '"',
      "&apos;": "'"
    },
    oi = function (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)), ni[r] || (o = "&" + e[n + 1] + ";", i[r] = o, i[o] = r);
        return i
      }
    },
    ii = oi("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),
    ai = function (e, t) {
      return e.replace(t ? Jo : Qo, function (e) {
        return ni[e] || e
      })
    },
    ui = function (e, t) {
      return e.replace(t ? Jo : Qo, function (e) {
        return 1 < e.length ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : ni[e] || "&#" + e.charCodeAt(0) + ";"
      })
    },
    si = function (e, t, n) {
      return n = n || ii, e.replace(t ? Jo : Qo, function (e) {
        return ni[e] || n[e] || e
      })
    },
    ci = {
      encodeRaw: ai,
      encodeAllRaw: function (e) {
        return ("" + e).replace(Zo, function (e) {
          return ni[e] || e
        })
      },
      encodeNumeric: ui,
      encodeNamed: si,
      getEncodeFunc: function (e, t) {
        var n = oi(t) || ii,
          r = Go(e.replace(/\+/g, ","));
        return r.named && r.numeric ? function (e, t) {
          return e.replace(t ? Jo : Qo, function (e) {
            return ni[e] !== undefined ? ni[e] : n[e] !== undefined ? 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 si(e, t, n)
        } : si : r.numeric ? ui : ai
      },
      decode: function (e) {
        return e.replace(ei, 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))) : ti[t] || String.fromCharCode(t) : ri[e] || ii[e] || (n = e, (r = At.fromTag("div").dom).innerHTML = n, r.textContent || r.innerText || n);
          var n, r
        })
      }
    },
    li = {},
    fi = {},
    di = kt.makeMap,
    mi = kt.each,
    pi = kt.extend,
    gi = kt.explode,
    hi = kt.inArray,
    vi = function (e, t) {
      return (e = kt.trim(e)) ? e.split(t || " ") : []
    },
    yi = function (e) {
      var s, t, n, r, o, i, c = {},
        a = function (e, t, n) {
          var r, o, i = function (e, t) {
            for (var n = {}, r = 0, o = e.length; r < o; r++) n[e[r]] = t || {};
            return n
          };
          t = t || "", "string" == typeof (n = n || []) && (n = vi(n));
          for (var a = vi(e), u = a.length; u--;) o = {
            attributes: i(r = vi([s, t].join(" "))),
            attributesOrder: r,
            children: i(n, fi)
          }, c[a[u]] = o
        },
        u = function (e, t) {
          for (var n, r, o, i = vi(e), a = i.length, u = vi(t); a--;)
            for (n = c[i[a]], r = 0, o = u.length; r < o; r++) n.attributes[u[r]] = {}, n.attributesOrder.push(u[r])
        };
      return li[e] ? li[e] : (s = "id accesskey class dir lang style tabindex title role", t = "address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul", n = "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" !== e && (s += " contenteditable contextmenu draggable dropzone hidden spellcheck translate", t += " article aside details dialog figure main header footer hgroup section nav", n += " audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"), "html5-strict" !== e && (s += " xml:lang", n = [n, i = "acronym applet basefont big font strike tt"].join(" "), mi(vi(i), function (e) {
        a(e, "", n)
      }), t = [t, o = "center dir isindex noframes"].join(" "), r = [t, n].join(" "), mi(vi(o), function (e) {
        a(e, "", r)
      })), r = r || [t, n].join(" "), a("html", "manifest", "head body"), a("head", "", "base command link meta noscript script style title"), a("title hr noscript br"), a("base", "href target"), a("link", "href rel media hreflang type sizes hreflang"), a("meta", "name http-equiv content charset"), a("style", "media type scoped"), a("script", "src async defer type charset"), a("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload", r), a("address dt dd div caption", "", r), a("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", "", n), a("blockquote", "cite", r), a("ol", "reversed start type", "li"), a("ul", "", "li"), a("li", "value", r), a("dl", "", "dt dd"), a("a", "href target rel media hreflang type", n), a("q", "cite", n), a("ins del", "cite datetime", r), a("img", "src sizes srcset alt usemap ismap width height"), a("iframe", "src name width height", r), a("embed", "src type width height"), a("object", "data type typemustmatch name usemap form width height", [r, "param"].join(" ")), a("param", "name value"), a("map", "name", [r, "area"].join(" ")), a("area", "alt coords shape href target rel media hreflang type"), a("table", "border", "caption colgroup thead tfoot tbody tr" + ("html4" === e ? " col" : "")), a("colgroup", "span", "col"), a("col", "span"), a("tbody thead tfoot", "", "tr"), a("tr", "", "td th"), a("td", "colspan rowspan headers", r), a("th", "colspan rowspan headers scope abbr", r), a("form", "accept-charset action autocomplete enctype method name novalidate target", r), a("fieldset", "disabled form name", [r, "legend"].join(" ")), a("label", "form for", n), a("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"), a("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value", "html4" === e ? r : n), a("select", "disabled form multiple name required size", "option optgroup"), a("optgroup", "disabled label", "option"), a("option", "disabled label selected value"), a("textarea", "cols dirname disabled form maxlength name readonly required rows wrap"), a("menu", "type label", [r, "li"].join(" ")), a("noscript", "", r), "html4" !== e && (a("wbr"), a("ruby", "", [n, "rt rp"].join(" ")), a("figcaption", "", r), a("mark rt rp summary bdi", "", n), a("canvas", "width height", r), a("video", "src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered", [r, "track source"].join(" ")), a("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", [r, "track source"].join(" ")), a("picture", "", "img source"), a("source", "src srcset type media sizes"), a("track", "kind src srclang label default"), a("datalist", "", [n, "option"].join(" ")), a("article section nav aside main header footer", "", r), a("hgroup", "", "h1 h2 h3 h4 h5 h6"), a("figure", "", [r, "figcaption"].join(" ")), a("time", "datetime", n), a("dialog", "open", r), a("command", "type label icon disabled checked radiogroup command"), a("output", "for form name", n), a("progress", "value max", n), a("meter", "value min max low high optimum", n), a("details", "open", [r, "summary"].join(" ")), a("keygen", "autofocus challenge disabled form keytype name")), "html5-strict" !== e && (u("script", "language xml:space"), u("style", "xml:space"), u("object", "declare classid code codebase codetype archive standby align border hspace vspace"), u("embed", "align name hspace vspace"), u("param", "valuetype type"), u("a", "charset name rev shape coords"), u("br", "clear"), u("applet", "codebase archive code object alt name width height align hspace vspace"), u("img", "name longdesc align border hspace vspace"), u("iframe", "longdesc frameborder marginwidth marginheight scrolling align"), u("font basefont", "size color face"), u("input", "usemap align"), u("select"), u("textarea"), u("h1 h2 h3 h4 h5 h6 div p legend caption", "align"), u("ul", "type compact"), u("li", "type"), u("ol dl menu dir", "compact"), u("pre", "width xml:space"), u("hr", "align noshade size width"), u("isindex", "prompt"), u("table", "summary width frame rules cellspacing cellpadding align bgcolor"), u("col", "width align char charoff valign"), u("colgroup", "width align char charoff valign"), u("thead", "align char charoff valign"), u("tr", "align char charoff valign bgcolor"), u("th", "axis align char charoff valign nowrap bgcolor width height"), u("form", "accept"), u("td", "abbr axis scope align char charoff valign nowrap bgcolor width height"), u("tfoot", "align char charoff valign"), u("tbody", "align char charoff valign"), u("area", "nohref"), u("body", "background bgcolor text link vlink alink")), "html4" !== e && (u("input button select textarea", "autofocus"), u("input textarea", "placeholder"), u("a", "download"), u("link script img", "crossorigin"), u("img", "loading"), u("iframe", "sandbox seamless allowfullscreen loading")), mi(vi("a form meter progress dfn"), function (e) {
        c[e] && delete c[e].children[e]
      }), delete c.caption.children.table, delete c.script, li[e] = c)
    },
    bi = function (e, n) {
      var r;
      return e && (r = {}, "string" == typeof e && (e = {
        "*": e
      }), mi(e, function (e, t) {
        r[t] = r[t.toUpperCase()] = ("map" === n ? di : gi)(e, /[, ]/)
      })), r
    };

  function Ci(i) {
    var S = {},
      u = {},
      N = [],
      s = {},
      t = {},
      e = function (e, t, n) {
        var r = i[e];
        return r ? r = di(r, /[, ]/, di(r.toUpperCase(), /[, ]/)) : (r = li[e]) || (r = di(t, " ", di(t.toUpperCase(), " ")), r = pi(r, n), li[e] = r), r
      },
      n = yi((i = i || {}).schema);
    !1 === i.verify_html && (i.valid_elements = "*[*]");
    var r = bi(i.valid_styles),
      o = bi(i.invalid_styles, "map"),
      a = bi(i.valid_classes, "map"),
      c = e("whitespace_elements", "pre script noscript style textarea video audio iframe object code"),
      l = e("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"),
      f = e("short_ended_elements", "area base basefont br col frame hr img input isindex link meta param embed source wbr track"),
      d = e("boolean_attributes", "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),
      m = "td th iframe video audio object script code",
      p = e("non_empty_elements", m + " pre", f),
      g = e("move_caret_before_on_enter_elements", m + " table", f),
      h = 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"),
      v = 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", h),
      y = e("text_inline_elements", "span strong b em i font strike u var cite dfn code mark q sup sub samp");
    mi((i.special || "script noscript iframe noframes noembed title style textarea xmp").split(" "), function (e) {
      t[e] = new RegExp("</" + e + "[^>]*>", "gi")
    });
    var E = function (e) {
        return new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$")
      },
      b = function (e) {
        var t, n, r, o, i, a, u, s, c, l, f, d, m, p, g, h, v, y, b = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/,
          C = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
          w = /[*?+]/;
        if (e) {
          var x = vi(e, ",");
          for (S["@"] && (h = S["@"].attributes, v = S["@"].attributesOrder), t = 0, n = x.length; t < n; t++)
            if (i = b.exec(x[t])) {
              if (p = i[1], c = i[2], g = i[3], s = i[5], a = {
                  attributes: d = {},
                  attributesOrder: m = []
                }, "#" === p && (a.paddEmpty = !0), "-" === p && (a.removeEmpty = !0), "!" === i[4] && (a.removeEmptyAttrs = !0), h && (ue(h, function (e, t) {
                  d[t] = e
                }), m.push.apply(m, v)), s)
                for (r = 0, o = (s = vi(s, "|")).length; r < o; r++)
                  if (i = C.exec(s[r])) {
                    if (u = {}, f = i[1], l = i[2].replace(/[\\:]:/g, ":"), p = i[3], y = i[4], "!" === f && (a.attributesRequired = a.attributesRequired || [], a.attributesRequired.push(l), u.required = !0), "-" === f) {
                      delete d[l], m.splice(hi(m, l), 1);
                      continue
                    }
                    p && ("=" === p && (a.attributesDefault = a.attributesDefault || [], a.attributesDefault.push({
                      name: l,
                      value: y
                    }), u.defaultValue = y), ":" === p && (a.attributesForced = a.attributesForced || [], a.attributesForced.push({
                      name: l,
                      value: y
                    }), u.forcedValue = y), "<" === p && (u.validValues = di(y, "?"))), w.test(l) ? (a.attributePatterns = a.attributePatterns || [], u.pattern = E(l), a.attributePatterns.push(u)) : (d[l] || m.push(l), d[l] = u)
                  } h || "@" !== c || (h = d, v = m), g && (a.outputName = c, S[g] = a), w.test(c) ? (a.pattern = E(c), N.push(a)) : S[c] = a
            }
        }
      },
      C = function (e) {
        S = {}, N = [], b(e), mi(n, function (e, t) {
          u[t] = e.children
        })
      },
      w = function (e) {
        var a = /^(~)?(.+)$/;
        e && (li.text_block_elements = li.block_elements = null, mi(vi(e, ","), function (e) {
          var t, n = a.exec(e),
            r = "~" === n[1],
            o = r ? "span" : "div",
            i = n[2];
          u[i] = u[o], s[i] = o, r || (v[i.toUpperCase()] = {}, v[i] = {}), S[i] || (t = S[o], delete(t = pi({}, t)).removeEmptyAttrs, delete t.removeEmpty, S[i] = t), mi(u, function (e, t) {
            e[o] && (u[t] = e = pi({}, u[t]), e[i] = e[o])
          })
        }))
      },
      x = function (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]+)\[([^\]]+)]$/;
        li[i.schema] = null, e && mi(vi(e, ","), function (e) {
          var t, n, r = o.exec(e);
          r && (n = r[1], t = n ? u[r[2]] : u[r[2]] = {
            "#comment": {}
          }, t = u[r[2]], mi(vi(r[3], "|"), function (e) {
            "-" === n ? delete t[e] : t[e] = {}
          }))
        })
      },
      k = function (e) {
        var t, n = S[e];
        if (n) return n;
        for (t = N.length; t--;)
          if ((n = N[t]).pattern.test(e)) return n
      };
    i.valid_elements ? C(i.valid_elements) : (mi(n, function (e, t) {
      S[t] = {
        attributes: e.attributes,
        attributesOrder: e.attributesOrder
      }, u[t] = e.children
    }), "html5" !== i.schema && mi(vi("strong/b em/i"), function (e) {
      var t = vi(e, "/");
      S[t[1]].outputName = t[0]
    }), mi(vi("ol ul sub sup blockquote span font a table tbody strong em b i"), function (e) {
      S[e] && (S[e].removeEmpty = !0)
    }), mi(vi("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"), function (e) {
      S[e].paddEmpty = !0
    }), mi(vi("span"), function (e) {
      S[e].removeEmptyAttrs = !0
    })), w(i.custom_elements), x(i.valid_children), b(i.extended_valid_elements), x("+ol[ul|ol],+ul[ul|ol]"), mi({
      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 = vi(e))
    }), i.invalid_elements && mi(gi(i.invalid_elements), function (e) {
      S[e] && delete S[e]
    }), k("span") || b("span[!data-mce-type|*]");
    return {
      children: u,
      elements: S,
      getValidStyles: function () {
        return r
      },
      getValidClasses: function () {
        return a
      },
      getBlockElements: function () {
        return v
      },
      getInvalidStyles: function () {
        return o
      },
      getShortEndedElements: function () {
        return f
      },
      getTextBlockElements: function () {
        return h
      },
      getTextInlineElements: function () {
        return y
      },
      getBoolAttrs: function () {
        return d
      },
      getElementRule: k,
      getSelfClosingElements: function () {
        return l
      },
      getNonEmptyElements: function () {
        return p
      },
      getMoveCaretBeforeOnEnterElements: function () {
        return g
      },
      getWhiteSpaceElements: function () {
        return c
      },
      getSpecialElements: function () {
        return t
      },
      isValidChild: function (e, t) {
        var n = u[e.toLowerCase()];
        return !(!n || !n[t.toLowerCase()])
      },
      isValid: function (e, t) {
        var n, r, o = k(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: function () {
        return s
      },
      addValidElements: b,
      setValidElements: C,
      addCustomElements: w,
      addValidChildren: x
    }
  }
  var wi = function (e, t, n, r) {
      var o = function (e) {
        return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e
      };
      return "#" + o(t) + o(n) + o(r)
    },
    xi = function (b, e) {
      var s, c, C = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
        w = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
        x = /\s*([^:]+):\s*([^;]+);?/g,
        S = /\s+$/,
        N = {},
        E = co;
      b = b || {}, e && (s = e.getValidStyles(), c = e.getInvalidStyles());
      for (var t = ("\\\" \\' \\; \\: ; : " + E).split(" "), k = 0; k < t.length; k++) N[t[k]] = E + k, N[E + k] = t[k];
      return {
        toHex: function (e) {
          return e.replace(C, wi)
        },
        parse: function (e) {
          var t, n, r, o, i, a, u, s, c = {},
            l = b.url_converter,
            f = b.url_converter_scope || this,
            d = function (e, t, n) {
              var r = c[e + "-top" + t];
              if (r) {
                var o = c[e + "-right" + t];
                if (o) {
                  var i = c[e + "-bottom" + t];
                  if (i) {
                    var a = c[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 || (c[e + t] = -1 === k ? u[0] : u.join(" "), delete c[e + "-top" + t], delete c[e + "-right" + t], delete c[e + "-bottom" + t], delete c[e + "-left" + t])
                    }
                  }
                }
              }
            },
            m = function (e) {
              var t, n = c[e];
              if (n) {
                for (t = (n = n.split(" ")).length; t--;)
                  if (n[t] !== n[0]) return !1;
                return c[e] = n[0], !0
              }
            },
            p = function (e) {
              return o = !0, N[e]
            },
            g = function (e, t) {
              return o && (e = e.replace(/\uFEFF[0-9]/g, function (e) {
                return N[e]
              })), t || (e = e.replace(/\\([\'\";:])/g, "$1")), e
            },
            h = function (e) {
              return String.fromCharCode(parseInt(e.slice(1), 16))
            },
            v = function (e) {
              return e.replace(/\\[0-9a-f]+/gi, h)
            },
            y = function (e, t, n, r, o, i) {
              if (o = o || i) return "'" + (o = g(o)).replace(/\'/g, "\\'") + "'";
              if (t = g(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 l && (t = l.call(f, t, "style")), "url('" + t.replace(/\'/g, "\\'") + "')"
            };
          if (e) {
            for (e = (e = e.replace(/[\u0000-\u001F]/g, "")).replace(/\\[\"\';:\uFEFF]/g, p).replace(/\"[^\"]+\"|\'[^\']+\'/g, function (e) {
                return e.replace(/[;:]/g, p)
              }); t = x.exec(e);)
              if (x.lastIndex = t.index + t[0].length, n = t[1].replace(S, "").toLowerCase(), r = t[2].replace(S, ""), n && r) {
                if (n = v(n), r = v(r), -1 !== n.indexOf(E) || -1 !== n.indexOf('"')) continue;
                if (!b.allow_script_urls && ("behavior" === n || /expression\s*\(|\/\*|\*\//.test(r))) continue;
                "font-weight" === n && "700" === r ? r = "bold" : "color" !== n && "background-color" !== n || (r = r.toLowerCase()), r = (r = r.replace(C, wi)).replace(w, y), c[n] = o ? g(r, !0) : r
              } d("border", "", !0), d("border", "-width"), d("border", "-color"), d("border", "-style"), d("padding", ""), d("margin", ""), i = "border", u = "border-style", s = "border-color", m(a = "border-width") && m(u) && m(s) && (c[i] = c[a] + " " + c[u] + " " + c[s], delete c[a], delete c[u], delete c[s]), "medium none" === c.border && delete c.border, "none" === c["border-image"] && delete c["border-image"]
          }
          return c
        },
        serialize: function (i, a) {
          var u = "",
            e = function (e) {
              var t, n = s[e];
              if (n)
                for (var r = 0, o = n.length; r < o; r++) e = n[r], (t = i[e]) && (u += (0 < u.length ? " " : "") + e + ": " + t + ";")
            };
          return a && s ? (e("*"), e(a)) : ue(i, function (e, t) {
            var n, r, o;
            !e || c && (n = t, r = a, (o = c["*"]) && o[n] || (o = c[r]) && o[n]) || (u += (0 < u.length ? " " : "") + t + ": " + e + ";")
          }), u
        }
      }
    },
    Si = /^(?:mouse|contextmenu)|click/,
    Ni = {
      keyLocation: 1,
      layerX: 1,
      layerY: 1,
      returnValue: 1,
      webkitMovementX: 1,
      webkitMovementY: 1,
      keyIdentifier: 1,
      mozPressure: 1
    },
    Ei = function () {
      return !1
    },
    ki = function () {
      return !0
    },
    _i = function (e, t, n, r) {
      e.addEventListener ? e.addEventListener(t, n, r || !1) : e.attachEvent && e.attachEvent("on" + t, n)
    },
    Ai = function (e, t, n, r) {
      e.removeEventListener ? e.removeEventListener(t, n, r || !1) : e.detachEvent && e.detachEvent("on" + t, n)
    },
    Ri = function (e, t) {
      var n, r, o, i, a, u, s = t || {};
      for (n in e) Ni[n] || (s[n] = e[n]);
      return s.target || (s.target = s.srcElement || document), s.composedPath && (s.composedPath = function () {
        return e.composedPath()
      }), e && (a = e, Si.test(a.type)) && e.pageX === undefined && e.clientX !== undefined && (o = (r = s.target.ownerDocument || document).documentElement, i = r.body, s.pageX = e.clientX + (o && o.scrollLeft || i && i.scrollLeft || 0) - (o && o.clientLeft || i && i.clientLeft || 0), s.pageY = e.clientY + (o && o.scrollTop || i && i.scrollTop || 0) - (o && o.clientTop || i && i.clientTop || 0)), s.preventDefault = function () {
        s.isDefaultPrevented = ki, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
      }, s.stopPropagation = function () {
        s.isPropagationStopped = ki, e && (e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0)
      }, !(s.stopImmediatePropagation = function () {
        s.isImmediatePropagationStopped = ki, s.stopPropagation()
      }) == ((u = s).isDefaultPrevented === ki || u.isDefaultPrevented === Ei) && (s.isDefaultPrevented = Ei, s.isPropagationStopped = Ei, s.isImmediatePropagationStopped = Ei), "undefined" == typeof s.metaKey && (s.metaKey = !1), s
    },
    Ti = (Di.prototype.bind = function (e, t, n, r) {
      var o, i, a, u, s, c, l = this,
        f = window,
        d = function (e) {
          l.executeHandlers(Ri(e || f.event), o)
        };
      if (e && 3 !== e.nodeType && 8 !== e.nodeType) {
        e[l.expando] ? o = e[l.expando] : (o = l.count++, e[l.expando] = o, l.events[o] = {}), r = r || e;
        for (var m = t.split(" "), p = m.length; p--;) s = d, u = c = !1, "DOMContentLoaded" === (a = m[p]) && (a = "ready"), l.domLoaded && "ready" === a && "complete" === e.readyState ? n.call(r, Ri({
          type: a
        })) : (l.hasMouseEnterLeave || (u = l.mouseEnterLeave[a]) && (s = 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 = Ri(e || f.event)).type = "mouseout" === e.type ? "mouseleave" : "mouseenter", e.target = t, l.executeHandlers(e, o))
        }), l.hasFocusIn || "focusin" !== a && "focusout" !== a || (c = !0, u = "focusin" === a ? "focus" : "blur", s = function (e) {
          (e = Ri(e || f.event)).type = "focus" === e.type ? "focusin" : "focusout", l.executeHandlers(e, o)
        }), (i = l.events[o][a]) ? "ready" === a && l.domLoaded ? n(Ri({
          type: a
        })) : i.push({
          func: n,
          scope: r
        }) : (l.events[o][a] = i = [{
          func: n,
          scope: r
        }], i.fakeName = u, i.capture = c, i.nativeHandler = s, "ready" === a ? function (e, t, n) {
          var r, o = e.document,
            i = {
              type: "ready"
            };
          n.domLoaded ? t(i) : (r = function () {
            Ai(e, "DOMContentLoaded", r), Ai(e, "load", r), n.domLoaded || (n.domLoaded = !0, t(i)), e = null
          }, "complete" === o.readyState || "interactive" === o.readyState && o.body ? r() : _i(e, "DOMContentLoaded", r), n.domLoaded || _i(e, "load", r))
        }(e, s, l) : _i(e, u || a, s, c)));
        return e = i = null, n
      }
    }, Di.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], Ai(n, l.fakeName || o, l.nativeHandler, l.capture))
            }
        } else ue(i, function (e, t) {
          Ai(n, e.fakeName || t, e.nativeHandler, e.capture)
        }), i = {};
        for (o in i)
          if (he(i, o)) return this;
        delete this.events[a];
        try {
          delete n[this.expando]
        } catch (m) {
          n[this.expando] = null
        }
      }
      return this
    }, Di.prototype.fire = function (e, t, n) {
      var r;
      if (!e || 3 === e.nodeType || 8 === e.nodeType) return this;
      var o = Ri(null, n);
      for (o.type = t, o.target = e;
        (r = e[this.expando]) && this.executeHandlers(o, r), (e = e.parentNode || e.ownerDocument || e.defaultView || e.parentWindow) && !o.isPropagationStopped(););
      return this
    }, Di.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.getElementsByTagName || (e = e.document), e && e.getElementsByTagName)
        for (this.unbind(e), t = (n = e.getElementsByTagName("*")).length; t--;)(e = n[t])[this.expando] && this.unbind(e);
      return this
    }, Di.prototype.destroy = function () {
      this.events = {}
    }, Di.prototype.cancel = function (e) {
      return e && (e.preventDefault(), e.stopImmediatePropagation()), !1
    }, Di.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
        }
    }, Di.Event = new Di, Di);

  function Di() {
    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
  }
  var Oi, Bi, Pi, Li, Ii, Mi, Fi, Ui, zi, ji, Hi, Vi, qi, $i, Wi, Ki, Xi, Yi = "sizzle" + -new Date,
    Gi = window.document,
    Ji = 0,
    Qi = 0,
    Zi = Da(),
    ea = Da(),
    ta = Da(),
    na = function (e, t) {
      return e === t && (ji = !0), 0
    },
    ra = typeof undefined,
    oa = {}.hasOwnProperty,
    ia = [],
    aa = ia.pop,
    ua = ia.push,
    sa = ia.push,
    ca = ia.slice,
    la = ia.indexOf || function (e) {
      for (var t = 0, n = this.length; t < n; t++)
        if (this[t] === e) return t;
      return -1
    },
    fa = "[\\x20\\t\\r\\n\\f]",
    da = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
    ma = "\\[" + fa + "*(" + da + ")(?:" + fa + "*([*^$|!~]?=)" + fa + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + da + "))|)" + fa + "*\\]",
    pa = ":(" + da + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ma + ")*)|.*)\\)|)",
    ga = new RegExp("^" + fa + "+|((?:^|[^\\\\])(?:\\\\.)*)" + fa + "+$", "g"),
    ha = new RegExp("^" + fa + "*," + fa + "*"),
    va = new RegExp("^" + fa + "*([>+~]|" + fa + ")" + fa + "*"),
    ya = new RegExp("=" + fa + "*([^\\]'\"]*?)" + fa + "*\\]", "g"),
    ba = new RegExp(pa),
    Ca = new RegExp("^" + da + "$"),
    wa = {
      ID: new RegExp("^#(" + da + ")"),
      CLASS: new RegExp("^\\.(" + da + ")"),
      TAG: new RegExp("^(" + da + "|[*])"),
      ATTR: new RegExp("^" + ma),
      PSEUDO: new RegExp("^" + pa),
      CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + fa + "*(even|odd|(([+-]|)(\\d*)n|)" + fa + "*(?:([+-]|)" + fa + "*(\\d+)|))" + fa + "*\\)|)", "i"),
      bool: new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i"),
      needsContext: new RegExp("^" + fa + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + fa + "*((?:-\\d)?\\d*)" + fa + "*\\)|)(?=[^-]|$)", "i")
    },
    xa = /^(?:input|select|textarea|button)$/i,
    Sa = /^h\d$/i,
    Na = /^[^{]+\{\s*\[native \w/,
    Ea = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
    ka = /[+~]/,
    _a = /'|\\/g,
    Aa = new RegExp("\\\\([\\da-f]{1,6}" + fa + "?|(" + fa + ")|.)", "ig"),
    Ra = function (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)
    };
  try {
    sa.apply(ia = ca.call(Gi.childNodes), Gi.childNodes), ia[Gi.childNodes.length].nodeType
  } catch (Ok) {
    sa = {
      apply: ia.length ? function (e, t) {
        ua.apply(e, ca.call(t))
      } : function (e, t) {
        for (var n = e.length, r = 0; e[n++] = t[r++];);
        e.length = n - 1
      }
    }
  }
  var Ta = function (e, t, n, r) {
    var o, i, a, u, s, c, l, f, d, m;
    if ((t ? t.ownerDocument || t : Gi) !== Vi && Hi(t), n = n || [], !e || "string" != typeof e) return n;
    if (1 !== (u = (t = t || Vi).nodeType) && 9 !== u) return [];
    if ($i && !r) {
      if (o = Ea.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)) && Xi(t, i) && i.id === a) return n.push(i), n
        } else {
          if (o[2]) return sa.apply(n, t.getElementsByTagName(e)), n;
          if ((a = o[3]) && Oi.getElementsByClassName) return sa.apply(n, t.getElementsByClassName(a)), n
        } if (Oi.qsa && (!Wi || !Wi.test(e))) {
        if (f = l = Yi, d = t, m = 9 === u && e, 1 === u && "object" !== t.nodeName.toLowerCase()) {
          for (c = Ii(e), (l = t.getAttribute("id")) ? f = l.replace(_a, "\\$&") : t.setAttribute("id", f), f = "[id='" + f + "'] ", s = c.length; s--;) c[s] = f + Ma(c[s]);
          d = ka.test(e) && La(t.parentNode) || t, m = c.join(",")
        }
        if (m) try {
          return sa.apply(n, d.querySelectorAll(m)), n
        } catch (p) {} finally {
          l || t.removeAttribute("id")
        }
      }
    }
    return Fi(e.replace(ga, "$1"), t, n, r)
  };

  function Da() {
    var n = [];

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

  function Oa(e) {
    return e[Yi] = !0, e
  }

  function Ba(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 Pa(a) {
    return Oa(function (i) {
      return i = +i, Oa(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 La(e) {
    return e && typeof e.getElementsByTagName != ra && e
  }

  function Ia() {}

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

  function Fa(a, e, t) {
    var u = e.dir,
      s = t && "parentNode" === u,
      c = Qi++;
    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 = [Ji, 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[Yi] || (e[Yi] = {}))[u]) && r[0] === Ji && r[1] === c) return i[2] = r[2];
            if ((o[u] = i)[2] = a(e, t, n)) return !0
          }
    }
  }

  function Ua(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 za(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 ja(m, p, g, h, v, e) {
    return h && !h[Yi] && (h = ja(h)), v && !v[Yi] && (v = ja(v, e)), Oa(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++) Ta(e, t[r], n);
          return n
        }(p || "*", n.nodeType ? [n] : n, []),
        f = !m || !e && p ? l : za(l, u, m, n, r),
        d = g ? v || (e ? m : c || h) ? [] : t : f;
      if (g && g(f, d, n, r), h)
        for (o = za(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 ? la.call(e, a) : u[i]) && (e[o] = !(t[o] = a))
        }
      } else d = za(d === t ? d.splice(c, d.length) : d), v ? v(null, t, d, r) : sa.apply(t, d)
    })
  }
  Oi = Ta.support = {}, Li = Ta.isXML = function (e) {
    var t = e && (e.ownerDocument || e).documentElement;
    return !!t && "HTML" !== t.nodeName
  }, Hi = Ta.setDocument = function (e) {
    var t, s = e ? e.ownerDocument || e : Gi,
      n = s.defaultView;
    return s !== Vi && 9 === s.nodeType && s.documentElement ? (qi = (Vi = s).documentElement, $i = !Li(s), n && n !== function (e) {
      try {
        return e.top
      } catch (t) {}
      return null
    }(n) && (n.addEventListener ? n.addEventListener("unload", function () {
      Hi()
    }, !1) : n.attachEvent && n.attachEvent("onunload", function () {
      Hi()
    })), Oi.attributes = !0, Oi.getElementsByTagName = !0, Oi.getElementsByClassName = Na.test(s.getElementsByClassName), Oi.getById = !0, Bi.find.ID = function (e, t) {
      if (typeof t.getElementById != ra && $i) {
        var n = t.getElementById(e);
        return n && n.parentNode ? [n] : []
      }
    }, Bi.filter.ID = function (e) {
      var t = e.replace(Aa, Ra);
      return function (e) {
        return e.getAttribute("id") === t
      }
    }, Bi.find.TAG = Oi.getElementsByTagName ? function (e, t) {
      if (typeof t.getElementsByTagName != ra) 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
    }, Bi.find.CLASS = Oi.getElementsByClassName && function (e, t) {
      if ($i) return t.getElementsByClassName(e)
    }, Ki = [], Wi = [], Oi.disconnectedMatch = !0, Wi = Wi.length && new RegExp(Wi.join("|")), Ki = Ki.length && new RegExp(Ki.join("|")), t = Na.test(qi.compareDocumentPosition), Xi = t || Na.test(qi.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
    }, na = t ? function (e, t) {
      if (e === t) return ji = !0, 0;
      var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
      return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !Oi.sortDetached && t.compareDocumentPosition(e) === n ? e === s || e.ownerDocument === Gi && Xi(Gi, e) ? -1 : t === s || t.ownerDocument === Gi && Xi(Gi, t) ? 1 : zi ? la.call(zi, e) - la.call(zi, t) : 0 : 4 & n ? -1 : 1)
    } : function (e, t) {
      if (e === t) return ji = !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 : zi ? la.call(zi, e) - la.call(zi, t) : 0;
      if (o === i) return Ba(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 ? Ba(a[r], u[r]) : a[r] === Gi ? -1 : u[r] === Gi ? 1 : 0
    }, s) : Vi
  }, Ta.matches = function (e, t) {
    return Ta(e, null, null, t)
  }, Ta.matchesSelector = function (e, t) {
    if ((e.ownerDocument || e) !== Vi && Hi(e), t = t.replace(ya, "='$1']"), Oi.matchesSelector && $i && (!Ki || !Ki.test(t)) && (!Wi || !Wi.test(t))) try {
      var n = (void 0).call(e, t);
      if (n || Oi.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
    } catch (Ok) {}
    return 0 < Ta(t, Vi, null, [e]).length
  }, Ta.contains = function (e, t) {
    return (e.ownerDocument || e) !== Vi && Hi(e), Xi(e, t)
  }, Ta.attr = function (e, t) {
    (e.ownerDocument || e) !== Vi && Hi(e);
    var n = Bi.attrHandle[t.toLowerCase()],
      r = n && oa.call(Bi.attrHandle, t.toLowerCase()) ? n(e, t, !$i) : undefined;
    return r !== undefined ? r : Oi.attributes || !$i ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
  }, Ta.error = function (e) {
    throw new Error("Syntax error, unrecognized expression: " + e)
  }, Ta.uniqueSort = function (e) {
    var t, n = [],
      r = 0,
      o = 0;
    if (ji = !Oi.detectDuplicates, zi = !Oi.sortStable && e.slice(0), e.sort(na), ji) {
      for (; t = e[o++];) t === e[o] && (r = n.push(o));
      for (; r--;) e.splice(n[r], 1)
    }
    return zi = null, e
  }, Pi = Ta.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 += Pi(e)
      } else if (3 === o || 4 === o) return e.nodeValue
    } else
      for (; t = e[r++];) n += Pi(t);
    return n
  }, (Bi = Ta.selectors = {
    cacheLength: 50,
    createPseudo: Oa,
    match: wa,
    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(Aa, Ra), e[3] = (e[3] || e[4] || e[5] || "").replace(Aa, Ra), "~=" === 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] || Ta.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] && Ta.error(e[0]), e
      },
      PSEUDO: function (e) {
        var t, n = !e[6] && e[2];
        return wa.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && ba.test(n) && (t = Ii(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(Aa, Ra).toLowerCase();
        return "*" === e ? function () {
          return !0
        } : function (e) {
          return e.nodeName && e.nodeName.toLowerCase() === t
        }
      },
      CLASS: function (e) {
        var t = Zi[e + " "];
        return t || (t = new RegExp("(^|" + fa + ")" + e + "(" + fa + "|$)")) && Zi(e, function (e) {
          return t.test("string" == typeof e.className && e.className || typeof e.getAttribute != ra && e.getAttribute("class") || "")
        })
      },
      ATTR: function (n, r, o) {
        return function (e) {
          var t = Ta.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, p, g) {
        var h = "nth" !== m.slice(0, 3),
          v = "last" !== m.slice(-4),
          y = "of-type" === e;
        return 1 === p && 0 === g ? 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 = y && e.nodeName.toLowerCase(),
            d = !n && !y;
          if (l) {
            if (h) {
              for (; c;) {
                for (i = e; i = i[c];)
                  if (y ? 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[Yi] || (l[Yi] = {}))[m] || [])[0] === Ji && r[1], a = r[0] === Ji && 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] = [Ji, u, a];
                  break
                }
            } else if (d && (r = (e[Yi] || (e[Yi] = {}))[m]) && r[0] === Ji) a = r[1];
            else
              for (;
                (i = ++u && i && i[c] || (a = u = 0) || s.pop()) && ((y ? i.nodeName.toLowerCase() !== f : 1 !== i.nodeType) || !++a || (d && ((i[Yi] || (i[Yi] = {}))[m] = [Ji, a]), i !== e)););
            return (a -= g) === p || a % p == 0 && 0 <= a / p
          }
        }
      },
      PSEUDO: function (e, i) {
        var t, a = Bi.pseudos[e] || Bi.setFilters[e.toLowerCase()] || Ta.error("unsupported pseudo: " + e);
        return a[Yi] ? a(i) : 1 < a.length ? (t = [e, e, "", i], Bi.setFilters.hasOwnProperty(e.toLowerCase()) ? Oa(function (e, t) {
          for (var n, r = a(e, i), o = r.length; o--;) e[n = la.call(e, r[o])] = !(t[n] = r[o])
        }) : function (e) {
          return a(e, 0, t)
        }) : a
      }
    },
    pseudos: {
      not: Oa(function (e) {
        var r = [],
          o = [],
          u = Mi(e.replace(ga, "$1"));
        return u[Yi] ? Oa(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), !o.pop()
        }
      }),
      has: Oa(function (t) {
        return function (e) {
          return 0 < Ta(t, e).length
        }
      }),
      contains: Oa(function (t) {
        return t = t.replace(Aa, Ra),
          function (e) {
            return -1 < (e.textContent || e.innerText || Pi(e)).indexOf(t)
          }
      }),
      lang: Oa(function (n) {
        return Ca.test(n || "") || Ta.error("unsupported lang: " + n), n = n.replace(Aa, Ra).toLowerCase(),
          function (e) {
            var t;
            do {
              if (t = $i ? 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 === qi
      },
      focus: function (e) {
        return e === Vi.activeElement && (!Vi.hasFocus || Vi.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 !Bi.pseudos.empty(e)
      },
      header: function (e) {
        return Sa.test(e.nodeName)
      },
      input: function (e) {
        return xa.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: Pa(function () {
        return [0]
      }),
      last: Pa(function (e, t) {
        return [t - 1]
      }),
      eq: Pa(function (e, t, n) {
        return [n < 0 ? n + t : n]
      }),
      even: Pa(function (e, t) {
        for (var n = 0; n < t; n += 2) e.push(n);
        return e
      }),
      odd: Pa(function (e, t) {
        for (var n = 1; n < t; n += 2) e.push(n);
        return e
      }),
      lt: Pa(function (e, t, n) {
        for (var r = n < 0 ? n + t : n; 0 <= --r;) e.push(r);
        return e
      }),
      gt: Pa(function (e, t, n) {
        for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
        return e
      })
    }
  }).pseudos.nth = Bi.pseudos.eq, W(["radio", "checkbox", "file", "password", "image"], function (e) {
    var t;
    Bi.pseudos[e] = (t = e, function (e) {
      return "input" === e.nodeName.toLowerCase() && e.type === t
    })
  }), W(["submit", "reset"], function (e) {
    var n;
    Bi.pseudos[e] = (n = e, function (e) {
      var t = e.nodeName.toLowerCase();
      return ("input" === t || "button" === t) && e.type === n
    })
  }), Ia.prototype = Bi.filters = Bi.pseudos, Bi.setFilters = new Ia, Ii = Ta.tokenize = function (e, t) {
    var n, r, o, i, a, u, s, c = ea[e + " "];
    if (c) return t ? 0 : c.slice(0);
    for (a = e, u = [], s = Bi.preFilter; a;) {
      for (i in n && !(r = ha.exec(a)) || (r && (a = a.slice(r[0].length) || a), u.push(o = [])), n = !1, (r = va.exec(a)) && (n = r.shift(), o.push({
          value: n,
          type: r[0].replace(ga, " ")
        }), a = a.slice(n.length)), Bi.filter) Bi.filter.hasOwnProperty(i) && (!(r = wa[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 ? Ta.error(e) : ea(e, u).slice(0)
  }, Mi = Ta.compile = function (e, t) {
    var n, h, v, y, b, r, o = [],
      i = [],
      a = ta[e + " "];
    if (!a) {
      for (n = (t = t || Ii(e)).length; n--;)(a = function f(e) {
        for (var r, t, n, o = e.length, i = Bi.relative[e[0].type], a = i || Bi.relative[" "], u = i ? 1 : 0, s = Fa(function (e) {
            return e === r
          }, a, !0), c = Fa(function (e) {
            return -1 < la.call(r, e)
          }, a, !0), l = [function (e, t, n) {
            return !i && (n || t !== Ui) || ((r = t).nodeType ? s : c)(e, t, n)
          }]; u < o; u++)
          if (t = Bi.relative[e[u].type]) l = [Fa(Ua(l), t)];
          else {
            if ((t = Bi.filter[e[u].type].apply(null, e[u].matches))[Yi]) {
              for (n = ++u; n < o && !Bi.relative[e[n].type]; n++);
              return ja(1 < u && Ua(l), 1 < u && Ma(e.slice(0, u - 1).concat({
                value: " " === e[u - 2].type ? "*" : ""
              })).replace(ga, "$1"), t, u < n && f(e.slice(u, n)), n < o && f(e = e.slice(n)), n < o && Ma(e))
            }
            l.push(t)
          } return Ua(l)
      }(t[n]))[Yi] ? o.push(a) : i.push(a);
      (a = ta(e, (h = i, y = 0 < (v = o).length, b = 0 < h.length, r = function (e, t, n, r, o) {
        var i, a, u, s = 0,
          c = "0",
          l = e && [],
          f = [],
          d = Ui,
          m = e || b && Bi.find.TAG("*", o),
          p = Ji += null == d ? 1 : Math.random() || .1,
          g = m.length;
        for (o && (Ui = t !== Vi && t); c !== g && null != (i = m[c]); c++) {
          if (b && i) {
            for (a = 0; u = h[a++];)
              if (u(i, t, n)) {
                r.push(i);
                break
              } o && (Ji = p)
          }
          y && ((i = !u && i) && s--, e && l.push(i))
        }
        if (s += c, y && 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] = aa.call(r));
            f = za(f)
          }
          sa.apply(r, f), o && !e && 0 < f.length && 1 < s + v.length && Ta.uniqueSort(r)
        }
        return o && (Ji = p, Ui = d), l
      }, y ? Oa(r) : r))).selector = e
    }
    return a
  }, Fi = Ta.select = function (e, t, n, r) {
    var o, i, a, u, s, c = "function" == typeof e && e,
      l = !r && Ii(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 && Oi.getById && 9 === t.nodeType && $i && Bi.relative[i[1].type]) {
        if (!(t = (Bi.find.ID(a.matches[0].replace(Aa, Ra), t) || [])[0])) return n;
        c && (t = t.parentNode), e = e.slice(i.shift().value.length)
      }
      for (o = wa.needsContext.test(e) ? 0 : i.length; o-- && (a = i[o], !Bi.relative[u = a.type]);)
        if ((s = Bi.find[u]) && (r = s(a.matches[0].replace(Aa, Ra), ka.test(i[0].type) && La(t.parentNode) || t))) {
          if (i.splice(o, 1), !(e = r.length && Ma(i))) return sa.apply(n, r), n;
          break
        }
    }
    return (c || Mi(e, l))(r, t, !$i, n, ka.test(e) && La(t.parentNode) || t), n
  }, Oi.sortStable = Yi.split("").sort(na).join("") === Yi, Oi.detectDuplicates = !!ji, Hi(), Oi.sortDetached = !0;
  var Ha = document,
    Va = Array.prototype.push,
    qa = Array.prototype.slice,
    $a = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
    Wa = Ti.Event,
    Ka = kt.makeMap("children,contents,next,prev"),
    Xa = function (e) {
      return void 0 !== e
    },
    Ya = function (e) {
      return "string" == typeof e
    },
    Ga = function (e, t) {
      var n, r = (t = t || Ha).createElement("div"),
        o = t.createDocumentFragment();
      for (r.innerHTML = e; n = r.firstChild;) o.appendChild(n);
      return o
    },
    Ja = function (e, t, n, r) {
      var o;
      if (Ya(t)) t = Ga(t, fu(e[0]));
      else if (t.length && !t.nodeType) {
        if (t = hu.makeArray(t), r)
          for (o = t.length - 1; 0 <= o; o--) Ja(e, t[o], n, r);
        else
          for (o = 0; o < t.length; o++) Ja(e, t[o], n, r);
        return e
      }
      if (t.nodeType)
        for (o = e.length; o--;) n.call(e[o], t);
      return e
    },
    Qa = function (e, t) {
      return e && t && -1 !== (" " + e.className + " ").indexOf(" " + t + " ")
    },
    Za = function (e, t, n) {
      var r, o;
      return t = hu(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
    },
    eu = kt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom", " "),
    tu = kt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected", " "),
    nu = {
      "for": "htmlFor",
      "class": "className",
      readonly: "readOnly"
    },
    ru = {
      "float": "cssFloat"
    },
    ou = {},
    iu = {},
    au = function (e, t) {
      return new hu.fn.init(e, t)
    },
    uu = /^\s*|\s*$/g,
    su = function (e) {
      return null === e || e === undefined ? "" : ("" + e).replace(uu, "")
    },
    cu = function (e, t) {
      var n, r, o, i;
      if (e)
        if ((n = e.length) === undefined) {
          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
    },
    lu = function (e, n) {
      var r = [];
      return cu(e, function (e, t) {
        n(t, e) && r.push(t)
      }), r
    },
    fu = function (e) {
      return e ? 9 === e.nodeType ? e : e.ownerDocument : Ha
    };
  au.fn = au.prototype = {
    constructor: au,
    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 hu(e).attr(t);
        o.context = t = document
      }
      if (Ya(e)) {
        if (!(n = "<" === (o.selector = e).charAt(0) && ">" === e.charAt(e.length - 1) && 3 <= e.length ? [null, e, null] : $a.exec(e))) return hu(t).find(e);
        if (n[1])
          for (r = Ga(e, fu(t)).firstChild; r;) Va.call(o, r), r = r.nextSibling;
        else {
          if (!(r = fu(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 kt.toArray(this)
    },
    add: function (e, t) {
      var n, r;
      if (Ya(e)) return this.add(hu(e));
      if (!1 !== t)
        for (n = hu.unique(this.toArray().concat(hu.makeArray(e))), this.length = n.length, r = 0; r < n.length; r++) this[r] = n[r];
      else Va.apply(this, hu.makeArray(e));
      return this
    },
    attr: function (t, n) {
      var e, r = this;
      if ("object" == typeof t) cu(t, function (e, t) {
        r.attr(e, t)
      });
      else {
        if (!Xa(n)) {
          if (r[0] && 1 === r[0].nodeType) {
            if ((e = ou[t]) && e.get) return e.get(r[0], t);
            if (tu[t]) return r.prop(t) ? t : undefined;
            null === (n = r[0].getAttribute(t, 2)) && (n = undefined)
          }
          return n
        }
        this.each(function () {
          var e;
          if (1 === this.nodeType) {
            if ((e = ou[t]) && e.set) return void 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 = nu[e] || e)) cu(e, function (e, t) {
        n.prop(e, t)
      });
      else {
        if (!Xa(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 (n, r) {
      var e, o, i = this,
        t = function (e) {
          return e.replace(/-(\D)/g, function (e, t) {
            return t.toUpperCase()
          })
        },
        a = function (e) {
          return e.replace(/[A-Z]/g, function (e) {
            return "-" + e
          })
        };
      if ("object" == typeof n) cu(n, function (e, t) {
        i.css(e, t)
      });
      else if (Xa(r)) n = t(n), "number" != typeof r || eu[n] || (r = r.toString() + "px"), i.each(function () {
        var e = this.style;
        if ((o = iu[n]) && o.set) o.set(this, r);
        else {
          try {
            this.style[ru[n] || n] = r
          } catch (t) {}
          null !== r && "" !== r || (e.removeProperty ? e.removeProperty(a(n)) : e.removeAttribute(n))
        }
      });
      else {
        if (e = i[0], (o = iu[n]) && o.get) return o.get(e);
        if (!e.ownerDocument.defaultView) return e.currentStyle ? e.currentStyle[t(n)] : "";
        try {
          return e.ownerDocument.defaultView.getComputedStyle(e, null).getPropertyValue(a(n))
        } catch (u) {
          return undefined
        }
      }
      return i
    },
    remove: function () {
      for (var e, t = this.length; t--;) e = this[t], Wa.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 (e) {
      var t;
      if (Xa(e)) {
        t = this.length;
        try {
          for (; t--;) this[t].innerHTML = e
        } catch (n) {
          hu(this[t]).empty().append(e)
        }
        return this
      }
      return this[0] ? this[0].innerHTML : ""
    },
    text: function (e) {
      var t;
      if (Xa(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 Ja(this, arguments, function (e) {
        (1 === this.nodeType || this.host && 1 === this.host.nodeType) && this.appendChild(e)
      })
    },
    prepend: function () {
      return Ja(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 ? Ja(this, arguments, function (e) {
        this.parentNode.insertBefore(e, this)
      }) : this
    },
    after: function () {
      return this[0] && this[0].parentNode ? Ja(this, arguments, function (e) {
        this.parentNode.insertBefore(e, this.nextSibling)
      }, !0) : this
    },
    appendTo: function (e) {
      return hu(e).append(this), this
    },
    prependTo: function (e) {
      return hu(e).prepend(this), this
    },
    replaceWith: function (e) {
      return this.before(e).remove()
    },
    wrap: function (e) {
      return Za(this, e)
    },
    wrapAll: function (e) {
      return Za(this, e, !0)
    },
    wrapInner: function (e) {
      return this.each(function () {
        hu(this).contents().wrapAll(e)
      }), this
    },
    unwrap: function () {
      return this.parent().each(function () {
        hu(this).replaceWith(this.childNodes)
      })
    },
    clone: function () {
      var e = [];
      return this.each(function () {
        e.push(this.cloneNode(!0))
      }), hu(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(" ") ? cu(o.split(" "), function () {
        e.toggleClass(this, i)
      }) : e.each(function (e, t) {
        var n, r = Qa(t, o);
        r !== i && (n = t.className, r ? t.className = su((" " + n + " ").replace(" " + o + " ", " ")) : t.className += n ? " " + o : o)
      })), e
    },
    hasClass: function (e) {
      return Qa(this[0], e)
    },
    each: function (e) {
      return cu(this, e)
    },
    on: function (e, t) {
      return this.each(function () {
        Wa.bind(this, e, t)
      })
    },
    off: function (e, t) {
      return this.each(function () {
        Wa.unbind(this, e, t)
      })
    },
    trigger: function (e) {
      return this.each(function () {
        "object" == typeof e ? Wa.fire(this, e.type, e) : Wa.fire(this, e)
      })
    },
    show: function () {
      return this.css("display", "")
    },
    hide: function () {
      return this.css("display", "none")
    },
    slice: function () {
      return new hu(qa.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++) hu.find(e, this[n], t);
      return hu(t)
    },
    filter: function (n) {
      return hu("function" == typeof n ? lu(this.toArray(), function (e, t) {
        return n(t, e)
      }) : hu.filter(n, this.toArray()))
    },
    closest: function (n) {
      var r = [];
      return n instanceof hu && (n = n[0]), this.each(function (e, t) {
        for (; t;) {
          if ("string" == typeof n && hu(t).is(n)) {
            r.push(t);
            break
          }
          if (t === n) {
            r.push(t);
            break
          }
          t = t.parentNode
        }
      }), hu(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: Va,
    sort: Array.prototype.sort,
    splice: Array.prototype.splice
  }, kt.extend(au, {
    extend: kt.extend,
    makeArray: function (e) {
      return (t = e) && t === t.window || e.nodeType ? [e] : kt.toArray(e);
      var t
    },
    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: kt.isArray,
    each: cu,
    trim: su,
    grep: lu,
    find: Ta,
    expr: Ta.selectors,
    unique: Ta.uniqueSort,
    text: Ta.getText,
    contains: Ta.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 t = 1 === t.length ? hu.find.matchesSelector(t[0], e) ? [t[0]] : [] : hu.find.matches(e, t)
    }
  });
  var du = function (e, t, n) {
      var r = [],
        o = e[t];
      for ("string" != typeof n && n instanceof hu && (n = n[0]); o && 9 !== o.nodeType;) {
        if (n !== undefined) {
          if (o === n) break;
          if ("string" == typeof n && hu(o).is(n)) break
        }
        1 === o.nodeType && r.push(o), o = o[t]
      }
      return r
    },
    mu = function (e, t, n, r) {
      var o = [];
      for (r instanceof hu && (r = r[0]); e; e = e[t])
        if (!n || e.nodeType === n) {
          if (r !== undefined) {
            if (e === r) break;
            if ("string" == typeof r && hu(e).is(r)) break
          }
          o.push(e)
        } return o
    },
    pu = function (e, t, n) {
      for (e = e[t]; e; e = e[t])
        if (e.nodeType === n) return e;
      return null
    };
  cu({
    parent: function (e) {
      var t = e.parentNode;
      return t && 11 !== t.nodeType ? t : null
    },
    parents: function (e) {
      return du(e, "parentNode")
    },
    next: function (e) {
      return pu(e, "nextSibling", 1)
    },
    prev: function (e) {
      return pu(e, "previousSibling", 1)
    },
    children: function (e) {
      return mu(e.firstChild, "nextSibling", 1)
    },
    contents: function (e) {
      return kt.toArray(("iframe" === e.nodeName ? e.contentDocument || e.contentWindow.document : e).childNodes)
    }
  }, function (r, o) {
    au.fn[r] = function (t) {
      var n = [];
      this.each(function () {
        var e = o.call(n, this, t, n);
        e && (hu.isArray(e) ? n.push.apply(n, e) : n.push(e))
      }), 1 < this.length && (Ka[r] || (n = hu.unique(n)), 0 === r.indexOf("parents") && (n = n.reverse()));
      var e = hu(n);
      return t ? e.filter(t) : e
    }
  }), cu({
    parentsUntil: function (e, t) {
      return du(e, "parentNode", t)
    },
    nextUntil: function (e, t) {
      return mu(e, "nextSibling", 1, t).slice(1)
    },
    prevUntil: function (e, t) {
      return mu(e, "previousSibling", 1, t).slice(1)
    }
  }, function (o, i) {
    au.fn[o] = function (t, e) {
      var n = [];
      this.each(function () {
        var e = i.call(n, this, t, n);
        e && (hu.isArray(e) ? n.push.apply(n, e) : n.push(e))
      }), 1 < this.length && (n = hu.unique(n), 0 !== o.indexOf("parents") && "prevUntil" !== o || (n = n.reverse()));
      var r = hu(n);
      return e ? r.filter(e) : r
    }
  }), au.fn.is = function (e) {
    return !!e && 0 < this.filter(e).length
  }, au.fn.init.prototype = au.fn, au.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 hu.extend(o, this), o
  }, au.attrHooks = ou, au.cssHooks = iu;
  var gu, hu = au,
    vu = kt.each,
    yu = kt.grep,
    bu = wt.ie,
    Cu = /^([a-z0-9],?)+$/i,
    wu = function (n, r, o) {
      var i = r.keep_values,
        e = {
          set: function (e, t, n) {
            r.url_converter && (t = r.url_converter.call(r.url_converter_scope || o(), 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 ? (i && e.attr("data-mce-style", t), null !== t && "string" == typeof t ? (e.removeAttr("style"), e.css(n.parse(t))) : e.attr("style", t)) : e.css(t)
            },
            get: function (e) {
              var t = e.attr("data-mce-style") || e.attr("style");
              return t = n.serialize(n.parse(t), e[0].nodeName)
            }
          }
        };
      return i && (t.href = t.src = e), t
    },
    xu = function (e, t) {
      var n = t.attr("style"),
        r = (r = e.serialize(e.parse(n), t[0].nodeName)) || null;
      t.attr("data-mce-style", r)
    },
    Su = function (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
    };

  function Nu(a, u) {
    var s = this;
    void 0 === u && (u = {});
    var r = {},
      c = window,
      n = {},
      t = 0,
      o = Kr.forElement(At.fromDom(a), {
        contentCssCors: u.contentCssCors,
        referrerPolicy: u.referrerPolicy
      }),
      l = [],
      f = u.schema ? u.schema : Ci({}),
      i = xi({
        url_converter: u.url_converter,
        url_converter_scope: u.url_converter_scope
      }, u.schema),
      d = u.ownEvents ? new Ti : Ti.Event,
      m = f.getBlockElements(),
      p = hu.overrideDefaults(function () {
        return {
          context: a,
          element: j.getRoot()
        }
      }),
      g = function (e) {
        return e && a && q(e) ? a.getElementById(e) : e
      },
      h = function (e) {
        return p("string" == typeof e ? g(e) : e)
      },
      v = function (e, t, n) {
        var r, o, i = h(e);
        return i.length && (o = (r = H[t]) && r.get ? r.get(i, t) : i.attr(t)), void 0 === o && (o = n || ""), o
      },
      y = function (e) {
        var t = g(e);
        return t ? t.attributes : []
      },
      b = function (e, t, n) {
        "" === n && (n = null);
        var r, o = h(e),
          i = o.attr(t);
        o.length && ((r = H[t]) && r.set ? r.set(o, n, t) : o.attr(t, n), i !== n && u.onSetAttrib && u.onSetAttrib({
          attrElm: o,
          attrName: t,
          attrValue: n
        }))
      },
      C = function () {
        return u.root_element || a.body
      },
      w = function (e, t) {
        return ur(a.body, g(e), t)
      },
      x = function (e, t, n) {
        var r = h(e);
        return n ? r.css(t) : ("float" === (t = t.replace(/-(\D)/g, function (e, t) {
          return t.toUpperCase()
        })) && (t = wt.browser.isIE() ? "styleFloat" : "cssFloat"), r[0] && r[0].style ? r[0].style[t] : undefined)
      },
      S = function (e) {
        var t, n;
        return e = g(e), t = x(e, "width"), n = x(e, "height"), -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
        }
      },
      N = function (e, t) {
        if (!e) return !1;
        if (!Array.isArray(e)) {
          if ("*" === t) return 1 === e.nodeType;
          if (Cu.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 < Ta(t, i[0].ownerDocument || i[0], null, i).length
      },
      E = function (e, t, n, r) {
        var o, i = [],
          a = g(e);
        for (r = r === undefined, n = n || ("BODY" !== C().nodeName ? C().parentNode : null), kt.is(t, "string") && (t = "*" === (o = t) ? function (e) {
            return 1 === e.nodeType
          } : function (e) {
            return N(e, o)
          }); a && !(a === n || $(a.nodeType) || Fn(a) || Un(a));) {
          if (!t || "function" == typeof t && t(a)) {
            if (!r) return [a];
            i.push(a)
          }
          a = a.parentNode
        }
        return r ? i : null
      },
      k = function (e, t, n) {
        var r = t;
        if (e)
          for ("string" == typeof t && (r = function (e) {
              return N(e, t)
            }), e = e[n]; e; e = e[n])
            if ("function" == typeof r && r(e)) return e;
        return null
      },
      _ = function (e, n, r) {
        var o, t = "string" == typeof e ? g(e) : e;
        if (!t) return !1;
        if (kt.isArray(t) && (t.length || 0 === t.length)) return o = [], vu(t, function (e, t) {
          e && o.push(n.call(r, "string" == typeof e ? g(e) : e, t))
        }), o;
        var i = r || s;
        return n.call(i, t)
      },
      A = function (e, t) {
        h(e).each(function (e, n) {
          vu(t, function (e, t) {
            b(n, t, e)
          })
        })
      },
      R = function (e, r) {
        var t = h(e);
        bu ? t.each(function (e, t) {
          if (!1 !== t.canHaveHTML) {
            for (; t.firstChild;) t.removeChild(t.firstChild);
            try {
              t.innerHTML = "<br>" + r, t.removeChild(t.firstChild)
            } catch (n) {
              hu("<div></div>").html("<br>" + r).contents().slice(1).appendTo(t)
            }
            return r
          }
        }) : t.html(r)
      },
      T = function (e, n, r, o, i) {
        return _(e, function (e) {
          var t = "string" == typeof n ? a.createElement(n) : n;
          return A(t, r), o && ("string" != typeof o && o.nodeType ? t.appendChild(o) : "string" == typeof o && R(t, o)), i ? t : e.appendChild(t)
        })
      },
      D = function (e, t, n) {
        return T(a.createElement(e), e, t, n, !0)
      },
      e = ci.decode,
      O = ci.encodeAllRaw,
      B = function (e, t) {
        var n = h(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)
        }).remove() : n.remove(), 1 < n.length ? n.toArray() : n[0]
      },
      P = function (e, t, n) {
        h(e).toggleClass(t, n).each(function () {
          "" === this.className && hu(this).attr("class", null)
        })
      },
      L = function (t, e, n) {
        return _(e, function (e) {
          return kt.is(e, "array") && (t = t.cloneNode(!0)), n && vu(yu(e.childNodes), function (e) {
            t.appendChild(e)
          }), e.parentNode.replaceChild(t, e)
        })
      },
      I = function (e) {
        if (An(e)) {
          var t = "a" === e.nodeName.toLowerCase() && !v(e, "href") && v(e, "id");
          if (v(e, "name") || v(e, "data-mce-bookmark") || t) return !0
        }
        return !1
      },
      M = function () {
        return a.createRange()
      },
      F = function (e, t, n, r) {
        if (kt.isArray(e)) {
          for (var o = e.length, i = []; o--;) i[o] = F(e[o], t, n, r);
          return i
        }
        return !u.collect || e !== a && e !== c || l.push([e, t, n, r]), d.bind(e, t, n, r || j)
      },
      U = function (e, t, n) {
        if (kt.isArray(e)) {
          for (var r = e.length, o = []; r--;) o[r] = U(e[r], t, n);
          return o
        }
        if (0 < l.length && (e === a || e === c))
          for (r = l.length; r--;) {
            var i = l[r];
            e !== i[0] || t && t !== i[1] || n && n !== i[2] || d.unbind(i[0], i[1], i[2])
          }
        return d.unbind(e, t, n)
      },
      z = function (e) {
        if (e && An(e)) {
          var t = e.getAttribute("data-mce-contenteditable");
          return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null
        }
        return null
      },
      j = {
        doc: a,
        settings: u,
        win: c,
        files: n,
        stdMode: !0,
        boxModel: !0,
        styleSheetLoader: o,
        boundEvents: l,
        styles: i,
        schema: f,
        events: d,
        isBlock: function (e) {
          if ("string" == typeof e) return !!m[e];
          if (e) {
            var t = e.nodeType;
            if (t) return !(1 !== t || !m[e.nodeName])
          }
          return !1
        },
        $: p,
        $$: h,
        root: null,
        clone: function (t, e) {
          if (!bu || 1 !== t.nodeType || e) return t.cloneNode(e);
          var n = a.createElement(t.nodeName);
          return vu(y(t), function (e) {
            b(n, e.nodeName, v(t, e.nodeName))
          }), n
        },
        getRoot: C,
        getViewPort: function (e) {
          var t = En(e);
          return {
            x: t.x,
            y: t.y,
            w: t.width,
            h: t.height
          }
        },
        getRect: function (e) {
          e = g(e);
          var t = w(e),
            n = S(e);
          return {
            x: t.x,
            y: t.y,
            w: n.w,
            h: n.h
          }
        },
        getSize: S,
        getParent: function (e, t, n) {
          var r = E(e, t, n, !1);
          return r && 0 < r.length ? r[0] : null
        },
        getParents: E,
        get: g,
        getNext: function (e, t) {
          return k(e, t, "nextSibling")
        },
        getPrev: function (e, t) {
          return k(e, t, "previousSibling")
        },
        select: function (e, t) {
          return Ta(e, g(t) || u.root_element || a, [])
        },
        is: N,
        add: T,
        create: D,
        createHTML: function (e, t, n) {
          var r, o = "";
          for (r in o += "<" + e, t) t.hasOwnProperty(r) && null !== t[r] && "undefined" != typeof t[r] && (o += " " + r + '="' + O(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: B,
        setStyle: function (e, t, n) {
          var r = q(t) ? h(e).css(t, n) : h(e).css(t);
          u.update_styles && xu(i, r)
        },
        getStyle: x,
        setStyles: function (e, t) {
          var n = h(e).css(t);
          u.update_styles && xu(i, n)
        },
        removeAllAttribs: function (e) {
          return _(e, function (e) {
            for (var t = e.attributes, n = t.length - 1; 0 <= n; n--) e.removeAttributeNode(t.item(n))
          })
        },
        setAttrib: b,
        setAttribs: A,
        getAttrib: v,
        getPos: w,
        parseStyle: function (e) {
          return i.parse(e)
        },
        serializeStyle: function (e, t) {
          return i.serialize(e, t)
        },
        addStyle: function (e) {
          var t, n;
          if (j !== Nu.DOM && a === document) {
            if (r[e]) return;
            r[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) {
          W((e = e || "").split(","), function (e) {
            n[e] = !0, o.load(e, V)
          })
        },
        addClass: function (e, t) {
          h(e).addClass(t)
        },
        removeClass: function (e, t) {
          P(e, t, !1)
        },
        hasClass: function (e, t) {
          return h(e).hasClass(t)
        },
        toggleClass: P,
        show: function (e) {
          h(e).show()
        },
        hide: function (e) {
          h(e).hide()
        },
        isHidden: function (e) {
          return "none" === h(e).css("display")
        },
        uniqueId: function (e) {
          return (e || "mce_") + t++
        },
        setHTML: R,
        getOuterHTML: function (e) {
          var t = "string" == typeof e ? g(e) : e;
          return An(t) ? t.outerHTML : hu("<div></div>").append(hu(t).clone()).html()
        },
        setOuterHTML: function (e, t) {
          h(e).each(function () {
            try {
              if ("outerHTML" in this) return void(this.outerHTML = t)
            } catch (e) {}
            B(hu(this).html(t), !0)
          })
        },
        decode: e,
        encode: O,
        insertAfter: function (e, t) {
          var r = g(t);
          return _(e, function (e) {
            var t = r.parentNode,
              n = r.nextSibling;
            return n ? t.insertBefore(e, n) : t.appendChild(e), e
          })
        },
        replace: L,
        rename: function (t, e) {
          var n;
          return t.nodeName !== e.toUpperCase() && (n = D(e), vu(y(t), function (e) {
            b(n, e.nodeName, v(t, e.nodeName))
          }), L(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 i.toHex(kt.trim(e))
        },
        run: _,
        getAttribs: y,
        isEmpty: function (e, t) {
          var n, r, o = 0;
          if (I(e)) return !1;
          if (e = e.firstChild) {
            var i = new Xr(e, e.parentNode),
              a = f ? f.getWhiteSpaceElements() : {};
            t = t || (f ? f.getNonEmptyElements() : null);
            do {
              if (n = e.nodeType, An(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 (I(e)) return !1
              }
              if (8 === n) return !1;
              if (3 === n && !Uo(e.nodeValue)) return !1;
              if (3 === n && e.parentNode && a[e.parentNode.nodeName] && Uo(e.nodeValue)) return !1;
              e = i.next()
            } while (e)
          }
          return o <= 1
        },
        createRng: M,
        nodeIndex: Su,
        split: function (e, t, n) {
          var r, o, i, a = M();
          if (e && t) return a.setStart(e.parentNode, Su(e)), a.setEnd(t.parentNode, Su(t)), r = a.extractContents(), (a = M()).setStart(t.parentNode, Su(t) + 1), a.setEnd(e.parentNode, Su(e) + 1), o = a.extractContents(), (i = e.parentNode).insertBefore(Yo(j, r), e), n ? i.insertBefore(n, e) : i.insertBefore(t, e), i.insertBefore(Yo(j, o), e), B(e), n || t
        },
        bind: F,
        unbind: U,
        fire: function (e, t, n) {
          return d.fire(e, t, n)
        },
        getContentEditable: z,
        getContentEditableParent: function (e) {
          for (var t = C(), n = null; e && e !== t && null === (n = z(e)); e = e.parentNode);
          return n
        },
        destroy: function () {
          if (0 < l.length)
            for (var e = l.length; e--;) {
              var t = l[e];
              d.unbind(t[0], t[1], t[2])
            }
          ue(n, function (e, t) {
            o.unload(t), delete n[t]
          }), Ta.setDocument && Ta.setDocument()
        },
        isChildOf: function (e, t) {
          for (; e;) {
            if (t === e) return !0;
            e = e.parentNode
          }
          return !1
        },
        dumpRng: function (e) {
          return "startContainer: " + e.startContainer.nodeName + ", startOffset: " + e.startOffset + ", endContainer: " + e.endContainer.nodeName + ", endOffset: " + e.endOffset
        }
      },
      H = wu(i, u, function () {
        return j
      });
    return j
  }(gu = Nu = Nu || {}).DOM = gu(document), gu.nodeIndex = Su;
  var Eu = Nu,
    ku = Eu.DOM,
    _u = kt.each,
    Au = kt.grep,
    Ru = (Tu.prototype._setReferrerPolicy = function (e) {
      this.settings.referrerPolicy = e
    }, Tu.prototype.loadScript = function (e, t, n) {
      var r = ku,
        o = function () {
          r.remove(i), a && (a.onerror = a.onload = a = null)
        },
        i = r.uniqueId(),
        a = document.createElement("script");
      a.id = i, a.type = "text/javascript", a.src = kt._addCacheSuffix(e), this.settings.referrerPolicy && r.setAttrib(a, "referrerpolicy", this.settings.referrerPolicy), a.onload = function () {
        o(), t()
      }, a.onerror = function () {
        o(), T(n) ? n() : "undefined" != typeof console && console.log && console.log("Failed to load script: " + e)
      }, (document.getElementsByTagName("head")[0] || document.body).appendChild(a)
    }, Tu.prototype.isDone = function (e) {
      return 2 === this.states[e]
    }, Tu.prototype.markDone = function (e) {
      this.states[e] = 2
    }, Tu.prototype.add = function (e, t, n, r) {
      var o = this.states[e];
      this.queue.push(e), o === undefined && (this.states[e] = 0), t && (this.scriptLoadedCallbacks[e] || (this.scriptLoadedCallbacks[e] = []), this.scriptLoadedCallbacks[e].push({
        success: t,
        failure: r,
        scope: n || this
      }))
    }, Tu.prototype.load = function (e, t, n, r) {
      return this.add(e, t, n, r)
    }, Tu.prototype.remove = function (e) {
      delete this.states[e], delete this.scriptLoadedCallbacks[e]
    }, Tu.prototype.loadQueue = function (e, t, n) {
      this.loadScripts(this.queue, e, t, n)
    }, Tu.prototype.loadScripts = function (n, e, t, r) {
      var o = this,
        i = [],
        a = function (t, e) {
          _u(o.scriptLoadedCallbacks[e], function (e) {
            T(e[t]) && e[t].call(e.scope)
          }), o.scriptLoadedCallbacks[e] = undefined
        };
      o.queueLoadedCallbacks.push({
        success: e,
        failure: r,
        scope: t || this
      });
      var u = function () {
        var e, t = Au(n);
        n.length = 0, _u(t, function (e) {
          2 !== o.states[e] ? 3 !== o.states[e] ? 1 !== o.states[e] && (o.states[e] = 1, o.loading++, o.loadScript(e, function () {
            o.states[e] = 2, o.loading--, a("success", e), u()
          }, function () {
            o.states[e] = 3, o.loading--, i.push(e), a("failure", e), u()
          })) : a("failure", e) : a("success", e)
        }), o.loading || (e = o.queueLoadedCallbacks.slice(0), o.queueLoadedCallbacks.length = 0, _u(e, function (e) {
          0 === i.length ? T(e.success) && e.success.call(e.scope) : T(e.failure) && e.failure.call(e.scope, i)
        }))
      };
      u()
    }, Tu.ScriptLoader = new Tu, Tu);

  function Tu(e) {
    void 0 === e && (e = {}), this.states = {}, this.queue = [], this.scriptLoadedCallbacks = {}, this.queueLoadedCallbacks = [], this.loading = 0, this.settings = e
  }
  var Du, Ou = function (e) {
      var t = e;
      return {
        get: function () {
          return t
        },
        set: function (e) {
          t = e
        }
      }
    },
    Bu = {},
    Pu = Ou("en"),
    Lu = function () {
      return ge(Bu, Pu.get())
    },
    Iu = {
      getData: function () {
        return se(Bu, function (e) {
          return ke({}, e)
        })
      },
      setCode: function (e) {
        e && Pu.set(e)
      },
      getCode: function () {
        return Pu.get()
      },
      add: function (e, t) {
        var n = Bu[e];
        n || (Bu[e] = n = {}), ue(t, function (e, t) {
          n[t.toLowerCase()] = e
        })
      },
      translate: function (e) {
        var t, n, r = Lu().getOr({}),
          o = function (e) {
            return T(e) ? Object.prototype.toString.call(e) : i(e) ? "" : "" + e
          },
          i = function (e) {
            return "" === e || null === e || e === undefined
          },
          a = function (e) {
            var t = o(e);
            return ge(r, t.toLowerCase()).map(o).getOr(t)
          },
          u = function (e) {
            return e.replace(/{context:\w+}$/, "")
          };
        if (i(e)) return "";
        if (_(t = e) && he(t, "raw")) return o(e.raw);
        if (S(n = e) && 1 < n.length) {
          var s = e.slice(1);
          return u(a(e[0]).replace(/\{([0-9]+)\}/g, function (e, t) {
            return he(s, t) ? o(s[t]) : e
          }))
        }
        return u(a(e))
      },
      isRtl: function () {
        return Lu().bind(function (e) {
          return ge(e, "_dir")
        }).exists(function (e) {
          return "rtl" === e
        })
      },
      hasCode: function (e) {
        return he(Bu, e)
      }
    };

  function Mu() {
    var r = this,
      o = [],
      s = {},
      c = {},
      i = [],
      l = function (t, n) {
        var e = H(i, function (e) {
          return e.name === t && e.state === n
        });
        W(e, function (e) {
          return e.callback()
        })
      },
      f = function (e) {
        var t;
        return c[e] && (t = c[e].dependencies), t || []
      },
      d = function (e, t) {
        return "object" == typeof t ? t : "string" == typeof e ? {
          prefix: "",
          resource: t,
          suffix: ""
        } : {
          prefix: e.prefix,
          resource: t,
          suffix: e.suffix
        }
      },
      m = function (o, i, a, u, e) {
        var t, n;
        s[o] || (0 !== (t = "string" == typeof i ? i : i.prefix + i.resource + i.suffix).indexOf("/") && -1 === t.indexOf("://") && (t = Mu.baseURL + "/" + t), s[o] = t.substring(0, t.lastIndexOf("/")), n = function () {
          var n, e, t, r;
          l(o, "loaded"), n = i, e = a, t = u, r = f(o), W(r, function (e) {
            var t = d(n, e);
            m(t.resource, t, undefined, undefined)
          }), e && (t ? e.call(t) : e.call(Ru))
        }, c[o] ? n() : Ru.ScriptLoader.add(t, n, u, e))
      },
      e = function (e, t, n) {
        void 0 === n && (n = "added"), he(c, e) && "added" === n || he(s, e) && "loaded" === n ? t() : i.push({
          name: e,
          state: n,
          callback: t
        })
      };
    return {
      items: o,
      urls: s,
      lookup: c,
      _listeners: i,
      get: function (e) {
        return c[e] ? c[e].instance : undefined
      },
      dependencies: f,
      requireLangPack: function (t, n) {
        !1 !== Mu.languageLoad && e(t, function () {
          var e = Iu.getCode();
          !e || n && -1 === ("," + (n || "") + ",").indexOf("," + e + ",") || Ru.ScriptLoader.add(s[t] + "/langs/" + e + ".js")
        }, "loaded")
      },
      add: function (e, t, n) {
        var r = t;
        return o.push(r), c[e] = {
          instance: r,
          dependencies: n
        }, l(e, "added"), r
      },
      remove: function (e) {
        delete s[e], delete c[e]
      },
      createUrl: d,
      addComponents: function (e, t) {
        var n = r.urls[e];
        W(t, function (e) {
          Ru.ScriptLoader.add(n + "/" + e)
        })
      },
      load: m,
      waitFor: e
    }
  }(Du = Mu = Mu || {}).PluginManager = Du(), Du.ThemeManager = Du();
  var Fu, Uu = Mu,
    zu = function (n, r) {
      var o = null;
      return {
        cancel: function () {
          null !== o && (clearTimeout(o), o = null)
        },
        throttle: function () {
          for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
          null === o && (o = setTimeout(function () {
            n.apply(null, e), o = null
          }, r))
        }
      }
    },
    ju = function (n, r) {
      var o = null;
      return {
        cancel: function () {
          null !== o && (clearTimeout(o), o = null)
        },
        throttle: function () {
          for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
          null !== o && clearTimeout(o), o = setTimeout(function () {
            n.apply(null, e), o = null
          }, r)
        }
      }
    },
    Hu = function (e, t) {
      var n = Gn(e, t);
      return n === undefined || "" === n ? [] : n.split(" ")
    },
    Vu = function (e) {
      return e.dom.classList !== undefined
    },
    qu = function (e, t) {
      return o = t, i = Hu(n = e, r = "class").concat([o]), Xn(n, r, i.join(" ")), !0;
      var n, r, o, i
    },
    $u = function (e, t) {
      return o = t, 0 < (i = H(Hu(n = e, r = "class"), function (e) {
        return e !== o
      })).length ? Xn(n, r, i.join(" ")) : Qn(n, r), !1;
      var n, r, o, i
    },
    Wu = function (e, t) {
      Vu(e) ? e.dom.classList.add(t) : qu(e, t)
    },
    Ku = function (e) {
      0 === (Vu(e) ? e.dom.classList : Hu(e, "class")).length && Qn(e, "class")
    },
    Xu = function (e, t) {
      return Vu(e) && e.dom.classList.contains(t)
    },
    Yu = function (e, t) {
      var n = [];
      return W(Gt(e), function (e) {
        t(e) && (n = n.concat([e])), n = n.concat(Yu(e, t))
      }), n
    },
    Gu = function (e, t) {
      return n = t, o = (r = e) === undefined ? document : r.dom, Dt(o) ? [] : z(o.querySelectorAll(n), At.fromDom);
      var n, r, o
    },
    Ju = E("mce-annotation"),
    Qu = E("data-mce-annotation"),
    Zu = E("data-mce-annotation-uid"),
    es = function (r, e) {
      var t = r.selection.getRng(),
        n = At.fromDom(t.startContainer),
        o = At.fromDom(r.getBody()),
        i = e.fold(function () {
          return "." + Ju()
        }, function (e) {
          return "[" + Qu() + '="' + e + '"]'
        }),
        a = Jt(n, t.startOffset).getOr(n),
        u = Or(a, i, function (e) {
          return Ot(e, o)
        }),
        s = function (e, t) {
          return n = t, (r = e.dom) && r.hasAttribute && r.hasAttribute(n) ? U.some(Gn(e, t)) : U.none();
          var n, r
        };
      return u.bind(function (e) {
        return s(e, "" + Zu()).bind(function (n) {
          return s(e, "" + Qu()).map(function (e) {
            var t = ts(r, n);
            return {
              uid: n,
              name: e,
              elements: t
            }
          })
        })
      })
    },
    ts = function (e, t) {
      var n = At.fromDom(e.getBody());
      return Gu(n, "[" + Zu() + '="' + t + '"]')
    },
    ns = function (i, e) {
      var a = Ou({}),
        c = function (e, t) {
          u(e, function (e) {
            return t(e), e
          })
        },
        u = function (e, t) {
          var n = a.get(),
            r = t(n.hasOwnProperty(e) ? n[e] : {
              listeners: [],
              previous: Ou(U.none())
            });
          n[e] = r, a.set(n)
        },
        t = ju(function () {
          var e, t, n, r = a.get(),
            o = (e = ie(r), (n = B.call(e, 0)).sort(t), n);
          W(o, function (e) {
            u(e, function (u) {
              var s = u.previous.get();
              return es(i, U.some(e)).fold(function () {
                var t;
                s.isSome() && (c(t = e, function (e) {
                  W(e.listeners, function (e) {
                    return e(!1, t)
                  })
                }), u.previous.set(U.none()))
              }, function (e) {
                var t, n, r, o = e.uid,
                  i = e.name,
                  a = e.elements;
                s.is(o) || (n = o, r = a, c(t = i, function (e) {
                  W(e.listeners, function (e) {
                    return e(!0, t, {
                      uid: n,
                      nodes: z(r, function (e) {
                        return e.dom
                      })
                    })
                  })
                }), u.previous.set(U.some(o)))
              }), {
                previous: u.previous,
                listeners: u.listeners
              }
            })
          })
        }, 30);
      i.on("remove", function () {
        t.cancel()
      }), i.on("NodeChange", function () {
        t.throttle()
      });
      return {
        addListener: function (e, t) {
          u(e, function (e) {
            return {
              previous: e.previous,
              listeners: e.listeners.concat([t])
            }
          })
        }
      }
    },
    rs = function (e, n) {
      e.on("init", function () {
        e.serializer.addNodeFilter("span", function (e) {
          W(e, function (t) {
            var e;
            e = t, U.from(e.attr(Qu())).bind(n.lookup).each(function (e) {
              !1 === e.persistent && t.unwrap()
            })
          })
        })
      })
    },
    os = 0,
    is = function (e) {
      var t = (new Date).getTime();
      return e + "_" + Math.floor(1e9 * Math.random()) + ++os + String(t)
    },
    as = function (e, t) {
      var n, r, o = Ht(e).dom,
        i = At.fromDom(o.createDocumentFragment()),
        a = (n = t, (r = (o || document).createElement("div")).innerHTML = n, Gt(At.fromDom(r)));
      dn(i, a), mn(e), fn(e, i)
    },
    us = function (e, t) {
      return At.fromDom(e.dom.cloneNode(t))
    },
    ss = function (e) {
      return us(e, !1)
    },
    cs = function (e) {
      return us(e, !0)
    },
    ls = function (e, t, n) {
      void 0 === n && (n = C);
      var r = new Xr(e, t),
        o = function (e) {
          for (var t;
            (t = r[e]()) && !In(t) && !n(t););
          return U.from(t).filter(In)
        };
      return {
        current: function () {
          return U.from(r.current()).filter(In)
        },
        next: function () {
          return o("next")
        },
        prev: function () {
          return o("prev")
        },
        prev2: function () {
          return o("prev2")
        }
      }
    },
    fs = function (t, e) {
      var i = e || function (e) {
          return t.isBlock(e) || zn(e) || Vn(e)
        },
        a = function (e, t, n, r) {
          if (In(e)) {
            var o = r(e, t, e.data);
            if (-1 !== o) return U.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 = ls(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 = ls(e, r, i);
          return a(e, t, function () {
            return o.next().map(function (e) {
              return {
                container: e,
                offset: 0
              }
            })
          }, n).getOrNull()
        }
      }
    },
    ds = function (e, t, n) {
      return e.isSome() && t.isSome() ? U.some(n(e.getOrDie(), t.getOrDie())) : U.none()
    },
    ms = Math.round,
    ps = function (e) {
      return e ? {
        left: ms(e.left),
        top: ms(e.top),
        bottom: ms(e.bottom),
        right: ms(e.right),
        width: ms(e.width),
        height: ms(e.height)
      } : {
        left: 0,
        top: 0,
        bottom: 0,
        right: 0,
        width: 0,
        height: 0
      }
    },
    gs = function (e, t) {
      return e = ps(e), t || (e.left = e.left + e.width), e.right = e.left, e.width = 0, e
    },
    hs = function (e, t, n) {
      return 0 <= e && e <= Math.min(t.height, n.height) / 2
    },
    vs = function (e, t) {
      var n = Math.min(t.height / 2, e.height / 2);
      return e.bottom - n < t.top || !(e.top > t.bottom) && hs(t.top - e.bottom, e, t)
    },
    ys = function (e, t) {
      return e.top > t.bottom || !(e.bottom < t.top) && hs(t.bottom - e.top, e, t)
    },
    bs = function (e, t, n) {
      return t >= e.left && t <= e.right && n >= e.top && n <= e.bottom
    },
    Cs = function (e) {
      var t = e.startContainer,
        n = e.startOffset;
      return t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null
    },
    ws = function (e, t) {
      return 1 === e.nodeType && e.hasChildNodes() && (t >= e.childNodes.length && (t = e.childNodes.length - 1), e = e.childNodes[t]), e
    },
    xs = 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]"),
    Ss = function (e) {
      return "string" == typeof e && 768 <= e.charCodeAt(0) && xs.test(e)
    },
    Ns = An,
    Es = Lo,
    ks = Tn("display", "block table"),
    _s = Tn("float", "left right"),
    As = 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
      }
    }(Ns, Es, d(_s)),
    Rs = d(Tn("white-space", "pre pre-line pre-wrap")),
    Ts = In,
    Ds = zn,
    Os = Eu.nodeIndex,
    Bs = ws,
    Ps = function (e) {
      return "createRange" in e ? e.createRange() : Eu.DOM.createRng()
    },
    Ls = function (e) {
      return e && /[\r\n\t ]/.test(e)
    },
    Is = function (e) {
      return !!e.setStart && !!e.setEnd
    },
    Ms = function (e) {
      var t, n = e.startContainer,
        r = e.startOffset;
      return !!(Ls(e.toString()) && Rs(n.parentNode) && In(n) && (t = n.data, Ls(t[r - 1]) || Ls(t[r + 1])))
    },
    Fs = function (e) {
      return 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom
    },
    Us = function (e) {
      var t = e.getClientRects(),
        n = 0 < t.length ? ps(t[0]) : ps(e.getBoundingClientRect());
      return !Is(e) && Ds(e) && Fs(n) ? function (e) {
        var t = e.ownerDocument,
          n = Ps(t),
          r = t.createTextNode(lo),
          o = e.parentNode;
        o.insertBefore(r, e), n.setStart(r, 0), n.setEnd(r, 1);
        var i = ps(n.getBoundingClientRect());
        return o.removeChild(r), i
      }(e) : Fs(n) && Is(e) ? function (e) {
        var t = e.startContainer,
          n = e.endContainer,
          r = e.startOffset,
          o = e.endOffset;
        if (t === n && In(n) && 0 === r && 1 === o) {
          var i = e.cloneRange();
          return i.setEndAfter(n), Us(i)
        }
        return null
      }(e) : n
    },
    zs = function (e, t) {
      var n = gs(e, t);
      return n.width = 1, n.right = n.left + 1, n
    },
    js = function (e) {
      var t, n, r = [],
        o = function (e) {
          var t, n;
          0 !== e.height && (0 < r.length && (t = e, n = r[r.length - 1], t.left === n.left && t.top === n.top && t.bottom === n.bottom && t.right === n.right) || r.push(e))
        },
        i = function (e, t) {
          var n = Ps(e.ownerDocument);
          if (t < e.data.length) {
            if (Ss(e.data[t])) return r;
            if (Ss(e.data[t - 1]) && (n.setStart(e, t), n.setEnd(e, t + 1), !Ms(n))) return o(zs(Us(n), !1)), r
          }
          0 < t && (n.setStart(e, t - 1), n.setEnd(e, t), Ms(n) || o(zs(Us(n), !1))), t < e.data.length && (n.setStart(e, t), n.setEnd(e, t + 1), Ms(n) || o(zs(Us(n), !0)))
        };
      if (Ts(e.container())) return i(e.container(), e.offset()), r;
      if (Ns(e.container()))
        if (e.isAtEnd()) n = Bs(e.container(), e.offset()), Ts(n) && i(n, n.data.length), As(n) && !Ds(n) && o(zs(Us(n), !1));
        else {
          if (n = Bs(e.container(), e.offset()), Ts(n) && i(n, 0), As(n) && e.isAtEnd()) return o(zs(Us(n), !1)), r;
          t = Bs(e.container(), e.offset() - 1), As(t) && !Ds(t) && (!ks(t) && !ks(n) && As(n) || o(zs(Us(t), !1))), As(n) && o(zs(Us(n), !0))
        } return r
    };

  function Hs(t, n, e) {
    var r = function () {
      return e = e || js(Hs(t, n))
    };
    return {
      container: E(t),
      offset: E(n),
      toRange: function () {
        var e = Ps(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 Bs(t, e ? n - 1 : n)
      }
    }
  }(Fu = Hs = Hs || {}).fromRangeStart = function (e) {
    return Fu(e.startContainer, e.startOffset)
  }, Fu.fromRangeEnd = function (e) {
    return Fu(e.endContainer, e.endOffset)
  }, Fu.after = function (e) {
    return Fu(e.parentNode, Os(e) + 1)
  }, Fu.before = function (e) {
    return Fu(e.parentNode, Os(e))
  }, Fu.isAbove = function (e, t) {
    return ds(ne(t.getClientRects()), re(e.getClientRects()), vs).getOr(!1)
  }, Fu.isBelow = function (e, t) {
    return ds(re(t.getClientRects()), ne(e.getClientRects()), ys).getOr(!1)
  }, Fu.isAtStart = function (e) {
    return !!e && e.isAtStart()
  }, Fu.isAtEnd = function (e) {
    return !!e && e.isAtEnd()
  }, Fu.isTextPosition = function (e) {
    return !!e && In(e.container())
  }, Fu.isElementPosition = function (e) {
    return !1 === Fu.isTextPosition(e)
  };
  var Vs, qs, $s = Hs,
    Ws = function (e, t) {
      In(t) && 0 === t.data.length && e.remove(t)
    },
    Ks = function (e, t, n) {
      var r, o, i, a, u, s, c;
      Un(n) ? (i = e, a = t, u = n, s = U.from(u.firstChild), c = U.from(u.lastChild), a.insertNode(u), s.each(function (e) {
        return Ws(i, e.previousSibling)
      }), c.each(function (e) {
        return Ws(i, e.nextSibling)
      })) : (r = e, o = n, t.insertNode(o), Ws(r, o.previousSibling), Ws(r, o.nextSibling))
    },
    Xs = In,
    Ys = On,
    Gs = Eu.nodeIndex,
    Js = function (e) {
      var t = e.parentNode;
      return Ys(t) ? Js(t) : t
    },
    Qs = function (e) {
      return e ? Se(e.childNodes, function (e, t) {
        return Ys(t) && "BR" !== t.nodeName ? e = e.concat(Qs(t)) : e.push(t), e
      }, []) : []
    },
    Zs = function (t) {
      return function (e) {
        return t === e
      }
    },
    ec = function (e) {
      var t = Xs(e) ? "text()" : e.nodeName.toLowerCase();
      return t + "[" + function (e) {
        var r = Qs(Js(e)),
          t = Ne(r, Zs(e), e);
        r = r.slice(0, t + 1);
        var n = Se(r, function (e, t, n) {
          return Xs(t) && Xs(r[n - 1]) && e++, e
        }, 0);
        return r = we(r, Rn([e.nodeName])), (t = Ne(r, Zs(e), e)) - n
      }(e) + "]"
    },
    tc = function (e, t) {
      var n, r, o, i = [],
        a = t.container(),
        u = t.offset();
      return Xs(a) ? n = function (e, t) {
        for (;
          (e = e.previousSibling) && Xs(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(ec(a)), o = function (e, t, n) {
        var r = [];
        for (t = t.parentNode; t !== e && (!n || !n(t)); t = t.parentNode) r.push(t);
        return r
      }(e, a), o = we(o, d(On)), (i = i.concat(Ce(o, ec))).reverse().join("/") + "," + n
    },
    nc = function (e, t) {
      if (!t) return null;
      var n = t.split(","),
        r = n[0].split("/"),
        o = 1 < n.length ? n[1] : "before",
        i = Se(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 = Qs(n), i = we(i, function (e, t) {
            return !Xs(e) || !Xs(i[t - 1])
          }), (i = we(i, Rn([r])))[o]) : null
        }, e);
      return i ? Xs(i) ? function (e, t) {
        for (var n, r = e, o = 0; Xs(r);) {
          if (n = r.data.length, o <= t && t <= o + n) {
            e = r, t -= o;
            break
          }
          if (!Xs(r.nextSibling)) {
            e = r, t = n;
            break
          }
          o += n, r = r.nextSibling
        }
        return Xs(e) && t > e.data.length && (t = e.data.length), $s(e, t)
      }(i, parseInt(o, 10)) : (o = "after" === o ? Gs(i) + 1 : Gs(i), $s(i.parentNode, o)) : null
    },
    rc = Vn,
    oc = function (e, t, n, r, o) {
      var i, a = r[o ? "startContainer" : "endContainer"],
        u = r[o ? "startOffset" : "endOffset"],
        s = [],
        c = 0,
        l = e.getRoot();
      for (In(a) ? s.push(n ? function (e, t, n) {
          for (var r = e(t.data.slice(0, n)).length, o = t.previousSibling; o && In(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
    },
    ic = function (e, t, n) {
      var r = 0;
      return kt.each(e.select(t), function (e) {
        if ("all" !== e.getAttribute("data-mce-bogus")) return e !== n && void r++
      }), r
    },
    ac = function (e, t) {
      var n, r = t ? "start" : "end",
        o = e[r + "Container"],
        i = e[r + "Offset"];
      An(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))
    },
    uc = function (e) {
      return ac(e, !0), ac(e, !1), e
    },
    sc = function (e, t) {
      var n;
      if (An(e) && (e = ws(e, t), rc(e))) return e;
      if (bo(e)) {
        if (In(e) && vo(e) && (e = e.parentNode), n = e.previousSibling, rc(n)) return n;
        if (n = e.nextSibling, rc(n)) return n
      }
    },
    cc = function (e, t, n) {
      var r = n.getNode(),
        o = r ? r.nodeName : null,
        i = n.getRng();
      if (rc(r) || "IMG" === o) return {
        name: o,
        index: ic(n.dom, o, r)
      };
      var a, u, s, c, l, f, d, m = sc((a = i).startContainer, a.startOffset) || sc(a.endContainer, a.endOffset);
      return m ? {
        name: o = m.tagName,
        index: ic(n.dom, o, m)
      } : (u = e, c = t, l = i, f = (s = n).dom, (d = {}).start = oc(f, u, c, l, !0), s.isCollapsed() || (d.end = oc(f, u, c, l, !1)), d)
    },
    lc = function (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)
    },
    fc = function (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: ic(n, u, a)
      };
      var s, c = uc(r.cloneRange());
      i || (c.collapse(!1), s = lc(n, o + "_end", t), Ks(n, c, s)), (r = uc(r)).collapse(!0);
      var l = lc(n, o + "_start", t);
      return Ks(n, r, l), e.moveToBookmark({
        id: o,
        keep: !0
      }), {
        id: o
      }
    },
    dc = function (e, t, n) {
      return 2 === t ? cc(po, n, e) : 3 === t ? (o = (r = e).getRng(), {
        start: tc(r.dom.getRoot(), $s.fromRangeStart(o)),
        end: tc(r.dom.getRoot(), $s.fromRangeEnd(o))
      }) : t ? {
        rng: e.getRng()
      } : fc(e, !1);
      var r, o
    },
    mc = N(cc, o, !0),
    pc = Eu.DOM,
    gc = function (e, t, n) {
      var r = e.getParam(t, n);
      if (-1 === r.indexOf("=")) return r;
      var o = e.getParam(t, "", "hash");
      return o.hasOwnProperty(e.id) ? o[e.id] : n
    },
    hc = function (e) {
      return e.getParam("content_security_policy", "")
    },
    vc = function (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
    },
    yc = function (e) {
      return e.getParam("forced_root_block_attrs", {})
    },
    bc = function (e) {
      return e.getParam("automatic_uploads", !0, "boolean")
    },
    Cc = function (e) {
      return e.getParam("icons", "", "string")
    },
    wc = function (e) {
      return e.getParam("referrer_policy", "", "string")
    },
    xc = function (e) {
      return e.getParam("language", "en", "string")
    },
    Sc = function (e) {
      return e.getParam("indent_use_margin", !1)
    },
    Nc = function (e) {
      var t = e.getParam("object_resizing");
      return !1 !== t && !wt.iOS && (q(t) ? t : "table,img,figure.image,div")
    },
    Ec = function (e) {
      return e.getParam("event_root")
    },
    kc = function (e) {
      return e.getParam("theme")
    },
    _c = function (e) {
      return !1 !== e.getParam("inline_boundaries")
    },
    Ac = function (e) {
      return e.getParam("plugins", "", "string")
    },
    Rc = An,
    Tc = In,
    Dc = function (e) {
      var t = e.parentNode;
      t && t.removeChild(e)
    },
    Oc = function (e) {
      var t = po(e);
      return {
        count: e.length - t.length,
        text: t
      }
    },
    Bc = function (e) {
      for (var t; - 1 !== (t = e.data.lastIndexOf(fo));) e.deleteData(t, 1)
    },
    Pc = function (e, t) {
      return Fc(e), t
    },
    Lc = function (e, t) {
      var n, r, o = t.container(),
        i = (n = oe(o.childNodes), (-1 === (r = I(n, e)) ? U.none() : U.some(r)).map(function (e) {
          return e < t.offset() ? $s(o, t.offset() - 1) : t
        }).getOr(t));
      return Fc(e), i
    },
    Ic = function (e, t) {
      return Tc(e) && t.container() === e ? (r = t, o = Oc((n = e).data.substr(0, r.offset())), i = Oc(n.data.substr(r.offset())), 0 < (o.text + i.text).length ? (Bc(n), $s(n, r.offset() - o.count)) : r) : Pc(e, t);
      var n, r, o, i
    },
    Mc = function (e, t) {
      return $s.isTextPosition(t) ? Ic(e, t) : (n = e, ((r = t).container() === n.parentNode ? Lc : Pc)(n, r));
      var n, r
    },
    Fc = function (e) {
      Rc(e) && bo(e) && (Co(e) ? e.removeAttribute("data-mce-caret") : Dc(e)), Tc(e) && (Bc(e), 0 === e.data.length && Dc(e))
    },
    Uc = dt().browser,
    zc = Vn,
    jc = $n,
    Hc = qn,
    Vc = function (e, t, n) {
      var r, o, i, a, u = gs(t.getBoundingClientRect(), n),
        s = "BODY" === e.tagName ? (r = e.ownerDocument.documentElement, o = e.scrollLeft || r.scrollLeft, e.scrollTop || r.scrollTop) : (a = e.getBoundingClientRect(), o = e.scrollLeft - a.left, e.scrollTop - a.top);
      return u.left += o, u.right += o, u.top += s, u.bottom += s, u.width = 1, 0 < (i = t.offsetWidth - t.clientWidth) && (n && (i *= -1), u.left += i, u.right += i), u
    },
    qc = function (e, i, a, t) {
      var n, u, s = Ou(U.none()),
        r = vc(e),
        c = 0 < r.length ? r : "p",
        l = function () {
          ! function (e) {
            for (var t = Gu(At.fromDom(e), "*[contentEditable=false],video,audio,embed,object"), n = 0; n < t.length; n++) {
              var r, o = t[n].dom,
                i = o.previousSibling;
              Eo(i) && (1 === (r = i.data).length ? i.parentNode.removeChild(i) : i.deleteData(r.length - 1, 1)), i = o.nextSibling, No(i) && (1 === (r = i.data).length ? i.parentNode.removeChild(i) : i.deleteData(0, 1))
            }
          }(i), u && (Fc(u), u = null), s.get().each(function (e) {
            hu(e.caret).remove(), s.set(U.none())
          }), n && (qr.clearInterval(n), n = null)
        },
        f = function () {
          n = qr.setInterval(function () {
            t() ? hu("div.mce-visual-caret", i).toggleClass("mce-visual-caret-hidden") : hu("div.mce-visual-caret", i).addClass("mce-visual-caret-hidden")
          }, 500)
        };
      return {
        show: function (t, e) {
          var n, r;
          if (l(), Hc(e)) return null;
          if (!a(e)) return u = function (e, t) {
            var n, r = e.ownerDocument.createTextNode(fo),
              o = e.parentNode;
            if (t) {
              if (n = e.previousSibling, ho(n)) {
                if (bo(n)) return n;
                if (Eo(n)) return n.splitText(n.data.length - 1)
              }
              o.insertBefore(r, e)
            } else {
              if (n = e.nextSibling, ho(n)) {
                if (bo(n)) return n;
                if (No(n)) return n.splitText(1), n
              }
              e.nextSibling ? o.insertBefore(r, e.nextSibling) : o.appendChild(r)
            }
            return r
          }(e, t), r = e.ownerDocument.createRange(), Wc(u.nextSibling) ? (r.setStart(u, 0), r.setEnd(u, 0)) : (r.setStart(u, 1), r.setEnd(u, 1)), r;
          u = So(c, e, t), n = Vc(i, e, t), hu(u).css("top", n.top);
          var o = hu('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(i)[0];
          return s.set(U.some({
            caret: o,
            element: e,
            before: t
          })), s.get().each(function (e) {
            t && hu(e.caret).addClass("mce-visual-caret-before")
          }), f(), (r = e.ownerDocument.createRange()).setStart(u, 0), r.setEnd(u, 0), r
        },
        hide: l,
        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 () {
          s.get().each(function (e) {
            var t = Vc(i, e.element, e.before);
            hu(e.caret).css(ke({}, t))
          })
        },
        destroy: function () {
          return qr.clearInterval(n)
        }
      }
    },
    $c = function () {
      return Uc.isIE() || Uc.isEdge() || Uc.isFirefox()
    },
    Wc = function (e) {
      return zc(e) || jc(e)
    },
    Kc = function (e) {
      return Wc(e) || Bn(e) && $c()
    },
    Xc = Vn,
    Yc = $n,
    Gc = Tn("display", "block table table-cell table-caption list-item"),
    Jc = bo,
    Qc = vo,
    Zc = An,
    el = Lo,
    tl = function (e, t) {
      for (var n; n = e(t);)
        if (!Qc(n)) return n;
      return null
    },
    nl = function (e, t, n, r, o) {
      var i = new Xr(e, r),
        a = Xc(e) || Qc(e);
      if (t < 0) {
        if (a && n(e = tl(i.prev, !0))) return e;
        for (; e = tl(i.prev, o);)
          if (n(e)) return e
      }
      if (0 < t) {
        if (a && n(e = tl(i.next, !0))) return e;
        for (; e = tl(i.next, o);)
          if (n(e)) return e
      }
      return null
    },
    rl = function (e, t) {
      for (; e && e !== t;) {
        if (Gc(e)) return e;
        e = e.parentNode
      }
      return null
    },
    ol = function (e, t, n) {
      return rl(e.container(), n) === rl(t.container(), n)
    },
    il = function (e, t) {
      if (!t) return null;
      var n = t.container(),
        r = t.offset();
      return Zc(n) ? n.childNodes[r + e] : null
    },
    al = function (e, t) {
      var n = t.ownerDocument.createRange();
      return e ? (n.setStartBefore(t), n.setEndBefore(t)) : (n.setStartAfter(t), n.setEndAfter(t)), n
    },
    ul = function (e, t, n) {
      for (var r, o, i, a = e ? "previousSibling" : "nextSibling"; n && n !== t;) {
        if (r = n[a], Jc(r) && (r = r[a]), Xc(r) || Yc(r)) {
          if (i = n, rl(r, o = t) === rl(i, o)) return r;
          break
        }
        if (el(r)) break;
        n = n.parentNode
      }
      return null
    },
    sl = N(al, !0),
    cl = N(al, !1),
    ll = function (e, t, n) {
      var r, o, i = N(ul, !0, t),
        a = N(ul, !1, t),
        u = n.startContainer,
        s = n.startOffset;
      if (vo(u)) {
        if (Zc(u) || (u = u.parentNode), "before" === (o = u.getAttribute("data-mce-caret")) && (r = u.nextSibling, Kc(r))) return sl(r);
        if ("after" === o && (r = u.previousSibling, Kc(r))) return cl(r)
      }
      if (!n.collapsed) return n;
      if (In(u)) {
        if (Jc(u)) {
          if (1 === e) {
            if (r = a(u)) return sl(r);
            if (r = i(u)) return cl(r)
          }
          if (-1 === e) {
            if (r = i(u)) return cl(r);
            if (r = a(u)) return sl(r)
          }
          return n
        }
        if (Eo(u) && s >= u.data.length - 1) return 1 === e && (r = a(u)) ? sl(r) : n;
        if (No(u) && s <= 1) return -1 === e && (r = i(u)) ? cl(r) : n;
        if (s === u.data.length) return (r = a(u)) ? sl(r) : n;
        if (0 === s) return (r = i(u)) ? cl(r) : n
      }
      return n
    },
    fl = function (e, t) {
      return U.from(il(e ? 0 : -1, t)).filter(Xc)
    },
    dl = function (e, t, n) {
      var r = ll(e, t, n);
      return -1 === e ? Hs.fromRangeStart(r) : Hs.fromRangeEnd(r)
    },
    ml = function (e) {
      return U.from(e.getNode()).map(At.fromDom)
    },
    pl = function (e, t) {
      for (; t = e(t);)
        if (t.isVisible()) return t;
      return t
    },
    gl = function (e, t) {
      var n = ol(e, t);
      return !(n || !zn(e.getNode())) || n
    };
  (qs = Vs = Vs || {})[qs.Backwards = -1] = "Backwards", qs[qs.Forwards = 1] = "Forwards";
  var hl, vl = Vn,
    yl = In,
    bl = An,
    Cl = zn,
    wl = Lo,
    xl = function (e) {
      return Oo(e) || !!Io(t = e) && !0 !== X(oe(t.getElementsByTagName("*")), function (e, t) {
        return e || _o(t)
      }, !1);
      var t
    },
    Sl = Mo,
    Nl = function (e, t) {
      return e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null
    },
    El = function (e, t) {
      if (0 < e) {
        if (wl(t.previousSibling) && !yl(t.previousSibling)) return $s.before(t);
        if (yl(t)) return $s(t, 0)
      }
      if (e < 0) {
        if (wl(t.nextSibling) && !yl(t.nextSibling)) return $s.after(t);
        if (yl(t)) return $s(t, t.data.length)
      }
      return !(e < 0) || Cl(t) ? $s.before(t) : $s.after(t)
    },
    kl = function (e, t, n) {
      var r, o, i, a;
      if (!bl(n) || !t) return null;
      if (t.isEqual($s.after(n)) && n.lastChild) {
        if (a = $s.after(n.lastChild), e < 0 && wl(n.lastChild) && bl(n.lastChild)) return Cl(n.lastChild) ? $s.before(n.lastChild) : a
      } else a = t;
      var u, s, c, l = a.container(),
        f = a.offset();
      if (yl(l)) {
        if (e < 0 && 0 < f) return $s(l, --f);
        if (0 < e && f < l.length) return $s(l, ++f);
        r = l
      } else {
        if (e < 0 && 0 < f && (o = Nl(l, f - 1), wl(o))) return !xl(o) && (i = nl(o, e, Sl, o)) ? yl(i) ? $s(i, i.data.length) : $s.after(i) : yl(o) ? $s(o, o.data.length) : $s.before(o);
        if (0 < e && f < l.childNodes.length && (o = Nl(l, f), wl(o))) return Cl(o) ? (u = n, (c = (s = o).nextSibling) && wl(c) ? yl(c) ? $s(c, 0) : $s.before(c) : kl(Vs.Forwards, $s.after(s), u)) : !xl(o) && (i = nl(o, e, Sl, o)) ? yl(i) ? $s(i, 0) : $s.before(i) : yl(o) ? $s(o, 0) : $s.after(o);
        r = o || a.getNode()
      }
      if ((0 < e && a.isAtEnd() || e < 0 && a.isAtStart()) && (r = nl(r, e, k, n, !0), Sl(r, n))) return El(e, r);
      o = nl(r, e, Sl, n);
      var d = Ee(H(function (e, t) {
        for (var n = []; e && e !== t;) n.push(e), e = e.parentNode;
        return n
      }(l, n), vl));
      return !d || o && d.contains(o) ? o ? El(e, o) : null : a = 0 < e ? $s.after(d) : $s.before(d)
    },
    _l = function (t) {
      return {
        next: function (e) {
          return kl(Vs.Forwards, e, t)
        },
        prev: function (e) {
          return kl(Vs.Backwards, e, t)
        }
      }
    },
    Al = function (e) {
      return $s.isTextPosition(e) ? 0 === e.offset() : Lo(e.getNode())
    },
    Rl = function (e) {
      if ($s.isTextPosition(e)) {
        var t = e.container();
        return e.offset() === t.data.length
      }
      return Lo(e.getNode(!0))
    },
    Tl = function (e, t) {
      return !$s.isTextPosition(e) && !$s.isTextPosition(t) && e.getNode() === t.getNode(!0)
    },
    Dl = function (e, t, n) {
      return e ? !Tl(t, n) && (r = t, !(!$s.isTextPosition(r) && zn(r.getNode()))) && Rl(t) && Al(n) : !Tl(n, t) && Al(t) && Rl(n);
      var r
    },
    Ol = function (e, t, n) {
      var r = _l(t);
      return U.from(e ? r.next(n) : r.prev(n))
    },
    Bl = function (t, n, r) {
      return Ol(t, n, r).bind(function (e) {
        return ol(r, e, n) && Dl(t, r, e) ? Ol(t, n, e) : U.some(e)
      })
    },
    Pl = function (t, n, e, r) {
      return Bl(t, n, e).bind(function (e) {
        return r(e) ? Pl(t, n, e, r) : U.some(e)
      })
    },
    Ll = function (e, t) {
      var n, r, o, i, a, u = e ? t.firstChild : t.lastChild;
      return In(u) ? U.some($s(u, e ? 0 : u.data.length)) : u ? Lo(u) ? U.some(e ? $s.before(u) : zn(a = u) ? $s.before(a) : $s.after(a)) : (r = t, o = u, i = (n = e) ? $s.before(o) : $s.after(o), Ol(n, r, i)) : U.none()
    },
    Il = N(Ol, !0),
    Ml = N(Ol, !1),
    Fl = N(Ll, !0),
    Ul = N(Ll, !1),
    zl = "_mce_caret",
    jl = function (e) {
      return An(e) && e.id === zl
    },
    Hl = function (e, t) {
      for (; t && t !== e;) {
        if (t.id === zl) return t;
        t = t.parentNode
      }
      return null
    },
    Vl = function (e, t) {
      return An(t) && e.isBlock(t) && !t.innerHTML && !wt.ie && (t.innerHTML = '<br data-mce-bogus="1" />'), t
    },
    ql = function (e, t, n) {
      return !(!1 !== t.hasChildNodes() || !Hl(e, t)) && (o = n, i = (r = t).ownerDocument.createTextNode(fo), r.appendChild(i), o.setStart(i, 0), o.setEnd(i, 0), !0);
      var r, o, i
    },
    $l = function (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, ql(c, i, r)) return !0;
          if (s[o] > u.length - 1) return !!ql(c, i, r) || function (e, t) {
            return Ul(e).fold(function () {
              return !1
            }, function (e) {
              return t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0
            })
          }(i, 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 !0
    },
    Wl = function (e) {
      return In(e) && 0 < e.data.length
    },
    Kl = function (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, s = (u = (o = "start" === t ? l ? c.hasChildNodes() ? (r = c.firstChild, 1) : Wl(c.nextSibling) ? (r = c.nextSibling, 0) : Wl(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) : Wl(c.previousSibling) ? (r = c.previousSibling, c.previousSibling.data.length) : (r = c.parentNode, e.nodeIndex(c)) : e.nodeIndex(c), r), o), !l) {
          for (a = c.previousSibling, i = c.nextSibling, kt.each(kt.grep(c.childNodes), function (e) {
              In(e) && (e.nodeValue = e.nodeValue.replace(/\uFEFF/g, ""))
            }); c = e.get(n.id + "_" + t);) e.remove(c, !0);
          a && i && a.nodeType === i.nodeType && In(a) && !wt.opera && (o = a.nodeValue.length, a.appendData(i.nodeValue), e.remove(i), u = a, s = o)
        }
        return U.some($s(u, s))
      }
      return U.none()
    },
    Xl = function (e, t) {
      var n, r, o, i, a, u, s, c, l, f, d, m, p, g, h = e.dom;
      if (t) {
        if (g = t, kt.isArray(g.start)) return m = t, p = (d = h).createRng(), $l(d, !0, m, p) && $l(d, !1, m, p) ? U.some(p) : U.none();
        if ("string" == typeof t.start) return U.some((c = t, l = (s = h).createRng(), f = nc(s.getRoot(), c.start), l.setStart(f.container(), f.offset()), f = nc(s.getRoot(), c.end), l.setEnd(f.container(), f.offset()), l));
        if (t.hasOwnProperty("id")) return a = Kl(o = h, "start", i = t), u = Kl(o, "end", i), ds(a, u.or(a), function (e, t) {
          var n = o.createRng();
          return n.setStart(Vl(o, e.container()), e.offset()), n.setEnd(Vl(o, t.container()), t.offset()), n
        });
        if (t.hasOwnProperty("name")) return n = h, r = t, U.from(n.select(r.name)[r.index]).map(function (e) {
          var t = n.createRng();
          return t.selectNode(e), t
        });
        if (t.hasOwnProperty("rng")) return U.some(t.rng)
      }
      return U.none()
    },
    Yl = dc,
    Gl = function (t, e) {
      Xl(t, e).each(function (e) {
        t.setRng(e)
      })
    },
    Jl = function (e) {
      return An(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type")
    },
    Ql = (hl = lo, function (e) {
      return hl === e
    }),
    Zl = function (e) {
      return "" !== e && -1 !== " \f\n\r\t\x0B".indexOf(e)
    },
    ef = function (e) {
      return !Zl(e) && !Ql(e)
    },
    tf = function (e) {
      return !!e.nodeType
    },
    nf = function (e, t, n) {
      var r, o, i, a, u = n.startOffset,
        s = n.startContainer;
      if ((n.startContainer !== n.endContainer || !(a = n.startContainer.childNodes[n.startOffset]) || !/^(IMG)$/.test(a.nodeName)) && 1 === s.nodeType)
        for (u < (i = s.childNodes).length ? (s = i[u], r = new Xr(s, e.getParent(s, e.isBlock))) : (s = i[i.length - 1], (r = new Xr(s, e.getParent(s, e.isBlock))).next(!0)), o = r.current(); o; o = r.next())
          if (3 === o.nodeType && !uf(o)) return n.setStart(o, 0), void t.setRng(n)
    },
    rf = function (e, t, n) {
      if (e) {
        var r = t ? "nextSibling" : "previousSibling";
        for (e = n ? e : e[r]; e; e = e[r])
          if (1 === e.nodeType || !uf(e)) return e
      }
    },
    of = function (e, t) {
      return tf(t) && (t = t.nodeName), !!e.schema.getTextBlockElements()[t.toLowerCase()]
    },
    af = function (e, t, n) {
      return e.schema.isValidChild(t, n)
    },
    uf = function (e, t) {
      if (void 0 === t && (t = !1), D(e) && In(e)) {
        var n = t ? e.data.replace(/ /g, "\xa0") : e.data;
        return Uo(n)
      }
      return !1
    },
    sf = function (e, n) {
      return "string" != typeof e ? e = e(n) : n && (e = e.replace(/%(\w+)/g, function (e, t) {
        return n[t] || e
      })), e
    },
    cf = function (e, t) {
      return e = "" + ((e = e || "").nodeName || e), t = "" + ((t = t || "").nodeName || t), e.toLowerCase() === t.toLowerCase()
    },
    lf = function (e, t, n) {
      return "color" !== n && "backgroundColor" !== n || (t = e.toHex(t)), "fontWeight" === n && 700 === t && (t = "bold"), "fontFamily" === n && (t = t.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")), "" + t
    },
    ff = function (e, t, n) {
      return lf(e, e.getStyle(t, n), n)
    },
    df = function (t, e) {
      var n;
      return t.getParent(e, function (e) {
        return (n = t.getStyle(e, "text-decoration")) && "none" !== n
      }), n
    },
    mf = function (e, t, n) {
      return e.getParents(t, n, e.getRoot())
    },
    pf = function (t, e, n) {
      var r = ["inline", "block", "selector", "attributes", "styles", "classes"],
        a = function (e) {
          return me(e, function (e, t) {
            return F(r, function (e) {
              return e === t
            })
          })
        };
      return F(t.formatter.get(e), function (e) {
        var i = a(e);
        return F(t.formatter.get(n), function (e) {
          var t, n, r, o = a(e);
          return t = i, n = o, void 0 === r && (r = l), u(r).eq(t, n)
        })
      })
    },
    gf = function (e) {
      return ve(e, "block")
    },
    hf = function (e) {
      return ve(e, "selector")
    },
    vf = function (e) {
      return ve(e, "inline")
    },
    yf = Jl,
    bf = mf,
    Cf = uf,
    wf = of ,
    xf = function (e, t) {
      for (var n = t; n;) {
        if (An(n) && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t;
        n = n.parentNode
      }
      return t
    },
    Sf = function (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
    },
    Nf = function (e, t, n) {
      return Sf(e, t, n, function (e) {
        return Ql(e) || Zl(e)
      })
    },
    Ef = function (e, t, n) {
      return Sf(e, t, n, ef)
    },
    kf = function (i, e, t, n, a, r) {
      var u, s = i.getParent(t, i.isBlock) || e,
        o = function (e, t, n) {
          var r = fs(i),
            o = a ? r.backwards : r.forwards;
          return U.from(o(e, t, function (e, t) {
            return yf(e.parentNode) ? -1 : n(a, u = e, t)
          }, s))
        };
      return o(t, n, Nf).bind(function (e) {
        return r ? o(e.container, e.offset + (a ? -1 : 0), Ef) : U.some(e)
      }).orThunk(function () {
        return u ? U.some({
          container: u,
          offset: a ? 0 : u.length
        }) : U.none()
      })
    },
    _f = function (e, t, n, r, o) {
      In(r) && 0 === r.nodeValue.length && r[o] && (r = r[o]);
      for (var i = bf(e, r), a = 0; a < i.length; a++)
        for (var u = 0; u < t.length; u++) {
          var s = t[u];
          if (!("collapsed" in s && s.collapsed !== n.collapsed) && e.is(i[a], s.selector)) return i[a]
        }
      return r
    },
    Af = function (t, e, n, r) {
      var o, i, a = t.dom,
        u = a.getRoot();
      if (e[0].wrapper || (i = a.getParent(n, e[0].block, u)), i || (o = a.getParent(n, "LI,TD,TH"), i = a.getParent(In(n) ? n.parentNode : n, function (e) {
          return e !== u && wf(t, e)
        }, o)), i && e[0].wrapper && (i = bf(a, i, "ul,ol").reverse()[0] || i), !i)
        for (i = n; i[r] && !a.isBlock(i[r]) && (i = i[r], !cf(i, "br")););
      return i || n
    },
    Rf = function (e, t, n, r) {
      var o = n.parentNode;
      return !D(n[r]) && (!(o !== t && !$(o) && !e.isBlock(o)) || Rf(e, t, o, r))
    },
    Tf = function (e, t, n, r, o) {
      var i, a, u = n,
        s = o ? "previousSibling" : "nextSibling",
        c = e.getRoot();
      if (In(n) && !Cf(n) && (o ? 0 < r : r < n.data.length)) return n;
      for (;;) {
        if (!t[0].block_expand && e.isBlock(u)) return u;
        for (i = u[s]; i; i = i[s]) {
          var l = In(i) && !Rf(e, c, i, s);
          if (!yf(i) && (!zn(a = i) || !a.getAttribute("data-mce-bogus") || a.nextSibling) && !Cf(i, l)) return u
        }
        if (u === c || u.parentNode === c) {
          n = u;
          break
        }
        u = u.parentNode
      }
      return n
    },
    Df = function (e) {
      return yf(e.parentNode) || yf(e)
    },
    Of = function (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;
      return An(o) && o.hasChildNodes() && (o = ws(o, i), In(o) && (i = 0)), An(a) && a.hasChildNodes() && (a = ws(a, t.collapsed ? u : u - 1), In(a) && (u = a.nodeValue.length)), o = xf(s, o), a = xf(s, a), Df(o) && (o = yf(o) ? o : o.parentNode, o = t.collapsed ? o.previousSibling || o : o.nextSibling || o, In(o) && (i = t.collapsed ? o.length : 0)), Df(a) && (a = yf(a) ? a : a.parentNode, a = t.collapsed ? a.nextSibling || a : a.previousSibling || a, In(a) && (u = t.collapsed ? 0 : a.length)), t.collapsed && (kf(s, e.getBody(), o, i, !0, r).each(function (e) {
        var t = e.container,
          n = e.offset;
        o = t, i = n
      }), kf(s, e.getBody(), a, u, !1, r).each(function (e) {
        var t = e.container,
          n = e.offset;
        a = t, u = n
      })), (n[0].inline || n[0].block_expand) && (n[0].inline && In(o) && 0 !== i || (o = Tf(s, n, o, i, !0)), n[0].inline && In(a) && u !== a.nodeValue.length || (a = Tf(s, n, a, u, !1))), n[0].selector && !1 !== n[0].expand && !n[0].inline && (o = _f(s, n, t, o, "previousSibling"), a = _f(s, n, t, a, "nextSibling")), (n[0].block || n[0].selector) && (o = Af(e, n, o, "previousSibling"), a = Af(e, n, a, "nextSibling"), n[0].block && (s.isBlock(o) || (o = Tf(s, n, o, i, !0)), s.isBlock(a) || (a = Tf(s, n, a, u, !1)))), An(o) && (i = s.nodeIndex(o), o = o.parentNode), An(a) && (u = s.nodeIndex(a) + 1, a = a.parentNode), {
        startContainer: o,
        startOffset: i,
        endContainer: a,
        endOffset: u
      }
    },
    Bf = function (e, t) {
      var n = e.childNodes;
      return t >= n.length ? t = n.length - 1 : t < 0 && (t = 0), n[t] || e
    },
    Pf = function (e, t, u) {
      var n = t.startContainer,
        r = t.startOffset,
        o = t.endContainer,
        i = t.endOffset,
        s = function (e) {
          var t = e[0];
          return 3 === t.nodeType && t === n && r >= t.nodeValue.length && e.splice(0, 1), t = e[e.length - 1], 0 === i && 0 < e.length && t === o && 3 === t.nodeType && e.splice(e.length - 1, 1), e
        },
        c = function (e, t, n) {
          for (var r = []; e && e !== n; e = e[t]) r.push(e);
          return r
        },
        a = function (e, t) {
          do {
            if (e.parentNode === t) return e;
            e = e.parentNode
          } while (e)
        },
        l = function (e, t, n) {
          for (var r = n ? "nextSibling" : "previousSibling", o = e, i = o.parentNode; o && o !== t; o = i) {
            i = o.parentNode;
            var a = c(o === e ? o : o[r], r);
            a.length && (n || a.reverse(), u(s(a)))
          }
        };
      if (1 === n.nodeType && n.hasChildNodes() && (n = Bf(n, r)), 1 === o.nodeType && o.hasChildNodes() && (o = Bf(o, i - 1)), n === o) return u(s([n]));
      for (var f = e.findCommonAncestor(n, o), d = n; d; d = d.parentNode) {
        if (d === o) return l(n, f, !0);
        if (d === f) break
      }
      for (d = o; d; d = d.parentNode) {
        if (d === n) return l(o, f);
        if (d === f) break
      }
      var m = a(n, f) || n,
        p = a(o, f) || o;
      l(n, m, !0);
      var g = c(m === n ? m : m.nextSibling, "nextSibling", p === o ? p.nextSibling : p);
      g.length && u(s(g)), l(o, p)
    },
    Lf = function (e) {
      var t = [];
      if (e)
        for (var n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n));
      return t
    },
    If = function (e) {
      return H(J(e, function (e) {
        var t = Cs(e);
        return t ? [At.fromDom(t)] : []
      }), uo)
    },
    Mf = function (e, t) {
      var n = Gu(t, "td[data-mce-selected],th[data-mce-selected]");
      return 0 < n.length ? n : If(e)
    },
    Ff = function (e) {
      return Mf(Lf(e.selection.getSel()), At.fromDom(e.getBody()))
    },
    Uf = function (t) {
      return Qt(t).fold(E([t]), function (e) {
        return [t].concat(Uf(e))
      })
    },
    zf = function (t) {
      return Zt(t).fold(E([t]), function (e) {
        return "br" === Lt(e) ? Wt(e).map(function (e) {
          return [t].concat(zf(e))
        }).getOr([]) : [t].concat(zf(e))
      })
    },
    jf = function (o, e) {
      return ds((a = (i = e).startContainer, u = i.startOffset, In(a) ? 0 === u ? U.some(At.fromDom(a)) : U.none() : U.from(a.childNodes[u]).map(At.fromDom)), (n = (t = e).endContainer, r = t.endOffset, In(n) ? r === n.data.length ? U.some(At.fromDom(n)) : U.none() : U.from(n.childNodes[r - 1]).map(At.fromDom)), function (e, t) {
        var n = Y(Uf(o), N(Ot, e)),
          r = Y(zf(o), N(Ot, t));
        return n.isSome() && r.isSome()
      }).getOr(!1);
      var t, n, r, i, a, u
    },
    Hf = function (e, t, n, r) {
      var o = n,
        i = new Xr(n, o),
        a = me(e.schema.getMoveCaretBeforeOnEnterElements(), function (e, t) {
          return !M(["td", "th", "table"], t.toLowerCase())
        });
      do {
        if (In(n) && 0 !== kt.trim(n.nodeValue).length) return void(r ? t.setStart(n, 0) : t.setEnd(n, n.nodeValue.length));
        if (a[n.nodeName]) return void(r ? t.setStartBefore(n) : "BR" === n.nodeName ? t.setEndBefore(n) : t.setEndAfter(n))
      } while (n = r ? i.next() : i.prev());
      "BODY" === o.nodeName && (r ? t.setStart(o, 0) : t.setEnd(o, o.childNodes.length))
    },
    Vf = function (e) {
      var t = e.selection.getSel();
      return t && 0 < t.rangeCount
    },
    qf = function (r, o) {
      var e = Ff(r);
      0 < e.length ? W(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)
    },
    $f = function (e, t, n) {
      var r = fc(e, t);
      n(r), e.moveToBookmark(r)
    };
  var Wf, Kf, Xf, Yf = (Wf = Ut, Kf = "text", {
      get: function (e) {
        if (!Wf(e)) throw new Error("Can only get " + Kf + " value of a " + Kf + " node");
        return Xf(e).getOr("")
      },
      getOption: Xf = function (e) {
        return Wf(e) ? U.from(e.dom.nodeValue) : U.none()
      },
      set: function (e, t) {
        if (!Wf(e)) throw new Error("Can only set raw " + Kf + " value of a " + Kf + " node");
        e.dom.nodeValue = t
      }
    }),
    Gf = function (e) {
      return Yf.get(e)
    },
    Jf = function (r, o, i, a) {
      return $t(o).fold(function () {
        return "skipping"
      }, function (e) {
        return "br" === a || Ut(n = o) && Gf(n) === fo ? "valid" : Ft(t = o) && Xu(t, Ju()) ? "existing" : jl(o.dom) ? "caret" : af(r, i, a) && af(r, Lt(e), i) ? "valid" : "invalid-child";
        var t, n
      })
    },
    Qf = function (e, t, n, r) {
      var o = t.uid,
        i = void 0 === o ? is("mce-annotation") : o,
        a = function (e, t) {
          var n = {};
          for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
          if (null != e && "function" == typeof Object.getOwnPropertySymbols)
            for (var o = 0, r = Object.getOwnPropertySymbols(e); o < r.length; o++) t.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[o]) && (n[r[o]] = e[r[o]]);
          return n
        }(t, ["uid"]),
        u = At.fromTag("span", e);
      Wu(u, Ju()), Xn(u, "" + Zu(), i), Xn(u, "" + Qu(), n);
      var s, c = r(i, a),
        l = c.attributes,
        f = void 0 === l ? {} : l,
        d = c.classes,
        m = void 0 === d ? [] : d;
      return Yn(u, f), s = u, W(m, function (e) {
        Wu(s, e)
      }), u
    },
    Zf = function (i, e, t, n, r) {
      var a = [],
        u = Qf(i.getDoc(), r, t, n),
        s = Ou(U.none()),
        c = function () {
          s.set(U.none())
        },
        l = function (e) {
          W(e, o)
        },
        o = function (e) {
          var t, n;
          switch (Jf(i, e, "span", Lt(e))) {
            case "invalid-child":
              c();
              var r = Gt(e);
              l(r), c();
              break;
            case "valid":
              var o = s.get().getOrThunk(function () {
                var e = ss(u);
                return a.push(e), s.set(U.some(e)), e
              });
              sn(t = e, n = o), fn(n, t)
          }
        };
      return Pf(i.dom, e, function (e) {
        var t;
        c(), t = z(e, At.fromDom), l(t)
      }), a
    },
    ed = function (u, s, c, l) {
      u.undoManager.transact(function () {
        var e, t, n, r, o = u.selection,
          i = o.getRng(),
          a = 0 < Ff(u).length;
        i.collapsed && !a && (n = Of(e = u, t = i, [{
          inline: !0
        }]), t.setStart(n.startContainer, n.startOffset), t.setEnd(n.endContainer, n.endOffset), e.selection.setRng(t)), o.getRng().collapsed && !a ? (r = Qf(u.getDoc(), l, s, c.decorate), as(r, lo), o.getRng().insertNode(r.dom), o.select(r.dom)) : $f(o, !1, function () {
          qf(u, function (e) {
            Zf(u, e, s, c.decorate, l)
          })
        })
      })
    },
    td = function (u) {
      var n, r = (n = {}, {
        register: function (e, t) {
          n[e] = {
            name: e,
            settings: t
          }
        },
        lookup: function (e) {
          return n.hasOwnProperty(e) ? U.from(n[e]).map(function (e) {
            return e.settings
          }) : U.none()
        }
      });
      rs(u, r);
      var o = ns(u);
      return {
        register: function (e, t) {
          r.register(e, t)
        },
        annotate: function (t, n) {
          r.lookup(t).each(function (e) {
            ed(u, t, e, n)
          })
        },
        annotationChanged: function (e, t) {
          o.addListener(e, t)
        },
        remove: function (e) {
          es(u, U.some(e)).each(function (e) {
            var t = e.elements;
            W(t, gn)
          })
        },
        getAll: function (e) {
          var t, n, r, o, i, a = (t = u, n = e, r = At.fromDom(t.getBody()), o = Gu(r, "[" + Qu() + '="' + n + '"]'), i = {}, W(o, function (e) {
            var t = Gn(e, Zu()),
              n = i.hasOwnProperty(t) ? i[t] : [];
            i[t] = n.concat([e])
          }), i);
          return se(a, function (e) {
            return z(e, function (e) {
              return e.dom
            })
          })
        }
      }
    };

  function nd(e) {
    return {
      getBookmark: N(Yl, e),
      moveToBookmark: N(Gl, e)
    }
  }(nd = nd || {}).isBookmarkNode = Jl;
  var rd, od = nd,
    id = function (e, t) {
      for (; t && t !== e;) {
        if (Hn(t) || Vn(t)) return t;
        t = t.parentNode
      }
      return null
    },
    ad = function (t, n, e) {
      if (e.collapsed) return !1;
      if (wt.browser.isIE() && e.startOffset === e.endOffset - 1 && e.startContainer === e.endContainer) {
        var r = e.startContainer.childNodes[e.startOffset];
        if (An(r)) return F(r.getClientRects(), function (e) {
          return bs(e, t, n)
        })
      }
      return F(e.getClientRects(), function (e) {
        return bs(e, t, n)
      })
    },
    ud = {
      BACKSPACE: 8,
      DELETE: 46,
      DOWN: 40,
      ENTER: 13,
      LEFT: 37,
      RIGHT: 39,
      SPACEBAR: 32,
      TAB: 9,
      UP: 38,
      END: 35,
      HOME: 36,
      modifierPressed: function (e) {
        return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e)
      },
      metaKeyPressed: function (e) {
        return wt.mac ? e.metaKey : e.ctrlKey && !e.altKey
      }
    },
    sd = Vn,
    cd = function (r, l) {
      var f, d, m, p, g, h, v, y, b, C, w, x, S, N, E = l.dom,
        s = kt.each,
        c = l.getDoc(),
        k = document,
        _ = Math.abs,
        A = Math.round,
        R = l.getBody(),
        T = {
          nw: [0, 0, -1, -1],
          ne: [1, 0, 1, -1],
          se: [1, 1, 1, 1],
          sw: [0, 1, -1, 1]
        },
        D = function (e) {
          return e && ("IMG" === e.nodeName || l.dom.is(e, "figure.image"))
        },
        n = function (e) {
          var t = e.target;
          ! function (e, t) {
            if ("longpress" !== e.type && 0 !== e.type.indexOf("touch")) return D(e.target) && !ad(e.clientX, e.clientY, t);
            var n = e.touches[0];
            return D(e.target) && !ad(n.clientX, n.clientY, t)
          }(e, l.selection.getRng()) || e.isDefaultPrevented() || l.selection.select(t)
        },
        O = function (e) {
          return l.dom.is(e, "figure.image") ? e.querySelector("img") : e
        },
        B = function (e) {
          var t = Nc(l);
          return !!t && ("false" !== e.getAttribute("data-mce-resize") && (e !== l.getBody() && Tt(At.fromDom(e), t)))
        },
        P = function (e, t, n) {
          E.setStyles(O(e), {
            width: t,
            height: n
          })
        },
        L = function (e) {
          var t, n, r, o, i, a, u, s = e.screenX - g,
            c = e.screenY - h;
          w = s * p[2] + v, x = c * p[3] + y, w = w < 5 ? 5 : w, x = x < 5 ? 5 : x, (D(f) && !1 !== l.getParam("resize_img_proportional", !0, "boolean") ? !ud.modifierPressed(e) : ud.modifierPressed(e)) && (_(s) > _(c) ? (x = A(w * b), w = A(x / b)) : (w = A(x / b), x = A(w * b))), P(d, w, x), t = 0 < (t = p.startPos.x + s) ? t : 0, n = 0 < (n = p.startPos.y + c) ? n : 0, E.setStyles(m, {
            left: t,
            top: n,
            display: "block"
          }), m.innerHTML = w + " &times; " + x, p[2] < 0 && d.clientWidth <= w && E.setStyle(d, "left", void 0 + (v - w)), p[3] < 0 && d.clientHeight <= x && E.setStyle(d, "top", void 0 + (y - x)), (s = R.scrollWidth - S) + (c = R.scrollHeight - N) !== 0 && E.setStyles(m, {
            left: t - s,
            top: n - c
          }), C || (r = l, o = f, i = v, a = y, u = "corner-" + p.name, r.fire("ObjectResizeStart", {
            target: o,
            width: i,
            height: a,
            origin: u
          }), C = !0)
        },
        I = function () {
          var e = C;
          C = !1;
          var t, n, r, o, i, a = function (e, t) {
            t && (f.style[e] || !l.schema.isValid(f.nodeName.toLowerCase(), e) ? E.setStyle(O(f), e, t) : E.setAttrib(O(f), e, "" + t))
          };
          e && (a("width", w), a("height", x)), E.unbind(c, "mousemove", L), E.unbind(c, "mouseup", I), k !== c && (E.unbind(k, "mousemove", L), E.unbind(k, "mouseup", I)), E.remove(d), E.remove(m), u(f), e && (t = l, n = f, r = w, o = x, i = "corner-" + p.name, t.fire("ObjectResized", {
            target: n,
            width: r,
            height: o,
            origin: i
          }), E.setAttrib(f, "style", E.getAttrib(f, "style"))), l.nodeChanged()
        },
        u = function (e) {
          M(), F();
          var t = E.getPos(e, R),
            o = t.x,
            i = t.y,
            n = e.getBoundingClientRect(),
            a = n.width || n.right - n.left,
            u = n.height || n.bottom - n.top;
          f !== e && (f = e, w = x = 0);
          var r = l.fire("ObjectSelected", {
            target: e
          });
          B(e) && !r.isDefaultPrevented() ? s(T, function (n, r) {
            var e = E.get("mceResizeHandle" + r);
            e && E.remove(e), e = E.add(R, "div", {
              id: "mceResizeHandle" + r,
              "data-mce-bogus": "all",
              "class": "mce-resizehandle",
              unselectable: !0,
              style: "cursor:" + r + "-resize; margin:0; padding:0"
            }), 11 === wt.ie && (e.contentEditable = !1), E.bind(e, "mousedown", function (e) {
              var t;
              e.stopImmediatePropagation(), e.preventDefault(), g = (t = e).screenX, h = t.screenY, v = O(f).clientWidth, y = O(f).clientHeight, b = y / v, (p = n).name = r, p.startPos = {
                x: a * n[0] + o,
                y: u * n[1] + i
              }, S = R.scrollWidth, N = R.scrollHeight, d = f.cloneNode(!0), E.addClass(d, "mce-clonedresizable"), E.setAttrib(d, "data-mce-bogus", "all"), d.contentEditable = !1, d.unSelectabe = !0, E.setStyles(d, {
                left: o,
                top: i,
                margin: 0
              }), P(d, a, u), d.removeAttribute("data-mce-selected"), R.appendChild(d), E.bind(c, "mousemove", L), E.bind(c, "mouseup", I), k !== c && (E.bind(k, "mousemove", L), E.bind(k, "mouseup", I)), m = E.add(R, "div", {
                "class": "mce-resize-helper",
                "data-mce-bogus": "all"
              }, v + " &times; " + y)
            }), n.elm = e, E.setStyles(e, {
              left: a * n[0] + o - e.offsetWidth / 2,
              top: u * n[1] + i - e.offsetHeight / 2
            })
          }) : M(), f.setAttribute("data-mce-selected", "1")
        },
        M = function () {
          F(), f && f.removeAttribute("data-mce-selected"), ue(T, function (e, t) {
            var n = E.get("mceResizeHandle" + t);
            n && (E.unbind(n), E.remove(n))
          })
        },
        o = function (e) {
          var t, n = function (e, t) {
            if (e)
              do {
                if (e === t) return !0
              } while (e = e.parentNode)
          };
          C || l.removed || (s(E.select("img[data-mce-selected],hr[data-mce-selected]"), function (e) {
            e.removeAttribute("data-mce-selected")
          }), t = "mousedown" === e.type ? e.target : r.getNode(), n(t = E.$(t).closest("table,img,figure.image,hr")[0], R) && (a(), n(r.getStart(!0), t) && n(r.getEnd(!0), t)) ? u(t) : M())
        },
        i = function (e) {
          return sd(id(l.getBody(), e))
        },
        F = function () {
          ue(T, function (e) {
            e.elm && (E.unbind(e.elm), delete e.elm)
          })
        },
        a = function () {
          try {
            l.getDoc().execCommand("enableObjectResizing", !1, "false")
          } catch (e) {}
        };
      l.on("init", function () {
        var e;
        a(), (wt.browser.isIE() || wt.browser.isEdge()) && (l.on("mousedown click", function (e) {
          var t = e.target,
            n = t.nodeName;
          C || !/^(TABLE|IMG|HR)$/.test(n) || i(t) || (2 !== e.button && l.selection.select(t, "TABLE" === n), "mousedown" === e.type && l.nodeChanged())
        }), e = function (e) {
          var t = function (e) {
            qr.setEditorTimeout(l, function () {
              return l.selection.select(e)
            })
          };
          if (i(e.target) || $n(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))
        }, E.bind(R, "mscontrolselect", e), l.on("remove", function () {
          return E.unbind(R, "mscontrolselect", e)
        }));
        var t = qr.throttle(function (e) {
          l.composing || o(e)
        });
        l.on("nodechange ResizeEditor ResizeWindow ResizeContent drop FullscreenStateChanged", t), l.on("keyup compositionend", function (e) {
          f && "TABLE" === f.nodeName && t(e)
        }), l.on("hide blur", M), l.on("contextmenu longpress", n, !0)
      }), l.on("remove", F);
      return {
        isResizable: B,
        showResizeRect: u,
        hideResizeRect: M,
        updateResizeRect: o,
        destroy: function () {
          f = d = null
        }
      }
    },
    ld = function (e) {
      return Hn(e) || Vn(e)
    },
    fd = function (e, t, n) {
      var r, o, i, a, u, s = n;
      if (s.caretPositionFromPoint)(o = s.caretPositionFromPoint(e, t)) && ((r = n.createRange()).setStart(o.offsetNode, o.offset), r.collapse(!0));
      else if (n.caretRangeFromPoint) r = n.caretRangeFromPoint(e, t);
      else if (s.body.createTextRange) {
        r = s.body.createTextRange();
        try {
          r.moveToPoint(e, t), r.collapse(!0)
        } catch (c) {
          r = 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 = kt.toArray(i.getClientRects())).sort(function (e, t) {
                return (e = Math.abs(Math.max(e.top - n, e.bottom - n))) - (t = 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 (a) {}
            }
            return null
          }(e, t, n)
        }
        return i = r, a = n.body, u = i && i.parentElement ? i.parentElement() : null, Vn(function (e, t, n) {
          for (; e && e !== t;) {
            if (n(e)) return e;
            e = e.parentNode
          }
          return null
        }(u, a, ld)) ? null : i
      }
      return r
    },
    dd = function (e, t) {
      return e && t && e.startContainer === t.startContainer && e.startOffset === t.startOffset && e.endContainer === t.endContainer && e.endOffset === t.endOffset
    },
    md = function (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)
    },
    pd = function (e) {
      return e && "TABLE" === e.nodeName
    },
    gd = function (e, t, n) {
      for (var r = new Xr(t, e.getParent(t.parentNode, e.isBlock) || e.getRoot()); t = r[n ? "prev" : "next"]();)
        if (zn(t)) return !0
    },
    hd = function (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 && zn(o) && t && e.isEmpty(c)) return U.some(Hs(o.parentNode, e.nodeIndex(o)));
      for (var l, f, d = new Xr(o, c); a = d[r ? "prev" : "next"]();) {
        if ("false" === e.getContentEditableParent(a) || (f = u, bo(l = a) && !1 === md(l, f, jl))) return U.none();
        if (In(a) && 0 < a.nodeValue.length) return !1 === function (e, t, n) {
          return md(e, t, function (e) {
            return e.nodeName === n
          })
        }(a, u, "A") ? U.some(Hs(a, r ? a.nodeValue.length : 0)) : U.none();
        if (e.isBlock(a) || s[a.nodeName.toLowerCase()]) return U.none();
        i = a
      }
      return n && i ? U.some(Hs(i, 0)) : U.none()
    },
    vd = function (e, t, n, r) {
      var o, i, a, u, s = e.getRoot(),
        c = !1,
        l = r[(n ? "start" : "end") + "Container"],
        f = r[(n ? "start" : "end") + "Offset"],
        d = An(l) && f === l.childNodes.length,
        m = e.schema.getNonEmptyElements(),
        p = n;
      if (bo(l)) return U.none();
      if (An(l) && f > l.childNodes.length - 1 && (p = !1), Fn(l) && (l = s, f = 0), l === s) {
        if (p && (o = l.childNodes[0 < f ? f - 1 : 0])) {
          if (bo(o)) return U.none();
          if (m[o.nodeName] || pd(o)) return U.none()
        }
        if (l.hasChildNodes()) {
          if (f = Math.min(!p && 0 < f ? f - 1 : f, l.childNodes.length - 1), l = l.childNodes[f], f = In(l) && d ? l.data.length : 0, !t && l === s.lastChild && pd(l)) return U.none();
          if (function (e, t) {
              for (; t && t !== e;) {
                if (Vn(t)) return !0;
                t = t.parentNode
              }
              return !1
            }(s, l) || bo(l)) return U.none();
          if (l.hasChildNodes() && !1 === pd(l)) {
            var g = new Xr(o = l, s);
            do {
              if (Vn(o) || bo(o)) {
                c = !1;
                break
              }
              if (In(o) && 0 < o.nodeValue.length) {
                f = p ? 0 : o.nodeValue.length, l = o, c = !0;
                break
              }
              if (m[o.nodeName.toLowerCase()] && (!(i = o) || !/^(TD|TH|CAPTION)$/.test(i.nodeName))) {
                f = e.nodeIndex(o), l = o.parentNode, p || f++, c = !0;
                break
              }
            } while (o = p ? g.next() : g.prev())
          }
        }
      }
      return t && (In(l) && 0 === f && hd(e, d, t, !0, l).each(function (e) {
        l = e.container(), f = e.offset(), c = !0
      }), An(l) && (!(o = (o = l.childNodes[f]) || l.childNodes[f - 1]) || !zn(o) || (u = "A", (a = o).previousSibling && a.previousSibling.nodeName === u) || gd(e, o, !1) || gd(e, o, !0) || hd(e, d, t, !0, o).each(function (e) {
        l = e.container(), f = e.offset(), c = !0
      }))), p && !t && In(l) && f === l.nodeValue.length && hd(e, d, t, !1, l).each(function (e) {
        l = e.container(), f = e.offset(), c = !0
      }), c ? U.some(Hs(l, f)) : U.none()
    },
    yd = function (e, t) {
      var n = t.collapsed,
        r = t.cloneRange(),
        o = Hs.fromRangeStart(t);
      return vd(e, n, !0, r).each(function (e) {
        n && Hs.isAbove(o, e) || r.setStart(e.container(), e.offset())
      }), n || vd(e, n, !1, r).each(function (e) {
        r.setEnd(e.container(), e.offset())
      }), n && r.collapse(!0), dd(t, r) ? U.none() : U.some(r)
    },
    bd = function (e, t) {
      return e.splitText(t)
    },
    Cd = function (e) {
      var t = e.startContainer,
        n = e.startOffset,
        r = e.endContainer,
        o = e.endOffset;
      return t === r && In(t) ? 0 < n && n < t.nodeValue.length && (t = (r = bd(t, n)).previousSibling, n < o ? (t = r = bd(r, o -= n).previousSibling, o = r.nodeValue.length, n = 0) : o = 0) : (In(t) && 0 < n && n < t.nodeValue.length && (t = bd(t, n), n = 0), In(r) && 0 < o && o < r.nodeValue.length && (o = (r = bd(r, o).previousSibling).nodeValue.length)), {
        startContainer: t,
        startOffset: n,
        endContainer: r,
        endOffset: o
      }
    };

  function wd(n) {
    return {
      walk: function (e, t) {
        return Pf(n, e, t)
      },
      split: Cd,
      normalize: function (t) {
        return yd(n, t).fold(C, function (e) {
          return t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0
        })
      }
    }
  }(rd = wd = wd || {}).compareRanges = dd, rd.getCaretRangeFromPoint = fd, rd.getSelectedNode = Cs, rd.getNode = ws;
  var xd = wd;
  var Sd, Nd, Ed, kd, _d, Ad = (Sd = "height", Nd = function (e) {
      var t = e.dom;
      return hn(e) ? t.getBoundingClientRect().height : t.offsetHeight
    }, {
      set: function (e, t) {
        if (!O(t) && !t.match(/^[0-9]+$/)) throw new Error(Sd + ".set accepts only positive integer values. Value was " + t);
        var n = e.dom;
        Wn(n) && (n.style[Sd] = t + "px")
      },
      get: Ed = function (e) {
        var t = Nd(e);
        if (t <= 0 || null === t) {
          var n = er(e, Sd);
          return parseFloat(n) || 0
        }
        return t
      },
      getOuter: Ed,
      aggregate: kd = function (o, e) {
        return X(e, function (e, t) {
          var n = er(o, t),
            r = n === undefined ? 0 : parseInt(n, 10);
          return isNaN(r) ? e : e + r
        }, 0)
      },
      max: function (e, t, n) {
        var r = kd(e, n);
        return r < t ? t - r : 0
      }
    }),
    Rd = function (r, e) {
      return r.view(e).fold(E([]), function (e) {
        var t = r.owner(e),
          n = Rd(r, t);
        return [e].concat(n)
      })
    },
    Td = /* */ Object.freeze({
      __proto__: null,
      view: function (e) {
        var t;
        return (e.dom === document ? U.none() : U.from(null === (t = e.dom.defaultView) || void 0 === t ? void 0 : t.frameElement)).map(At.fromDom)
      },
      owner: Vt
    }),
    Dd = function (e) {
      var t, n, r, o = At.fromDom(document),
        i = wn(o),
        a = (t = e, r = (n = Td).owner(t), Rd(n, r)),
        u = Cn(e),
        s = K(a, function (e, t) {
          var n = Cn(t);
          return {
            left: e.left + n.left,
            top: e.top + n.top
          }
        }, {
          left: 0,
          top: 0
        });
      return yn(s.left + u.left + i.left, s.top + u.top + i.top)
    },
    Od = function (e) {
      return "textarea" === Lt(e)
    },
    Bd = function (e, t) {
      var n, r = function (e) {
          var t = e.dom.ownerDocument,
            n = t.body,
            r = t.defaultView,
            o = t.documentElement;
          if (n === e.dom) return yn(n.offsetLeft, n.offsetTop);
          var i = bn(null == r ? void 0 : r.pageYOffset, o.scrollTop),
            a = bn(null == r ? void 0 : r.pageXOffset, o.scrollLeft),
            u = bn(o.clientTop, n.clientTop),
            s = bn(o.clientLeft, n.clientLeft);
          return Cn(e).translate(a - s, i - u)
        }(e),
        o = (n = e, Ad.get(n));
      return {
        element: e,
        bottom: r.top + o,
        height: o,
        pos: r,
        cleanup: t
      }
    },
    Pd = function (e, t) {
      var n = function (e, t) {
          var n = Gt(e);
          if (0 === n.length || Od(e)) return {
            element: e,
            offset: t
          };
          if (t < n.length && !Od(n[t])) return {
            element: n[t],
            offset: 0
          };
          var r = n[n.length - 1];
          return Od(r) ? {
            element: e,
            offset: t
          } : "img" === Lt(r) ? {
            element: r,
            offset: 1
          } : Ut(r) ? {
            element: r,
            offset: Gf(r).length
          } : {
            element: r,
            offset: Gt(r).length
          }
        }(e, t),
        r = At.fromHtml('<span data-mce-bogus="all">\ufeff</span>');
      return sn(n.element, r), Bd(r, function () {
        return pn(r)
      })
    },
    Ld = function (n, r, o, i) {
      Ud(n, function (e, t) {
        return Md(n, r, o, i)
      }, o)
    },
    Id = function (e, t, n, r, o) {
      var i, a, u = {
        elm: r.element.dom,
        alignToTop: o
      };
      i = u, e.fire("ScrollIntoView", i).isDefaultPrevented() || (n(t, wn(t).top, r, o), a = u, e.fire("AfterScrollIntoView", a))
    },
    Md = function (e, t, n, r) {
      var o = At.fromDom(e.getBody()),
        i = At.fromDom(e.getDoc());
      o.dom.offsetWidth;
      var a = Pd(At.fromDom(n.startContainer), n.startOffset);
      Id(e, i, t, a, r), a.cleanup()
    },
    Fd = function (e, t, n, r) {
      var o, i = At.fromDom(e.getDoc());
      Id(e, i, n, (o = t, Bd(At.fromDom(o), V)), r)
    },
    Ud = function (e, t, n) {
      var r = n.startContainer,
        o = n.startOffset,
        i = n.endContainer,
        a = n.endOffset;
      t(At.fromDom(r), At.fromDom(i));
      var u = e.dom.createRng();
      u.setStart(r, o), u.setEnd(i, a), e.selection.setRng(n)
    },
    zd = function (e, t, n, r) {
      var o, i = e.pos;
      n ? xn(i.left, i.top, r) : (o = i.top - t + e.height, xn(i.left, o, r))
    },
    jd = function (e, t, n, r, o) {
      var i = n + t,
        a = r.pos.top,
        u = r.bottom,
        s = n <= u - a;
      a < t ? zd(r, n, !1 !== o, e) : i < a ? zd(r, n, s ? !1 !== o : !0 === o, e) : i < u && !s && zd(r, n, !0 === o, e)
    },
    Hd = function (e, t, n, r) {
      var o = e.dom.defaultView.innerHeight;
      jd(e, t, o, n, r)
    },
    Vd = function (e, t, n, r) {
      var o = e.dom.defaultView.innerHeight;
      jd(e, t, o, n, r);
      var i = Dd(n.element),
        a = En(window);
      i.top < a.y ? Sn(n.element, !1 !== r) : i.top > a.bottom && Sn(n.element, !0 === r)
    },
    qd = function (e, t, n) {
      return Ld(e, Hd, t, n)
    },
    $d = function (e, t, n) {
      return Fd(e, t, Hd, n)
    },
    Wd = function (e, t, n) {
      return Ld(e, Vd, t, n)
    },
    Kd = function (e, t, n) {
      return Fd(e, t, Vd, n)
    },
    Xd = function (e, t, n) {
      (e.inline ? qd : Wd)(e, t, n)
    },
    Yd = function (e) {
      var t = rn(e).dom;
      return e.dom === t.activeElement
    },
    Gd = function (e) {
      return void 0 === e && (e = At.fromDom(document)), U.from(e.dom.activeElement).map(At.fromDom)
    },
    Jd = function (e, t, n, r) {
      return {
        start: e,
        soffset: t,
        finish: n,
        foffset: r
      }
    },
    Qd = Cr([{
      before: ["element"]
    }, {
      on: ["element", "offset"]
    }, {
      after: ["element"]
    }]),
    Zd = (Qd.before, Qd.on, Qd.after, function (e) {
      return e.fold(o, o, o)
    }),
    em = Cr([{
      domRange: ["rng"]
    }, {
      relative: ["startSitu", "finishSitu"]
    }, {
      exact: ["start", "soffset", "finish", "foffset"]
    }]),
    tm = {
      domRange: em.domRange,
      relative: em.relative,
      exact: em.exact,
      exactFromRange: function (e) {
        return em.exact(e.start, e.soffset, e.finish, e.foffset)
      },
      getWin: function (e) {
        var t = e.match({
          domRange: function (e) {
            return At.fromDom(e.startContainer)
          },
          relative: function (e, t) {
            return Zd(e)
          },
          exact: function (e, t, n, r) {
            return e
          }
        });
        return qt(t)
      },
      range: Jd
    },
    nm = dt().browser,
    rm = function (e, t) {
      var n = Ut(t) ? Gf(t).length : Gt(t).length + 1;
      return n < e ? n : e < 0 ? 0 : e
    },
    om = function (e) {
      return tm.range(e.start, rm(e.soffset, e.start), e.finish, rm(e.foffset, e.finish))
    },
    im = function (e, t) {
      return !_n(t.dom) && (Pt(e, t) || Ot(e, t))
    },
    am = function (t) {
      return function (e) {
        return im(t, e.start) && im(t, e.finish)
      }
    },
    um = function (e) {
      return !0 === e.inline || nm.isIE()
    },
    sm = function (e) {
      return tm.range(At.fromDom(e.startContainer), e.startOffset, At.fromDom(e.endContainer), e.endOffset)
    },
    cm = function (e) {
      var t, n, r = qt(e);
      return t = r.dom, ((n = t.getSelection()) && 0 !== n.rangeCount ? U.from(n.getRangeAt(0)) : U.none()).map(sm).filter(am(e))
    },
    lm = function (e) {
      var t = document.createRange();
      try {
        return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), U.some(t)
      } catch (n) {
        return U.none()
      }
    },
    fm = function (e) {
      var t = um(e) ? cm(At.fromDom(e.getBody())) : U.none();
      e.bookmark = t.isSome() ? t : e.bookmark
    },
    dm = function (r) {
      return (r.bookmark ? r.bookmark : U.none()).bind(function (e) {
        return t = At.fromDom(r.getBody()), n = e, U.from(n).filter(am(t)).map(om);
        var t, n
      }).bind(lm)
    },
    mm = {
      isEditorUIElement: function (e) {
        var t = e.className.toString();
        return -1 !== t.indexOf("tox-") || -1 !== t.indexOf("mce-")
      }
    },
    pm = function (n, e) {
      var t, r;
      dt().browser.isIE() ? (r = n).on("focusout", function () {
        fm(r)
      }) : (t = e, n.on("mouseup touchend", function (e) {
        t.throttle()
      })), n.on("keyup NodeChange", function (e) {
        var t;
        "nodechange" === (t = e).type && t.selectionChange || fm(n)
      })
    },
    gm = function (r) {
      var o = zu(function () {
        fm(r)
      }, 0);
      r.on("init", function () {
        var e, t, n;
        r.inline && (e = r, t = o, n = function () {
          t.throttle()
        }, Eu.DOM.bind(document, "mouseup", n), e.on("remove", function () {
          Eu.DOM.unbind(document, "mouseup", n)
        })), pm(r, o)
      }), r.on("remove", function () {
        o.cancel()
      })
    },
    hm = Eu.DOM,
    vm = function (t, e) {
      var n = t.getParam("custom_ui_selector", "", "string");
      return null !== hm.getParent(e, function (e) {
        return mm.isEditorUIElement(e) || !!n && t.dom.is(e, n)
      })
    },
    ym = function (n, e) {
      var t = e.editor;
      gm(t), t.on("focusin", function () {
        var e = n.focusedEditor;
        e !== this && (e && e.fire("blur", {
          focusedEditor: this
        }), n.setActive(this), (n.focusedEditor = this).fire("focus", {
          blurredEditor: e
        }), this.focus(!0))
      }), t.on("focusout", function () {
        var t = this;
        qr.setEditorTimeout(t, function () {
          var e = n.focusedEditor;
          vm(t, function (e) {
            try {
              var t = rn(At.fromDom(e.getElement()));
              return Gd(t).fold(function () {
                return document.body
              }, function (e) {
                return e.dom
              })
            } catch (n) {
              return document.body
            }
          }(t)) || e !== t || (t.fire("blur", {
            focusedEditor: null
          }), n.focusedEditor = null)
        })
      }), _d || (_d = function (e) {
        var t = n.activeEditor;
        t && function (e) {
          if (nn() && D(e.target)) {
            var t = At.fromDom(e.target);
            if (Ft(t) && un(t) && e.composed && e.composedPath) {
              var n = e.composedPath();
              if (n) return ne(n)
            }
          }
          return U.from(e.target)
        }(e).each(function (e) {
          e.ownerDocument === document && (e === document.body || vm(t, e) || n.focusedEditor !== t || (t.fire("blur", {
            focusedEditor: null
          }), n.focusedEditor = null))
        })
      }, hm.bind(document, "focusin", _d))
    },
    bm = function (e, t) {
      e.focusedEditor === t.editor && (e.focusedEditor = null), e.activeEditor || (hm.unbind(document, "focusin", _d), _d = null)
    },
    Cm = function (t, e) {
      return ((n = e).collapsed ? U.from(ws(n.startContainer, n.startOffset)).map(At.fromDom) : U.none()).bind(function (e) {
        return ao(e) ? U.some(e) : !1 === Pt(t, e) ? U.some(t) : U.none()
      });
      var n
    },
    wm = function (t, e) {
      Cm(At.fromDom(t.getBody()), e).bind(function (e) {
        return Fl(e.dom)
      }).fold(function () {
        t.selection.normalize()
      }, function (e) {
        return t.selection.setRng(e.toRange())
      })
    },
    xm = function (e) {
      if (e.setActive) try {
        e.setActive()
      } catch (t) {
        e.focus()
      } else e.focus()
    },
    Sm = function (e) {
      return Yd(e) || Gd(rn(t = e)).filter(function (e) {
        return t.dom.contains(e.dom)
      }).isSome();
      var t
    },
    Nm = function (r) {
      return Gd().filter(function (e) {
        return t = e.dom, !((n = t.classList) !== undefined && (n.contains("tox-edit-area") || n.contains("tox-edit-area__iframe") || n.contains("mce-content-body"))) && vm(r, e.dom);
        var t, n
      }).isSome()
    },
    Em = function (e) {
      return e.inline ? (n = e.getBody()) && Sm(At.fromDom(n)) : (t = e).iframeElement && Yd(At.fromDom(t.iframeElement));
      var t, n
    },
    km = function (t) {
      var e = t.selection,
        n = t.getBody(),
        r = e.getRng();
      t.quirks.refreshContentEditable(), t.bookmark !== undefined && !1 === Em(t) && dm(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 xm(a), wm(t, r), void _m(t);
      t.inline || (wt.opera || xm(n), t.getWin().focus()), (wt.gecko || t.inline) && (xm(n), wm(t, r)), _m(t)
    },
    _m = function (e) {
      return e.editorManager.setActive(e)
    },
    Am = function (e, t, n, r, o) {
      var i = n ? t.startContainer : t.endContainer,
        a = n ? t.startOffset : t.endOffset;
      return U.from(i).map(At.fromDom).map(function (e) {
        return r && t.collapsed ? e : Jt(e, o(e, a)).getOr(e)
      }).bind(function (e) {
        return Ft(e) ? U.some(e) : $t(e).filter(Ft)
      }).map(function (e) {
        return e.dom
      }).getOr(e)
    },
    Rm = function (e, t, n) {
      return Am(e, t, !0, n, function (e, t) {
        return Math.min(e.dom.childNodes.length, t)
      })
    },
    Tm = function (e, t, n) {
      return Am(e, t, !1, n, function (e, t) {
        return 0 < t ? t - 1 : t
      })
    },
    Dm = function (e, t) {
      for (var n = e; e && In(e) && 0 === e.length;) e = t ? e.nextSibling : e.previousSibling;
      return e || n
    },
    Om = function (n, e) {
      return z(e, function (e) {
        var t = n.fire("GetSelectionRange", {
          range: e
        });
        return t.range !== e ? t.range : e
      })
    },
    Bm = function (e) {
      return T(e) ? e : C
    },
    Pm = function (e, t, n) {
      var r = t(e),
        o = Bm(n);
      return r.orThunk(function () {
        return o(e) ? U.none() : function (e, t, n) {
          for (var r = e.dom, o = Bm(n); r.parentNode;) {
            r = r.parentNode;
            var i = At.fromDom(r),
              a = t(i);
            if (a.isSome()) return a;
            if (o(i)) break
          }
          return U.none()
        }(e, t, o)
      })
    },
    Lm = cf,
    Im = function (e, t, n) {
      var r = e.formatter.get(n);
      if (r)
        for (var o = 0; o < r.length; o++)
          if (!1 === r[o].inherit && e.dom.is(t, r[o].selector)) return !0;
      return !1
    },
    Mm = function (t, e, n, r) {
      var o = t.dom.getRoot();
      return e !== o && (e = t.dom.getParent(e, function (e) {
        return !!Im(t, e, n) || (e.parentNode === o || !!zm(t, e, n, r, !0))
      }), zm(t, e, n, r))
    },
    Fm = function (e, t, n) {
      return !!Lm(t, n.inline) || (!!Lm(t, n.block) || (n.selector ? 1 === t.nodeType && e.is(t, n.selector) : void 0))
    },
    Um = function (e, t, n, r, o, i) {
      var a, u, s, c = n[r];
      if (n.onmatch) return n.onmatch(t, n, r);
      if (c)
        if ("undefined" == typeof c.length) {
          for (a in c)
            if (c.hasOwnProperty(a)) {
              if (u = "attributes" === r ? e.getAttrib(t, a) : ff(e, t, a), o && !u && !n.exact) return;
              if ((!o || n.exact) && !Lm(u, lf(e, sf(c[a], i), a))) return
            }
        } else
          for (s = 0; s < c.length; s++)
            if ("attributes" === r ? e.getAttrib(t, c[s]) : ff(e, t, c[s])) return n;
      return n
    },
    zm = function (e, t, n, r, o) {
      var i, a, u, s, c = e.formatter.get(n),
        l = e.dom;
      if (c && t)
        for (a = 0; a < c.length; a++)
          if (i = c[a], Fm(e.dom, t, i) && Um(l, t, i, "attributes", o, r) && Um(l, t, i, "styles", o, r)) {
            if (s = i.classes)
              for (u = 0; u < s.length; u++)
                if (!e.dom.hasClass(t, s[u])) return;
            return i
          }
    },
    jm = function (e, t, n, r) {
      if (r) return Mm(e, r, t, n);
      if (r = e.selection.getNode(), Mm(e, r, t, n)) return !0;
      var o = e.selection.getStart();
      return !(o === r || !Mm(e, o, t, n))
    },
    Hm = function (r, t) {
      var n = function (e) {
        return Ot(e, At.fromDom(r.getBody()))
      };
      return U.from(r.selection.getStart(!0)).bind(function (e) {
        return Pm(At.fromDom(e), function (n) {
          return function (e, t) {
            for (var n = 0; n < e.length; n++) {
              var r = t(e[n], n);
              if (r.isSome()) return r
            }
            return U.none()
          }(t, function (e) {
            return t = e, zm(r, n.dom, t) ? U.some(t) : U.none();
            var t
          })
        }, n)
      }).getOrNull()
    },
    Vm = function (o, i, e) {
      return X(e, function (e, t) {
        var n, r = (n = t, F(o.formatter.get(n), function (t) {
          var n = function (e) {
            return 1 < e.length && "%" === e.charAt(0)
          };
          return F(["styles", "attributes"], function (e) {
            return ge(t, e).exists(function (e) {
              var t = S(e) ? e : pe(e);
              return F(t, n)
            })
          })
        }));
        return o.formatter.matchNode(i, t, {}, r) ? e.concat([t]) : e
      }, [])
    },
    qm = {
      "#text": 3,
      "#comment": 8,
      "#cdata": 4,
      "#pi": 7,
      "#doctype": 10,
      "#document-fragment": 11
    },
    $m = function (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
      }
    },
    Wm = function (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
    },
    Km = (Xm.create = function (e, t) {
      var n = new Xm(e, qm[e] || 1);
      return t && ue(t, function (e, t) {
        n.attr(t, e)
      }), n
    }, Xm.prototype.replace = function (e) {
      return e.parent && e.remove(), this.insert(e, this), this.remove(), this
    }, Xm.prototype.attr = function (e, t) {
      var n, r = this;
      if ("string" != typeof e) return e !== undefined && null !== e && ue(e, function (e, t) {
        r.attr(t, e)
      }), r;
      if (n = r.attributes) {
        if (t === undefined) 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
      }
    }, Xm.prototype.clone = function () {
      var e, t = new Xm(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
    }, Xm.prototype.wrap = function (e) {
      return this.parent.insert(e, this), e.append(this), this
    }, Xm.prototype.unwrap = function () {
      for (var e = this.firstChild; e;) {
        var t = e.next;
        this.insert(e, this, !0), e = t
      }
      this.remove()
    }, Xm.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
    }, Xm.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
    }, Xm.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
    }, Xm.prototype.getAll = function (e) {
      for (var t = [], n = this.firstChild; n; n = $m(n, this)) n.name === e && t.push(n);
      return t
    }, Xm.prototype.empty = function () {
      if (this.firstChild) {
        for (var e = [], t = this.firstChild; t; t = $m(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
    }, Xm.prototype.isEmpty = function (e, t, n) {
      void 0 === t && (t = {});
      var r = this.firstChild;
      if (Wm(this)) return !1;
      if (r)
        do {
          if (1 === r.type) {
            if (r.attr("data-mce-bogus")) continue;
            if (e[r.name]) return !1;
            if (Wm(r)) return !1
          }
          if (8 === r.type) return !1;
          if (3 === r.type && ! function (e) {
              if (Uo(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] && Uo(r.value)) return !1;
          if (n && n(r)) return !1
        } while (r = $m(r, this));
      return !0
    }, Xm.prototype.walk = function (e) {
      return $m(this, null, e)
    }, Xm);

  function Xm(e, t) {
    this.name = e, 1 === (this.type = t) && (this.attributes = [], this.attributes.map = {})
  }
  var Ym = kt.makeMap,
    Gm = function (e) {
      var u = [],
        s = (e = e || {}).indent,
        c = Ym(e.indent_before || ""),
        l = Ym(e.indent_after || ""),
        f = ci.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$/, "")
        }
      }
    },
    Jm = function (t, p) {
      void 0 === p && (p = Ci());
      var g = Gm(t);
      (t = t || {}).validate = !("validate" in t) || t.validate;
      return {
        serialize: function (e) {
          var f = t.validate,
            d = {
              3: function (e) {
                g.text(e.value, e.raw)
              },
              8: function (e) {
                g.comment(e.value)
              },
              7: function (e) {
                g.pi(e.name, e.value)
              },
              10: function (e) {
                g.doctype(e.value)
              },
              4: function (e) {
                g.cdata(e.value)
              },
              11: function (e) {
                if (e = e.firstChild)
                  for (; m(e), e = e.next;);
              }
            };
          g.reset();
          var m = function (e) {
            var t, n, r, o, i, a, u, s, c, l = d[e.type];
            if (l) l(e);
            else {
              if (t = e.name, n = e.shortEnded, r = e.attributes, f && r && 1 < r.length && ((a = []).map = {}, c = p.getElementRule(e.name))) {
                for (u = 0, s = c.attributesOrder.length; u < s; u++)(o = c.attributesOrder[u]) in r.map && (i = r.map[o], a.map[o] = i, a.push({
                  name: o,
                  value: i
                }));
                for (u = 0, s = r.length; u < s; u++)(o = r[u].name) in a.map || (i = r.map[o], a.map[o] = i, a.push({
                  name: o,
                  value: i
                }));
                r = a
              }
              if (g.start(e.name, r, n), !n) {
                if (e = e.firstChild)
                  for (; m(e), e = e.next;);
                g.end(t)
              }
            }
          };
          return 1 !== e.type || t.inner ? d[11](e) : m(e), g.getContent()
        }
      }
    },
    Qm = function (e, t) {
      return e.replace(new RegExp(t.prefix + "_[0-9]+", "g"), function (e) {
        return ge(t.uris, e).getOr(e)
      })
    },
    Zm = ["img", "video"],
    ep = function (e, t, n) {
      return !e.allow_html_data_urls && (/^data:image\//i.test(t) ? (r = e.allow_svg_data_urls, o = n, !($(r) ? M(Zm, o) : r) && /^data:image\/svg\+xml/i.test(t)) : /^data:/i.test(t));
      var r, o
    },
    tp = function (e, t, n) {
      var r, o, i = 1,
        a = e.getShortEndedElements(),
        u = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g;
      for (u.lastIndex = r = n; o = u.exec(t);) {
        if (r = u.lastIndex, "/" === o[1]) i--;
        else if (!o[1]) {
          if (o[2] in a) continue;
          i++
        }
        if (0 === i) break
      }
      return r
    };

  function np(W, K) {
    void 0 === K && (K = Ci());
    var e = function () {};
    !1 !== (W = W || {}).fix_self_closing && (W.fix_self_closing = !0);
    var X = W.comment ? W.comment : e,
      Y = W.cdata ? W.cdata : e,
      G = W.text ? W.text : e,
      J = W.start ? W.start : e,
      Q = W.end ? W.end : e,
      Z = W.pi ? W.pi : e,
      ee = W.doctype ? W.doctype : e,
      n = function (f, e) {
        void 0 === e && (e = "html");
        for (var t, i, n, d, r, o, a, m, u, s, c, l, p, g, h, v, y, b, C, w = f.html, x = 0, S = [], N = 0, E = ci.decode, k = kt.makeMap("src,href,data,background,formaction,poster,xlink:href"), _ = /((java|vb)script|mhtml):/i, A = "html" === e ? 0 : 1, R = 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
            }
          }, T = function (e, t) {
            return G(Qm(e, f), t)
          }, D = function (e) {
            "" !== e && (">" === e.charAt(0) && (e = " " + e), W.allow_conditional_comments || "[if" !== e.substr(0, 3).toLowerCase() || (e = " " + e), X(Qm(e, f)))
          }, O = function (e, t) {
            var n = e || "",
              r = !Ve(n, "--"),
              o = 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 = /--!?>/;
                a.lastIndex = n;
                var u, s = a.exec(e);
                return s ? s.index + s[0].length : r.length
              }(w, r, t);
            return e = w.substr(t, o - t), D(r ? n + e : e), o + 1
          }, B = function (e, t, n, r, o) {
            var i, a, u, s;
            if (t = t.toLowerCase(), u = t in F ? t : E(n || r || o || ""), n = ge(f.uris, u).getOr(u), U && !m && !1 == (0 === (s = t).indexOf("data-") || 0 === s.indexOf("aria-"))) {
              if (!(i = g[t]) && h) {
                for (a = h.length; a-- && !(i = h[a]).pattern.test(t);); - 1 === a && (i = null)
              }
              if (!i) return;
              if (i.validValues && !(n in i.validValues)) return
            }
            if (k[t] && !W.allow_script_urls) {
              var c = n.replace(/[\s\u0000-\u001F]+/g, "");
              try {
                c = decodeURIComponent(c)
              } catch (l) {
                c = unescape(c)
              }
              if (_.test(c)) return;
              if (ep(W, c, e)) return
            }
            m && (t in k || 0 === t.indexOf("on")) || (d.map[t] = n, d.push({
              name: t,
              value: n
            }))
          }, P = 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"), L = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g, I = K.getShortEndedElements(), M = W.self_closing_elements || K.getSelfClosingElements(), F = K.getBoolAttrs(), U = W.validate, z = W.remove_internals, j = W.fix_self_closing, H = K.getSpecialElements(), V = w + ">"; t = P.exec(V);) {
          var q = t[0];
          if (x < t.index && T(E(w.substr(x, t.index - x))), i = t[7]) ":" === (i = i.toLowerCase()).charAt(0) && (i = i.substr(1)), R(i);
          else if (i = t[8]) {
            if (t.index + q.length > w.length) {
              T(E(w.substr(t.index))), x = t.index + q.length;
              continue
            }
            ":" === (i = i.toLowerCase()).charAt(0) && (i = i.substr(1)), u = i in I, j && M[i] && 0 < S.length && S[S.length - 1].name === i && R(i);
            var $ = 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
            }(L, t[9]);
            if (null !== $) {
              if ("all" === $) {
                x = tp(K, w, P.lastIndex), P.lastIndex = x;
                continue
              }
              c = !1
            }
            if (!U || (s = K.getElementRule(i))) {
              if (c = !0, U && (g = s.attributes, h = s.attributePatterns), (p = t[9]) ? ((m = -1 !== p.indexOf("data-mce-type")) && z && (c = !1), (d = []).map = {}, p.replace(L, function (e, t, n, r, o) {
                  return B(i, t, n, r, o), ""
                })) : (d = []).map = {}, U && !m) {
                if (v = s.attributesRequired, y = s.attributesDefault, b = s.attributesForced, s.removeEmptyAttrs && !d.length && (c = !1), b)
                  for (r = b.length; r--;) a = (l = b[r]).name, "{$uid}" === (C = l.value) && (C = "mce_" + N++), d.map[a] = C, d.push({
                    name: a,
                    value: C
                  });
                if (y)
                  for (r = y.length; r--;)(a = (l = y[r]).name) in d.map || ("{$uid}" === (C = l.value) && (C = "mce_" + N++), d.map[a] = C, d.push({
                    name: a,
                    value: C
                  }));
                if (v) {
                  for (r = v.length; r-- && !(v[r] in d.map);); - 1 === r && (c = !1)
                }
                if (l = d.map["data-mce-bogus"]) {
                  if ("all" === l) {
                    x = tp(K, w, P.lastIndex), P.lastIndex = x;
                    continue
                  }
                  c = !1
                }
              }
              c && J(i, d, u)
            } else c = !1;
            if (n = H[i]) {
              n.lastIndex = x = t.index + q.length, x = (t = n.exec(w)) ? (c && (o = w.substr(x, t.index - x)), t.index + t[0].length) : (o = w.substr(x), w.length), c && (0 < o.length && T(o, !0), Q(i)), P.lastIndex = x;
              continue
            }
            u || (p && p.indexOf("/") === p.length - 1 ? c && Q(i) : S.push({
              name: i,
              valid: c
            }))
          } else if (i = t[1]) D(i);
          else if (i = t[2]) {
            if (!(1 == A || W.preserve_cdata || 0 < S.length && K.isValidChild(S[S.length - 1].name, "#cdata"))) {
              x = O("", t.index + 2), P.lastIndex = x;
              continue
            }
            Y(i)
          } else if (i = t[3]) ee(i);
          else {
            if ((i = t[4]) || "<!" === q) {
              x = O(i, t.index + q.length), P.lastIndex = x;
              continue
            }
            if (i = t[5]) {
              if (1 != A) {
                x = O("?", t.index + 2), P.lastIndex = x;
                continue
              }
              Z(i, t[6])
            }
          }
          x = t.index + q.length
        }
        for (x < w.length && T(E(w.substr(x))), r = S.length - 1; 0 <= r; r--)(i = S[r]).valid && Q(i.name)
      };
    return {
      parse: function (e, t) {
        void 0 === t && (t = "html"), n(function (e) {
          for (var t, n = /data:[^;]+;base64,([a-z0-9\+\/=]+)/gi, r = [], o = {}, i = is("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
          }
          return 0 === a ? {
            prefix: i,
            uris: o,
            html: e
          } : (a < e.length && r.push(e.substr(a)), {
            prefix: i,
            uris: o,
            html: r.join("")
          })
        }(e), t)
      }
    }
  }(np = np || {}).findEndTag = tp;
  var rp, op, ip = np,
    ap = function (e, t) {
      var n, r, o, i, a, u, s, c = t,
        l = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,
        f = e.schema;
      a = e.getTempAttrs(), u = c, s = new RegExp(["\\s?(" + a.join("|") + ')="[^"]+"'].join("|"), "gi"), c = u.replace(s, "");
      for (var d = f.getShortEndedElements(); i = l.exec(c);) r = l.lastIndex, o = i[0].length, n = d[i[1]] ? r : ip.findEndTag(f, c, r), c = c.substring(0, r - o) + c.substring(n), l.lastIndex = r - o;
      return po(c)
    },
    up = ap,
    sp = function (e, t, n, r) {
      var o, i, a, u, s;
      return t.format = n, t.get = !0, t.getInner = !0, t.no_events || e.fire("BeforeGetContent", t), o = "raw" === t.format ? kt.trim(up(e.serializer, r.innerHTML)) : "text" === t.format ? e.dom.isEmpty(r) ? "" : po(r.innerText || r.textContent) : "tree" === t.format ? e.serializer.serialize(r, t) : (a = (i = e).serializer.serialize(r, t), u = vc(i), s = new RegExp("^(<" + u + "[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/" + u + ">[\r\n]*|<br \\/>[\r\n]*)$"), a.replace(s, "")), M(["text", "tree"], t.format) || so(At.fromDom(r)) ? t.content = o : t.content = kt.trim(o), t.no_events || e.fire("GetContent", t), t.content
    },
    cp = kt.each,
    lp = function (o) {
      this.compare = function (e, t) {
        if (e.nodeName !== t.nodeName) return !1;
        var n = function (n) {
            var r = {};
            return cp(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
          },
          r = function (e, t) {
            var n, r;
            for (r in e)
              if (e.hasOwnProperty(r)) {
                if (void 0 === (n = t[r])) return !1;
                if (e[r] !== n) return !1;
                delete t[r]
              } for (r in t)
              if (t.hasOwnProperty(r)) return !1;
            return !0
          };
        return !!r(n(e), n(t)) && (!!r(o.parseStyle(o.getAttrib(e, "style")), o.parseStyle(o.getAttrib(t, "style"))) && (!Jl(e) && !Jl(t)))
      }
    },
    fp = function (n, r, o) {
      return U.from(o.container()).filter(In).exists(function (e) {
        var t = n ? 0 : -1;
        return r(e.data.charAt(o.offset() + t))
      })
    },
    dp = N(fp, !0, Zl),
    mp = N(fp, !1, Zl),
    pp = function (e) {
      var t = e.container();
      return In(t) && (0 === t.data.length || mo(t.data) && od.isBookmarkNode(t.parentNode))
    },
    gp = function (t, n) {
      return function (e) {
        return U.from(il(t ? 0 : -1, e)).filter(n).isSome()
      }
    },
    hp = function (e) {
      return jn(e) && "block" === er(At.fromDom(e), "display")
    },
    vp = function (e) {
      return Vn(e) && !(An(t = e) && "all" === t.getAttribute("data-mce-bogus"));
      var t
    },
    yp = gp(!0, hp),
    bp = gp(!1, hp),
    Cp = gp(!0, $n),
    wp = gp(!1, $n),
    xp = gp(!0, Bn),
    Sp = gp(!1, Bn),
    Np = gp(!0, vp),
    Ep = gp(!1, vp),
    kp = function (e) {
      var t = Gu(e, "br"),
        n = H(function (e) {
          for (var t = [], n = e.dom; n;) t.push(At.fromDom(n)), n = n.lastChild;
          return t
        }(e).slice(-1), no);
      t.length === n.length && W(n, pn)
    },
    _p = function (e) {
      mn(e), fn(e, At.fromHtml('<br data-mce-bogus="1">'))
    },
    Ap = function (n) {
      Zt(n).each(function (t) {
        Wt(t).each(function (e) {
          eo(n) && no(t) && eo(e) && pn(t)
        })
      })
    },
    Rp = function (e, t, n) {
      return Pt(t, e) ? function (e, t) {
        for (var n = T(t) ? t : C, r = e.dom, o = []; null !== r.parentNode && r.parentNode !== undefined;) {
          var i = r.parentNode,
            a = At.fromDom(i);
          if (o.push(a), !0 === n(a)) break;
          r = i
        }
        return o
      }(e, function (e) {
        return n(e) || Ot(e, t)
      }).slice(0, -1) : []
    },
    Tp = function (e, t) {
      return Rp(e, t, C)
    },
    Dp = function (e, t) {
      return [e].concat(Tp(e, t))
    },
    Op = function (e, t, n) {
      return Pl(e, t, n, pp)
    },
    Bp = function (e, t) {
      return Y(Dp(At.fromDom(t.container()), e), eo)
    },
    Pp = function (e, n, r) {
      return Op(e, n.dom, r).forall(function (t) {
        return Bp(n, r).fold(function () {
          return !1 === ol(t, r, n.dom)
        }, function (e) {
          return !1 === ol(t, r, n.dom) && Pt(e, At.fromDom(t.container()))
        })
      })
    },
    Lp = function (t, n, r) {
      return Bp(n, r).fold(function () {
        return Op(t, n.dom, r).forall(function (e) {
          return !1 === ol(e, r, n.dom)
        })
      }, function (e) {
        return Op(t, e.dom, r).isNone()
      })
    },
    Ip = N(Lp, !1),
    Mp = N(Lp, !0),
    Fp = N(Pp, !1),
    Up = N(Pp, !0),
    zp = function (e) {
      return ml(e).exists(no)
    },
    jp = function (e, t, n) {
      var r = H(Dp(At.fromDom(n.container()), t), eo),
        o = ne(r).getOr(t);
      return Ol(e, o.dom, n).filter(zp)
    },
    Hp = function (e, t) {
      return ml(t).exists(no) || jp(!0, e, t).isSome()
    },
    Vp = function (e, t) {
      return n = t, U.from(n.getNode(!0)).map(At.fromDom).exists(no) || jp(!1, e, t).isSome();
      var n
    },
    qp = N(jp, !1),
    $p = N(jp, !0),
    Wp = function (e) {
      return Hs.isTextPosition(e) && !e.isAtStart() && !e.isAtEnd()
    },
    Kp = function (e, t) {
      var n = H(Dp(At.fromDom(t.container()), e), eo);
      return ne(n).getOr(e)
    },
    Xp = function (e, t) {
      return Wp(t) ? mp(t) : mp(t) || Ml(Kp(e, t).dom, t).exists(mp)
    },
    Yp = function (e, t) {
      return Wp(t) ? dp(t) : dp(t) || Il(Kp(e, t).dom, t).exists(dp)
    },
    Gp = function (e) {
      return ml(e).bind(function (e) {
        return Ar(e, Ft)
      }).exists(function (e) {
        return t = er(e, "white-space"), M(["pre", "pre-wrap"], t);
        var t
      })
    },
    Jp = function (e, t) {
      return r = t, Ml(e.dom, r).isNone() || (n = t, Il(e.dom, n).isNone()) || Ip(e, t) || Mp(e, t) || Vp(e, t) || Hp(e, t);
      var n, r
    },
    Qp = function (e, t) {
      return !Gp(t) && (Ip(e, t) || Fp(e, t) || Vp(e, t) || Xp(e, t))
    },
    Zp = function (e, t) {
      return !Gp(t) && (Mp(e, t) || Up(e, t) || Hp(e, t) || Yp(e, t))
    },
    eg = function (e, t) {
      return Qp(e, t) || Zp(e, (r = (n = t).container(), o = n.offset(), In(r) && o < r.data.length ? Hs(r, o + 1) : n));
      var n, r, o
    },
    tg = function (e, t) {
      return Ql(e.charAt(t))
    },
    ng = function (e) {
      var t = e.container();
      return In(t) && He(t.data, lo)
    },
    rg = function (e) {
      var n, t = e.data,
        r = (n = t.split(""), z(n, function (e, t) {
          return Ql(e) && 0 < t && t < n.length - 1 && ef(n[t - 1]) && ef(n[t + 1]) ? " " : e
        }).join(""));
      return r !== t && (e.data = r, !0)
    },
    og = function (l, e) {
      return U.some(e).filter(ng).bind(function (e) {
        var t, n, r, o, i, a, u, s, c = e.container();
        return (i = l, u = (a = c).data, s = Hs(a, 0), !(!tg(u, 0) || eg(i, s) || (a.data = " " + u.slice(1), 0)) || rg(c) || (t = l, r = (n = c).data, o = Hs(n, r.length - 1), !(!tg(r, r.length - 1) || eg(t, o) || (n.data = r.slice(0, -1) + " ", 0)))) ? U.some(e) : U.none()
      })
    },
    ig = function (t) {
      var e = At.fromDom(t.getBody());
      t.selection.isCollapsed() && og(e, Hs.fromRangeStart(t.selection.getRng())).each(function (e) {
        t.selection.setRng(e.toRange())
      })
    },
    ag = function (e, t, n) {
      var r, o, i, a, u, s, c, l;
      0 !== n && (r = At.fromDom(e), o = _r(r, eo).getOr(r), i = e.data.slice(t, t + n), a = t + n >= e.data.length && Zp(o, $s(e, e.data.length)), u = 0 === t && Qp(o, $s(e, 0)), e.replaceData(t, n, (c = u, l = a, X(s = i, function (e, t) {
        return Zl(t) || Ql(t) ? e.previousCharIsSpace || "" === e.str && c || e.str.length === s.length - 1 && l ? {
          previousCharIsSpace: !1,
          str: e.str + lo
        } : {
          previousCharIsSpace: !0,
          str: e.str + " "
        } : {
          previousCharIsSpace: !1,
          str: e.str + t
        }
      }, {
        previousCharIsSpace: !1,
        str: ""
      }).str)))
    },
    ug = function (e, t) {
      var n = e.data.slice(t),
        r = n.length - We(n).length;
      return ag(e, t, r)
    },
    sg = function (e, t) {
      var n = e.data.slice(0, t),
        r = n.length - Ke(n).length;
      return ag(e, t - r, r)
    },
    cg = function (e, t, n, r) {
      void 0 === r && (r = !0);
      var o = Ke(e.data).length,
        i = r ? e : t,
        a = r ? t : e;
      return r ? i.appendData(a.data) : i.insertData(0, a.data), pn(At.fromDom(a)), n && ug(i, o), i
    },
    lg = function (e, t) {
      return r = e, o = (n = t).container(), i = n.offset(), !1 === $s.isTextPosition(n) && o === r.parentNode && i > $s.before(r).offset() ? $s(t.container(), t.offset() - 1) : t;
      var n, r, o, i
    },
    fg = function (e) {
      return Lo(e.previousSibling) ? U.some((t = e.previousSibling, In(t) ? $s(t, t.data.length) : $s.after(t))) : e.previousSibling ? Ul(e.previousSibling) : U.none();
      var t
    },
    dg = function (e) {
      return Lo(e.nextSibling) ? U.some((t = e.nextSibling, In(t) ? $s(t, 0) : $s.before(t))) : e.nextSibling ? Fl(e.nextSibling) : U.none();
      var t
    },
    mg = function (r, o) {
      return fg(o).orThunk(function () {
        return dg(o)
      }).orThunk(function () {
        return e = r, t = o, n = $s.before(t.previousSibling ? t.previousSibling : t.parentNode), Ml(e, n).fold(function () {
          return Il(e, $s.after(t))
        }, U.some);
        var e, t, n
      })
    },
    pg = function (n, r) {
      return dg(r).orThunk(function () {
        return fg(r)
      }).orThunk(function () {
        return t = r, Il(e = n, $s.after(t)).fold(function () {
          return Ml(e, $s.before(t))
        }, U.some);
        var e, t
      })
    },
    gg = function (e, t, n) {
      return (e ? pg : mg)(t, n).map(N(lg, n))
    },
    hg = function (t, n, e) {
      e.fold(function () {
        t.focus()
      }, function (e) {
        t.selection.setRng(e.toRange(), n)
      })
    },
    vg = function (e, t) {
      return t && he(e.schema.getBlockElements(), Lt(t))
    },
    yg = function (e) {
      if ($o(e)) {
        var t = At.fromHtml('<br data-mce-bogus="1">');
        return mn(e), fn(e, t), U.some($s.before(t.dom))
      }
      return U.none()
    },
    bg = function (e, t, a) {
      var n, r, o, i, u = Wt(e).filter(Ut),
        s = Kt(e).filter(Ut);
      return pn(e), r = s, o = t, i = function (e, t, n) {
        var r = e.dom,
          o = t.dom,
          i = r.data.length;
        return cg(r, o, a), n.container() === o ? $s(r, i) : n
      }, ((n = u).isSome() && r.isSome() && o.isSome() ? U.some(i(n.getOrDie(), r.getOrDie(), o.getOrDie())) : U.none()).orThunk(function () {
        return a && (u.each(function (e) {
          return sg(e.dom, e.dom.length)
        }), s.each(function (e) {
          return ug(e.dom, 0)
        })), t
      })
    },
    Cg = function (t, n, e, r) {
      void 0 === r && (r = !0);
      var o, i, a = gg(n, t.getBody(), e.dom),
        u = _r(e, N(vg, t), (o = t.getBody(), function (e) {
          return e.dom === o
        })),
        s = bg(e, a, (i = e, he(t.schema.getTextInlineElements(), Lt(i))));
      t.dom.isEmpty(t.getBody()) ? (t.setContent(""), t.selection.setCursorLocation()) : u.bind(yg).fold(function () {
        r && hg(t, n, s)
      }, function (e) {
        r && hg(t, n, U.some(e))
      })
    },
    wg = function (e, t) {
      return {
        start: e,
        end: t
      }
    },
    xg = Cr([{
      removeTable: ["element"]
    }, {
      emptyCells: ["cells"]
    }, {
      deleteCellSelection: ["rng", "cell"]
    }]),
    Sg = function (e, t) {
      return Or(At.fromDom(e), "td,th", t)
    },
    Ng = function (e, t) {
      return Tr(e, "table", t)
    },
    Eg = function (e) {
      return !Ot(e.start, e.end)
    },
    kg = function (e, t) {
      return Ng(e.start, t).bind(function (r) {
        return Ng(e.end, t).bind(function (e) {
          return t = Ot(r, e), n = r, t ? U.some(n) : U.none();
          var t, n
        })
      })
    },
    _g = function (e) {
      return Gu(e, "td,th")
    },
    Ag = function (r, e) {
      var t = Sg(e.startContainer, r),
        n = Sg(e.endContainer, r);
      return e.collapsed ? U.none() : ds(t, n, wg).fold(function () {
        return t.fold(function () {
          return n.bind(function (t) {
            return Ng(t, r).bind(function (e) {
              return ne(_g(e)).map(function (e) {
                return wg(e, t)
              })
            })
          })
        }, function (t) {
          return Ng(t, r).bind(function (e) {
            return re(_g(e)).map(function (e) {
              return wg(t, e)
            })
          })
        })
      }, function (e) {
        return Rg(r, e) ? U.none() : (n = r, Ng((t = e).start, n).bind(function (e) {
          return re(_g(e)).map(function (e) {
            return wg(t.start, e)
          })
        }));
        var t, n
      })
    },
    Rg = function (e, t) {
      return kg(t, e).isSome()
    },
    Tg = function (e, t, n) {
      return e.filter(function (e) {
        return Eg(e) && Rg(n, e)
      }).orThunk(function () {
        return Ag(n, t)
      }).bind(function (e) {
        return kg(t = e, n).map(function (e) {
          return {
            rng: t,
            table: e,
            cells: _g(e)
          }
        });
        var t
      })
    },
    Dg = function (e, t) {
      return G(e, function (e) {
        return Ot(e, t)
      })
    },
    Og = function (e, r, o) {
      return e.filter(function (e) {
        return n = o, !Eg(t = e) && kg(t, n).exists(function (e) {
          var t = e.dom.rows;
          return 1 === t.length && 1 === t[0].cells.length
        }) && jf(e.start, r);
        var t, n
      }).map(function (e) {
        return e.start
      })
    },
    Bg = function (n) {
      return ds(Dg((r = n).cells, r.rng.start), Dg(r.cells, r.rng.end), function (e, t) {
        return r.cells.slice(e, t + 1)
      }).map(function (e) {
        var t = n.cells;
        return e.length === t.length ? xg.removeTable(n.table) : xg.emptyCells(e)
      });
      var r
    },
    Pg = function (e, t) {
      var n, r, o, i, a, u = (n = e, function (e) {
          return Ot(n, e)
        }),
        s = (o = u, i = Sg((r = t).startContainer, o), a = Sg(r.endContainer, o), ds(i, a, wg));
      return Og(s, t, u).map(function (e) {
        return xg.deleteCellSelection(t, e)
      }).orThunk(function () {
        return Tg(s, t, u).bind(Bg)
      })
    },
    Lg = function (e) {
      var t;
      return (8 === It(t = e) || "#comment" === Lt(t) ? Wt : Zt)(e).bind(Lg).orThunk(function () {
        return U.some(e)
      })
    },
    Ig = function (e, t) {
      return W(t, _p), e.selection.setCursorLocation(t[0].dom, 0), !0
    },
    Mg = function (e, t, n) {
      t.deleteContents();
      var r, o, i = Lg(n).getOr(n),
        a = At.fromDom(e.dom.getParent(i.dom, e.dom.isBlock));
      return $o(a) && (_p(a), e.selection.setCursorLocation(a.dom, 0)), Ot(n, a) || (r = $t(a).is(n) ? [] : $t(o = a).map(Gt).map(function (e) {
        return H(e, function (e) {
          return !Ot(o, e)
        })
      }).getOr([]), W(r.concat(Gt(n)), function (e) {
        Ot(e, a) || Pt(e, a) || pn(e)
      })), !0
    },
    Fg = function (e, t) {
      return Cg(e, !1, t), !0
    },
    Ug = function (n, e, r, t) {
      return jg(e, t).fold(function () {
        return t = n, Pg(e, r).map(function (e) {
          return e.fold(N(Fg, t), N(Ig, t), N(Mg, t))
        });
        var t
      }, function (e) {
        return Hg(n, e)
      }).getOr(!1)
    },
    zg = function (e, t) {
      return Y(Dp(t, e), uo)
    },
    jg = function (e, t) {
      return Y(Dp(t, e), function (e) {
        return "caption" === Lt(e)
      })
    },
    Hg = function (e, t) {
      return _p(t), e.selection.setCursorLocation(t.dom, 0), U.some(!0)
    },
    Vg = function (u, s, c, l, f) {
      return Bl(c, u.getBody(), f).bind(function (e) {
        return o = c, i = f, a = e, Fl((r = l).dom).bind(function (t) {
          return Ul(r.dom).map(function (e) {
            return o ? i.isEqual(t) && a.isEqual(e) : i.isEqual(e) && a.isEqual(t)
          })
        }).getOr(!0) ? Hg(u, l) : (t = l, n = e, jg(s, At.fromDom(n.getNode())).map(function (e) {
          return !1 === Ot(e, t)
        }));
        var t, n, r, o, i, a
      }).or(U.some(!0))
    },
    qg = function (o, i, a, e) {
      var u = $s.fromRangeStart(o.selection.getRng());
      return zg(a, e).bind(function (e) {
        return $o(e) ? Hg(o, e) : (t = a, n = e, r = u, Bl(i, o.getBody(), r).bind(function (e) {
          return zg(t, At.fromDom(e.getNode())).map(function (e) {
            return !1 === Ot(e, n)
          })
        }));
        var t, n, r
      }).getOr(!1)
    },
    $g = function (e, t) {
      return (e ? xp : Sp)(t)
    },
    Wg = function (a, u, r) {
      var s = At.fromDom(a.getBody());
      return jg(s, r).fold(function () {
        return qg(a, u, s, r) || (e = a, t = u, n = $s.fromRangeStart(e.selection.getRng()), $g(t, n) || Ol(t, e.getBody(), n).exists(function (e) {
          return $g(t, e)
        }));
        var e, t, n
      }, function (e) {
        return t = a, n = u, r = s, o = e, i = $s.fromRangeStart(t.selection.getRng()), ($o(o) ? Hg(t, o) : Vg(t, r, n, o, i)).getOr(!1);
        var t, n, r, o, i
      })
    },
    Kg = function (e, t) {
      var n, r, o, i, a, u = At.fromDom(e.selection.getStart(!0)),
        s = Ff(e);
      return e.selection.isCollapsed() && 0 === s.length ? Wg(e, t, u) : (n = e, r = u, o = At.fromDom(n.getBody()), i = n.selection.getRng(), 0 !== (a = Ff(n)).length ? Ig(n, a) : Ug(n, o, i, r))
    },
    Xg = function (a) {
      var u = $s.fromRangeStart(a),
        s = $s.fromRangeEnd(a),
        c = a.commonAncestorContainer;
      return Ol(!1, c, s).map(function (e) {
        return !ol(u, s, c) && ol(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)
    },
    Yg = function (e) {
      return e.collapsed ? e : Xg(e)
    },
    Gg = function (e, t) {
      var n, r;
      return e.getBlockElements()[t.name] && ((r = t).firstChild && r.firstChild === r.lastChild) && ("br" === (n = t.firstChild).name || n.value === lo)
    },
    Jg = function (e, t) {
      var n, r, o, i = t.firstChild,
        a = t.lastChild;
      return i && "meta" === i.name && (i = i.next), a && "mce_marker" === a.attr("id") && (a = a.prev), r = a, o = (n = e).getNonEmptyElements(), r && (r.isEmpty(o) || Gg(n, r)) && (a = a.prev), !(!i || i !== a) && ("ul" === i.name || "ol" === i.name)
    },
    Qg = function (e) {
      return e && e.firstChild && e.firstChild === e.lastChild && ((t = e.firstChild).data === lo || zn(t));
      var t
    },
    Zg = function (e) {
      return 0 < e.length && (!(t = e[e.length - 1]).firstChild || Qg(t)) ? e.slice(0, -1) : e;
      var t
    },
    eh = function (e, t) {
      var n = e.getParent(t, e.isBlock);
      return n && "LI" === n.nodeName ? n : null
    },
    th = function (e, t) {
      var n = $s.after(e),
        r = _l(t).prev(n);
      return r ? r.toRange() : null
    },
    nh = function (t, e, n) {
      var r, o, i, a, u = t.parentNode;
      return kt.each(e, function (e) {
        u.insertBefore(e, t)
      }), r = t, o = n, i = $s.before(r), (a = _l(o).next(i)) ? a.toRange() : null
    },
    rh = function (e, o, i, t) {
      var n, r, a, u, s, c, l, f, d, m, p, g, h, v, y, b, C, w, x, S, N = (n = o, r = t, c = e.serialize(r), l = n.createFragment(c), u = (a = l).firstChild, s = a.lastChild, u && "META" === u.nodeName && u.parentNode.removeChild(u), s && "mce_marker" === s.id && s.parentNode.removeChild(s), a),
        E = eh(o, i.startContainer),
        k = Zg((f = N.firstChild, kt.grep(f.childNodes, function (e) {
          return "LI" === e.nodeName
        }))),
        _ = o.getRoot(),
        A = function (e) {
          var t = $s.fromRangeStart(i),
            n = _l(o.getRoot()),
            r = 1 === e ? n.prev(t) : n.next(t);
          return !r || eh(o, r.getNode()) !== E
        };
      return A(1) ? nh(E, k, _) : A(2) ? (d = E, m = k, p = _, o.insertAfter(m.reverse(), d), th(m[0], p)) : (h = k, v = _, y = g = E, C = (b = i).cloneRange(), w = b.cloneRange(), C.setStartBefore(y), w.setEndAfter(y), x = [C.cloneContents(), w.cloneContents()], (S = g.parentNode).insertBefore(x[0], g), kt.each(h, function (e) {
        S.insertBefore(e, g)
      }), S.insertBefore(x[1], g), S.removeChild(g), th(h[h.length - 1], v))
    },
    oh = qn,
    ih = function (e) {
      var t = e.dom,
        n = Yg(e.selection.getRng());
      e.selection.setRng(n);
      var r, o, i, a = t.getParent(n.startContainer, oh);
      r = t, o = n, null !== (i = a) && i === r.getParent(o.endContainer, oh) && jf(At.fromDom(i), o) ? Mg(e, n, At.fromDom(a)) : e.getDoc().execCommand("Delete", !1, null)
    },
    ah = function (e, t, n) {
      var r, o, i, a, u, s, c, l, f, d = e.selection,
        m = e.dom;
      /^ | $/.test(t) && (s = m, c = d.getRng(), l = t, f = At.fromDom(s.getRoot()), l = Qp(f, $s.fromRangeStart(c)) ? l.replace(/^ /, "&nbsp;") : l.replace(/^&nbsp;/, " "), t = l = Zp(f, $s.fromRangeEnd(c)) ? l.replace(/(&nbsp;| )(<br( \/)>)?$/, "&nbsp;") : l.replace(/&nbsp;(<br( \/)?>)?$/, " "));
      var p = e.parser,
        g = n.merge,
        h = Jm({
          validate: e.getParam("validate")
        }, e.schema),
        v = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;</span>',
        y = {
          content: t,
          format: "html",
          selection: !0,
          paste: n.paste
        };
      if ((y = e.fire("BeforeSetContent", y)).isDefaultPrevented()) e.fire("SetContent", {
        content: y.content,
        format: "html",
        selection: !0,
        paste: n.paste
      });
      else {
        -1 === (t = y.content).indexOf("{$caret}") && (t += "{$caret}"), t = t.replace(/\{\$caret\}/, v);
        var b, C, w = (a = d.getRng()).startContainer || (a.parentElement ? a.parentElement() : null),
          x = e.getBody();
        w === x && d.isCollapsed() && m.isBlock(x.firstChild) && (b = e, (C = x.firstChild) && !b.schema.getShortEndedElements()[C.nodeName]) && m.isEmpty(x.firstChild) && ((a = m.createRng()).setStart(x.firstChild, 0), a.setEnd(x.firstChild, 0), d.setRng(a)), d.isCollapsed() || ih(e);
        var S, N, E, k, _, A, R, T, D, O, B, P, L, I, M = {
            context: (r = d.getNode()).nodeName.toLowerCase(),
            data: n.data,
            insert: !0
          },
          F = p.parse(t, M);
        if (!0 === n.paste && Jg(e.schema, F) && eh(m, r)) return a = rh(h, m, d.getRng(), F), d.setRng(a), void e.fire("SetContent", y);
        if (! function (e) {
            for (var t = e; t = t.walk();) 1 === t.type && t.attr("data-mce-fragment", "1")
          }(F), "mce_marker" === (u = F.lastChild).attr("id"))
          for (u = (i = u).prev; u; u = u.walk(!0))
            if (3 === u.type || !m.isBlock(u.name)) {
              e.schema.isValidChild(u.parent.name, "span") && u.parent.insert(i, u, "br" === u.name);
              break
            } if (e._selectionOverrides.showBlockCaretContainer(r), M.invalid) {
          for (e.selection.setContent(v), r = d.getNode(), o = e.getBody(), 9 === r.nodeType ? r = u = o : u = r; u !== o;) u = (r = u).parentNode;
          t = r === o ? o.innerHTML : m.getOuterHTML(r), t = h.serialize(p.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function () {
            return h.serialize(F)
          }))), r === o ? m.setHTML(o, t) : m.setOuterHTML(r, t)
        } else t = h.serialize(F), S = e, N = t, "all" === (E = r).getAttribute("data-mce-bogus") ? E.parentNode.insertBefore(S.dom.createFragment(N), E) : (k = E.firstChild, _ = E.lastChild, !k || k === _ && "BR" === k.nodeName ? S.dom.setHTML(E, N) : S.selection.setContent(N));
        R = g, O = (A = e).schema.getTextInlineElements(), B = A.dom, R && (T = A.getBody(), D = new lp(B), kt.each(B.select("*[data-mce-fragment]"), function (e) {
            for (var t = e.parentNode; t && t !== T; t = t.parentNode) O[e.nodeName.toLowerCase()] && D.compare(t, e) && B.remove(e, !0)
          })),
          function (n, e) {
            var t, r, o = n.dom,
              i = n.selection;
            if (e) {
              i.scrollIntoView(e);
              var a = function (e) {
                for (var t = n.getBody(); e && e !== t; e = e.parentNode)
                  if ("false" === o.getContentEditable(e)) return e;
                return null
              }(e);
              if (a) return o.remove(e), i.select(a);
              var u = o.createRng(),
                s = e.previousSibling;
              s && 3 === s.nodeType ? (u.setStart(s, s.nodeValue.length), wt.ie || (r = e.nextSibling) && 3 === r.nodeType && (s.appendData(r.data), r.parentNode.removeChild(r))) : (u.setStartBefore(e), u.setEndBefore(e));
              var c = o.getParent(e, o.isBlock);
              o.remove(e), c && o.isEmpty(c) && (n.$(c).empty(), u.setStart(c, 0), u.setEnd(c, 0), oh(c) || c.getAttribute("data-mce-fragment") || !(t = function (e) {
                var t = $s.fromRangeStart(e);
                if (t = _l(n.getBody()).next(t)) return t.toRange()
              }(u)) ? o.add(c, o.create("br", {
                "data-mce-bogus": "1"
              })) : (u = t, o.remove(c))), i.setRng(u)
            }
          }(e, m.get("mce_marker")), P = e.getBody(), kt.each(P.getElementsByTagName("*"), function (e) {
            e.removeAttribute("data-mce-fragment")
          }), L = m, I = d.getStart(), U.from(L.getParent(I, "td,th")).map(At.fromDom).each(Ap), e.fire("SetContent", y), e.addVisual()
      }
    },
    uh = function (e, t) {
      t(e), e.firstChild && uh(e.firstChild, t), e.next && uh(e.next, t)
    },
    sh = function (e, t, n) {
      var r = function (e, n, t) {
        var r = {},
          o = {},
          i = [];
        for (var a in t.firstChild && uh(t.firstChild, function (t) {
            W(e, function (e) {
              e.name === t.name && (r[e.name] ? r[e.name].nodes.push(t) : r[e.name] = {
                filter: e,
                nodes: [t]
              })
            }), W(n, function (e) {
              "string" == typeof t.attr(e.name) && (o[e.name] ? o[e.name].nodes.push(t) : o[e.name] = {
                filter: e,
                nodes: [t]
              })
            })
          }), r) r.hasOwnProperty(a) && i.push(r[a]);
        for (var u in o) o.hasOwnProperty(u) && i.push(o[u]);
        return i
      }(e, t, n);
      W(r, function (t) {
        W(t.filter.callbacks, function (e) {
          e(t.nodes, t.filter.name, {})
        })
      })
    },
    ch = function (e) {
      return e instanceof Km
    },
    lh = function (e, t) {
      var r;
      e.dom.setHTML(e.getBody(), t), Em(r = e) && Fl(r.getBody()).each(function (e) {
        var t = e.getNode(),
          n = Bn(t) ? Fl(t).getOr(e) : e;
        r.selection.setRng(n.toRange())
      })
    },
    fh = function (u, s, c) {
      return c.format = c.format ? c.format : "html", c.set = !0, c.content = ch(s) ? "" : s, c.no_events || u.fire("BeforeSetContent", c), ch(s) || (s = c.content), U.from(u.getBody()).fold(E(s), function (e) {
        return ch(s) ? function (e, t, n, r) {
          sh(e.parser.getNodeFilters(), e.parser.getAttributeFilters(), n);
          var o = Jm({
            validate: e.validate
          }, e.schema).serialize(n);
          return r.content = so(At.fromDom(t)) ? o : kt.trim(o), lh(e, r.content), 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) ? (a = '<br data-mce-bogus="1">', "TABLE" === n.nodeName ? r = "<tr><td>" + a + "</td></tr>" : /^(UL|OL)$/.test(n.nodeName) && (r = "<li>" + a + "</li>"), r = (i = vc(t)) && t.schema.isValidChild(n.nodeName.toLowerCase(), i.toLowerCase()) ? (r = a, t.dom.createHTML(i, yc(t), r)) : r || '<br data-mce-bogus="1">', lh(t, r), t.fire("SetContent", o)) : ("raw" !== o.format && (r = Jm({
          validate: t.validate
        }, t.schema).serialize(t.parser.parse(r, {
          isRootContent: !0,
          insert: !0
        }))), o.content = so(At.fromDom(n)) ? r : kt.trim(r), lh(t, o.content), o.no_events || t.fire("SetContent", o)), o.content);
        var t, n, r, o, i, a
      })
    },
    dh = function (e, t) {
      return r = t, ((o = (n = e).dom).parentNode ? Rr(At.fromDom(o.parentNode), function (e) {
        return !Ot(n, e) && r(e)
      }) : U.none()).isSome();
      var n, r, o
    },
    mh = fo,
    ph = "_mce_caret",
    gh = function (e) {
      return 0 < function (e) {
        for (var t = []; e;) {
          if (3 === e.nodeType && e.nodeValue !== mh || 1 < e.childNodes.length) return [];
          1 === e.nodeType && t.push(e), e = e.firstChild
        }
        return t
      }(e).length
    },
    hh = function (e) {
      if (e) {
        var t = new Xr(e, e);
        for (e = t.current(); e; e = t.next())
          if (In(e)) return e
      }
      return null
    },
    vh = function (e) {
      var t = At.fromTag("span");
      return Yn(t, {
        id: ph,
        "data-mce-bogus": "1",
        "data-mce-type": "format-caret"
      }), e && fn(t, At.fromText(mh)), t
    },
    yh = function (e, t, n) {
      void 0 === n && (n = !0);
      var r, o, i, a, u, s, c, l, f = e.dom,
        d = e.selection;
      gh(t) ? Cg(e, !1, At.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 = hh(t)) && l.nodeValue.charAt(0) === mh && 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) && _p(At.fromDom(o)), d.setRng(r))
    },
    bh = function (e, t, n) {
      void 0 === n && (n = !0);
      var r = e.dom,
        o = e.selection;
      if (t) yh(e, t, n);
      else if (!(t = Hl(e.getBody(), o.getStart())))
        for (; t = r.get(ph);) yh(e, t, !1)
    },
    Ch = function (e, t) {
      return e.appendChild(t), t
    },
    wh = function (e, t) {
      var n = K(e, function (e, t) {
        return Ch(e, t.cloneNode(!1))
      }, t);
      return Ch(n, n.ownerDocument.createTextNode(mh))
    },
    xh = function (e, t, n, r) {
      var o, i, a, u, s, c, l, f, d, m, p, g, h, v = e.dom,
        y = e.selection,
        b = [],
        C = y.getRng(),
        w = C.startContainer,
        x = C.startOffset,
        S = w;
      for (3 === w.nodeType && (x !== w.nodeValue.length && (o = !0), S = S.parentNode); S;) {
        if (zm(e, S, t, n, r)) {
          i = S;
          break
        }
        S.nextSibling && (o = !0), b.push(S), S = S.parentNode
      }
      i && (o ? (a = y.getBookmark(), C.collapse(!0), u = Of(e, C, e.formatter.get(t), !0), u = Cd(u), e.formatter.remove(t, n, u, r), y.moveToBookmark(a)) : (s = Hl(e.getBody(), i), c = vh(!1).dom, m = c, p = null !== s ? s : i, g = (d = e).dom, (h = g.getParent(p, N( of , d))) && g.isEmpty(h) ? p.parentNode.replaceChild(m, p) : (kp(At.fromDom(p)), g.isEmpty(p) ? p.parentNode.replaceChild(m, p) : g.insertAfter(m, p)), l = function (t, e, n, r, o, i) {
        var a = t.formatter,
          u = t.dom,
          s = H(ie(a.get()), function (e) {
            return e !== r && !He(e, "removeformat")
          }),
          c = Vm(t, n, s);
        if (0 < H(c, function (e) {
            return !pf(t, e, r)
          }).length) {
          var l = n.cloneNode(!1);
          return u.add(e, l), a.remove(r, o, l, i), u.remove(l), U.some(l)
        }
        return U.none()
      }(e, c, i, t, n, r), f = wh(b.concat(l.toArray()), c), yh(e, s, !1), y.setCursorLocation(f, 1), v.isEmpty(i) && v.remove(i)))
    },
    Sh = function (i) {
      i.on("mouseup keydown", function (e) {
        var t, n, r, o;
        t = i, n = e.keyCode, r = t.selection, o = t.getBody(), bh(t, null, !1), 8 !== n && 46 !== n || !r.isCollapsed() || r.getStart().innerHTML !== mh || bh(t, Hl(o, r.getStart())), 37 !== n && 39 !== n || bh(t, Hl(o, r.getStart()))
      })
    },
    Nh = function (e, t) {
      return e.schema.getTextInlineElements().hasOwnProperty(Lt(t)) && !jl(t.dom) && !On(t.dom)
    },
    Eh = {},
    kh = we,
    _h = be;
  op = function (e) {
    var t, n = e.selection.getRng(),
      r = Rn(["pre"]);
    n.collapsed || (t = e.selection.getSelectedBlocks(), _h(kh(kh(t, r), function (e) {
      return r(e.previousSibling) && -1 !== xe(t, e.previousSibling)
    }), function (e) {
      var t, n;
      t = e.previousSibling, hu(n = e).remove(), hu(t).append("<br><br>").append(n.childNodes)
    }))
  }, Eh[rp = "pre"] || (Eh[rp] = []), Eh[rp].push(op);
  var Ah = kt.each,
    Rh = function (e) {
      return An(e) && !Jl(e) && !jl(e) && !On(e)
    },
    Th = function (e, t) {
      for (var n = e; n; n = n[t]) {
        if (In(n) && 0 !== n.nodeValue.length) return e;
        if (An(n) && !Jl(n)) return n
      }
      return e
    },
    Dh = function (e, t, n) {
      var r, o, i = new lp(e);
      if (t && n && (t = Th(t, "previousSibling"), n = Th(n, "nextSibling"), i.compare(t, n))) {
        for (r = t.nextSibling; r && r !== n;) r = (o = r).nextSibling, t.appendChild(o);
        return e.remove(n), kt.each(kt.grep(n.childNodes), function (e) {
          t.appendChild(e)
        }), t
      }
      return n
    },
    Oh = function (e, t, n, r) {
      var o;
      r && !1 !== t.merge_siblings && (o = Dh(e, rf(r), r), Dh(e, o, rf(o, !0)))
    },
    Bh = function (e, t, n) {
      Ah(e.childNodes, function (e) {
        Rh(e) && (t(e) && n(e), e.hasChildNodes() && Bh(e, t, n))
      })
    },
    Ph = function (t, n) {
      return function (e) {
        return !(!e || !ff(t, e, n))
      }
    },
    Lh = function (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)
      }
    },
    Ih = Cr([{
      keep: []
    }, {
      rename: ["name"]
    }, {
      removed: []
    }]),
    Mh = /^(src|href|style)$/,
    Fh = kt.each,
    Uh = cf,
    zh = function (e, t, n) {
      return e.isChildOf(t, n) && t !== n && !e.isBlock(n)
    },
    jh = function (e, t, n) {
      var r, o = t[n ? "startContainer" : "endContainer"],
        i = t[n ? "startOffset" : "endOffset"];
      return An(o) && (r = o.childNodes.length - 1, !n && i && i--, o = o.childNodes[r < i ? r : i]), In(o) && n && i >= o.nodeValue.length && (o = new Xr(o, e.getBody()).next() || o), In(o) && !n && 0 === i && (o = new Xr(o, e.getBody()).prev() || o), o
    },
    Hh = function (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
    },
    Vh = function (e, t, n, r) {
      var o = e.create(n, r);
      return t.parentNode.insertBefore(o, t), o.appendChild(t), o
    },
    qh = function (e, t, n, r, o) {
      var i = At.fromDom(t),
        a = At.fromDom(e.create(r, o)),
        u = (n ? Yt : Xt)(i);
      return dn(a, u), n ? (sn(i, a), ln(a, i)) : (cn(i, a), fn(a, i)), a.dom
    },
    $h = function (e, t, n, r) {
      return !(t = rf(t, n, r)) || "BR" === t.nodeName || e.isBlock(t)
    },
    Wh = function (e, r, o, t, i) {
      var n, a, u, s, c, l = e.dom;
      if (u = l, !(Uh(s = t, (c = r).inline) || Uh(s, c.block) || c.selector && (An(s) && u.is(s, c.selector)) || (a = t, r.links && "A" === a.nodeName))) return Ih.keep();
      var f, d, m, p, g, h, v, y = t;
      if (r.inline && "all" === r.remove && S(r.preserve_attributes)) {
        var b = H(l.getAttribs(y), function (e) {
          return M(r.preserve_attributes, e.name.toLowerCase())
        });
        if (l.removeAllAttribs(y), W(b, function (e) {
            return l.setAttrib(y, e.name, e.value)
          }), 0 < b.length) return Ih.rename("span")
      }
      if ("all" !== r.remove) {
        Fh(r.styles, function (e, t) {
          e = lf(l, sf(e, o), t + ""), O(t) && (t = e, i = null), !r.remove_similar && i && !Uh(ff(l, i, t), e) || l.setStyle(y, t, ""), n = !0
        }), n && "" === l.getAttrib(y, "style") && (y.removeAttribute("style"), y.removeAttribute("data-mce-style")), Fh(r.attributes, function (e, t) {
          var n;
          if (e = sf(e, o), O(t) && (t = e, i = null), r.remove_similar || !i || Uh(l.getAttrib(i, t), e)) {
            if ("class" === t && (e = l.getAttrib(y, t)) && (n = "", W(e.split(/\s+/), function (e) {
                /mce\-\w+/.test(e) && (n += (n ? " " : "") + e)
              }), n)) return void l.setAttrib(y, t, n);
            "class" === t && y.removeAttribute("className"), Mh.test(t) && y.removeAttribute("data-mce-" + t), y.removeAttribute(t)
          }
        }), Fh(r.classes, function (e) {
          e = sf(e, o), i && !l.hasClass(i, e) || l.removeClass(y, e)
        });
        for (var C = l.getAttribs(y), w = 0; w < C.length; w++) {
          var x = C[w].nodeName;
          if (0 !== x.indexOf("_") && 0 !== x.indexOf("data-")) return Ih.keep()
        }
      }
      return "none" !== r.remove ? (f = e, m = r, g = (d = y).parentNode, h = f.dom, v = vc(f), m.block && (v ? g === h.getRoot() && (m.list_block && Uh(d, m.list_block) || W(oe(d.childNodes), function (e) {
        af(f, v, e.nodeName.toLowerCase()) ? p ? p.appendChild(e) : (p = Vh(h, e, v), h.setAttribs(p, f.settings.forced_root_block_attrs)) : p = 0
      })) : h.isBlock(d) && !h.isBlock(g) && ($h(h, d, !1) || $h(h, d.firstChild, !0, !0) || d.insertBefore(h.create("br"), d.firstChild), $h(h, d, !0) || $h(h, d.lastChild, !1, !0) || d.appendChild(h.create("br")))), m.selector && m.inline && !Uh(m.inline, d) || h.remove(d, !0), Ih.removed()) : Ih.keep()
    },
    Kh = function (t, e, n, r, o) {
      return Wh(t, e, n, r, o).fold(C, function (e) {
        return t.dom.rename(r, e), !0
      }, k)
    },
    Xh = function (e, t, n, r, o, i, a, u) {
      var s, c, l, f = e.dom;
      if (n) {
        for (var d = n.parentNode, m = r.parentNode; m && m !== d; m = m.parentNode) {
          s = f.clone(m, !1);
          for (var p = 0; p < t.length && null !== (s = function (t, e, n, r) {
              return Wh(t, e, n, r, r).fold(E(r), function (e) {
                return t.dom.createFragment().appendChild(r), t.dom.rename(r, e)
              }, E(null))
            }(e, t[p], u, s)); p++);
          s && (c && s.appendChild(c), l = l || s, c = s)
        }!i || a.mixed && f.isBlock(n) || (r = f.split(n, r)), c && (o.parentNode.insertBefore(c, o), l.appendChild(o), a.inline && Oh(f, a, 0, c))
      }
      return r
    },
    Yh = function (s, c, l, e, f) {
      var t, d = s.formatter.get(c),
        m = d[0],
        i = !0,
        a = s.dom,
        n = s.selection,
        u = function (e) {
          var n, t, r, o, i, a, u = (t = e, r = c, o = l, i = f, W(mf((n = s).dom, t.parentNode).reverse(), function (e) {
            var t;
            a || "_start" === e.id || "_end" === e.id || (t = zm(n, e, r, o, i)) && !1 !== t.split && (a = e)
          }), a);
          return Xh(s, d, u, e, e, !0, m, l)
        },
        p = function (e) {
          var t, n;
          An(e) && a.getContentEditable(e) && (t = i, i = "true" === a.getContentEditable(e), n = !0);
          var r = oe(e.childNodes);
          if (i && !n)
            for (var o = 0; o < d.length && !Kh(s, d[o], l, e, e); o++);
          if (m.deep && r.length) {
            for (o = 0; o < r.length; o++) p(r[o]);
            n && (i = t)
          }
        },
        g = function (e) {
          var t, n = a.get(e ? "_start" : "_end"),
            r = n[e ? "firstChild" : "lastChild"];
          return Jl(t = r) && An(t) && ("_start" === t.id || "_end" === t.id) && (r = r[e ? "firstChild" : "lastChild"]), In(r) && 0 === r.data.length && (r = e ? n.previousSibling || n.nextSibling : n.nextSibling || n.previousSibling), a.remove(n, !0), r
        },
        r = function (e) {
          var t, n, r = Of(s, e, d, e.collapsed);
          if (m.split) {
            if (r = Cd(r), (t = jh(s, r, !0)) !== (n = jh(s, r))) {
              if (t = Hh(t, !0), n = Hh(n, !1), zh(a, t, n)) {
                var o = U.from(t.firstChild).getOr(t);
                return u(qh(a, o, !0, "span", {
                  id: "_start",
                  "data-mce-type": "bookmark"
                })), void g(!0)
              }
              if (zh(a, n, t)) {
                o = U.from(n.lastChild).getOr(n);
                return u(qh(a, o, !1, "span", {
                  id: "_end",
                  "data-mce-type": "bookmark"
                })), void g(!1)
              }
              t = Vh(a, t, "span", {
                id: "_start",
                "data-mce-type": "bookmark"
              }), n = Vh(a, n, "span", {
                id: "_end",
                "data-mce-type": "bookmark"
              });
              var i = a.createRng();
              i.setStartAfter(t), i.setEndBefore(n), Pf(a, i, function (e) {
                W(e, function (e) {
                  Jl(e) || Jl(e.parentNode) || u(e)
                })
              }), u(t), u(n), t = g(!0), n = g()
            } else t = n = u(t);
            r.startContainer = t.parentNode ? t.parentNode : t, r.startOffset = a.nodeIndex(t), r.endContainer = n.parentNode ? n.parentNode : n, r.endOffset = a.nodeIndex(n) + 1
          }
          Pf(a, r, function (e) {
            W(e, function (t) {
              p(t);
              W(["underline", "line-through", "overline"], function (e) {
                An(t) && s.dom.getStyle(t, "text-decoration") === e && t.parentNode && df(a, t.parentNode) === e && Kh(s, {
                  deep: !1,
                  exact: !0,
                  inline: "span",
                  styles: {
                    textDecoration: e
                  }
                }, null, t)
              })
            })
          })
        };
      if (e) tf(e) ? ((t = a.createRng()).setStartBefore(e), t.setEndAfter(e), r(t)) : r(e);
      else if ("false" !== a.getContentEditable(n.getNode())) n.isCollapsed() && m.inline && !Ff(s).length ? xh(s, c, l, f) : ($f(n, !0, function () {
        qf(s, r)
      }), m.inline && jm(s, c, l, n.getStart()) && nf(a, n, n.getRng()), s.nodeChanged());
      else {
        e = n.getNode();
        for (var o = 0; o < d.length && (!d[o].ceFalseOverride || !Kh(s, d[o], l, e, e)); o++);
      }
    },
    Gh = kt.each,
    Jh = function (i, e, a, u) {
      Gh(e, function (t) {
        var r, e, n, o;
        Gh(i.dom.select(t.inline, u), function (e) {
          Rh(e) && Kh(i, t, a, e, t.exact ? e : null)
        }), r = i.dom, n = u, (e = t).clear_child_styles && (o = e.links ? "*:not(a)" : "*", Ah(r.select(o, n), function (n) {
          Rh(n) && Ah(e.styles, function (e, t) {
            r.setStyle(n, t, "")
          })
        }))
      })
    },
    Qh = kt.each,
    Zh = ve,
    ev = function (E, k, _, r) {
      var e, t, n, o, A = E.formatter.get(k),
        R = A[0],
        i = !r && E.selection.isCollapsed(),
        a = E.dom,
        u = E.selection,
        T = function (n, e) {
          var t;
          e = e || R, n && (e.onformat && e.onformat(n, e, _, r), Qh(e.styles, function (e, t) {
            a.setStyle(n, t, sf(e, _))
          }), !e.styles || (t = a.getAttrib(n, "style")) && a.setAttrib(n, "data-mce-style", t), Qh(e.attributes, function (e, t) {
            a.setAttrib(n, t, sf(e, _))
          }), Qh(e.classes, function (e) {
            e = sf(e, _), a.hasClass(n, e) || a.addClass(n, e)
          }))
        },
        m = function (e, t) {
          var n = !1;
          return !!hf(R) && (Qh(e, function (e) {
            if (!("collapsed" in e && e.collapsed !== i)) return a.is(t, e.selector) && !jl(t) ? (T(t, e), !(n = !0)) : void 0
          }), n)
        },
        s = function (S, e, t, c) {
          var N = [],
            l = !0,
            f = R.inline || R.block,
            d = S.create(f);
          T(d), Pf(S, e, function (e) {
            var u, s = function (e) {
              var t = !1,
                n = l,
                r = e.nodeName.toLowerCase(),
                o = e.parentNode.nodeName.toLowerCase();
              if (An(e) && S.getContentEditable(e) && (n = l, l = "true" === S.getContentEditable(e), t = !0), zn(e) && ! function (e, t, n, r) {
                  if (e.getParam("format_empty_lines", !1, "boolean") && vf(t)) {
                    var o = ke(ke({}, e.schema.getTextBlockElements()), {
                        td: {},
                        th: {},
                        li: {},
                        dt: {},
                        dd: {},
                        figcaption: {},
                        caption: {},
                        details: {},
                        summary: {}
                      }),
                      i = dh(At.fromDom(n), function (e) {
                        return jl(e.dom)
                      });
                    return ve(o, r) && $o(At.fromDom(n.parentNode), !1) && !i
                  }
                  return !1
                }(E, R, e, o)) return u = null, void(gf(R) && S.remove(e));
              if (R.wrapper && zm(E, e, k, _)) u = null;
              else {
                if (l && !t && gf(R) && !R.wrapper && of (E, r) && af(E, o, f)) {
                  var i = S.rename(e, f);
                  return T(i), N.push(i), void(u = null)
                }
                if (hf(R)) {
                  var a = m(A, e);
                  if (!Zh(R, "inline") || a) return void(u = null)
                }!l || t || !af(E, f, r) || !af(E, o, f) || !c && 3 === e.nodeType && 1 === e.nodeValue.length && 65279 === e.nodeValue.charCodeAt(0) || jl(e) || Zh(R, "inline") && S.isBlock(e) ? (u = null, Qh(kt.grep(e.childNodes), s), t && (l = n), u = null) : (u || (u = S.clone(d, !1), e.parentNode.insertBefore(u, e), N.push(u)), u.appendChild(e))
              }
            };
            Qh(e, s)
          }), !0 === R.links && Qh(N, function (e) {
            var t = function (e) {
              "A" === e.nodeName && T(e, R), Qh(kt.grep(e.childNodes), t)
            };
            t(e)
          }), Qh(N, function (e) {
            var n, t, r, o, i, a, u, s, c, l, f, d, m, p, g, h, v, y, b, C, w = function (e) {
                var n = !1;
                return Qh(e.childNodes, function (e) {
                  if ((t = e) && 1 === t.nodeType && !Jl(t) && !jl(t) && !On(t)) return n = e, !1;
                  var t
                }), n
              },
              x = (n = 0, Qh(e.childNodes, function (e) {
                var t;
                D(t = e) && In(t) && 0 === t.length || Jl(e) || n++
              }), n);
            !(1 < N.length) && S.isBlock(e) || 0 !== x ? (vf(R) || R.wrapper) && (R.exact || 1 !== x || ((C = w(y = e)) && !Jl(C) && Fm(S, C, R) && (b = S.clone(C, !1), T(b), S.replace(b, y, !0), S.remove(C, !0)), e = b || y), Jh(E, A, _, e), p = R, g = k, h = _, zm(m = E, (v = e).parentNode, g, h) && Kh(m, p, h, v) || p.merge_with_parents && m.dom.getParent(v.parentNode, function (e) {
              if (zm(m, e, g, h)) return Kh(m, p, h, v), !0
            }), c = S, f = _, d = e, (l = R).styles && l.styles.backgroundColor && Bh(d, Ph(c, "fontSize"), Lh(c, "backgroundColor", sf(l.styles.backgroundColor, f))), i = S, u = e, s = function (e) {
              var t;
              1 === e.nodeType && e.parentNode && 1 === e.parentNode.nodeType && (t = df(i, e.parentNode), i.getStyle(e, "color") && t ? i.setStyle(e, "text-decoration", t) : i.getStyle(e, "text-decoration") === t && i.setStyle(e, "text-decoration", null))
            }, (a = R).styles && (a.styles.color || a.styles.textDecoration) && (kt.walk(u, s, "childNodes"), s(u)), t = S, o = e, "sub" !== (r = R).inline && "sup" !== r.inline || (Bh(o, Ph(t, "fontSize"), Lh(t, "fontSize", "")), t.remove(t.select("sup" === r.inline ? "sub" : "sup", o), !0)), Oh(S, R, 0, e)) : S.remove(e, !0)
          })
        };
      if ("false" !== a.getContentEditable(u.getNode())) {
        R && (r ? tf(r) ? m(A, r) || ((e = a.createRng()).setStartBefore(r), e.setEndAfter(r), s(a, Of(E, e, A), 0, !0)) : s(a, r, 0, !0) : i && vf(R) && !Ff(E).length ? function (e, t, n) {
          var r, o = e.selection,
            i = o.getRng(),
            a = i.startOffset,
            u = i.startContainer.nodeValue,
            s = Hl(e.getBody(), o.getStart());
          s && (r = hh(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 = Of(e, i, e.formatter.get(t)), l = Cd(l), e.formatter.apply(t, n, l), o.moveToBookmark(c)) : (s && r.nodeValue === mh || (f = e.getDoc(), d = vh(!0).dom, r = (s = f.importNode(d, !0)).firstChild, i.insertNode(s), a = 1), e.formatter.apply(t, n, s), o.setCursorLocation(r, a))
        }(E, k, _) : (t = u.getNode(), n = A[0], E.settings.forced_root_block || !n.defaultBlock || a.getParent(t, a.isBlock) || ev(E, n.defaultBlock), u.setRng(Yg(u.getRng())), $f(u, !0, function (e) {
          qf(E, function (e, t) {
            var n = t ? e : Of(E, e, A);
            s(a, n)
          })
        }), nf(a, u, u.getRng()), E.nodeChanged()), o = E, _h(Eh[k], function (e) {
          e(o)
        }))
      } else {
        r = u.getNode();
        for (var c = 0, l = A.length; c < l; c++) {
          var f = A[c];
          if (f.ceFalseOverride && hf(f) && a.is(r, f.selector)) return void T(r, f)
        }
      }
    },
    tv = function (r, e, t, n) {
      var o = ie(t.get()),
        i = {},
        a = {},
        u = H(mf(r.dom, e), function (e) {
          return 1 === e.nodeType && !e.getAttribute("data-mce-bogus")
        });
      ue(n, function (e, n) {
        kt.each(u, function (t) {
          return r.formatter.matchNode(t, n, {}, e.similar) ? (-1 === o.indexOf(n) && (W(e.callbacks, function (e) {
            e(!0, {
              node: t,
              format: n,
              parents: u
            })
          }), i[n] = e.callbacks), a[n] = e.callbacks, !1) : !Im(r, t, n) && void 0
        })
      });
      var s = nv(t.get(), a, e, u);
      t.set(ke(ke({}, i), s))
    },
    nv = function (e, n, r, o) {
      return de(e, function (e, t) {
        return !!he(n, t) || (W(e, function (e) {
          e(!1, {
            node: r,
            format: t,
            parents: o
          })
        }), !1)
      }).t
    },
    rv = function (e, o, i, a, t) {
      var n, r, u, s, c, l, f, d;
      return null === o.get() && (r = e, u = Ou({}), (n = o).set({}), r.on("NodeChange", function (e) {
        tv(r, e.element, u, n.get())
      })), c = i, l = a, f = t, d = (s = o).get(), W(c.split(","), function (e) {
        d[e] || (d[e] = {
          similar: f,
          callbacks: []
        }), d[e].callbacks.push(l)
      }), s.set(d), {
        unbind: function () {
          return t = i, n = a, r = (e = o).get(), W(t.split(","), function (e) {
            r[e].callbacks = H(r[e].callbacks, function (e) {
              return e !== n
            }), 0 === r[e].callbacks.length && delete r[e]
          }), void e.set(r);
          var e, t, n, r
        }
      }
    },
    ov = function (e, t) {
      var n = (t || document).createDocumentFragment();
      return W(e, function (e) {
        n.appendChild(e.dom)
      }), At.fromDom(n)
    },
    iv = function (e, t, n) {
      return {
        element: e,
        width: t,
        rows: n
      }
    },
    av = function (e, t) {
      return {
        element: e,
        cells: t
      }
    },
    uv = function (e, t) {
      var n = parseInt(Gn(e, t), 10);
      return isNaN(n) ? 1 : n
    },
    sv = function (e) {
      return X(e, function (e, t) {
        return t.cells.length > e ? t.cells.length : e
      }, 0)
    },
    cv = function (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 (Ot(o[i], t)) return U.some({
            x: i,
            y: r
          });
      return U.none()
    },
    lv = function (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(av(a[u].element, c))
      }
      return i
    },
    fv = function (e) {
      var o = iv(ss(e), 0, []);
      return W(Gu(e, "tr"), function (n, r) {
        W(Gu(n, "td,th"), function (e, t) {
          ! function (e, t, n, r, o) {
            for (var i = uv(o, "rowspan"), a = uv(o, "colspan"), u = e.rows, s = n; s < n + i; s++) {
              u[s] || (u[s] = av(cs(r), []));
              for (var c = t; c < t + a; c++) {
                u[s].cells[c] = s === n && c === t ? o : ss(o)
              }
            }
          }(o, function (e, t, n) {
            for (; r = t, o = n, ((i = e.rows)[o] ? i[o].cells : [])[r];) t++;
            var r, o, i;
            return t
          }(o, t, r), r, n, e)
        })
      }), iv(o.element, sv(o.rows), o.rows)
    },
    dv = function (e) {
      return n = z((t = e).rows, function (e) {
        var t = z(e.cells, function (e) {
            var t = cs(e);
            return Qn(t, "colspan"), Qn(t, "rowspan"), t
          }),
          n = ss(e.element);
        return dn(n, t), n
      }), r = ss(t.element), o = At.fromTag("tbody"), dn(o, n), fn(r, o), r;
      var t, n, r, o
    },
    mv = function (l, e, t) {
      return cv(l, e).bind(function (c) {
        return cv(l, t).map(function (e) {
          return t = l, r = e, o = (n = c).x, i = n.y, a = r.x, u = r.y, s = i < u ? lv(t, o, i, a, u) : lv(t, o, u, a, i), iv(t.element, sv(s), s);
          var t, n, r, o, i, a, u, s
        })
      })
    },
    pv = function (t, n) {
      return Y(t, function (e) {
        return "li" === Lt(e) && jf(e, n)
      }).fold(E([]), function (e) {
        return Y(t, function (e) {
          return "ul" === Lt(e) || "ol" === Lt(e)
        }).map(function (e) {
          var t = At.fromTag(Lt(e)),
            n = me(rr(e), function (e, t) {
              return Ve(t, "list-style")
            });
          return Zn(t, n), [At.fromTag("li"), t]
        }).getOr([])
      })
    },
    gv = function (e, t) {
      var n, r = At.fromDom(t.commonAncestorContainer),
        o = Dp(r, e),
        i = H(o, function (e) {
          return to(e) || Zr(e)
        }),
        a = pv(o, t),
        u = i.concat(a.length ? a : io(n = r) ? $t(n).filter(oo).fold(E([]), function (e) {
          return [n, e]
        }) : oo(n) ? [n] : []);
      return z(u, ss)
    },
    hv = function () {
      return ov([])
    },
    vv = function (e, t) {
      return n = At.fromDom(t.cloneContents()), r = gv(e, t), o = X(r, function (e, t) {
        return fn(t, e), t
      }, n), 0 < r.length ? ov([o]) : o;
      var n, r, o
    },
    yv = function (e, o) {
      return t = e, n = o[0], Tr(n, "table", N(Ot, t)).bind(function (e) {
        var t = o[0],
          n = o[o.length - 1],
          r = fv(e);
        return mv(r, t, n).map(function (e) {
          return ov([dv(e)])
        })
      }).getOrThunk(hv);
      var t, n
    },
    bv = function (e, t) {
      var n, r, o = Mf(t, e);
      return 0 < o.length ? yv(e, o) : (n = e, 0 < (r = t).length && r[0].collapsed ? hv() : vv(n, r[0]))
    },
    Cv = function (e, t) {
      return 0 <= t && t < e.length && Zl(e.charAt(t))
    },
    wv = function (e, t) {
      var n = po(e.innerText);
      return t ? n.replace(/^[ \f\n\r\t\v]+/, "") : n
    },
    xv = function (f) {
      return U.from(f.selection.getRng()).map(function (e) {
        var t = U.from(f.dom.getParent(e.commonAncestorContainer, f.dom.isBlock)),
          n = f.getBody(),
          r = t.map(function (e) {
            return e.nodeName
          }).getOr("div").toLowerCase(),
          o = wt.browser.isIE() && "pre" !== r,
          i = f.dom.add(n, r, {
            "data-mce-bogus": "all",
            style: "overflow: hidden; opacity: 0;"
          }, e.cloneContents()),
          a = wv(i, o),
          u = po(i.textContent);
        if (f.dom.remove(i), Cv(u, 0) || Cv(u, u.length - 1)) {
          var s = t.getOr(n),
            c = wv(s, o),
            l = c.indexOf(a);
          return -1 === l ? a : (Cv(c, l - 1) ? " " : "") + a + (Cv(c, l + a.length) ? " " : "")
        }
        return a
      }).getOr("")
    },
    Sv = function (e, t, n) {
      if (void 0 === n && (n = {}), n.get = !0, n.format = t, n.selection = !0, (n = e.fire("BeforeGetContent", n)).isDefaultPrevented()) return e.fire("GetContent", n), n.content;
      if ("text" === n.format) return xv(e);
      n.getInner = !0;
      var r, o, i, a, u, s, c, l = (o = n, i = (r = e).selection.getRng(), a = r.dom.create("body"), u = r.selection.getSel(), s = Om(r, Lf(u)), (c = o.contextual ? bv(At.fromDom(r.getBody()), s).dom : i.cloneContents()) && a.appendChild(c), r.selection.serializer.serialize(a, o));
      return "tree" === n.format ? l : (n.content = e.selection.isCollapsed() ? "" : l, e.fire("GetContent", n), n.content)
    },
    Nv = function (e) {
      return An(e) ? e.outerHTML : In(e) ? ci.encodeRaw(e.data, !1) : Mn(e) ? "\x3c!--" + e.data + "--\x3e" : ""
    },
    Ev = function (e, t, n) {
      var r, o = function (e) {
        var t, n = document.createElement("div"),
          r = document.createDocumentFragment();
        for (e && (n.innerHTML = e); t = n.firstChild;) r.appendChild(t);
        return r
      }(t);
      e.hasChildNodes() && n < e.childNodes.length ? (r = e.childNodes[n]).parentNode.insertBefore(o, r) : e.appendChild(o)
    },
    kv = function (e, o) {
      var i = 0;
      W(e, function (e) {
        var t, n, r;
        0 === e[0] ? i++ : 1 === e[0] ? (Ev(o, e[1], i), i++) : 2 === e[0] && (n = i, (t = o).hasChildNodes() && n < t.childNodes.length && (r = t.childNodes[n]).parentNode.removeChild(r))
      })
    },
    _v = function (e, t) {
      var p, g, n, h, v, c, y, l, r, o = z(oe(t.childNodes), Nv);
      return kv((g = e, n = (p = o).length + g.length + 2, h = new Array(n), v = new Array(n), 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 && p[a] === g[u] ? (o.push([0, p[a]]), ++a, ++u) : r - n < t - e ? (o.push([2, p[a]]), ++a) : (o.push([1, g[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, p[s]]);
          c(i.end, t, i.end - i.diag, r, o)
        }
      }, y = function (e, t, n, r) {
        for (var o = e; o - t < r && o < n && p[o] === g[o - t];) ++o;
        return {
          start: e,
          end: o,
          diag: t
        }
      }, 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 && p[c] === g[l];) h[s] = ++c, ++l;
            if (f % 2 != 0 && f - a <= u && u <= f + a && v[s - f] <= h[s]) return y(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 && p[c] === g[l];) v[s] = c--, l--;
            if (f % 2 == 0 && -a <= u && u <= a && v[s] <= h[s + f]) return y(v[s], u + e - n, t, r)
          }
        }
      }, r = [], c(0, p.length, 0, g.length, r), r), t), t
    },
    Av = Ou(U.none()),
    Rv = function (n) {
      var e, t = (e = n.getBody(), H(z(oe(e.childNodes), Nv), function (e) {
          return 0 < e.length
        })),
        r = J(t, function (e) {
          var t = ap(n.serializer, e);
          return 0 < t.length ? [t] : []
        }),
        o = r.join("");
      return -1 !== o.indexOf("</iframe>") ? {
        type: "fragmented",
        fragments: r,
        content: "",
        bookmark: null,
        beforeBookmark: null
      } : {
        type: "complete",
        fragments: null,
        content: o,
        bookmark: null,
        beforeBookmark: null
      }
    },
    Tv = function (e, t, n) {
      "fragmented" === t.type ? _v(t.fragments, e.getBody()) : e.setContent(t.content, {
        format: "raw"
      }), e.selection.moveToBookmark(n ? t.beforeBookmark : t.bookmark)
    },
    Dv = function (e) {
      return "fragmented" === e.type ? e.fragments.join("") : e.content
    },
    Ov = function (e) {
      var t = At.fromTag("body", Av.get().getOrThunk(function () {
        var e = document.implementation.createHTMLDocument("undo");
        return Av.set(U.some(e)), e
      }));
      return as(t, Dv(e)), W(Gu(t, "*[data-mce-bogus]"), gn), t.dom.innerHTML
    },
    Bv = function (e, t) {
      return !(!e || !t) && (r = t, Dv(e) === Dv(r) || (n = t, Ov(e) === Ov(n)));
      var n, r
    },
    Pv = function (e) {
      return 0 === e.get()
    },
    Lv = function (e, t, n) {
      Pv(n) && (e.typing = t)
    },
    Iv = function (e, t) {
      e.typing && (Lv(e, !1, t), e.add())
    },
    Mv = function (e) {
      return e instanceof Km
    },
    Fv = function (e, t) {
      sh(e.serializer.getNodeFilters(), e.serializer.getAttributeFilters(), t)
    },
    Uv = function () {
      return {
        type: "complete",
        fragments: [],
        content: "",
        bookmark: null,
        beforeBookmark: null
      }
    },
    zv = function (f) {
      return {
        undoManager: {
          beforeChange: function (e, t) {
            return n = f, r = t, void(Pv(e) && r.set(U.some(mc(n.selection))));
            var n, r
          },
          addUndoLevel: function (e, t, n, r, o, i) {
            return function (e, t, n, r, o, i, a) {
              var u = Rv(e);
              if (i = i || {}, i = kt.extend(i, u), !1 === Pv(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 && Bv(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
            }(f, e, t, n, r, o, i)
          },
          undo: function (e, t, n) {
            return r = f, i = t, a = n, (o = e).typing && (o.add(), o.typing = !1, Lv(o, !1, i)), 0 < a.get() && (a.set(a.get() - 1), u = o.data[a.get()], Tv(r, u, !0), r.setDirty(!0), r.fire("Undo", {
              level: u
            })), u;
            var r, o, i, a, u
          },
          redo: function (e, t) {
            return n = f, o = t, (r = e).get() < o.length - 1 && (r.set(r.get() + 1), i = o[r.get()], Tv(n, i, !1), n.setDirty(!0), n.fire("Redo", {
              level: i
            })), i;
            var n, r, o, i
          },
          clear: function (e, t) {
            return n = f, o = t, (r = e).data = [], o.set(0), r.typing = !1, void n.fire("ClearUndos");
            var n, r, o
          },
          reset: function (e) {
            return (t = e).clear(), void t.add();
            var t
          },
          hasUndo: function (e, t) {
            return n = f, r = e, 0 < t.get() || r.typing && r.data[0] && !Bv(Rv(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, Iv(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) {
            return o = f, a = t, u = n, s = r, void((i = e).transact(u) && (c = i.data[a.get()].bookmark, l = i.data[a.get() - 1], Tv(o, l, !0), i.transact(s) && (i.data[a.get() - 1].beforeBookmark = c)));
            var o, i, a, u, s, c, l
          }
        },
        formatter: {
          match: function (e, t, n) {
            return jm(f, e, t, n)
          },
          matchAll: function (e, t) {
            return o = e, i = t, a = [], u = {}, n = (r = f).selection.getStart(), r.dom.getParent(n, function (e) {
              for (var t = 0; t < o.length; t++) {
                var n = o[t];
                !u[n] && zm(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 zm(f, e, t, n, r)
          },
          canApply: function (e) {
            return function (e, t) {
              var n, r, o, i, a, u = e.formatter.get(t),
                s = e.dom;
              if (u)
                for (n = e.selection.getStart(), r = mf(s, n), i = u.length - 1; 0 <= i; i--) {
                  if (!(a = u[i].selector) || u[i].defaultBlock) return !0;
                  for (o = r.length - 1; 0 <= o; o--)
                    if (s.is(r[o], a)) return !0
                }
              return !1
            }(f, e)
          },
          closest: function (e) {
            return Hm(f, e)
          },
          apply: function (e, t, n) {
            return ev(f, e, t, n)
          },
          remove: function (e, t, n, r) {
            return Yh(f, e, t, n, r)
          },
          toggle: function (e, t, n) {
            return o = e, i = t, a = n, u = (r = f).formatter.get(o), void(!jm(r, o, i, a) || "toggle" in u[0] && !u[0].toggle ? ev : Yh)(r, o, i, a);
            var r, o, i, a, u
          },
          formatChanged: function (e, t, n, r) {
            return rv(f, e, t, n, r)
          }
        },
        editor: {
          getContent: function (e, t) {
            return n = f, r = e, o = t, U.from(n.getBody()).fold(E("tree" === r.format ? new Km("body", 11) : ""), function (e) {
              return sp(n, r, o, e)
            });
            var n, r, o
          },
          setContent: function (e, t) {
            return fh(f, e, t)
          },
          insertContent: function (e, t) {
            return ah(f, e, t)
          },
          addVisual: function (e) {
            return t = e, a = (i = f).dom, n = D(t) ? t : i.getBody(), R(i.hasVisual) && (i.hasVisual = i.getParam("visual", !0, "boolean")), W(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))
              }
            }), void i.fire("VisualAid", {
              element: t,
              hasVisual: i.hasVisual
            });
            var i, t, a, n
          }
        },
        selection: {
          getContent: function (e, t) {
            return Sv(f, e, t)
          }
        },
        raw: {
          getModel: function () {
            return U.none()
          }
        }
      }
    },
    jv = function (i, a) {
      var o = function (e) {
          return _(e) ? e : {}
        },
        e = m("Unimplemented feature for rtc");
      return {
        undoManager: {
          beforeChange: V,
          addUndoLevel: e,
          undo: function () {
            return a.undo(), Uv()
          },
          redo: function () {
            return a.redo(), Uv()
          },
          clear: e,
          reset: e,
          hasUndo: function () {
            return a.hasUndo()
          },
          hasRedo: function () {
            return a.hasRedo()
          },
          transact: function (e, t, n) {
            return a.transact(n), Uv()
          },
          ignore: e,
          extra: e
        },
        formatter: {
          match: function (e, t, n) {
            return a.matchFormat(e, o(t))
          },
          matchAll: e,
          matchNode: e,
          canApply: function (e) {
            return a.canApplyFormat(e)
          },
          closest: function (e) {
            return a.closestFormat(e)
          },
          apply: function (e, t, n) {
            return a.applyFormat(e, o(t))
          },
          remove: function (e, t, n, r) {
            return a.removeFormat(e, o(t))
          },
          toggle: function (e, t, n) {
            return a.toggleFormat(e, o(t))
          },
          formatChanged: function (e, t, n, r) {
            return a.formatChanged(t, n, r)
          }
        },
        editor: {
          getContent: function (e, t) {
            if ("html" !== t && "tree" !== t) return zv(i).editor.getContent(e, t);
            var n = a.getContent(),
              r = Jm({
                inner: !0
              });
            return Fv(i, n), "tree" === t ? n : r.serialize(n)
          },
          setContent: function (e, t) {
            var n = Mv(e) ? e : i.parser.parse(e, {
              isRootContent: !0,
              insert: !0
            });
            return a.setContent(n), e
          },
          insertContent: function (e, t) {
            var n, r = (n = i, U.from(n.selection.getStart(!0)).map(function (e) {
                return e.nodeName.toLowerCase()
              }).fold(function () {
                return {}
              }, function (e) {
                return {
                  context: e
                }
              })),
              o = Mv(e) ? e : i.parser.parse(e, ke(ke({}, r), {
                insert: !0
              }));
            a.insertContent(o)
          },
          addVisual: function (e) {}
        },
        selection: {
          getContent: function (e, t) {
            if ("html" !== e && "tree" !== e) return zv(i).selection.getContent(e, t);
            var n = a.getSelectedContent(),
              r = Jm({});
            return Fv(i, n), "tree" === e ? n : r.serialize(n)
          }
        },
        raw: {
          getModel: function () {
            return U.some(a.getRawModel())
          }
        }
      }
    },
    Hv = function (e) {
      return he(e.plugins, "rtc")
    },
    Vv = function (e) {
      return e.rtcInstance ? e.rtcInstance : zv(e)
    },
    qv = function (e) {
      var t = e.rtcInstance;
      if (t) return t;
      throw new Error("Failed to get RTC instance not yet initialized.")
    },
    $v = function (e, t) {
      void 0 === t && (t = {});
      var n, r, o = t.format ? t.format : "html";
      return n = o, r = t, qv(e).selection.getContent(n, r)
    },
    Wv = function (e) {
      return 0 === e.dom.length ? (pn(e), U.none()) : U.some(e)
    },
    Kv = function (e, t, s, c) {
      e.bind(function (u) {
        return (c ? sg : ug)(u.dom, c ? u.dom.length : 0), t.filter(Ut).map(function (e) {
          return t = e, n = s, r = c, o = u.dom, i = t.dom, a = r ? o.length : i.length, void(r ? (cg(o, i, !1, !r), n.setStart(i, a)) : (cg(i, o, !1, !r), n.setEnd(i, a)));
          var t, n, r, o, i, a
        })
      }).orThunk(function () {
        var e;
        return (e = c, t.filter(function (e) {
          return od.isBookmarkNode(e.dom)
        }).bind(e ? Kt : Wt).or(t).filter(Ut)).map(function (e) {
          return r = c, void $t(n = e).each(function (e) {
            var t = n.dom;
            r && Qp(e, $s(t, 0)) ? ug(t, 0) : !r && Zp(e, $s(t, t.length)) && sg(t, t.length)
          });
          var n, r
        })
      })
    },
    Xv = function (e, t, n) {
      void 0 === n && (n = {});
      var r, o, i = (r = t, ke(ke({
        format: "html"
      }, n), {
        set: !0,
        selection: !0,
        content: r
      }));
      i.no_events || !(i = e.fire("BeforeSetContent", i)).isDefaultPrevented() ? (n.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, ke(ke({
            isRootContent: !0,
            forced_root_block: !1
          }, o), t));
        return Jm({
          validate: e.validate
        }, e.schema).serialize(i)
      }(e, i), function (e, t) {
        var n = U.from(t.firstChild).map(At.fromDom),
          r = U.from(t.lastChild).map(At.fromDom);
        e.deleteContents(), e.insertNode(t);
        var o = n.bind(Wt).filter(Ut).bind(Wv),
          i = r.bind(Kt).filter(Ut).bind(Wv);
        Kv(o, n, e, !0), Kv(i, r, e, !1), e.collapse(!1)
      }(o = e.selection.getRng(), o.createContextualFragment(n.content)), e.selection.setRng(o), Xd(e, o), i.no_events || e.fire("SetContent", i)) : e.fire("SetContent", i)
    },
    Yv = function (e, t, n) {
      var r;
      e && e.hasOwnProperty(t) && (0 === (r = H(e[t], function (e) {
        return e !== n
      })).length ? delete e[t] : e[t] = r)
    };
  var Gv = function (e) {
      return !!e.select
    },
    Jv = function (e) {
      return !(!e || !e.ownerDocument) && Pt(At.fromDom(e.ownerDocument), At.fromDom(e))
    },
    Qv = function (u, s, e, c) {
      var l, f, i, n, a, d, r = function (e, t) {
          return a || (a = {}, d = {}, n.on("NodeChange", function (e) {
            var n = e.element,
              r = i.getParents(n, null, i.getRoot()),
              o = {};
            kt.each(a, function (e, n) {
              kt.each(r, function (t) {
                if (i.is(t, n)) return d[n] || (kt.each(e, function (e) {
                  e(!0, {
                    node: t,
                    selector: n,
                    parents: r
                  })
                }), d[n] = e), o[n] = e, !1
              })
            }), kt.each(d, function (e, t) {
              o[t] || (delete d[t], kt.each(e, function (e) {
                e(!1, {
                  node: n,
                  selector: t,
                  parents: r
                })
              }))
            })
          })), a[e] || (a[e] = []), a[e].push(t), {
            unbind: function () {
              Yv(a, e, t), Yv(d, e, t)
            }
          }
        },
        t = function (e, t) {
          return Xv(c, e, t)
        },
        o = function (e) {
          var t = p();
          t.collapse(!!e), g(t)
        },
        m = function () {
          return s.getSelection ? s.getSelection() : s.document.selection
        },
        p = function () {
          var e, t, n, r = function (e, t, n) {
            try {
              return t.compareBoundaryPoints(e, n)
            } catch (r) {
              return -1
            }
          };
          if (!s) return null;
          var o = s.document;
          if (null == o) return null;
          if (c.bookmark !== undefined && !1 === Em(c)) {
            var i = dm(c);
            if (i.isSome()) return i.map(function (e) {
              return Om(c, [e])[0]
            }).getOr(o.createRange())
          }
          try {
            (e = m()) && !_n(e.anchorNode) && (t = 0 < e.rangeCount ? e.getRangeAt(0) : e.createRange ? e.createRange() : o.createRange(), t = Om(c, [t])[0])
          } catch (a) {}
          return (t = t || (o.createRange ? o.createRange() : o.body.createTextRange())).setStart && 9 === t.startContainer.nodeType && t.collapsed && (n = u.getRoot(), t.setStart(n, 0), t.setEnd(n, 0)), l && f && (0 === r(t.START_TO_START, t, l) && 0 === r(t.END_TO_END, t, l) ? t = f : f = l = null), t
        },
        g = function (e, t) {
          var n;
          if ((r = e) && (Gv(r) || Jv(r.startContainer) && Jv(r.endContainer))) {
            var r, o = Gv(e) ? e : null;
            if (o) {
              f = null;
              try {
                o.select()
              } catch (a) {}
            } else {
              var i = m();
              if (e = c.fire("SetSelectionRange", {
                  range: e,
                  forward: t
                }).range, i) {
                f = e;
                try {
                  i.removeAllRanges(), i.addRange(e)
                } catch (a) {}!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 || wt.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)), c.fire("AfterSetSelectionRange", {
                range: e,
                forward: t
              })
            }
          }
        },
        h = function () {
          var e = m(),
            t = null == e ? void 0 : e.anchorNode,
            n = null == e ? void 0 : e.focusNode;
          if (!e || !t || !n || _n(t) || _n(n)) return !0;
          var r = u.createRng();
          r.setStart(t, e.anchorOffset), r.collapse(!0);
          var o = u.createRng();
          return o.setStart(n, e.focusOffset), o.collapse(!0), r.compareBoundaryPoints(r.START_TO_START, o) <= 0
        },
        v = {
          bookmarkManager: null,
          controlSelection: null,
          dom: i = u,
          win: s,
          serializer: e,
          editor: n = c,
          collapse: o,
          setCursorLocation: function (e, t) {
            var n = u.createRng();
            e ? (n.setStart(e, t), n.setEnd(e, t), g(n), o(!1)) : (Hf(u, n, c.getBody(), !0), g(n))
          },
          getContent: function (e) {
            return $v(c, e)
          },
          setContent: t,
          getBookmark: function (e, t) {
            return y.getBookmark(e, t)
          },
          moveToBookmark: function (e) {
            return y.moveToBookmark(e)
          },
          select: function (e, t) {
            var r, n, o;
            return r = u, n = e, o = t, U.from(n).map(function (e) {
              var t = r.nodeIndex(e),
                n = r.createRng();
              return n.setStart(e.parentNode, t), n.setEnd(e.parentNode, t + 1), o && (Hf(r, n, e, !0), Hf(r, n, e, !1)), n
            }).each(g), e
          },
          isCollapsed: function () {
            var e = p(),
              t = m();
            return !(!e || e.item) && (e.compareEndPoints ? 0 === e.compareEndPoints("StartToEnd", e) : !t || e.collapsed)
          },
          isForward: h,
          setNode: function (e) {
            return t(u.getOuterHTML(e)), e
          },
          getNode: function () {
            return function (e, t) {
              var n, r;
              if (!t) return e;
              n = t.startContainer, r = t.endContainer;
              var 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 ? Dm(n.nextSibling, !0) : n.parentNode, r = 0 === i ? Dm(r.previousSibling, !1) : r.parentNode, n && n === r)) ? n : a && 3 === a.nodeType ? a.parentNode : a
            }(c.getBody(), p())
          },
          getSel: m,
          setRng: g,
          getRng: p,
          getStart: function (e) {
            return Rm(c.getBody(), p(), e)
          },
          getEnd: function (e) {
            return Tm(c.getBody(), p(), e)
          },
          getSelectedBlocks: function (e, t) {
            return function (e, t, n, r) {
              var o, i = [],
                a = e.getRoot();
              if (n = e.getParent(n || Rm(a, t, t.collapsed), e.isBlock), r = e.getParent(r || Tm(a, t, t.collapsed), e.isBlock), n && n !== a && i.push(n), n && r && n !== r)
                for (var u = new Xr(o = n, a);
                  (o = u.next()) && o !== r;) e.isBlock(o) && i.push(o);
              return r && n !== r && r !== a && i.push(r), i
            }(u, p(), e, t)
          },
          normalize: function () {
            var e = p(),
              t = m();
            if (1 < Lf(t).length || !Vf(c)) return e;
            var n = yd(u, e);
            return n.each(function (e) {
              g(e, h())
            }), n.getOr(e)
          },
          selectorChanged: function (e, t) {
            return r(e, t), v
          },
          selectorChangedWithUnbind: r,
          getScrollContainer: function () {
            for (var e, t = u.getRoot(); t && "BODY" !== t.nodeName;) {
              if (t.scrollHeight > t.clientHeight) {
                e = t;
                break
              }
              t = t.parentNode
            }
            return e
          },
          scrollIntoView: function (e, t) {
            return r = e, o = t, void((n = c).inline ? $d : Kd)(n, r, o);
            var n, r, o
          },
          placeCaretAt: function (e, t) {
            return g(fd(e, t, c.getDoc()))
          },
          getBoundingClientRect: function () {
            var e = p();
            return e.collapsed ? $s.fromRangeStart(e).getClientRects()[0] : e.getBoundingClientRect()
          },
          destroy: function () {
            s = l = f = null, b.destroy()
          }
        },
        y = od(v),
        b = cd(v, c);
      return v.bookmarkManager = y, v.controlSelection = b, v
    },
    Zv = function (e, a, u) {
      e.addNodeFilter("font", function (e) {
        W(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, W(["color", "face", "size"], function (e) {
            t.attr(e, null)
          })
        })
      })
    },
    ey = function (e, t) {
      var n, r = xi();
      t.convert_fonts_to_spans && Zv(e, r, kt.explode(t.font_size_legacy_values)), n = r, e.addNodeFilter("strike", function (e) {
        W(e, function (e) {
          var t = n.parse(e.attr("style"));
          t["text-decoration"] = "line-through", e.name = "span", e.attr("style", n.serialize(t))
        })
      })
    },
    ty = function (e) {
      var t, n = decodeURIComponent(e).split(","),
        r = /data:([^;]+)/.exec(n[0]);
      return r && (t = r[1]), {
        type: t,
        data: n[1]
      }
    },
    ny = function (e, t) {
      var n;
      try {
        n = atob(t)
      } catch (Ok) {
        return U.none()
      }
      for (var r = new Uint8Array(n.length), o = 0; o < r.length; o++) r[o] = n.charCodeAt(o);
      return U.some(new Blob([r], {
        type: e
      }))
    },
    ry = function (e) {
      return 0 === e.indexOf("blob:") ? (i = e, new Br(function (e, t) {
        var n = function () {
          t("Cannot convert " + i + " to Blob. Resource might not exist or is inaccessible.")
        };
        try {
          var r = new XMLHttpRequest;
          r.open("GET", i, !0), r.responseType = "blob", r.onload = function () {
            200 === this.status ? e(this.response) : n()
          }, r.onerror = n, r.send()
        } catch (o) {
          n()
        }
      })) : 0 === e.indexOf("data:") ? (o = e, new Br(function (e) {
        var t = ty(o),
          n = t.type,
          r = t.data;
        ny(n, r).fold(function () {
          return e(new Blob([]))
        }, e)
      })) : null;
      var i, o
    },
    oy = 0,
    iy = function (e) {
      return (e || "blobid") + oy++
    },
    ay = function (r, o, i, t) {
      var e, n, a, u, s;
      0 !== o.src.indexOf("blob:") ? (n = (e = ty(o.src)).data, a = e.type, u = n, (s = r.getByData(u, a)) ? i({
        image: o,
        blobInfo: s
      }) : ry(o.src).then(function (e) {
        s = r.create(iy(), e, u), r.add(s), i({
          image: o,
          blobInfo: s
        })
      }, function (e) {
        t(e)
      })) : (s = r.getByUri(o.src)) ? i({
        image: o,
        blobInfo: s
      }) : ry(o.src).then(function (t) {
        var n;
        n = t, new Br(function (e) {
          var t = new FileReader;
          t.onloadend = function () {
            e(t.result)
          }, t.readAsDataURL(n)
        }).then(function (e) {
          u = ty(e).data, s = r.create(iy(), t, u), r.add(s), i({
            image: o,
            blobInfo: s
          })
        })
      }, function (e) {
        t(e)
      })
    };

  function uy(i, a) {
    var u = {};
    return {
      findAll: function (e, n) {
        n = n || k;
        var t, r = H((t = e) ? oe(t.getElementsByTagName("img")) : [], function (e) {
            var t = e.src;
            return !!wt.fileApi && (!e.hasAttribute("data-mce-bogus") && (!e.hasAttribute("data-mce-placeholder") && (!(!t || t === wt.transparentSrc) && (0 === t.indexOf("blob:") ? !i.isUploaded(t) && n(e) : 0 === t.indexOf("data:") && n(e)))))
          }),
          o = z(r, function (n) {
            if (u[n.src] !== undefined) return new Br(function (t) {
              u[n.src].then(function (e) {
                return "string" == typeof e ? e : void t({
                  image: n,
                  blobInfo: e.blobInfo
                })
              })
            });
            var e = new Br(function (e, t) {
              ay(a, n, e, t)
            }).then(function (e) {
              return delete u[e.image.src], e
            })["catch"](function (e) {
              return delete u[n.src], e
            });
            return u[n.src] = e
          });
        return Br.all(o)
      }
    }
  }
  var sy, cy, ly = function (e, t, n, r) {
      (e.padd_empty_with_br || t.insert) && n[r.name] ? r.empty().append(new Km("br", 1)).shortEnded = !0 : r.empty().append(new Km("#text", 3)).value = lo
    },
    fy = function (e, t) {
      return e && e.firstChild && e.firstChild === e.lastChild && e.firstChild.name === t
    },
    dy = function (r, e, t, n) {
      return n.isEmpty(e, t, function (e) {
        return t = e, (n = r.getElementRule(t.name)) && n.paddEmpty;
        var t, n
      })
    },
    my = function (e, o) {
      var i = o.blob_cache,
        t = function (t) {
          var e, n, r = t.attr("src");
          (e = t).attr("src") === wt.transparentSrc || e.attr("data-mce-placeholder") || t.attr("data-mce-bogus") || ((n = /data:([^;]+);base64,([a-z0-9\+\/=]+)/i.exec(r)) ? U.some({
            type: n[1],
            data: decodeURIComponent(n[2])
          }) : U.none()).filter(function () {
            return function (e, t) {
              if (t.images_dataimg_filter) {
                var n = new Image;
                return n.src = e.attr("src"), ue(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 U.from(i.getByData(n, t)).orThunk(function () {
              return ny(t, n).map(function (e) {
                var t = i.create(iy(), e, n);
                return i.add(t), t
              })
            })
          }).each(function (e) {
            t.attr("src", e.blobUri())
          })
        };
      i && e.addAttributeFilter("src", function (e) {
        return W(e, t)
      })
    },
    py = function (e, g) {
      var h = e.schema;
      g.remove_trailing_brs && e.addNodeFilter("br", function (e, t, n) {
        var r, o, i, a, u, s, c, l, f = e.length,
          d = kt.extend({}, h.getBlockElements()),
          m = h.getNonEmptyElements(),
          p = 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(), dy(h, m, p, i) && (c = h.getElementRule(i.name)) && (c.removeEmpty ? i.remove() : c.paddEmpty && ly(g, n, d, i)))
          } else {
            for (a = o; i && i.firstChild === a && i.lastChild === a && !d[(a = i).name];) i = i.parent;
            a === i && !0 !== g.padd_empty_with_br && ((l = new Km("#text", 3)).value = lo, o.replace(l))
          }
      }), e.addAttributeFilter("href", function (e) {
        var t, n, r = e.length;
        if (!g.allow_unsafe_link_target)
          for (; r--;) {
            var o = e[r];
            "a" === o.name && "_blank" === o.attr("target") && o.attr("rel", (t = o.attr("rel"), n = t ? kt.trim(t) : "", /\b(noopener)\b/g.test(n) ? n : n.split(" ").filter(function (e) {
              return 0 < e.length
            }).concat(["noopener"]).sort().join(" ")))
          }
      }), g.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;);
      }), g.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 Km("li", 1)).attr("style", "list-style-type: none"), n.wrap(t)))
        }
      }), g.validate && h.getValidClasses() && e.addAttributeFilter("class", function (e) {
        for (var t, n, r, o, i, a, u, s = e.length, c = h.getValidClasses(); s--;) {
          for (n = (t = e[s]).attr("class").split(" "), i = "", r = 0; r < n.length; r++) o = n[r], u = !1, (a = c["*"]) && a[o] && (u = !0), a = c[t.name], !u && a && a[o] && (u = !0), u && (i && (i += " "), i += o);
          i.length || (i = null), t.attr("class", i)
        }
      }), my(e, g)
    },
    gy = kt.makeMap,
    hy = kt.each,
    vy = kt.explode,
    yy = kt.extend,
    by = function (A, R) {
      void 0 === R && (R = Ci());
      var T = {},
        D = [],
        O = {},
        B = {};
      (A = A || {}).validate = !("validate" in A) || A.validate, A.root_name = A.root_name || "body";
      var e, t, P = function (e) {
          var t, n, r = e.name;
          r in T && ((n = O[r]) ? n.push(e) : O[r] = [e]), t = D.length;
          for (; t--;)(r = D[t].name) in e.attributes.map && ((n = B[r]) ? n.push(e) : B[r] = [e]);
          return e
        },
        n = {
          schema: R,
          addAttributeFilter: function (e, n) {
            hy(vy(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) {
            hy(vy(e), function (e) {
              var t = T[e];
              t || (T[e] = t = []), t.push(n)
            })
          },
          getNodeFilters: function () {
            var e = [];
            for (var t in T) T.hasOwnProperty(t) && e.push({
              name: t,
              callbacks: T[t]
            });
            return e
          },
          filterNode: P,
          parse: function (e, u) {
            var t, n, r, o, i, s, a, c, l = [];
            u = u || {}, O = {}, B = {};
            var f, d = yy(gy("script,style,head,html,body,title,meta,param"), R.getBlockElements()),
              m = R.getNonEmptyElements(),
              p = R.children,
              g = A.validate,
              h = "forced_root_block" in u ? u.forced_root_block : A.forced_root_block,
              v = !1 === (f = h) ? "" : !0 === f ? "p" : f,
              y = R.getWhiteSpaceElements(),
              b = /^[ \t\r\n]+/,
              C = /[ \t\r\n]+$/,
              w = /[ \t\r\n]+/g,
              x = /^[ \t\r\n]+$/,
              S = y.hasOwnProperty(u.context) || y.hasOwnProperty(A.root_name),
              N = function (e, t) {
                var n, r = new Km(e, t);
                return e in T && ((n = O[e]) ? n.push(r) : O[e] = [r]), r
              },
              E = function (e) {
                for (var t, n, r, o = R.getBlockElements(), i = e.prev; i && 3 === i.type;) {
                  if (0 < (n = i.value.replace(C, "")).length) return void(i.value = n);
                  if (t = i.next) {
                    if (3 === t.type && t.value.length) {
                      i = i.prev;
                      continue
                    }
                    if (!o[t.name] && "script" !== t.name && "style" !== t.name) {
                      i = i.prev;
                      continue
                    }
                  }
                  r = i.prev, i.remove(), i = r
                }
              },
              k = ip({
                validate: g,
                allow_html_data_urls: A.allow_html_data_urls,
                allow_svg_data_urls: A.allow_svg_data_urls,
                allow_script_urls: A.allow_script_urls,
                allow_conditional_comments: A.allow_conditional_comments,
                preserve_cdata: A.preserve_cdata,
                self_closing_elements: function (e) {
                  var t, n = {};
                  for (t in e) "li" !== t && "p" !== t && (n[t] = e[t]);
                  return n
                }(R.getSelfClosingElements()),
                cdata: function (e) {
                  c.append(N("#cdata", 4)).value = e
                },
                text: function (e, t) {
                  var n, r, o;
                  S || (e = e.replace(w, " "), r = c.lastChild, o = d, r && (o[r.name] || "br" === r.name) && (e = e.replace(b, ""))), 0 !== e.length && ((n = N("#text", 3)).raw = !!t, c.append(n).value = e)
                },
                comment: function (e) {
                  c.append(N("#comment", 8)).value = e
                },
                pi: function (e, t) {
                  c.append(N(e, 7)).value = t, E(c)
                },
                doctype: function (e) {
                  c.append(N("#doctype", 10)).value = e, E(c)
                },
                start: function (e, t, n) {
                  var r, o, i, a, u = g ? R.getElementRule(e) : {};
                  if (u) {
                    for ((r = N(u.outputName || e, 1)).attributes = t, r.shortEnded = n, c.append(r), (a = p[c.name]) && p[r.name] && !a[r.name] && l.push(r), o = D.length; o--;)(i = D[o].name) in t.map && ((s = B[i]) ? s.push(r) : B[i] = [r]);
                    d[e] && E(r), n || (c = r), !S && y[e] && (S = !0)
                  }
                },
                end: function (e) {
                  var t, n, r, o, i, a = g ? R.getElementRule(e) : {};
                  if (a) {
                    if (d[e] && !S) {
                      if ((t = c.firstChild) && 3 === t.type)
                        if (0 < (n = t.value.replace(b, "")).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 && !x.test(n) || (t.remove(), t = r), t = r;
                      if ((t = c.lastChild) && 3 === t.type)
                        if (0 < (n = t.value.replace(C, "")).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 && !x.test(n) || (t.remove(), t = r), t = r
                    }
                    if (S && y[e] && (S = !1), a.removeEmpty && dy(R, m, y, c)) return o = c.parent, d[c.name] ? c.empty().remove() : c.unwrap(), void(c = o);
                    a.paddEmpty && (fy(i = c, "#text") && i.firstChild.value === lo || dy(R, m, y, c)) && ly(A, u, d, c), c = c.parent
                  }
                }
              }, R),
              _ = c = new Km(u.context || A.root_name, 11);
            if (k.parse(e, u.format), g && l.length && (u.context ? u.invalid = !0 : function (e) {
                for (var t, n, r, o, i, a, u, s, c, l, f = gy("tr,td,th,tbody,thead,tfoot,table"), d = R.getNonEmptyElements(), m = R.getWhiteSpaceElements(), p = R.getTextBlockElements(), g = R.getSpecialElements(), h = 0; h < e.length; h++)
                  if ((t = e[h]).parent && !t.fixed)
                    if (p[t.name] && "li" === t.parent.name) {
                      for (c = t.next; c && p[c.name];) c.name = "li", c.fixed = !0, t.parent.insert(c, t.parent), c = c.next;
                      t.unwrap(t)
                    } else {
                      for (r = [t], n = t.parent; n && !R.isValidChild(n.name, t.name) && !f[n.name]; n = n.parent) r.push(n);
                      if (n && 1 < r.length) {
                        for (r.reverse(), o = i = P(r[0].clone()), s = 0; s < r.length - 1; s++) {
                          for (R.isValidChild(i.name, r[s].name) ? (a = P(r[s].clone()), i.append(a)) : a = i, u = r[s].firstChild; u && u !== r[s + 1];) l = u.next, a.append(u), u = l;
                          i = a
                        }
                        dy(R, d, m, o) ? n.insert(t, r[0], !0) : (n.insert(o, r[0], !0), n.insert(t, o)), n = r[0], (dy(R, d, m, n) || fy(n, "br")) && n.empty().remove()
                      } else if (t.parent) {
                        if ("li" === t.name) {
                          if ((c = t.prev) && ("ul" === c.name || "ol" === c.name)) {
                            c.append(t);
                            continue
                          }
                          if ((c = t.next) && ("ul" === c.name || "ol" === c.name)) {
                            c.insert(t, c.firstChild, !0);
                            continue
                          }
                          t.wrap(P(new Km("ul", 1)));
                          continue
                        }
                        R.isValidChild(t.parent.name, "div") && R.isValidChild("div", t.name) ? t.wrap(P(new Km("div", 1))) : g[t.name] ? t.empty().remove() : t.unwrap()
                      }
                    }
              }(l)), v && ("body" === _.name || u.isRootContent) && function () {
                var e, t, n = _.firstChild,
                  r = function (e) {
                    e && ((n = e.firstChild) && 3 === n.type && (n.value = n.value.replace(b, "")), (n = e.lastChild) && 3 === n.type && (n.value = n.value.replace(C, "")))
                  };
                if (R.isValidChild(_.name, v.toLowerCase())) {
                  for (; n;) e = n.next, 3 === n.type || 1 === n.type && "p" !== n.name && !d[n.name] && !n.attr("data-mce-type") ? (t || ((t = N(v, 1)).attr(A.forced_root_block_attrs), _.insert(t, n)), t.append(n)) : (r(t), t = null), n = e;
                  r(t)
                }
              }(), !u.invalid) {
              for (a in O)
                if (O.hasOwnProperty(a)) {
                  for (s = T[a], o = (t = O[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 B) {
                  for (o = (t = B[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 _
          }
        };
      return py(n, A), e = n, (t = A).inline_styles && ey(e, t), n
    },
    Cy = function (e, t, n) {
      return o = n, (r = e) && r.hasEventListeners("PreProcess") && !o.no_events ? function (e, t, n) {
        var r, o, i = e.dom;
        t = t.cloneNode(!0);
        var a, u, s = document.implementation;
        return s.createHTMLDocument && (r = s.createHTMLDocument(""), kt.each("BODY" === t.nodeName ? t.childNodes : [t], function (e) {
          r.body.appendChild(r.importNode(e, !0))
        }), t = "BODY" !== t.nodeName ? r.body.firstChild : r.body, o = i.doc, i.doc = r), a = e, u = ke(ke({}, n), {
          node: t
        }), a.fire("PreProcess", u), o && (i.doc = o), t
      }(e, t, n) : t;
      var r, o
    },
    wy = function (e, t, n) {
      -1 === kt.inArray(t, n) && (e.addAttributeFilter(n, function (e, t) {
        for (var n = e.length; n--;) e[n].attr(t, null)
      }), t.push(n))
    },
    xy = function (e, t, n, r, o) {
      var i, a, u, s, c, l, f = (i = r, Jm(t, n).serialize(i));
      return a = e, s = f, (u = o).no_events || !a ? s : (c = a, l = ke(ke({}, u), {
        content: s
      }), c.fire("PostProcess", l).content)
    },
    Sy = function (y, b) {
      var e = ["data-mce-selected"],
        C = b && b.dom ? b.dom : Eu.DOM,
        w = b && b.schema ? b.schema : Ci(y);
      y.entity_encoding = y.entity_encoding || "named", y.remove_trailing_brs = !("remove_trailing_brs" in y) || y.remove_trailing_brs;
      var t, s, c, x = by(y, w);
      s = y, c = C, (t = x).addAttributeFilter("data-mce-tabindex", function (e, t) {
        for (var n, r = e.length; r--;)(n = e[r]).attr("tabindex", n.attr("data-mce-tabindex")), n.attr(t, null)
      }), t.addAttributeFilter("src,href,style", function (e, t) {
        for (var n, r, o = e.length, i = "data-mce-" + t, a = s.url_converter, u = s.url_converter_scope; o--;)(r = (n = e[o]).attr(i)) !== undefined ? (n.attr(t, 0 < r.length ? r : null), n.attr(i, null)) : (r = n.attr(t), "style" === t ? r = c.serializeStyle(c.parseStyle(r), n.name) : a && (r = a.call(u, r, t, n.name)), n.attr(t, 0 < r.length ? r : null))
      }), t.addAttributeFilter("class", function (e) {
        for (var t, n, r = e.length; r--;)(n = (t = e[r]).attr("class")) && (n = t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ""), t.attr("class", 0 < n.length ? n : null))
      }), t.addAttributeFilter("data-mce-type", function (e, t, n) {
        for (var r, o = e.length; o--;) {
          "bookmark" !== (r = e[o]).attr("data-mce-type") || n.cleanup || (U.from(r.firstChild).exists(function (e) {
            return !mo(e.value)
          }) ? r.unwrap() : r.remove())
        }
      }), t.addNodeFilter("noscript", function (e) {
        for (var t, n = e.length; n--;)(t = e[n].firstChild) && (t.value = ci.decode(t.value))
      }), t.addNodeFilter("script,style", function (e, t) {
        for (var n, r, o, i = e.length, a = 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, "")
          }; i--;) r = (n = e[i]).firstChild ? n.firstChild.value : "", "script" === t ? ((o = n.attr("type")) && n.attr("type", "mce-no/type" === o ? null : o.replace(/^mce\-/, "")), "xhtml" === s.element_format && 0 < r.length && (n.firstChild.value = "// <![CDATA[\n" + a(r) + "\n// ]]>")) : "xhtml" === s.element_format && 0 < r.length && (n.firstChild.value = "\x3c!--\n" + a(r) + "\n--\x3e")
      }), t.addNodeFilter("#comment", function (e) {
        for (var t, n = e.length; n--;) t = e[n], s.preserve_cdata && 0 === t.value.indexOf("[CDATA[") ? (t.name = "#cdata", t.type = 4, t.value = c.decode(t.value.replace(/^\[CDATA\[|\]\]$/g, ""))) : 0 === t.value.indexOf("mce:protected ") && (t.name = "#text", t.type = 3, t.raw = !0, t.value = unescape(t.value).substr(14))
      }), t.addNodeFilter("xml:namespace,input", function (e, t) {
        for (var n, r = e.length; r--;) 7 === (n = e[r]).type ? n.remove() : 1 === n.type && ("input" !== t || n.attr("type") || n.attr("type", "text"))
      }), t.addAttributeFilter("data-mce-type", function (e) {
        W(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)
      });
      return {
        schema: w,
        addNodeFilter: x.addNodeFilter,
        addAttributeFilter: x.addAttributeFilter,
        serialize: function (e, t) {
          void 0 === t && (t = {});
          var n, r, o, i, a, u, s, c, l, f, d, m, p = ke({
              format: "html"
            }, t),
            g = Cy(b, e, p),
            h = (n = C, r = g, i = po((o = p).getInner ? r.innerHTML : n.getOuterHTML(r)), o.selection || so(At.fromDom(r)) ? i : kt.trim(i)),
            v = (a = x, u = h, d = (s = p).selection ? ke({
              forced_root_block: !1
            }, s) : s, m = a.parse(u, d), l = function (e) {
              return e && "br" === e.name
            }, f = m.lastChild, !l(f) || l(c = f.prev) && (f.remove(), c.remove()), m);
          return "tree" === p.format ? v : xy(b, y, w, v, p)
        },
        addRules: function (e) {
          w.addValidElements(e)
        },
        setRules: function (e) {
          w.setValidElements(e)
        },
        addTempAttr: N(wy, x, e),
        getTempAttrs: function () {
          return e
        },
        getNodeFilters: x.getNodeFilters,
        getAttributeFilters: x.getAttributeFilters
      }
    },
    Ny = function (e, t) {
      var n = Sy(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
      }
    },
    Ey = function (e, t) {
      void 0 === t && (t = {});
      var n, r, o = t.format ? t.format : "html";
      return n = t, r = o, Vv(e).editor.getContent(n, r)
    },
    ky = function (e, t, n) {
      return void 0 === n && (n = {}), r = t, o = n, Vv(e).editor.setContent(r, o);
      var r, o
    },
    _y = Eu.DOM,
    Ay = function (e) {
      return U.from(e).each(function (e) {
        return e.destroy()
      })
    },
    Ry = function (e) {
      var t, n, r, o, i;
      e.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 && _y.remove(o.nextSibling), e.fire("remove"), e.editorManager.remove(e), !e.inline && r && (i = e, _y.setStyle(i.id, "display", i.orgDisplay)), e.fire("detach"), _y.remove(e.getContainer()), Ay(t), Ay(n), e.destroy())
    },
    Ty = function (e, t) {
      var n, r, o, i = e.selection,
        a = e.dom;
      e.destroyed || (t || e.removed ? (t || (e.editorManager.off("beforeunload", e._beforeUnload), e.theme && e.theme.destroy && e.theme.destroy(), Ay(i), Ay(a)), (r = (n = e).formElement) && (r._mceOldSubmit && (r.submit = r._mceOldSubmit, r._mceOldSubmit = null), _y.unbind(r, "submit reset", n.formEventDelegate)), (o = e).contentAreaContainer = o.formElement = o.container = o.editorContainer = null, o.bodyElement = o.contentDocument = o.contentWindow = null, o.iframeElement = o.targetElm = null, o.selection && (o.selection = o.selection.win = o.selection.dom = o.selection.dom.doc = null), e.destroyed = !0) : e.remove())
    },
    Dy = Object.prototype.hasOwnProperty,
    Oy = (sy = function (e, t) {
      return _(e) && _(t) ? Oy(e, t) : t
    }, function () {
      for (var e = new Array(arguments.length), t = 0; t < e.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 = e[r];
        for (var i in o) Dy.call(o, i) && (n[i] = sy(n[i], o[i]))
      }
      return n
    }),
    By = dt().deviceType,
    Py = By.isTouch(),
    Ly = By.isPhone(),
    Iy = By.isTablet(),
    My = ["lists", "autolink", "autosave"],
    Fy = {
      table_grid: !1,
      object_resizing: !1,
      resize: !1
    },
    Uy = function (e) {
      var t = S(e) ? e.join(" ") : e,
        n = z(q(t) ? t.split(" ") : [], $e);
      return H(n, function (e) {
        return 0 < e.length
      })
    },
    zy = function (n, e) {
      var t, r, o = de(e, function (e, t) {
        return M(n, t)
      });
      return t = o.t, r = o.f, {
        sections: E(t),
        settings: E(r)
      }
    },
    jy = function (e, t) {
      return e.sections().hasOwnProperty(t)
    },
    Hy = function (e, t) {
      return ge(e, "toolbar_mode").orThunk(function () {
        return ge(e, "toolbar_drawer").map(function (e) {
          return !1 === e ? "wrap" : e
        })
      }).getOr(t)
    },
    Vy = function (e, t, n, r) {
      return e && (a = i = "mobile", u = (o = t).sections(), jy(o, i) && u[i].theme === a) ? H(r, N(M, My)) : e && jy(t, "mobile") ? r : n;
      var o, i, a, u
    },
    qy = function (e, t, n, r) {
      var o, i, a, u = Uy(n.forced_plugins),
        s = Uy(r.plugins),
        c = jy(o = t, i = "mobile") ? o.sections()[i] : {},
        l = c.plugins ? Uy(c.plugins) : s,
        f = Vy(e, t, s, l),
        d = (a = f, [].concat(Uy(u)).concat(Uy(a)));
      if (wt.browser.isIE() && M(d, "rtc")) throw new Error("RTC plugin is not supported on IE 11.");
      return kt.extend(r, {
        plugins: d.join(" ")
      })
    },
    $y = function (e, t, n, r, o) {
      var i, a, u, s, c, l, f, d = e ? {
          mobile: (i = o.mobile || {}, a = t, u = {
            resize: !1,
            toolbar_mode: Hy(i, "scrolling"),
            toolbar_sticky: !1
          }, ke(ke(ke({}, Fy), u), a ? {
            menubar: !1
          } : {}))
        } : {},
        m = zy(["mobile"], Oy(d, o)),
        p = kt.extend(n, r, m.settings(), (f = m, e && jy(f, "mobile") ? function (e, t, n) {
          void 0 === n && (n = {});
          var r = e.sections(),
            o = r.hasOwnProperty(t) ? r[t] : {};
          return kt.extend({}, n, o)
        }(m, "mobile") : {}), {
          validate: !0,
          external_plugins: (s = r, c = m.settings(), l = c.external_plugins ? c.external_plugins : {}, s && s.external_plugins ? kt.extend({}, s.external_plugins, l) : l)
        });
      return qy(e, m, r, p)
    },
    Wy = function (e, t, n, r, o) {
      var i, a, u, s, c = (i = n, a = Py, u = e, s = {
        id: t,
        theme: "silver",
        toolbar_mode: Hy(o, "floating"),
        plugins: "",
        document_base_url: i,
        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: u.convertURL,
        url_converter_scope: u
      }, ke(ke({}, s), a ? Fy : {}));
      return $y(Ly || Iy, Ly, c, r, o)
    },
    Ky = function (e, t, n) {
      return U.from(t.settings[n]).filter(e)
    },
    Xy = function (e, t, n, r) {
      var o, i, a, u = t in e.settings ? e.settings[t] : n;
      return "hash" === r ? (a = {}, "string" == typeof (i = u) ? W(0 < i.indexOf("=") ? i.split(/[;,](?![^=;,]*(?:[;,]|$))/) : i.split(","), function (e) {
        var t = e.split("=");
        1 < t.length ? a[kt.trim(t[0])] = kt.trim(t[1]) : a[kt.trim(t[0])] = kt.trim(t[0])
      }) : a = i, a) : "string" === r ? Ky(q, e, t).getOr(n) : "number" === r ? Ky(O, e, t).getOr(n) : "boolean" === r ? Ky(A, e, t).getOr(n) : "object" === r ? Ky(_, e, t).getOr(n) : "array" === r ? Ky(S, e, t).getOr(n) : "string[]" === r ? Ky((o = q, function (e) {
        return S(e) && Q(e, o)
      }), e, t).getOr(n) : "function" === r ? Ky(T, e, t).getOr(n) : u
    },
    Yy = (cy = {}, {
      add: function (e, t) {
        cy[e] = t
      },
      get: function (e) {
        return cy[e] ? cy[e] : {
          icons: {}
        }
      },
      has: function (e) {
        return he(cy, e)
      }
    }),
    Gy = function (e, t) {
      return t.dom[e]
    },
    Jy = function (e, t) {
      return parseInt(er(t, e), 10)
    },
    Qy = N(Gy, "clientWidth"),
    Zy = N(Gy, "clientHeight"),
    eb = N(Jy, "margin-top"),
    tb = N(Jy, "margin-left"),
    nb = function (e, t, n) {
      var r, o, i, a, u, s, c, l, f, d, m, p = At.fromDom(e.getBody()),
        g = e.inline ? p : (r = p, At.fromDom(Vt(r).dom.documentElement)),
        h = (o = e.inline, a = t, u = n, s = (i = g).dom.getBoundingClientRect(), {
          x: a - (o ? s.left + i.dom.clientLeft + tb(i) : 0),
          y: u - (o ? s.top + i.dom.clientTop + eb(i) : 0)
        });
      return l = h.x, f = h.y, d = Qy(c = g), m = Zy(c), 0 <= l && 0 <= f && l <= d && f <= m
    },
    rb = function (e) {
      var t, n = e.inline ? e.getBody() : e.getContentAreaContainer();
      return t = n, U.from(t).map(At.fromDom).map(hn).getOr(!1)
    };

  function ob(n) {
    var t, o = [],
      i = function () {
        var e, t = n.theme;
        return t && t.getNotificationManagerImpl ? t.getNotificationManagerImpl() : {
          open: e = function () {
            throw new Error("Theme did not provide a NotificationManager implementation.")
          },
          close: e,
          reposition: e,
          getArgs: e
        }
      },
      a = function () {
        return U.from(o[0])
      },
      u = function () {
        0 < o.length && i().reposition(o)
      },
      s = function (t) {
        G(o, function (e) {
          return e === t
        }).each(function (e) {
          o.splice(e, 1)
        })
      },
      r = function (r, e) {
        if (void 0 === e && (e = !0), !n.removed && rb(n)) return e && n.fire("BeforeOpenNotification", {
          notification: r
        }), Y(o, function (e) {
          return t = i().getArgs(e), n = r, !(t.type !== n.type || t.text !== n.text || t.progressBar || t.timeout || n.progressBar || n.timeout);
          var t, n
        }).getOrThunk(function () {
          n.editorManager.setActive(n);
          var e, t = i().open(r, function () {
            s(t), u(), a().fold(function () {
              return n.focus()
            }, function (e) {
              return At.fromDom(e.getEl()).dom.focus()
            })
          });
          return e = t, o.push(e), u(), n.fire("OpenNotification", ke({}, t)), t
        })
      };
    return (t = n).on("SkinLoaded", function () {
      // var e = t.getParam("service_message");
      // e && r({
      //   text: e,
      //   type: "warning",
      //   timeout: 0
      // }, !1)
    }), t.on("ResizeEditor ResizeWindow NodeChange", function () {
      qr.requestAnimationFrame(u)
    }), t.on("remove", function () {
      W(o.slice(), function (e) {
        i().close(e)
      })
    }), {
      open: r,
      close: function () {
        a().each(function (e) {
          i().close(e), s(e), u()
        })
      },
      getNotifications: function () {
        return o
      }
    }
  }
  var ib = Uu.PluginManager,
    ab = Uu.ThemeManager;
  var ub = function (n) {
      var r = [],
        o = function () {
          var e, t = n.theme;
          return t && t.getWindowManagerImpl ? t.getWindowManagerImpl() : {
            open: e = function () {
              throw new Error("Theme did not provide a WindowManager implementation.")
            },
            openUrl: e,
            alert: e,
            confirm: e,
            close: e,
            getParams: e,
            setParams: e
          }
        },
        i = function (e, t) {
          return function () {
            return t ? t.apply(e, arguments) : undefined
          }
        },
        a = function (e) {
          var t;
          r.push(e), t = e, n.fire("OpenWindow", {
            dialog: t
          })
        },
        u = function (t) {
          var e;
          e = t, n.fire("CloseWindow", {
            dialog: e
          }), 0 === (r = H(r, function (e) {
            return e !== t
          })).length && n.focus()
        },
        s = function (e) {
          n.editorManager.setActive(n), fm(n);
          var t = e();
          return a(t), t
        };
      return n.on("remove", function () {
        W(r, function (e) {
          o().close(e)
        })
      }), {
        open: function (e, t) {
          return s(function () {
            return o().open(e, t, u)
          })
        },
        openUrl: function (e) {
          return s(function () {
            return o().openUrl(e, u)
          })
        },
        alert: function (e, t, n) {
          o().alert(e, i(n || this, t))
        },
        confirm: function (e, t, n) {
          o().confirm(e, i(n || this, t))
        },
        close: function () {
          U.from(r[r.length - 1]).each(function (e) {
            o().close(e), u(e)
          })
        }
      }
    },
    sb = function (e, t) {
      e.notificationManager.open({
        type: "error",
        text: t
      })
    },
    cb = function (e, t) {
      e._skinLoaded ? sb(e, t) : e.on("SkinLoaded", function () {
        sb(e, t)
      })
    },
    lb = function (e, t, n) {
      var r, o;
      r = t, o = {
        message: n
      }, e.fire(r, o), console.error(n)
    },
    fb = function (e, t, n) {
      return n ? "Failed to load " + e + ": " + n + " from url " + t : "Failed to load " + e + " url: " + t
    },
    db = function (e, t, n) {
      lb(e, "PluginLoadError", fb("plugin", t, n))
    },
    mb = function (e) {
      for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
      var r = window.console;
      r && (r.error ? r.error.apply(r, _e([e], t)) : r.log.apply(r, _e([e], t)))
    },
    pb = function (t) {
      var e, n, r = (n = (e = t).getParam("content_css"), q(n) ? z(n.split(","), $e) : S(n) ? n : !1 === n || e.inline ? [] : ["default"]),
        o = t.editorManager.baseURL + "/skins/content",
        i = "content" + t.editorManager.suffix + ".css",
        a = !0 === t.inline;
      return z(r, function (e) {
        return /^[a-z0-9\-]+$/i.test(e) && !a ? o + "/" + e + "/" + i : t.documentBaseURI.toAbsolute(e)
      })
    };

  function gb(u, s) {
    var o = {},
      n = function (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)
      },
      c = function (e, t) {
        return {
          url: t,
          blobInfo: e,
          status: !0
        }
      },
      l = function (e, t, n) {
        return {
          url: "",
          blobInfo: e,
          status: !1,
          error: {
            message: t,
            options: n
          }
        }
      },
      f = function (e, t) {
        kt.each(o[e], function (e) {
          e(t)
        }), delete o[e]
      },
      r = function (e, r) {
        return e = kt.grep(e, function (e) {
          return !u.isUploaded(e.blobUri())
        }), Br.all(kt.map(e, function (e) {
          return u.isPending(e.blobUri()) ? (t = e.blobUri(), new Br(function (e) {
            o[t] = o[t] || [], o[t].push(e)
          })) : (i = e, n = s.handler, a = r, u.markPending(i.blobUri()), new Br(function (r) {
            var t;
            try {
              var o = function () {
                t && t.close()
              };
              n(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 (e) {
                e < 0 || 100 < e || (t = t || a()).progressBar.value(e)
              })
            } catch (e) {
              r(l(i, e.message, {}))
            }
          }));
          var i, n, a, t
        }))
      };
    return !1 === T(s.handler) && (s.handler = n), {
      upload: function (e, t) {
        return s.url || s.handler !== n ? r(e, t) : new Br(function (e) {
          e([])
        })
      }
    }
  }
  var hb = 0,
    vb = function (e) {
      return e + hb++ + (t = function () {
        return Math.round(4294967295 * Math.random()).toString(36)
      }, "s" + (new Date).getTime().toString(36) + t() + t() + t());
      var t
    },
    yb = function (s) {
      var n, i, e, t, r, o, a, u, c, l = (n = [], i = function (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 || vb("blobid"),
            n = e.name || t,
            r = e.blob;
          return {
            id: E(t),
            name: E(n),
            filename: E(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: E(r),
            base64: E(e.base64),
            blobUri: E(e.blobUri || URL.createObjectURL(r)),
            uri: E(e.uri)
          }
        }, {
          create: function (e, t, n, r, o) {
            if (q(e)) return i({
              id: e,
              name: r,
              filename: o,
              blob: t,
              base64: n
            });
            if (_(e)) return i(e);
            throw new Error("Unknown input type")
          },
          add: function (e) {
            t(e.id()) || n.push(e)
          },
          get: t = function (t) {
            return e(function (e) {
              return e.id() === 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 = function (e) {
            return Y(n, e).getOrUndefined()
          },
          removeByUri: function (t) {
            n = H(n, function (e) {
              return e.blobUri() !== t || (URL.revokeObjectURL(e.blobUri()), !1)
            })
          },
          destroy: function () {
            W(n, function (e) {
              URL.revokeObjectURL(e.blobUri())
            }), n = []
          }
        }),
        f = (a = {}, u = function (e, t) {
          return {
            status: e,
            resultUri: t
          }
        }, {
          hasBlobUri: c = function (e) {
            return e in a
          },
          getResultUri: function (e) {
            var t = a[e];
            return t ? t.resultUri : null
          },
          isPending: function (e) {
            return !!c(e) && 1 === a[e].status
          },
          isUploaded: function (e) {
            return !!c(e) && 2 === a[e].status
          },
          markPending: function (e) {
            a[e] = u(1, null)
          },
          markUploaded: function (e, t) {
            a[e] = u(2, t)
          },
          removeFailed: function (e) {
            delete a[e]
          },
          destroy: function () {
            a = {}
          }
        }),
        d = [],
        m = function (n) {
          var r = Ou(null);
          n.on("change AddUndo", function (e) {
            r.set(ke({}, e.level))
          });
          return {
            fireIfChanged: function () {
              var t = n.undoManager.data;
              re(t).filter(function (e) {
                return !Bv(r.get(), e)
              }).each(function (e) {
                n.setDirty(!0), n.fire("change", {
                  level: e,
                  lastLevel: te(t, t.length - 2).getOrNull()
                })
              })
            }
          }
        }(s),
        p = function (t) {
          return function (e) {
            return s.selection ? t(e) : []
          }
        },
        g = function (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
        },
        h = function (e, t, n) {
          var r = 'src="' + n + '"' + (n === wt.transparentSrc ? ' data-mce-placeholder="1"' : "");
          return e = g(e, 'src="' + t + '"', r), e = g(e, 'data-mce-src="' + t + '"', 'data-mce-src="' + n + '"')
        },
        v = function (t, n) {
          W(s.undoManager.data, function (e) {
            "fragmented" === e.type ? e.fragments = z(e.fragments, function (e) {
              return h(e, t, n)
            }) : e.content = h(e.content, t, n)
          })
        },
        y = function () {
          return s.notificationManager.open({
            text: s.translate("Image uploading..."),
            type: "info",
            timeout: -1,
            progressBar: !0
          })
        },
        b = function (e, t) {
          var n, r = s.convertURL(t, "src");
          v(e.src, t), s.$(e).attr({
            src: s.getParam("images_reuse_filename", !1, "boolean") ? (n = t) + (-1 === n.indexOf("?") ? "?" : "&") + (new Date).getTime() : t,
            "data-mce-src": r
          })
        },
        C = function (n) {
          return r = r || gb(f, {
            url: s.getParam("images_upload_url", "", "string"),
            basePath: s.getParam("images_upload_base_path", "", "string"),
            credentials: s.getParam("images_upload_credentials", !1, "boolean"),
            handler: s.getParam("images_upload_handler", null, "function")
          }), S().then(p(function (u) {
            var e = z(u, function (e) {
              return e.blobInfo
            });
            return r.upload(e, y).then(p(function (e) {
              var a = [],
                t = z(e, function (e, t) {
                  var n, r, o = u[t].blobInfo,
                    i = u[t].image;
                  return e.status && s.getParam("images_replace_blob_uris", !0, "boolean") ? (l.removeByUri(i.src), b(i, e.url)) : e.error && (e.error.options.remove && (v(i.getAttribute("src"), wt.transparentSrc), a.push(i)), n = s, r = e.error.message, cb(n, Iu.translate(["Failed to upload image: {0}", r]))), {
                    element: i,
                    status: e.status,
                    uploadUri: e.url,
                    blobInfo: o
                  }
                });
              return 0 < t.length && m.fireIfChanged(), 0 < a.length && (Hv(s) ? console.error("Removing images on failed uploads is currently unsupported for RTC") : s.undoManager.transact(function () {
                W(a, function (e) {
                  s.dom.remove(e), l.removeByUri(e.src)
                })
              })), n && n(t), t
            }))
          }))
        },
        w = function (e) {
          if (bc(s)) return C(e)
        },
        x = function (t) {
          return !1 !== Q(d, function (e) {
            return e(t)
          }) && (0 !== t.getAttribute("src").indexOf("data:") || s.getParam("images_dataimg_filter", k, "function")(t))
        },
        S = function () {
          return (o = o || uy(f, l)).findAll(s.getBody(), x).then(p(function (e) {
            return e = H(e, function (e) {
              return "string" != typeof e || (cb(s, e), !1)
            }), W(e, function (e) {
              v(e.image.src, e.blobInfo.blobUri()), e.image.src = e.blobInfo.blobUri(), e.image.removeAttribute("data-mce-src")
            }), e
          }))
        },
        N = function (e) {
          return e.replace(/src="(blob:[^"]+)"/g, function (e, n) {
            var t = f.getResultUri(n);
            if (t) return 'src="' + t + '"';
            var r = l.getByUri(n);
            return (r = r || X(s.editorManager.get(), function (e, t) {
              return e || t.editorUpload && t.editorUpload.blobCache.getByUri(n)
            }, null)) ? 'src="data:' + r.blob().type + ";base64," + r.base64() + '"' : e
          })
        };
      return s.on("SetContent", function () {
        (bc(s) ? w : S)()
      }), s.on("RawSaveContent", function (e) {
        e.content = N(e.content)
      }), s.on("GetContent", function (e) {
        e.source_view || "raw" === e.format || "tree" === e.format || (e.content = N(e.content))
      }), s.on("PostRender", function () {
        s.parser.addNodeFilter("img", function (e) {
          W(e, function (e) {
            var t, n = e.attr("src");
            l.getByUri(n) || (t = f.getResultUri(n)) && e.attr("src", t)
          })
        })
      }), {
        blobCache: l,
        addFilter: function (e) {
          d.push(e)
        },
        uploadImages: C,
        uploadImagesAuto: w,
        scanForImages: S,
        destroy: function () {
          l.destroy(), f.destroy(), o = r = null
        }
      }
    };

  function bb(e) {
    var r, t, n = {},
      o = function (e, t) {
        e && ("string" != typeof e ? kt.each(e, function (e, t) {
          o(t, e)
        }) : (S(t) || (t = [t]), kt.each(t, function (e) {
          "undefined" == typeof e.deep && (e.deep = !e.selector), "undefined" == typeof e.split && (e.split = !e.selector || e.inline), "undefined" == typeof e.remove && e.selector && !e.inline && (e.remove = "none"), e.selector && e.inline && (e.mixed = !0, e.block_expand = !0), "string" == typeof e.classes && (e.classes = e.classes.split(/\s+/))
        }), n[e] = t))
      };
    return o((r = e.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",
        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",
        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",
        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 An(e) && e.hasAttribute("href")
        },
        onformat: function (n, e, t) {
          kt.each(t, function (e, t) {
            r.setAttrib(n, t, e)
          })
        }
      },
      removeformat: [{
        selector: "b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",
        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
      }]
    }, kt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/), function (e) {
      t[e] = {
        block: e,
        remove: "all"
      }
    }), t)), o(e.getParam("formats")), {
      get: function (e) {
        return e ? n[e] : n
      },
      has: function (e) {
        return he(n, e)
      },
      register: o,
      unregister: function (e) {
        return e && n[e] && delete n[e], n
      }
    }
  }
  var Cb, wb, xb = kt.each,
    Sb = Eu.DOM,
    Nb = function (e, t) {
      var n, o, r, m = t && t.schema || Ci({}),
        p = function (e) {
          o = "string" == typeof e ? {
            name: e,
            classes: [],
            attrs: {}
          } : e;
          var t, n, r = Sb.create(o.name);
          return t = r, (n = o).classes.length && Sb.addClass(t, n.classes.join(" ")), Sb.setAttribs(t, n.attrs), r
        },
        g = 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, s = m.getElementRule(u), !(!(c = s && s.parentsRequired) || !c.length) && (a && -1 !== kt.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 = p(o)).appendChild(n), t && (r || (r = Sb.create("div")).appendChild(n), kt.each(t, function (e) {
            var t = p(e);
            r.insertBefore(t, n)
          })), g(r, e, o && o.siblings)
        };
      return e && e.length ? (o = e[0], n = p(o), (r = Sb.create("div")).appendChild(g(n, e.slice(1), o.siblings)), r) : ""
    },
    Eb = function (e) {
      var t, a = {
        classes: [],
        attrs: {}
      };
      return "*" !== (e = a.selector = kt.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 !== kt.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
    },
    kb = function (n, e) {
      var t, r, o, i = "",
        a = (o = 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"), q(o) ? o : "");
      if ("" === a) return "";
      var u = function (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 s = ge(e, "preview");
        if (s.is(!1)) return "";
        a = s.getOr(a)
      }
      t = e.block || e.inline || "span";
      var c, l = (c = e.selector) && "string" == typeof c ? (c = (c = c.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g, "$1"), kt.map(c.split(/(?:>|\s+(?![^\[\]]+\]))/), function (e) {
          var t = kt.map(e.split(/(?:~\+|~|\+)/), Eb),
            n = t.pop();
          return t.length && (n.siblings = t), n
        }).reverse()) : [],
        f = l.length ? (l[0].name || (l[0].name = t), t = e.selector, Nb(l, n)) : Nb([t], n),
        d = Sb.select(t, f)[0] || f.firstChild;
      return xb(e.styles, function (e, t) {
        var n = u(e);
        n && Sb.setStyle(d, t, n)
      }), xb(e.attributes, function (e, t) {
        var n = u(e);
        n && Sb.setAttrib(d, t, n)
      }), xb(e.classes, function (e) {
        var t = u(e);
        Sb.hasClass(d, t) || Sb.addClass(d, t)
      }), n.fire("PreviewFormats"), Sb.setStyles(f, {
        position: "absolute",
        left: -65535
      }), n.getBody().appendChild(f), r = Sb.getStyle(n.getBody(), "fontSize", !0), r = /px$/.test(r) ? parseInt(r, 10) : 0, xb(a.split(" "), function (e) {
        var t = Sb.getStyle(d, e, !0);
        if (!("background-color" === e && /transparent|rgba\s*\([^)]+,\s*0\)/.test(t) && (t = Sb.getStyle(n.getBody(), e, !0), "#ffffff" === Sb.toHex(t).toLowerCase()) || "color" === e && "#000000" === Sb.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 && (i += "padding:0 2px;"), i += e + ":" + t + ";"
        }
      }), n.fire("AfterPreviewFormats"), Sb.remove(f), i
    },
    _b = function (s) {
      var e = bb(s),
        u = Ou(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"])
      }(s), Sh(s), {
        get: e.get,
        has: e.has,
        register: e.register,
        unregister: e.unregister,
        apply: function (e, t, n) {
          var r, o, i;
          r = e, o = t, i = n, qv(s).formatter.apply(r, o, i)
        },
        remove: function (e, t, n, r) {
          var o, i, a, u;
          o = e, i = t, a = n, u = r, qv(s).formatter.remove(o, i, a, u)
        },
        toggle: function (e, t, n) {
          var r, o, i;
          r = e, o = t, i = n, qv(s).formatter.toggle(r, o, i)
        },
        match: function (e, t, n) {
          return r = e, o = t, i = n, qv(s).formatter.match(r, o, i);
          var r, o, i
        },
        closest: function (e) {
          return t = e, qv(s).formatter.closest(t);
          var t
        },
        matchAll: function (e, t) {
          return n = e, r = t, qv(s).formatter.matchAll(n, r);
          var n, r
        },
        matchNode: function (e, t, n, r) {
          return o = e, i = t, a = n, u = r, qv(s).formatter.matchNode(o, i, a, u);
          var o, i, a, u
        },
        canApply: function (e) {
          return t = e, qv(s).formatter.canApply(t);
          var t
        },
        formatChanged: function (e, t, n) {
          return r = u, o = e, i = t, void 0 === (a = n) && (a = !1), qv(s).formatter.formatChanged(r, o, i, a);
          var r, o, i, a
        },
        getCssText: N(kb, s)
      }
    },
    Ab = function (n, r, o) {
      var i = Ou(!1),
        a = function (e) {
          Lv(r, !1, o), r.add({}, e)
        };
      n.on("init", function () {
        r.add()
      }), n.on("BeforeExecCommand", function (e) {
        var t = e.command.toLowerCase();
        "undo" !== t && "redo" !== t && "mcerepaint" !== t && (Iv(r, o), r.beforeChange())
      }), n.on("ExecCommand", function (e) {
        var t = e.command.toLowerCase();
        "undo" !== t && "redo" !== t && "mcerepaint" !== t && 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 === Bv(Rv(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(), Lv(r, !0, o), r.add({}, e), i.set(!0))))
      }), n.on("mousedown", function (e) {
        r.typing && a(e)
      });
      n.on("input", function (e) {
        var t, n;
        e.inputType && ("insertReplacementText" === e.inputType || "insertText" === (n = e).inputType && null === n.data || ("insertFromPaste" === (t = e).inputType || "insertFromDrop" === t.inputType)) && a(e)
      }), n.on("AddUndo Undo Redo ClearUndos", function (e) {
        e.isDefaultPrevented() || n.nodeChanged()
      })
    },
    Rb = function (s) {
      var e, c = Ou(U.none()),
        l = Ou(0),
        f = Ou(0),
        d = {
          data: [],
          typing: !1,
          beforeChange: function () {
            var e, t;
            e = l, t = c, qv(s).undoManager.beforeChange(e, t)
          },
          add: function (e, t) {
            return n = d, r = f, o = l, i = c, a = e, u = t, qv(s).undoManager.addUndoLevel(n, r, o, i, a, u);
            var n, r, o, i, a, u
          },
          undo: function () {
            return e = d, t = l, n = f, qv(s).undoManager.undo(e, t, n);
            var e, t, n
          },
          redo: function () {
            return e = s, t = f, n = d.data, qv(e).undoManager.redo(t, n);
            var e, t, n
          },
          clear: function () {
            var e, t;
            e = d, t = f, qv(s).undoManager.clear(e, t)
          },
          reset: function () {
            var e;
            e = d, qv(s).undoManager.reset(e)
          },
          hasUndo: function () {
            return e = d, t = f, qv(s).undoManager.hasUndo(e, t);
            var e, t
          },
          hasRedo: function () {
            return e = d, t = f, qv(s).undoManager.hasRedo(e, t);
            var e, t
          },
          transact: function (e) {
            return t = d, n = l, r = e, qv(s).undoManager.transact(t, n, r);
            var t, n, r
          },
          ignore: function (e) {
            var t, n;
            t = l, n = e, qv(s).undoManager.ignore(t, n)
          },
          extra: function (e, t) {
            var n, r, o, i;
            n = d, r = f, o = e, i = t, qv(s).undoManager.extra(n, r, o, i)
          }
        };
      return Hv(s) || Ab(s, d, l), (e = s).addShortcut("meta+z", "", "Undo"), e.addShortcut("meta+y,meta+shift+z", "", "Redo"), d
    },
    Tb = [9, 27, ud.HOME, ud.END, 19, 20, 44, 144, 145, 33, 34, 45, 16, 17, 18, 91, 92, 93, ud.DOWN, ud.UP, ud.LEFT, ud.RIGHT].concat(wt.browser.isFirefox() ? [224] : []),
    Db = "data-mce-placeholder",
    Ob = function (e) {
      return "keydown" === e.type || "keyup" === e.type
    },
    Bb = function (e) {
      var t = e.keyCode;
      return t === ud.BACKSPACE || t === ud.DELETE
    },
    Pb = function (a) {
      var e, u = a.dom,
        s = vc(a),
        c = (e = a).getParam("placeholder", pc.getAttrib(e.getElement(), "placeholder"), "string"),
        l = function (e, t) {
          var n, r, o, i;
          ! function (e) {
            if (Ob(e)) {
              var t = e.keyCode;
              return !Bb(e) && (ud.metaKeyPressed(e) || e.altKey || 112 <= t && t <= 123 || M(Tb, t))
            }
            return !1
          }(e) && (n = a.getBody(), r = !(Ob(o = e) && !(Bb(o) || "keyup" === o.type && 229 === o.keyCode)) && function (e, t, n) {
            if ($o(At.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
          }(u, n, s), "" !== u.getAttrib(n, Db) === r && !t || (u.setAttrib(n, Db, r ? c : null), u.setAttrib(n, "aria-placeholder", r ? c : null), i = r, a.fire("PlaceholderToggle", {
            state: i
          }), a.on(r ? "keydown" : "keyup", l), a.off(r ? "keyup" : "keydown", l)))
        };
      c && a.on("init", function (e) {
        l(e, !0), a.on("change SetContent ExecCommand", l), a.on("paste", function (e) {
          return qr.setEditorTimeout(a, function () {
            return l(e)
          })
        })
      })
    },
    Lb = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,
    Ib = function (e, t) {
      return Tt(At.fromDom(t), e.getParam("inline_boundaries_selector", "a[href],code,.mce-annotation", "string"))
    },
    Mb = function (e) {
      return "rtl" === Eu.DOM.getStyle(e, "direction", !0) || (t = e.textContent, Lb.test(t));
      var t
    },
    Fb = function (e, t, n) {
      var r, o, i, a = (r = e, o = t, i = n, H(Eu.DOM.getParents(i.container(), "*", o), r));
      return U.from(a[a.length - 1])
    },
    Ub = function (e, t) {
      if (!t) return t;
      var n = t.container(),
        r = t.offset();
      return e ? yo(n) ? In(n.nextSibling) ? $s(n.nextSibling, 0) : $s.after(n) : wo(t) ? $s(n, r + 1) : t : yo(n) ? In(n.previousSibling) ? $s(n.previousSibling, n.previousSibling.data.length) : $s.before(n) : xo(t) ? $s(n, r - 1) : t
    },
    zb = N(Ub, !0),
    jb = N(Ub, !1),
    Hb = function (e, t) {
      return Pt(e, t) ? Ar(t, function (e) {
        return ro(e) || io(e)
      }, (n = e, function (e) {
        return Ot(n, At.fromDom(e.dom.parentNode))
      })) : U.none();
      var n
    },
    Vb = function (e) {
      var t, n, r;
      e.dom.isEmpty(e.getBody()) && (e.setContent(""), n = (t = e).getBody(), r = n.firstChild && t.dom.isBlock(n.firstChild) ? n.firstChild : n, t.selection.setCursorLocation(r, 0))
    },
    qb = function (e, t) {
      return {
        from: e,
        to: t
      }
    },
    $b = function (e, t) {
      var n = At.fromDom(e),
        r = At.fromDom(t.container());
      return Hb(n, r).map(function (e) {
        return {
          block: e,
          position: t
        }
      })
    },
    Wb = function (o, i, e) {
      var t = $b(o, $s.fromRangeStart(e)),
        n = t.bind(function (e) {
          return Ol(i, o, e.position).bind(function (e) {
            return $b(o, e).map(function (e) {
              return t = o, n = i, zn((r = e).position.getNode()) && !1 === $o(r.block) ? Ll(!1, r.block.dom).bind(function (e) {
                return e.isEqual(r.position) ? Ol(n, t, e).bind(function (e) {
                  return $b(t, e)
                }) : U.some(r)
              }).getOr(r) : r;
              var t, n, r
            })
          })
        });
      return ds(t, n, qb).filter(function (e) {
        return !1 === Ot((r = e).from.block, r.to.block) && $t((n = e).from.block).bind(function (t) {
          return $t(n.to.block).filter(function (e) {
            return Ot(t, e)
          })
        }).isSome() && (!1 === Vn((t = e).from.block.dom) && !1 === Vn(t.to.block.dom));
        var t, n, r
      })
    },
    Kb = function (e) {
      var t, n = (t = Gt(e), G(t, eo).fold(function () {
        return t
      }, function (e) {
        return t.slice(0, e)
      }));
      return W(n, pn), n
    },
    Xb = function (e, t) {
      var n = Dp(t, e);
      return Y(n.reverse(), function (e) {
        return $o(e)
      }).each(pn)
    },
    Yb = function (e, t, n, r) {
      if ($o(n)) return _p(n), Fl(n.dom);
      0 === H(Xt(r), function (e) {
        return !$o(e)
      }).length && $o(t) && sn(r, At.fromTag("br"));
      var o = Ml(n.dom, $s.before(r.dom));
      return W(Kb(t), function (e) {
        sn(r, e)
      }), Xb(e, t), o
    },
    Gb = function (e, t, n) {
      if ($o(n)) return pn(n), $o(t) && _p(t), Fl(t.dom);
      var r = Ul(n.dom);
      return W(Kb(t), function (e) {
        fn(n, e)
      }), Xb(e, t), r
    },
    Jb = function (e, t) {
      return Pt(t, e) ? (n = Dp(e, t), U.from(n[n.length - 1])) : U.none();
      var n
    },
    Qb = function (e, t) {
      Ll(e, t.dom).map(function (e) {
        return e.getNode()
      }).map(At.fromDom).filter(no).each(pn)
    },
    Zb = function (e, t, n) {
      return Qb(!0, t), Qb(!1, n), Jb(t, n).fold(N(Gb, e, t, n), N(Yb, e, t, n))
    },
    eC = function (e, t, n, r) {
      return t ? Zb(e, r, n) : Zb(e, n, r)
    },
    tC = function (t, n) {
      var e, r, o, i = At.fromDom(t.getBody()),
        a = (e = i.dom, r = n, ((o = t.selection.getRng()).collapsed ? Wb(e, r, o) : U.none()).bind(function (e) {
          return eC(i, n, e.from.block, e.to.block)
        }));
      return a.each(function (e) {
        t.selection.setRng(e.toRange())
      }), a.isSome()
    },
    nC = function (e, t) {
      var n = At.fromDom(t),
        r = N(Ot, e);
      return _r(n, uo, r).isSome()
    },
    rC = function (e, t) {
      var n, r, o = Ml(e.dom, $s.fromRangeStart(t)).isNone(),
        i = Il(e.dom, $s.fromRangeEnd(t)).isNone();
      return !(nC(n = e, (r = t).startContainer) || nC(n, r.endContainer)) && o && i
    },
    oC = function (e) {
      var n, r, o, t, i = At.fromDom(e.getBody()),
        a = e.selection.getRng();
      return rC(i, a) ? ((t = e).setContent(""), t.selection.setCursorLocation(), !0) : (n = i, r = e.selection, o = r.getRng(), ds(Hb(n, At.fromDom(o.startContainer)), Hb(n, At.fromDom(o.endContainer)), function (e, t) {
        return !1 === Ot(e, t) && (o.deleteContents(), eC(n, !0, e, t).each(function (e) {
          r.setRng(e.toRange())
        }), !0)
      }).getOr(!1))
    },
    iC = function (e, t) {
      return !e.selection.isCollapsed() && oC(e)
    },
    aC = Hn,
    uC = Vn,
    sC = function (e, t, n, r, o) {
      return U.from(t._selectionOverrides.showCaret(e, n, r, o))
    },
    cC = function (e, t) {
      var n, r;
      return e.fire("BeforeObjectSelected", {
        target: t
      }).isDefaultPrevented() ? U.none() : U.some(((r = (n = t).ownerDocument.createRange()).selectNode(n), r))
    },
    lC = function (e, t, n) {
      var r = ll(1, e.getBody(), t),
        o = $s.fromRangeStart(r),
        i = o.getNode();
      if (Wc(i)) return sC(1, e, i, !o.isAtEnd(), !1);
      var a = o.getNode(!0);
      if (Wc(a)) return sC(1, e, a, !1, !1);
      var u = e.dom.getParent(o.getNode(), function (e) {
        return uC(e) || aC(e)
      });
      return Wc(u) ? sC(1, e, u, !1, n) : U.none()
    },
    fC = function (e, t, n) {
      return t.collapsed ? lC(e, t, n).getOr(t) : t
    },
    dC = function (e) {
      return Np(e) || Cp(e)
    },
    mC = function (e) {
      return Ep(e) || wp(e)
    },
    pC = function (n, r, e, t, o, i) {
      var a, u;
      return sC(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, In(u = e) && 0 === u.data.length && a.remove(u), !0
    },
    gC = function (e, t) {
      var n = e.selection.getRng();
      if (!In(n.commonAncestorContainer)) return !1;
      var r = t ? Vs.Forwards : Vs.Backwards,
        o = _l(e.getBody()),
        i = N(pl, t ? o.next : o.prev),
        a = t ? dC : mC,
        u = dl(r, e.getBody(), n),
        s = Ub(t, i(u));
      if (!s || !gl(u, s)) return !1;
      if (a(s)) return pC(e, n, u.getNode(), r, t, s);
      var c = i(s);
      return !!(c && a(c) && gl(s, c)) && pC(e, n, u.getNode(), r, t, c)
    },
    hC = Cr([{
      remove: ["element"]
    }, {
      moveToElement: ["element"]
    }, {
      moveToPosition: ["position"]
    }]),
    vC = function (e, t, n, r) {
      var o = r.getNode(!1 === t);
      return Hb(At.fromDom(e), At.fromDom(n.getNode())).map(function (e) {
        return $o(e) ? hC.remove(e.dom) : hC.moveToElement(o)
      }).orThunk(function () {
        return U.some(hC.moveToElement(o))
      })
    },
    yC = function (u, s, c) {
      return Ol(s, u, c).bind(function (e) {
        return a = e.getNode(), uo(At.fromDom(a)) || io(At.fromDom(a)) ? U.none() : (t = u, o = e, i = function (e) {
          return to(At.fromDom(e)) && !ol(r, o, t)
        }, fl(!(n = s), r = c).fold(function () {
          return fl(n, o).fold(C, i)
        }, i) ? U.none() : s && Vn(e.getNode()) || !1 === s && Vn(e.getNode(!0)) ? vC(u, s, c, e) : s && Ep(c) || !1 === s && Np(c) ? U.some(hC.moveToPosition(e)) : U.none());
        var t, n, r, o, i, a
      })
    },
    bC = function (r, e, o) {
      return i = e, a = o.getNode(!1 === i), u = i ? "after" : "before", An(a) && a.getAttribute("data-mce-caret") === u ? (t = e, n = o.getNode(!1 === e), (t && Vn(n.nextSibling) ? U.some(hC.moveToElement(n.nextSibling)) : !1 === t && Vn(n.previousSibling) ? U.some(hC.moveToElement(n.previousSibling)) : U.none()).fold(function () {
        return yC(r, e, o)
      }, U.some)) : yC(r, e, o).bind(function (e) {
        return t = r, n = o, e.fold(function (e) {
          return U.some(hC.remove(e))
        }, function (e) {
          return U.some(hC.moveToElement(e))
        }, function (e) {
          return ol(n, e, t) ? U.none() : U.some(hC.moveToPosition(e))
        });
        var t, n
      });
      var t, n, i, a, u
    },
    CC = function (e, t) {
      return U.from(id(e.getBody(), t))
    },
    wC = function (a, u) {
      var e = a.selection.getNode();
      return CC(a, e).filter(Vn).fold(function () {
        return e = a.getBody(), t = u, n = a.selection.getRng(), r = ll(t ? 1 : -1, e, n), o = $s.fromRangeStart(r), i = At.fromDom(e), (!1 === t && Ep(o) ? U.some(hC.remove(o.getNode(!0))) : t && Np(o) ? U.some(hC.remove(o.getNode())) : !1 === t && Np(o) && Vp(i, o) ? qp(i, o).map(function (e) {
          return hC.remove(e.getNode())
        }) : t && Ep(o) && Hp(i, o) ? $p(i, o).map(function (e) {
          return hC.remove(e.getNode())
        }) : bC(e, t, o)).exists(function (e) {
          return e.fold(function (e) {
            return o._selectionOverrides.hideFakeCaret(), Cg(o, i, At.fromDom(e)), !0
          }, (r = i = u, function (e) {
            var t = r ? $s.before(e) : $s.after(e);
            return n.selection.setRng(t.toRange()), !0
          }), (t = n = o = a, function (e) {
            return t.selection.setRng(e.toRange()), !0
          }));
          var t, n, r, o, i
        });
        var e, t, n, r, o, i
      }, k)
    },
    xC = function (t, n) {
      var e = t.selection.getNode();
      return !!Vn(e) && CC(t, e.parentNode).filter(Vn).fold(function () {
        var e;
        return e = At.fromDom(t.getBody()), W(Gu(e, ".mce-offscreen-selection"), pn), Cg(t, n, At.fromDom(t.selection.getNode())), Vb(t), !0
      }, function () {
        return !0
      })
    },
    SC = function (e) {
      var t, n = e.dom,
        r = e.selection,
        o = id(e.getBody(), r.getNode());
      return Hn(o) && n.isBlock(o) && n.isEmpty(o) && (t = n.create("br", {
        "data-mce-bogus": "1"
      }), n.setHTML(o, ""), o.appendChild(t), r.setRng($s.before(t).toRange())), !0
    },
    NC = function (e, t) {
      return (e.selection.isCollapsed() ? wC : xC)(e, t)
    },
    EC = function (e, t) {
      return !!e.selection.isCollapsed() && (n = e, r = t, o = $s.fromRangeStart(n.selection.getRng()), Ol(r, n.getBody(), o).filter(function (e) {
        return (r ? yp : bp)(e)
      }).bind(function (e) {
        return U.from(il(r ? 0 : -1, e))
      }).exists(function (e) {
        return n.selection.select(e), !0
      }));
      var n, r, o
    },
    kC = In,
    _C = function (e) {
      return kC(e) && e.data[0] === fo
    },
    AC = function (e) {
      return kC(e) && e.data[e.data.length - 1] === fo
    },
    RC = function (e) {
      return e.ownerDocument.createTextNode(fo)
    },
    TC = function (e, t) {
      return (e ? function (e) {
        if (kC(e.previousSibling)) return AC(e.previousSibling) || e.previousSibling.appendData(fo), e.previousSibling;
        if (kC(e)) return _C(e) || e.insertData(0, fo), e;
        var t = RC(e);
        return e.parentNode.insertBefore(t, e), t
      } : function (e) {
        if (kC(e.nextSibling)) return _C(e.nextSibling) || e.nextSibling.insertData(0, fo), e.nextSibling;
        if (kC(e)) return AC(e) || e.appendData(fo), e;
        var t = RC(e);
        return e.nextSibling ? e.parentNode.insertBefore(t, e.nextSibling) : e.parentNode.appendChild(t), t
      })(t)
    },
    DC = N(TC, !0),
    OC = N(TC, !1),
    BC = function (e, t) {
      return In(e.container()) ? TC(t, e.container()) : TC(t, e.getNode())
    },
    PC = function (e, t) {
      var n = t.get();
      return n && e.container() === n && yo(n)
    },
    LC = function (n, e) {
      return e.fold(function (e) {
        Fc(n.get());
        var t = DC(e);
        return n.set(t), U.some($s(t, t.length - 1))
      }, function (e) {
        return Fl(e).map(function (e) {
          if (PC(e, n)) return $s(n.get(), 1);
          Fc(n.get());
          var t = BC(e, !0);
          return n.set(t), $s(t, 1)
        })
      }, function (e) {
        return Ul(e).map(function (e) {
          if (PC(e, n)) return $s(n.get(), n.get().length - 1);
          Fc(n.get());
          var t = BC(e, !1);
          return n.set(t), $s(t, t.length - 1)
        })
      }, function (e) {
        Fc(n.get());
        var t = OC(e);
        return n.set(t), U.some($s(t, 1))
      })
    },
    IC = function (e, t) {
      for (var n = 0; n < e.length; n++) {
        var r = e[n].apply(null, t);
        if (r.isSome()) return r
      }
      return U.none()
    },
    MC = Cr([{
      before: ["element"]
    }, {
      start: ["element"]
    }, {
      end: ["element"]
    }, {
      after: ["element"]
    }]),
    FC = function (e, t) {
      var n = rl(t, e);
      return n || e
    },
    UC = function (e, t, n) {
      var r = zb(n),
        o = FC(t, r.container());
      return Fb(e, o, r).fold(function () {
        return Il(o, r).bind(N(Fb, e, o)).map(function (e) {
          return MC.before(e)
        })
      }, U.none)
    },
    zC = function (e, t) {
      return null === Hl(e, t)
    },
    jC = function (e, t, n) {
      return Fb(e, t, n).filter(N(zC, t))
    },
    HC = function (e, t, n) {
      var r = jb(n);
      return jC(e, t, r).bind(function (e) {
        return Ml(e, r).isNone() ? U.some(MC.start(e)) : U.none()
      })
    },
    VC = function (e, t, n) {
      var r = zb(n);
      return jC(e, t, r).bind(function (e) {
        return Il(e, r).isNone() ? U.some(MC.end(e)) : U.none()
      })
    },
    qC = function (e, t, n) {
      var r = jb(n),
        o = FC(t, r.container());
      return Fb(e, o, r).fold(function () {
        return Ml(o, r).bind(N(Fb, e, o)).map(function (e) {
          return MC.after(e)
        })
      }, U.none)
    },
    $C = function (e) {
      return !1 === Mb(KC(e))
    },
    WC = function (e, t, n) {
      return IC([UC, HC, VC, qC], [e, t, n]).filter($C)
    },
    KC = function (e) {
      return e.fold(o, o, o, o)
    },
    XC = function (e) {
      return e.fold(E("before"), E("start"), E("end"), E("after"))
    },
    YC = function (e) {
      return e.fold(MC.before, MC.before, MC.after, MC.after)
    },
    GC = function (e) {
      return e.fold(MC.start, MC.start, MC.end, MC.end)
    },
    JC = function (a, e, u, t, n, s) {
      return ds(Fb(e, u, t), Fb(e, u, n), function (e, t) {
        return e !== t && (r = t, o = rl(e, n = u), i = rl(r, n), o && o === i) ? MC.after(a ? e : t) : s;
        var n, r, o, i
      }).getOr(s)
    },
    QC = function (e, r) {
      return e.fold(k, function (e) {
        return n = r, !(XC(t = e) === XC(n) && KC(t) === KC(n));
        var t, n
      })
    },
    ZC = function (e, t) {
      return e ? t.fold(a(U.some, MC.start), U.none, a(U.some, MC.after), U.none) : t.fold(U.none, a(U.some, MC.before), U.none, a(U.some, MC.end))
    },
    ew = function (e, a, u, s) {
      var t = Ub(e, s),
        c = WC(a, u, t);
      return WC(a, u, t).bind(N(ZC, e)).orThunk(function () {
        return n = a, r = u, o = c, i = Ub(t = e, s), Ol(t, r, i).map(N(Ub, t)).fold(function () {
          return o.map(YC)
        }, function (e) {
          return WC(n, r, e).map(N(JC, t, n, r, i, e)).filter(N(QC, o))
        }).filter($C);
        var t, n, r, o, i
      })
    },
    tw = (N(ew, !1), N(ew, !0), function (e, t, n) {
      var r = e ? 1 : -1;
      return t.setRng($s(n.container(), n.offset() + r).toRange()), t.getSel().modify("move", e ? "forward" : "backward", "word"), !0
    }),
    nw = function (e, t) {
      var n = t.selection.getRng(),
        r = e ? $s.fromRangeEnd(n) : $s.fromRangeStart(n);
      return !!T(t.selection.getSel().modify) && (e && wo(r) ? tw(!0, t.selection, r) : !(e || !xo(r)) && tw(!1, t.selection, r))
    },
    rw = function (e, t) {
      var n = e.dom.createRng();
      n.setStart(t.container(), t.offset()), n.setEnd(t.container(), t.offset()), e.selection.setRng(n)
    },
    ow = function (e, t) {
      e ? t.setAttribute("data-mce-selected", "inline-boundary") : t.removeAttribute("data-mce-selected")
    },
    iw = function (t, e, n) {
      return LC(e, n).map(function (e) {
        return rw(t, e), n
      })
    },
    aw = function (e, t) {
      var n, r;
      e.selection.isCollapsed() && !0 !== e.composing && t.get() && (n = $s.fromRangeStart(e.selection.getRng()), $s.isTextPosition(n) && !1 === (wo(r = n) || xo(r)) && (rw(e, Mc(t.get(), n)), t.set(null)))
    },
    uw = function (e, t, n) {
      return !!_c(e) && (o = t, i = n, a = (r = e).getBody(), u = $s.fromRangeStart(r.selection.getRng()), s = N(Ib, r), ew(i, s, a, u).bind(function (e) {
        return iw(r, o, e)
      }).isSome());
      var r, o, i, a, u, s
    },
    sw = function (e, t, n) {
      return !!_c(t) && nw(e, t)
    },
    cw = function (d) {
      var m = Ou(null),
        p = N(Ib, d);
      return d.on("NodeChange", function (e) {
        var n, r, o, t, i, a, u, s, c, l, f;
        !_c(d) || wt.browser.isIE() && e.initial || (a = p, u = d.dom, s = e.parents, c = z(Gu(At.fromDom(u.getRoot()), '*[data-mce-selected="inline-boundary"]'), function (e) {
          return e.dom
        }), l = H(c, a), f = H(s, a), W(ee(l, f), N(ow, !1)), W(ee(f, l), N(ow, !0)), aw(d, m), n = p, r = d, o = m, t = e.parents, r.selection.isCollapsed() && (i = H(t, n), W(i, function (e) {
          var t = $s.fromRangeStart(r.selection.getRng());
          WC(n, r.getBody(), t).bind(function (e) {
            return iw(r, o, e)
          })
        })))
      }), m
    },
    lw = N(sw, !0),
    fw = N(sw, !1),
    dw = function (t, n) {
      return function (e) {
        return LC(n, e).exists(function (e) {
          return rw(t, e), !0
        })
      }
    },
    mw = function (r, o, i, a) {
      var u = r.getBody(),
        s = N(Ib, 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"), WC(s, u, $s.fromRangeStart(r.selection.getRng())).map(GC).map(dw(r, o))
      }), r.nodeChanged()
    },
    pw = function (n, r, i, o) {
      var e, t, a = (e = n.getBody(), t = o.container(), rl(t, e) || e),
        u = N(Ib, n),
        s = WC(u, a, o);
      return s.bind(function (e) {
        return i ? e.fold(E(U.some(GC(e))), U.none, E(U.some(YC(e))), U.none) : e.fold(U.none, E(U.some(YC(e))), U.none, E(U.some(GC(e))))
      }).map(dw(n, r)).getOrThunk(function () {
        var t = Bl(i, a, o),
          e = t.bind(function (e) {
            return WC(u, a, e)
          });
        return ds(s, e, function () {
          return Fb(u, a, o).exists(function (e) {
            return !!ds(Fl(o = e), Ul(o), function (e, t) {
              var n = Ub(!0, e),
                r = Ub(!1, t);
              return Il(o, n).forall(function (e) {
                return e.isEqual(r)
              })
            }).getOr(!0) && (Cg(n, i, At.fromDom(e)), !0);
            var o
          })
        }).orThunk(function () {
          return e.bind(function (e) {
            return t.map(function (e) {
              return i ? mw(n, r, o, e) : mw(n, r, e, o), !0
            })
          })
        }).getOr(!1)
      })
    },
    gw = function (e, t, n) {
      if (e.selection.isCollapsed() && _c(e)) {
        var r = $s.fromRangeStart(e.selection.getRng());
        return pw(e, t, n, r)
      }
      return !1
    },
    hw = function (e) {
      return 1 === Gt(e).length
    },
    vw = function (e, t, n, r) {
      var o, i, a, u, s, c = N(Nh, t),
        l = z(H(r, c), function (e) {
          return e.dom
        });
      0 === l.length ? Cg(t, e, n) : (i = n.dom, a = l, u = vh(!1), s = wh(a, u.dom), sn(At.fromDom(i), u), pn(At.fromDom(i)), o = $s(s, 0), t.selection.setRng(o.toRange()))
    },
    yw = function (r, o) {
      var t, e = At.fromDom(r.getBody()),
        n = At.fromDom(r.selection.getStart()),
        s = H((t = Dp(n, e), G(t, eo).fold(E(t), function (e) {
          return t.slice(0, e)
        })), hw);
      return re(s).exists(function (e) {
        var t, i, a, u, n = $s.fromRangeStart(r.selection.getRng());
        return i = o, a = n, u = e.dom, !(!ds(Fl(u), Ul(u), function (e, t) {
          var n = Ub(!0, e),
            r = Ub(!1, t),
            o = Ub(!1, a);
          return i ? Il(u, o).exists(function (e) {
            return e.isEqual(r) && a.isEqual(n)
          }) : Ml(u, o).exists(function (e) {
            return e.isEqual(n) && a.isEqual(r)
          })
        }).getOr(!0) || jl((t = e).dom) && gh(t.dom)) && (vw(o, r, e, s), !0)
      })
    },
    bw = function (e, t) {
      return !!e.selection.isCollapsed() && yw(e, t)
    },
    Cw = function (e, t, n) {
      return e._selectionOverrides.hideFakeCaret(), Cg(e, t, At.fromDom(n)), !0
    },
    ww = function (e, t) {
      return e.selection.isCollapsed() ? (i = e, u = (a = t) ? Cp : wp, s = a ? Vs.Forwards : Vs.Backwards, c = dl(s, i.getBody(), i.selection.getRng()), u(c) ? Cw(i, a, c.getNode(!a)) : U.from(Ub(a, c)).filter(function (e) {
        return u(e) && gl(c, e)
      }).exists(function (e) {
        return Cw(i, a, e.getNode(!a))
      })) : (r = t, o = (n = e).selection.getNode(), !!$n(o) && Cw(n, r, o));
      var n, r, o, i, a, u, s, c
    },
    xw = function (e) {
      var t = parseInt(e, 10);
      return isNaN(t) ? 0 : t
    },
    Sw = function (e, t) {
      return (e || "table" === Lt(t) ? "margin" : "padding") + ("rtl" === er(t, "direction") ? "-right" : "-left")
    },
    Nw = function (e) {
      var r, t = kw(e);
      return !e.mode.isReadOnly() && (1 < t.length || (r = e, Q(t, function (e) {
        var t = Sw(Sc(r), e),
          n = nr(e, t).map(xw).getOr(0);
        return "false" !== r.dom.getContentEditable(e.dom) && 0 < n
      })))
    },
    Ew = function (e) {
      return oo(e) || io(e)
    },
    kw = function (e) {
      return H(z(e.selection.getSelectedBlocks(), At.fromDom), function (e) {
        return !Ew(e) && !$t(e).map(Ew).getOr(!1) && Ar(e, function (e) {
          return Hn(e.dom) || Vn(e.dom)
        }).exists(function (e) {
          return Hn(e.dom)
        })
      })
    },
    _w = function (e, c) {
      var l = e.dom,
        t = e.selection,
        n = e.formatter,
        r = e.getParam("indentation", "40px", "string"),
        f = /[a-z%]+$/i.exec(r)[0],
        d = parseInt(r, 10),
        m = Sc(e),
        o = vc(e);
      e.queryCommandState("InsertUnorderedList") || e.queryCommandState("InsertOrderedList") || "" !== o || l.getParent(t.getNode(), l.isBlock) || n.apply("div"), W(kw(e), function (e) {
        var t, n, r, o, i, a, u, s;
        t = l, n = c, r = m, o = d, i = f, a = e.dom, s = Sw(r, At.fromDom(a)), "outdent" === n ? (u = Math.max(0, xw(a.style[s]) - o), t.setStyle(a, s, u ? u + i : "")) : (u = xw(a.style[s]) + o + i, t.setStyle(a, s, u))
      })
    },
    Aw = function (e, t) {
      if (e.selection.isCollapsed() && Nw(e)) {
        var n = e.dom,
          r = e.selection.getRng(),
          o = $s.fromRangeStart(r),
          i = n.getParent(r.startContainer, n.isBlock);
        if (null !== i && Ip(At.fromDom(i), o)) return _w(e, "outdent"), !0
      }
      return !1
    },
    Rw = function (e, t) {
      e.getDoc().execCommand(t, !1, null)
    },
    Tw = function (n, r) {
      n.addCommand("delete", function () {
        var e, t;
        t = r, Aw(e = n) || NC(e, !1) || gC(e, !1) || gw(e, t, !1) || tC(e, !1) || Kg(e) || EC(e, !1) || ww(e, !1) || iC(e) || bw(e, !1) || (Rw(e, "Delete"), Vb(e))
      }), n.addCommand("forwardDelete", function () {
        var e, t;
        t = r, NC(e = n, !0) || gC(e, !0) || gw(e, t, !0) || tC(e, !0) || Kg(e) || EC(e, !0) || ww(e, !0) || iC(e) || bw(e, !0) || Rw(e, "ForwardDelete")
      })
    },
    Dw = function (e) {
      return e.touches === undefined || 1 !== e.touches.length ? U.none() : U.some(e.touches[0])
    },
    Ow = function (a) {
      var u = Ou(U.none()),
        s = Ou(!1),
        r = ju(function (e) {
          a.fire("longpress", ke(ke({}, e), {
            type: "longpress"
          })), s.set(!0)
        }, 400);
      a.on("touchstart", function (n) {
        Dw(n).each(function (e) {
          r.cancel();
          var t = {
            x: e.clientX,
            y: e.clientY,
            target: n.target
          };
          r.throttle(n), s.set(!1), u.set(U.some(t))
        })
      }, !0), a.on("touchmove", function (e) {
        r.cancel(), Dw(e).each(function (i) {
          u.get().each(function (e) {
            var t, n, r, o;
            t = i, n = e, r = Math.abs(t.clientX - n.x), o = Math.abs(t.clientY - n.y), (5 < r || 5 < o) && (u.set(U.none()), s.set(!1), a.fire("longpresscancel"))
          })
        })
      }, !0), a.on("touchend touchcancel", function (t) {
        r.cancel(), "touchcancel" !== t.type && u.get().filter(function (e) {
          return e.target.isEqualNode(t.target)
        }).each(function () {
          s.get() ? t.preventDefault() : a.fire("tap", ke(ke({}, t), {
            type: "tap"
          }))
        })
      }, !0)
    },
    Bw = function (e, t) {
      return e.hasOwnProperty(t.nodeName)
    },
    Pw = function (e) {
      var t, n, r, o = e.dom,
        i = e.selection,
        a = e.schema,
        u = a.getBlockElements(),
        s = i.getStart(),
        c = e.getBody(),
        l = vc(e);
      if (s && An(s) && l) {
        var f = c.nodeName.toLowerCase();
        if (a.isValidChild(f, l.toLowerCase()) && (d = u, m = c, p = s, !F(Tp(At.fromDom(p), At.fromDom(m)), function (e) {
            return Bw(d, e.dom)
          }))) {
          for (var d, m, p, g, h, v = i.getRng(), y = v.startContainer, b = v.startOffset, C = v.endContainer, w = v.endOffset, x = Em(e), s = c.firstChild; s;)
            if (g = u, In(h = s) || An(h) && !Bw(g, h) && !Jl(h)) {
              if (function (e, t) {
                  if (In(t)) {
                    if (0 === t.nodeValue.length) return !0;
                    if (/^\s+$/.test(t.nodeValue) && (!t.nextSibling || Bw(e, t.nextSibling))) return !0
                  }
                  return !1
                }(u, s)) {
                s = (n = s).nextSibling, o.remove(n);
                continue
              }
              t || (t = o.create(l, yc(e)), s.parentNode.insertBefore(t, s), r = !0), s = (n = s).nextSibling, t.appendChild(n)
            } else t = null, s = s.nextSibling;
          r && x && (v.setStart(y, b), v.setEnd(C, w), i.setRng(v), e.nodeChanged())
        }
      }
    },
    Lw = function (e, t) {
      var n;
      t.hasAttribute("data-mce-caret") && (ko(t), (n = e).selection.setRng(n.selection.getRng()), e.selection.scrollIntoView(t))
    },
    Iw = function (e, t) {
      var n, r = (n = e, Dr(At.fromDom(n.getBody()), "*[data-mce-caret]").fold(E(null), function (e) {
        return e.dom
      }));
      if (r) return "compositionstart" === t.type ? (t.preventDefault(), t.stopPropagation(), void Lw(e, r)) : void(Co(r) && (Lw(e, r), e.undoManager.add()))
    };
  (wb = Cb = Cb || {})[wb.Br = 0] = "Br", wb[wb.Block = 1] = "Block", wb[wb.Wrap = 2] = "Wrap", wb[wb.Eol = 3] = "Eol";
  var Mw, Fw, Uw = function (e, t) {
      return e === Vs.Backwards ? Z(t) : t
    },
    zw = function (e, t, n, r) {
      for (var o, i, a, u, s, c, l = _l(n), f = r, d = []; f && (s = l, c = f, o = t === Vs.Forwards ? s.next(c) : s.prev(c));) {
        if (zn(o.getNode(!1))) return t === Vs.Forwards ? {
          positions: Uw(t, d).concat([o]),
          breakType: Cb.Br,
          breakAt: U.some(o)
        } : {
          positions: Uw(t, d),
          breakType: Cb.Br,
          breakAt: U.some(o)
        };
        if (o.isVisible()) {
          if (e(f, o)) {
            var m = (i = t, a = f, zn((u = o).getNode(i === Vs.Forwards)) ? Cb.Br : !1 === ol(a, u) ? Cb.Block : Cb.Wrap);
            return {
              positions: Uw(t, d),
              breakType: m,
              breakAt: U.some(o)
            }
          }
          d.push(o), f = o
        } else f = o
      }
      return {
        positions: Uw(t, d),
        breakType: Cb.Eol,
        breakAt: U.none()
      }
    },
    jw = function (n, r, o, e) {
      return r(o, e).breakAt.map(function (e) {
        var t = r(o, e).positions;
        return n === Vs.Backwards ? t.concat(e) : [e].concat(t)
      }).getOr([])
    },
    Hw = function (e, i) {
      return X(e, function (e, o) {
        return e.fold(function () {
          return U.some(o)
        }, function (r) {
          return ds(ne(r.getClientRects()), ne(o.getClientRects()), function (e, t) {
            var n = Math.abs(i - e.left);
            return Math.abs(i - t.left) <= n ? o : r
          }).or(e)
        })
      }, U.none())
    },
    Vw = function (t, e) {
      return ne(e.getClientRects()).bind(function (e) {
        return Hw(t, e.left)
      })
    },
    qw = N(zw, Hs.isAbove, -1),
    $w = N(zw, Hs.isBelow, 1),
    Ww = N(jw, -1, qw),
    Kw = N(jw, 1, $w),
    Xw = function (t) {
      var e = function (e) {
        return z(e, function (e) {
          return (e = ps(e)).node = t, e
        })
      };
      if (An(t)) return e(t.getClientRects());
      if (In(t)) {
        var n = t.ownerDocument.createRange();
        return n.setStart(t, 0), n.setEnd(t, t.data.length), e(n.getClientRects())
      }
    },
    Yw = function (e) {
      return J(e, Xw)
    };
  (Fw = Mw = Mw || {})[Fw.Up = -1] = "Up", Fw[Fw.Down = 1] = "Down";
  var Gw = function (o, i, a, e, u, t) {
      var s = 0,
        c = [],
        n = function (e) {
          var t, n, r = Yw([e]);
          for (-1 === o && (r = r.reverse()), t = 0; t < r.length; t++)
            if (n = r[t], !a(n, l)) {
              if (0 < c.length && i(n, Ee(c)) && s++, n.line = s, u(n)) return !0;
              c.push(n)
            }
        },
        l = Ee(t.getClientRects());
      if (!l) return c;
      var r = t.getNode();
      return n(r),
        function (e, t, n, r) {
          for (; r = nl(r, e, Mo, t);)
            if (n(r)) return
        }(o, e, n, r), c
    },
    Jw = N(Gw, Mw.Up, vs, ys),
    Qw = N(Gw, Mw.Down, ys, vs),
    Zw = function (n) {
      return function (e) {
        return t = n, e.line > t;
        var t
      }
    },
    ex = function (n) {
      return function (e) {
        return t = n, e.line === t;
        var t
      }
    },
    tx = Vn,
    nx = nl,
    rx = function (e, t) {
      return Math.abs(e.left - t)
    },
    ox = function (e, t) {
      return Math.abs(e.right - t)
    },
    ix = function (e, t) {
      return e >= t.left && e <= t.right
    },
    ax = function (e, t) {
      return e >= t.top && e <= t.bottom
    },
    ux = function (e, o) {
      return Se(e, function (e, t) {
        var n = Math.min(rx(e, o), ox(e, o)),
          r = Math.min(rx(t, o), ox(t, o));
        return ix(o, t) || !ix(o, e) && (r === n && tx(t.node) || r < n) ? t : e
      })
    },
    sx = function (e, t, n, r, o) {
      var i = nx(r, e, Mo, t, !o);
      do {
        if (!i || n(i)) return
      } while (i = nx(i, e, Mo, t))
    },
    cx = function (e, t, n) {
      var r, o, i = Yw(H(oe(e.getElementsByTagName("*")), Kc)),
        a = H(i, N(ax, n));
      if (u = ux(a, t)) {
        var u, s = !Bn(u.node) && !$n(u.node);
        if ((u = ux(function (e, r, t) {
            void 0 === t && (t = !0);
            var o = [],
              n = function (t, e) {
                var n = H(Yw([e]), function (e) {
                  return !t(e, r)
                });
                return o = o.concat(n), 0 === n.length
              };
            return o.push(r), sx(Mw.Up, e, N(n, vs), r.node, t), sx(Mw.Down, e, N(n, ys), r.node, t), o
          }(e, u, s), t)) && Kc(u.node)) return o = t, {
          node: (r = u).node,
          before: rx(r, o) < ox(r, o)
        }
      }
      return null
    },
    lx = function (e, t) {
      e.selection.setRng(t), Xd(e, e.selection.getRng())
    },
    fx = function (e, t, n) {
      return U.some(fC(e, t, n))
    },
    dx = function (e, t, n, r, o, i) {
      var a = t === Vs.Forwards,
        u = _l(e.getBody()),
        s = N(pl, a ? u.next : u.prev),
        c = a ? r : o;
      if (!n.collapsed) {
        var l = Cs(n);
        if (i(l)) return sC(t, e, l, t === Vs.Backwards, !1)
      }
      var f = dl(t, e.getBody(), n);
      if (c(f)) return cC(e, f.getNode(!a));
      var d = Ub(a, s(f)),
        m = vo(n.startContainer);
      if (!d) return m ? U.some(n) : U.none();
      if (c(d)) return sC(t, e, d.getNode(!a), a, !1);
      var p = s(d);
      return p && c(p) && gl(d, p) ? sC(t, e, p.getNode(!a), a, !1) : m ? fx(e, d.toRange(), !1) : U.none()
    },
    mx = function (t, e, n, r, o, i) {
      var a = dl(e, t.getBody(), n),
        u = Ee(a.getClientRects()),
        s = e === Mw.Down;
      if (!u) return U.none();
      var c, l = (s ? Qw : Jw)(t.getBody(), Zw(1), a),
        f = H(l, ex(1)),
        d = u.left,
        m = ux(f, d);
      if (m && i(m.node)) {
        var p = Math.abs(d - m.left),
          g = Math.abs(d - m.right);
        return sC(e, t, m.node, p < g, !1)
      }
      if (c = r(a) ? a.getNode() : o(a) ? a.getNode(!0) : Cs(n)) {
        var h = function (e, t, n, r) {
            var o, i, a, u, s = _l(t),
              c = [],
              l = 0,
              f = function (e) {
                return Ee(e.getClientRects())
              },
              d = 1 === e ? (o = s.next, i = ys, a = vs, $s.after(r)) : (o = s.prev, i = vs, a = ys, $s.before(r)),
              m = f(d);
            do {
              if (d.isVisible() && !a(u = f(d), m)) {
                if (0 < c.length && i(u, Ee(c)) && l++, (u = ps(u)).position = d, u.line = l, n(u)) return c;
                c.push(u)
              }
            } while (d = o(d));
            return c
          }(e, t.getBody(), Zw(1), c),
          v = ux(H(h, ex(1)), d);
        if (v) return fx(t, v.position.toRange(), !1);
        if (v = Ee(H(h, ex(0)))) return fx(t, v.position.toRange(), !1)
      }
      return 0 === f.length ? px(t, s).filter(s ? o : r).map(function (e) {
        return fC(t, e.toRange(), !1)
      }) : U.none()
    },
    px = function (e, t) {
      var n = e.selection.getRng(),
        r = e.getBody();
      if (t) {
        var o = $s.fromRangeEnd(n),
          i = $w(r, o);
        return re(i.positions)
      }
      o = $s.fromRangeStart(n), i = qw(r, o);
      return ne(i.positions)
    },
    gx = function (t, e, n) {
      return px(t, e).filter(n).exists(function (e) {
        return t.selection.setRng(e.toRange()), !0
      })
    },
    hx = Vn,
    vx = function (e, t, n) {
      var r, o, i = _l(e.getBody()),
        a = N(pl, 1 === t ? i.next : i.prev);
      if (n.collapsed && "" !== vc(e)) {
        var u, s = e.dom.getParent(n.startContainer, "PRE");
        if (!s) return;
        a($s.fromRangeStart(n)) || (o = (r = e).dom.create(vc(r)), (!wt.ie || 11 <= wt.ie) && (o.innerHTML = '<br data-mce-bogus="1">'), u = o, 1 === t ? e.$(s).after(u) : e.$(s).before(u), e.selection.select(u, !0), e.selection.collapse())
      }
    },
    yx = function (e, t) {
      var n = t ? Vs.Forwards : Vs.Backwards,
        r = e.selection.getRng();
      return dx(e, n, r, Np, Ep, hx).orThunk(function () {
        return vx(e, n, r), U.none()
      })
    },
    bx = function (e, t) {
      var n = t ? 1 : -1,
        r = e.selection.getRng();
      return mx(e, n, r, function (e) {
        return Np(e) || xp(e)
      }, function (e) {
        return Ep(e) || Sp(e)
      }, hx).orThunk(function () {
        return vx(e, n, r), U.none()
      })
    },
    Cx = function (t, e) {
      return yx(t, e).exists(function (e) {
        return lx(t, e), !0
      })
    },
    wx = function (t, e) {
      return bx(t, e).exists(function (e) {
        return lx(t, e), !0
      })
    },
    xx = function (e, t) {
      return gx(e, t, t ? Ep : Np)
    },
    Sx = function (e) {
      return M(["figcaption"], Lt(e))
    },
    Nx = function (e) {
      var t = document.createRange();
      return t.setStartBefore(e.dom), t.setEndBefore(e.dom), t
    },
    Ex = function (e, t, n) {
      (n ? fn : ln)(e, t)
    },
    kx = function (e, t, n, r) {
      return "" === t ? (l = e, f = r, d = At.fromTag("br"), Ex(l, d, f), Nx(d)) : (o = e, i = r, a = t, u = n, s = At.fromTag(a), c = At.fromTag("br"), Yn(s, u), fn(s, c), Ex(o, s, i), Nx(c));
      var o, i, a, u, s, c, l, f, d
    },
    _x = function (e, t, n) {
      return t ? (o = e.dom, $w(o, n).breakAt.isNone()) : (r = e.dom, qw(r, n).breakAt.isNone());
      var r, o
    },
    Ax = function (t, n) {
      var e, r, o = At.fromDom(t.getBody()),
        i = $s.fromRangeStart(t.selection.getRng()),
        a = vc(t),
        u = yc(t);
      return e = i, r = N(Ot, o), Ar(At.fromDom(e.container()), eo, r).filter(Sx).exists(function () {
        if (_x(o, n, i)) {
          var e = kx(o, a, u, n);
          return t.selection.setRng(e), !0
        }
        return !1
      })
    },
    Rx = function (e, t) {
      return !!e.selection.isCollapsed() && Ax(e, t)
    },
    Tx = function (e, r) {
      return J(z(e, function (e) {
        return ke({
          shiftKey: !1,
          altKey: !1,
          ctrlKey: !1,
          metaKey: !1,
          keyCode: 0,
          action: V
        }, e)
      }), function (e) {
        return t = e, (n = r).keyCode === t.keyCode && n.shiftKey === t.shiftKey && n.altKey === t.altKey && n.ctrlKey === t.ctrlKey && n.metaKey === t.metaKey ? [e] : [];
        var t, n
      })
    },
    Dx = function (e) {
      for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
      return function () {
        return e.apply(null, t)
      }
    },
    Ox = function (e, t) {
      return Y(Tx(e, t), function (e) {
        return e.action()
      })
    },
    Bx = function (t, e) {
      var n = e ? Vs.Forwards : Vs.Backwards,
        r = t.selection.getRng();
      return dx(t, n, r, Cp, wp, $n).exists(function (e) {
        return lx(t, e), !0
      })
    },
    Px = function (t, e) {
      var n = e ? 1 : -1,
        r = t.selection.getRng();
      return mx(t, n, r, Cp, wp, $n).exists(function (e) {
        return lx(t, e), !0
      })
    },
    Lx = function (e, t) {
      return gx(e, t, t ? wp : Cp)
    },
    Ix = function (o, e) {
      return J(e, function (e) {
        var t, n, r = (t = ps(e.getBoundingClientRect()), n = -1, {
          left: t.left - n,
          top: t.top - n,
          right: t.right + 2 * n,
          bottom: t.bottom + 2 * n,
          width: t.width + n,
          height: t.height + n
        });
        return [{
          x: r.left,
          y: o(r),
          cell: e
        }, {
          x: r.right,
          y: o(r),
          cell: e
        }]
      })
    },
    Mx = function (e, t, n, r, o) {
      var i, a, u = Gu(At.fromDom(n), "td,th,caption").map(function (e) {
          return e.dom
        }),
        s = H(Ix(e, u), function (e) {
          return t(e, o)
        });
      return i = r, a = o, X(s, function (e, r) {
        return e.fold(function () {
          return U.some(r)
        }, function (e) {
          var t = Math.sqrt(Math.abs(e.x - i) + Math.abs(e.y - a)),
            n = Math.sqrt(Math.abs(r.x - i) + Math.abs(r.y - a));
          return U.some(n < t ? r : e)
        })
      }, U.none()).map(function (e) {
        return e.cell
      })
    },
    Fx = N(Mx, function (e) {
      return e.bottom
    }, function (e, t) {
      return e.y < t
    }),
    Ux = N(Mx, function (e) {
      return e.top
    }, function (e, t) {
      return e.y > t
    }),
    zx = function (t, n) {
      return ne(n.getClientRects()).bind(function (e) {
        return Fx(t, e.left, e.top)
      }).bind(function (e) {
        return Vw(Ul(t = e).map(function (e) {
          return qw(t, e).positions.concat(e)
        }).getOr([]), n);
        var t
      })
    },
    jx = function (t, n) {
      return re(n.getClientRects()).bind(function (e) {
        return Ux(t, e.left, e.top)
      }).bind(function (e) {
        return Vw(Fl(t = e).map(function (e) {
          return [e].concat($w(t, e).positions)
        }).getOr([]), n);
        var t
      })
    },
    Hx = function (e, t, n) {
      var r, o, i, a, u = e(t, n);
      return (a = u).breakType === Cb.Wrap && 0 === a.positions.length || !zn(n.getNode()) && ((i = u).breakType === Cb.Br && 1 === i.positions.length) ? (r = e, o = t, !u.breakAt.exists(function (e) {
        return r(o, e).breakAt.isSome()
      })) : u.breakAt.isNone()
    },
    Vx = N(Hx, qw),
    qx = N(Hx, $w),
    $x = function (t, e, n, r) {
      var o, i, a, u, s = t.selection.getRng(),
        c = e ? 1 : -1;
      return !(!$c() || (o = e, i = s, a = n, u = $s.fromRangeStart(i), !Ll(!o, a).exists(function (e) {
        return e.isEqual(u)
      }))) && (sC(c, t, n, !e, !1).each(function (e) {
        lx(t, e)
      }), !0)
    },
    Wx = function (e, t) {
      var n = t.getNode(e);
      return An(n) && "TABLE" === n.nodeName ? U.some(n) : U.none()
    },
    Kx = function (u, s, c) {
      var e = Wx(!!s, c),
        t = !1 === s;
      e.fold(function () {
        return lx(u, c.toRange())
      }, function (a) {
        return Ll(t, u.getBody()).filter(function (e) {
          return e.isEqual(c)
        }).fold(function () {
          return lx(u, c.toRange())
        }, function (e) {
          return n = s, o = a, t = c, void((i = vc(r = u)) ? r.undoManager.transact(function () {
            var e = At.fromTag(i);
            Yn(e, yc(r)), fn(e, At.fromTag("br")), (n ? cn : sn)(At.fromDom(o), e);
            var t = r.dom.createRng();
            t.setStart(e.dom, 0), t.setEnd(e.dom, 0), lx(r, t)
          }) : lx(r, t.toRange()));
          var n, r, o, t, i
        })
      })
    },
    Xx = function (e, t, n, r) {
      var o, i, a, u, s, c, l = e.selection.getRng(),
        f = $s.fromRangeStart(l),
        d = e.getBody();
      if (!t && Vx(r, f)) {
        var m = (u = d, zx(s = n, c = f).orThunk(function () {
          return ne(c.getClientRects()).bind(function (e) {
            return Hw(Ww(u, $s.before(s)), e.left)
          })
        }).getOr($s.before(s)));
        return Kx(e, t, m), !0
      }
      if (t && qx(r, f)) {
        m = (o = d, jx(i = n, a = f).orThunk(function () {
          return ne(a.getClientRects()).bind(function (e) {
            return Hw(Kw(o, $s.after(i)), e.left)
          })
        }).getOr($s.after(i)));
        return Kx(e, t, m), !0
      }
      return !1
    },
    Yx = function (n, r, o) {
      return U.from(n.dom.getParent(n.selection.getNode(), "td,th")).bind(function (t) {
        return U.from(n.dom.getParent(t, "table")).map(function (e) {
          return o(n, r, e, t)
        })
      }).getOr(!1)
    },
    Gx = function (e, t) {
      return Yx(e, t, $x)
    },
    Jx = function (e, t) {
      return Yx(e, t, Xx)
    },
    Qx = function (i, a) {
      i.on("keydown", function (e) {
        var t, n, r, o;
        !1 === e.isDefaultPrevented() && (t = i, n = a, r = e, o = dt().os, Ox([{
          keyCode: ud.RIGHT,
          action: Dx(Cx, t, !0)
        }, {
          keyCode: ud.LEFT,
          action: Dx(Cx, t, !1)
        }, {
          keyCode: ud.UP,
          action: Dx(wx, t, !1)
        }, {
          keyCode: ud.DOWN,
          action: Dx(wx, t, !0)
        }, {
          keyCode: ud.RIGHT,
          action: Dx(Gx, t, !0)
        }, {
          keyCode: ud.LEFT,
          action: Dx(Gx, t, !1)
        }, {
          keyCode: ud.UP,
          action: Dx(Jx, t, !1)
        }, {
          keyCode: ud.DOWN,
          action: Dx(Jx, t, !0)
        }, {
          keyCode: ud.RIGHT,
          action: Dx(Bx, t, !0)
        }, {
          keyCode: ud.LEFT,
          action: Dx(Bx, t, !1)
        }, {
          keyCode: ud.UP,
          action: Dx(Px, t, !1)
        }, {
          keyCode: ud.DOWN,
          action: Dx(Px, t, !0)
        }, {
          keyCode: ud.RIGHT,
          action: Dx(uw, t, n, !0)
        }, {
          keyCode: ud.LEFT,
          action: Dx(uw, t, n, !1)
        }, {
          keyCode: ud.RIGHT,
          ctrlKey: !o.isOSX(),
          altKey: o.isOSX(),
          action: Dx(lw, t, n)
        }, {
          keyCode: ud.LEFT,
          ctrlKey: !o.isOSX(),
          altKey: o.isOSX(),
          action: Dx(fw, t, n)
        }, {
          keyCode: ud.UP,
          action: Dx(Rx, t, !1)
        }, {
          keyCode: ud.DOWN,
          action: Dx(Rx, t, !0)
        }], r).each(function (e) {
          r.preventDefault()
        }))
      })
    },
    Zx = function (o, i) {
      o.on("keydown", function (e) {
        var t, n, r;
        !1 === e.isDefaultPrevented() && (t = o, n = i, r = e, Ox([{
          keyCode: ud.BACKSPACE,
          action: Dx(Aw, t, !1)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(NC, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(NC, t, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(gC, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(gC, t, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(gw, t, n, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(gw, t, n, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(Kg, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(Kg, t, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(EC, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(EC, t, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(ww, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(ww, t, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(iC, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(iC, t, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(tC, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(tC, t, !0)
        }, {
          keyCode: ud.BACKSPACE,
          action: Dx(bw, t, !1)
        }, {
          keyCode: ud.DELETE,
          action: Dx(bw, t, !0)
        }], r).each(function (e) {
          r.preventDefault()
        }))
      }), o.on("keyup", function (e) {
        var t, n;
        !1 === e.isDefaultPrevented() && (t = o, n = e, Ox([{
          keyCode: ud.BACKSPACE,
          action: Dx(SC, t)
        }, {
          keyCode: ud.DELETE,
          action: Dx(SC, t)
        }], n))
      })
    },
    eS = function (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(lo), t.firstChild);
        var u = i.createRng();
        if (t.normalize(), t.hasChildNodes()) {
          for (var s = new Xr(t, t); n = s.current();) {
            if (In(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 zn(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), Xd(e, u)
      }
    },
    tS = function (e) {
      return U.from(e.dom.getParent(e.selection.getStart(!0), e.dom.isBlock))
    },
    nS = function (e, t) {
      return e && e.parentNode && e.parentNode.nodeName === t
    },
    rS = function (e) {
      return e && /^(OL|UL|LI)$/.test(e.nodeName)
    },
    oS = function (e) {
      var t = e.parentNode;
      return /^(LI|DT|DD)$/.test(t.nodeName) ? t : e
    },
    iS = function (e, t, n) {
      for (var r = e[n ? "firstChild" : "lastChild"]; r && !An(r);) r = r[n ? "nextSibling" : "previousSibling"];
      return r === t
    },
    aS = function (e, t, n, r, o) {
      var i, a, u, s, c, l, f = e.dom,
        d = e.selection.getRng();
      n !== e.getBody() && (rS(i = n) && rS(i.parentNode) && (o = "LI"), a = o ? t(o) : f.create("BR"), iS(n, r, !0) && iS(n, r, !1) ? nS(n, "LI") ? f.insertAfter(a, oS(n)) : f.replace(a, n) : iS(n, r, !0) ? nS(n, "LI") ? (f.insertAfter(a, oS(n)), a.appendChild(f.doc.createTextNode(" ")), a.appendChild(n)) : n.parentNode.insertBefore(a, n) : iS(n, r, !1) ? f.insertAfter(a, oS(n)) : (n = oS(n), (u = d.cloneRange()).setStartAfter(r), u.setEndAfter(n), s = u.extractContents(), "LI" === o && (l = "LI", (c = s).firstChild && c.firstChild.nodeName === l) ? (a = s.firstChild, f.insertAfter(s, n)) : (f.insertAfter(s, n), f.insertAfter(a, n))), f.remove(r), eS(e, a))
    },
    uS = function (e) {
      e.innerHTML = '<br data-mce-bogus="1">'
    },
    sS = function (e, t) {
      return e.nodeName === t || e.previousSibling && e.previousSibling.nodeName === t
    },
    cS = function (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)
    },
    lS = function (e, t, n) {
      return !1 === In(t) ? n : e ? 1 === n && t.data.charAt(n - 1) === fo ? 0 : n : n === t.data.length - 1 && t.data.charAt(n) === fo ? t.data.length : n
    },
    fS = 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
    },
    dS = function (e, t) {
      var n = vc(e);
      n && n.toLowerCase() === t.tagName.toLowerCase() && function (e, o, t) {
        var i = e.dom;
        U.from(t.style).map(i.parseStyle).each(function (e) {
          var t = rr(At.fromDom(o)),
            n = ke(ke({}, t), e);
          i.setStyles(o, n)
        });
        var n = U.from(t["class"]).map(function (e) {
            return e.split(/\s+/)
          }),
          r = U.from(o.className).map(function (e) {
            return H(e.split(/\s+/), function (e) {
              return "" !== e
            })
          });
        ds(n, r, function (t, e) {
          var n = H(e, function (e) {
              return !M(t, e)
            }),
            r = _e(t, n);
          i.setAttrib(o, "class", r.join(" "))
        });
        var a = ["style", "class"],
          u = me(t, function (e, t) {
            return !M(a, t)
          });
        i.setAttribs(o, u)
      }(e, t, yc(e))
    },
    mS = function (a, e) {
      var t, u, i, s, n, r, o, c, l, f = a.dom,
        d = a.schema,
        m = d.getNonEmptyElements(),
        p = a.selection.getRng(),
        g = function (e) {
          var t, n = u,
            r = d.getTextInlineElements(),
            o = e || "TABLE" === c || "HR" === c ? f.create(e || N) : s.cloneNode(!1),
            i = o;
          if (!1 === a.getParam("keep_styles", !0)) f.setAttrib(o, "style", null), f.setAttrib(o, "class", null);
          else
            do {
              if (r[n.nodeName]) {
                if (jl(n) || Jl(n)) continue;
                t = n.cloneNode(!1), f.setAttrib(t, "id", ""), o.hasChildNodes() ? t.appendChild(o.firstChild) : i = t, o.appendChild(t)
              }
            } while ((n = n.parentNode) && n !== E);
          return dS(a, o), uS(i), o
        },
        h = function (e) {
          var t, n, r = lS(e, u, i);
          if (In(u) && (e ? 0 < r : r < u.nodeValue.length)) return !1;
          if (u.parentNode === s && l && !e) return !0;
          if (e && An(u) && u === s.firstChild) return !0;
          if (sS(u, "TABLE") || sS(u, "HR")) return l && !e || !l && e;
          var o = new Xr(u, s);
          for (In(u) && (e && 0 === r ? o.prev() : e || r !== u.nodeValue.length || o.next()); t = o.current();) {
            if (An(t)) {
              if (!t.getAttribute("data-mce-bogus") && (n = t.nodeName.toLowerCase(), m[n] && "br" !== n)) return !1
            } else if (In(t) && !Uo(t.nodeValue)) return !1;
            e ? o.prev() : o.next()
          }
          return !0
        },
        v = function () {
          n = /^(H[1-6]|PRE|FIGURE)$/.test(c) && "HGROUP" !== C ? g(N) : g(), a.getParam("end_container_on_empty_block", !1) && cS(f, o) && f.isEmpty(s) ? n = f.split(o, s) : f.insertAfter(n, s), eS(a, n)
        };
      yd(f, p).each(function (e) {
        p.setStart(e.startContainer, e.startOffset), p.setEnd(e.endContainer, e.endOffset)
      }), u = p.startContainer, i = p.startOffset, N = vc(a);
      var y = !(!e || !e.shiftKey),
        b = !(!e || !e.ctrlKey);
      An(u) && u.hasChildNodes() && (l = i > u.childNodes.length - 1, u = u.childNodes[Math.min(i, u.childNodes.length - 1)] || u, i = l && In(u) ? u.nodeValue.length : 0);
      var C, w, x, S, N, E = fS(f, u);
      E && ((N && !y || !N && y) && (u = function (e, t, n, r, o) {
        var i, a, u, s, c, l, f = t || "P",
          d = e.dom,
          m = fS(d, r),
          p = d.getParent(r, d.isBlock);
        if (!p || !cS(d, p)) {
          if (c = (p = p || m) === e.getBody() || (l = p) && /^(TD|TH|CAPTION)$/.test(l.nodeName) ? p.nodeName.toLowerCase() : p.parentNode.nodeName.toLowerCase(), !p.hasChildNodes()) return i = d.create(f), dS(e, i), p.appendChild(i), n.setStart(i, 0), n.setEnd(i, 0), i;
          for (u = r; u.parentNode !== p;) u = u.parentNode;
          for (; u && !d.isBlock(u);) u = (a = u).previousSibling;
          if (a && e.schema.isValidChild(c, f.toLowerCase())) {
            for (i = d.create(f), dS(e, i), a.parentNode.insertBefore(i, a), u = a; u && !d.isBlock(u);) s = u.nextSibling, i.appendChild(u), u = s;
            n.setStart(r, o), n.setEnd(r, o)
          }
        }
        return r
      }(a, N, p, u, i)), s = f.getParent(u, f.isBlock), o = s ? f.getParent(s.parentNode, f.isBlock) : null, c = s ? s.nodeName.toUpperCase() : "", "LI" !== (C = o ? o.nodeName.toUpperCase() : "") || b || (o = (s = o).parentNode, c = C), /^(LI|DT|DD)$/.test(c) && f.isEmpty(s) ? aS(a, g, o, s, N) : N && s === a.getBody() || (N = N || "P", vo(s) ? (n = ko(s), f.isEmpty(s) && uS(s), dS(a, n), eS(a, n)) : h() ? v() : h(!0) ? (n = s.parentNode.insertBefore(g(), s), eS(a, sS(s, "HR") ? n : s)) : ((S = (x = p).cloneRange()).setStart(x.startContainer, lS(!0, x.startContainer, x.startOffset)), S.setEnd(x.endContainer, lS(!1, x.endContainer, x.endOffset)), (t = S.cloneRange()).setEndAfter(s), r = t.extractContents(), w = r, W(Yu(At.fromDom(w), Ut), function (e) {
        var t = e.dom;
        t.nodeValue = po(t.nodeValue)
      }), function (e) {
        for (; In(e) && (e.nodeValue = e.nodeValue.replace(/^[\r\n]+/, "")), e = e.firstChild;);
      }(r), n = r.firstChild, f.insertAfter(r, s), function (e, t, n) {
        var r, o, i, a = n,
          u = [];
        if (a) {
          for (; a = a.firstChild;) {
            if (e.isBlock(a)) return;
            An(a) && !t[a.nodeName.toLowerCase()] && u.push(a)
          }
          for (r = u.length; r--;) !(a = u[r]).hasChildNodes() || a.firstChild === a.lastChild && "" === a.firstChild.nodeValue ? e.remove(a) : (o = e, (i = a) && "A" === i.nodeName && o.isEmpty(i) && e.remove(a))
        }
      }(f, m, n), function (e, t) {
        t.normalize();
        var n = t.lastChild;
        n && !/^(left|right)$/gi.test(e.getStyle(n, "float", !0)) || e.add(t, "br")
      }(f, s), f.isEmpty(s) && uS(s), n.normalize(), f.isEmpty(n) ? (f.remove(n), v()) : (dS(a, n), eS(a, n))), f.setAttrib(n, "id", ""), a.fire("NewBlock", {
        newBlock: n
      })))
    },
    pS = function (e, t, n) {
      var r = e.create("span", {}, "&nbsp;");
      n.parentNode.insertBefore(r, n), t.scrollIntoView(r), e.remove(r)
    },
    gS = function (e, t, n, r) {
      var o = e.createRng();
      r ? (o.setStartBefore(n), o.setEndBefore(n)) : (o.setStartAfter(n), o.setEndAfter(n)), t.setRng(o)
    },
    hS = function (e, t) {
      var n, r, o = e.selection,
        i = e.dom,
        a = o.getRng();
      yd(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, t, n) {
        for (var r, o = new Xr(t, n), i = e.getNonEmptyElements(); r = o.next();)
          if (i[r.nodeName.toLowerCase()] || 0 < r.length) return !0
      }(e.schema, c, l) && (n = i.create("br"), a.insertNode(n), a.setStartAfter(n), a.setEndAfter(n), r = !0), n = i.create("br"), Ks(i, a, n), pS(i, o, n), gS(i, o, n, r), e.undoManager.add()
    },
    vS = function (e, t) {
      var n = At.fromTag("br");
      sn(At.fromDom(t), n), e.undoManager.add()
    },
    yS = function (e, t) {
      bS(e.getBody(), t) || cn(At.fromDom(t), At.fromTag("br"));
      var n = At.fromTag("br");
      cn(At.fromDom(t), n), pS(e.dom, e.selection, n.dom), gS(e.dom, e.selection, n.dom, !1), e.undoManager.add()
    },
    bS = function (e, t) {
      return n = $s.after(t), !!zn(n.getNode()) || Il(e, $s.after(t)).map(function (e) {
        return zn(e.getNode())
      }).getOr(!1);
      var n
    },
    CS = function (e) {
      return e && "A" === e.nodeName && "href" in e
    },
    wS = function (e) {
      return e.fold(C, CS, CS, C)
    },
    xS = function (e, t) {
      t.fold(V, N(vS, e), N(yS, e), V)
    },
    SS = function (e, t) {
      var n, r, o, i = (r = N(Ib, n = e), o = $s.fromRangeStart(n.selection.getRng()), WC(r, n.getBody(), o).filter(wS));
      i.isSome() ? i.each(N(xS, e)) : hS(e, t)
    },
    NS = function (e, t) {
      return tS(e).filter(function (e) {
        return 0 < t.length && Tt(At.fromDom(e), t)
      }).isSome()
    },
    ES = Cr([{
      br: []
    }, {
      block: []
    }, {
      none: []
    }]),
    kS = function (e, t) {
      return NS(n = e, n.getParam("no_newline_selector", ""));
      var n
    },
    _S = function (n) {
      return function (e, t) {
        return "" === vc(e) === n
      }
    },
    AS = function (n) {
      return function (e, t) {
        return tS(e).filter(function (e) {
          return io(At.fromDom(e))
        }).isSome() === n
      }
    },
    RS = function (n, r) {
      return function (e, t) {
        return tS(e).fold(E(""), function (e) {
          return e.nodeName.toUpperCase()
        }) === n.toUpperCase() === r
      }
    },
    TS = function (e) {
      return RS("pre", e)
    },
    DS = function (n) {
      return function (e, t) {
        return e.getParam("br_in_pre", !0) === n
      }
    },
    OS = function (e, t) {
      return NS(n = e, n.getParam("br_newline_selector", ".mce-toc h2,figcaption,caption"));
      var n
    },
    BS = function (e, t) {
      return t
    },
    PS = function (e) {
      var t = vc(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")
    },
    LS = function (e, t) {
      return function (n, r) {
        return X(e, function (e, t) {
          return e && t(n, r)
        }, !0) ? U.some(t) : U.none()
      }
    },
    IS = function (e, t) {
      return IC([LS([kS], ES.none()), LS([RS("summary", !0)], ES.br()), LS([TS(!0), DS(!1), BS], ES.br()), LS([TS(!0), DS(!1)], ES.block()), LS([TS(!0), DS(!0), BS], ES.block()), LS([TS(!0), DS(!0)], ES.br()), LS([AS(!0), BS], ES.br()), LS([AS(!0)], ES.block()), LS([_S(!0), BS, PS], ES.block()), LS([_S(!0)], ES.br()), LS([OS], ES.br()), LS([_S(!1), BS], ES.br()), LS([PS], ES.block())], [e, !(!t || !t.shiftKey)]).getOr(ES.none())
    },
    MS = function (e, t) {
      IS(e, t).fold(function () {
        SS(e, t)
      }, function () {
        mS(e, t)
      }, V)
    },
    FS = function (o) {
      o.on("keydown", function (e) {
        var t, n, r;
        e.keyCode === ud.ENTER && (t = o, (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"), MS(t, n)
        })))
      })
    },
    US = function (r) {
      r.on("keydown", function (e) {
        var t, n;
        !1 === e.isDefaultPrevented() && (t = r, n = e, Ox([{
          keyCode: ud.END,
          action: Dx(xx, t, !0)
        }, {
          keyCode: ud.HOME,
          action: Dx(xx, t, !1)
        }, {
          keyCode: ud.END,
          action: Dx(Lx, t, !0)
        }, {
          keyCode: ud.HOME,
          action: Dx(Lx, t, !1)
        }], n).each(function (e) {
          n.preventDefault()
        }))
      })
    },
    zS = dt().browser,
    jS = function (t) {
      var e, n;
      e = t, n = zu(function () {
        e.composing || ig(e)
      }, 0), zS.isIE() && (e.on("keypress", function (e) {
        n.throttle()
      }), e.on("remove", function (e) {
        n.cancel()
      })), t.on("input", function (e) {
        !1 === e.isComposing && ig(t)
      })
    },
    HS = function (n, r) {
      var e = r.container(),
        t = r.offset();
      return In(e) ? (e.insertData(t, n), U.some(Hs(e, t + n.length))) : ml(r).map(function (e) {
        var t = At.fromText(n);
        return (r.isAtEnd() ? cn : sn)(e, t), Hs(t.dom, n.length)
      })
    },
    VS = N(HS, lo),
    qS = N(HS, " "),
    $S = function (r, o) {
      return function (e) {
        return t = r, (!Gp(n = e) && (Jp(t, n) || Xp(t, n) || Yp(t, n)) ? VS : qS)(o);
        var t, n
      }
    },
    WS = function (e) {
      var t, n, r = $s.fromRangeStart(e.selection.getRng()),
        o = At.fromDom(e.getBody());
      if (e.selection.isCollapsed()) {
        var i = N(Ib, e),
          a = $s.fromRangeStart(e.selection.getRng());
        return WC(i, e.getBody(), a).bind((n = o, function (e) {
          return e.fold(function (e) {
            return Ml(n.dom, $s.before(e))
          }, function (e) {
            return Fl(e)
          }, function (e) {
            return Ul(e)
          }, function (e) {
            return Il(n.dom, $s.after(e))
          })
        })).bind($S(o, r)).exists((t = e, function (e) {
          return t.selection.setRng(e.toRange()), t.nodeChanged(), !0
        }))
      }
      return !1
    },
    KS = function (r) {
      r.on("keydown", function (e) {
        var t, n;
        !1 === e.isDefaultPrevented() && (t = r, n = e, Ox([{
          keyCode: ud.SPACEBAR,
          action: Dx(WS, t)
        }], n).each(function (e) {
          n.preventDefault()
        }))
      })
    },
    XS = function (e) {
      var t, n = cw(e);
      return (t = e).on("keyup compositionstart", N(Iw, t)), Qx(e, n), Zx(e, n), FS(e), KS(e), jS(e), US(e), n
    },
    YS = (GS.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))
    }, GS.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
    }, GS);

  function GS(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 && dd(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 || !wt.range && r.selection.isCollapsed() || Vf(r) && !t.isSameElementPath(e) && r.dom.isChildOf(e, r.getBody()) && r.nodeChanged({
        selectionChange: !0
      })
    }), r.on("mouseup", function (e) {
      !e.isDefaultPrevented() && Vf(r) && ("IMG" === r.selection.getNode().nodeName ? qr.setEditorTimeout(r, function () {
        r.nodeChanged()
      }) : r.nodeChanged())
    })
  }
  var JS = function (e) {
      var t, n;
      (t = e).on("click", function (e) {
        t.dom.getParent(e.target, "details") && e.preventDefault()
      }), (n = e).parser.addNodeFilter("details", function (e) {
        W(e, function (e) {
          e.attr("data-mce-open", e.attr("open")), e.attr("open", "open")
        })
      }), n.serializer.addNodeFilter("details", function (e) {
        W(e, function (e) {
          var t = e.attr("data-mce-open");
          e.attr("open", q(t) ? t : null), e.attr("data-mce-open", null)
        })
      })
    },
    QS = function (e) {
      return An(e) && ro(At.fromDom(e))
    },
    ZS = function (a) {
      a.on("click", function (e) {
        var t, n, r, o, i;
        3 <= e.detail && (r = (t = a).selection.getRng(), o = Hs.fromRangeStart(r), i = Hs.fromRangeEnd(r), Hs.isElementPosition(o) && (n = o.container(), QS(n) && Fl(n).each(function (e) {
          return r.setStart(e.container(), e.offset())
        })), Hs.isElementPosition(i) && (n = o.container(), QS(n) && Ul(n).each(function (e) {
          return r.setEnd(e.container(), e.offset())
        })), t.selection.setRng(Yg(r)))
      })
    },
    eN = function (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
      }
    },
    tN = function (e, t) {
      return n = (u = e).inline ? eN(u.getBody()) : {
        left: 0,
        top: 0
      }, a = (i = e).getBody(), r = i.inline ? {
        left: a.scrollLeft,
        top: a.scrollTop
      } : {
        left: 0,
        top: 0
      }, {
        pageX: (o = function (e, t) {
          if (t.target.ownerDocument === e.getDoc()) return {
            left: t.pageX,
            top: t.pageY
          };
          var n, r, o, i, a, u = eN(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
          }
        }(e, t)).left - n.left + r.left,
        pageY: o.top - n.top + r.top
      };
      var n, r, o, i, a, u
    },
    nN = Vn,
    rN = Hn,
    oN = function (e) {
      e && e.parentNode && e.parentNode.removeChild(e)
    },
    iN = function (u, s) {
      return function (e) {
        var t, n, r, o, i, a;
        0 === e.button && (t = Y(s.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
          }
        }(nN, rN)).getOr(null), i = s.getBody(), nN(a = t) && a !== i && (n = s.dom.getPos(t), r = s.getBody(), o = s.getDoc().documentElement, u.set({
          element: t,
          dragging: !1,
          screenX: e.screenX,
          screenY: e.screenY,
          maxX: (s.inline ? r.scrollWidth : o.offsetWidth) - 2,
          maxY: (s.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, r) {
            var o = e.dom,
              i = t.cloneNode(!0);
            o.setStyles(i, {
              width: n,
              height: r
            }), o.setAttrib(i, "data-mce-selected", null);
            var a = o.create("div", {
              "class": "mce-drag-container",
              "data-mce-bogus": "all",
              unselectable: "on",
              contenteditable: "false"
            });
            return o.setStyles(a, {
              position: "absolute",
              opacity: .5,
              overflow: "hidden",
              border: 0,
              padding: 0,
              margin: 0,
              width: n,
              height: r
            }), o.setStyles(i, {
              margin: 0,
              boxSizing: "border-box"
            }), a.appendChild(i), a
          }(s, t, t.offsetWidth, t.offsetHeight)
        })))
      }
    },
    aN = function (e, h) {
      var v = qr.throttle(function (e, t) {
        h._selectionOverrides.hideFakeCaret(), h.selection.placeCaretAt(e, t)
      }, 0);
      return h.on("remove", v.stop),
        function (g) {
          return e.on(function (e) {
            var t, n, r, o, i, a, u, s, c, l, f, d, m, p = Math.max(Math.abs(g.screenX - e.screenX), Math.abs(g.screenY - e.screenY));
            if (!e.dragging && 10 < p) {
              if (h.fire("dragstart", {
                  target: e.element
                }).isDefaultPrevented()) return;
              e.dragging = !0, h.focus()
            }
            e.dragging && (d = e, t = {
              pageX: (m = tN(h, g)).pageX - d.relX,
              pageY: m.pageY + 5
            }, l = e.ghost, f = h.getBody(), l.parentNode !== f && f.appendChild(l), n = e.ghost, r = t, o = e.width, i = e.height, a = e.maxX, u = e.maxY, c = s = 0, n.style.left = r.pageX + "px", n.style.top = r.pageY + "px", r.pageX + o > a && (s = r.pageX + o - a), r.pageY + i > u && (c = r.pageY + i - u), n.style.width = o - s + "px", n.style.height = i - c + "px", v(g.clientX, g.clientY))
          })
        }
    },
    uN = function (e, l) {
      return function (c) {
        e.on(function (e) {
          var t, n, r, o, i, a, u, s;
          e.dragging && (u = (o = l).selection, s = u.getSel().getRangeAt(0).startContainer, i = 3 === s.nodeType ? s.parentNode : s, a = e.element, i === a || o.dom.isChildOf(i, a) || nN(i) || (n = e.element, (r = n.cloneNode(!0)).removeAttribute("data-mce-selected"), t = r, l.fire("drop", {
            clientX: c.clientX,
            clientY: c.clientY
          }).isDefaultPrevented() || l.undoManager.transact(function () {
            oN(e.element), l.insertContent(l.dom.getOuterHTML(t)), l._selectionOverrides.hideFakeCaret()
          })))
        }), sN(e)
      }
    },
    sN = function (e) {
      e.on(function (e) {
        oN(e.ghost)
      }), e.clear()
    },
    cN = function (e) {
      var t, n, r, o = (t = Ou(U.none()), {
          clear: function () {
            return t.set(U.none())
          },
          set: function (e) {
            return t.set(U.some(e))
          },
          isSet: function () {
            return t.get().isSome()
          },
          on: function (e) {
            return t.get().each(e)
          }
        }),
        i = Eu.DOM,
        a = document,
        u = iN(o, e),
        s = aN(o, e),
        c = uN(o, e),
        l = (n = o, function () {
          n.on(function (e) {
            e.dragging && r.fire("dragend")
          }), sN(n)
        });
      (r = e).on("mousedown", u), e.on("mousemove", s), e.on("mouseup", c), i.bind(a, "mousemove", s), i.bind(a, "mouseup", l), e.on("remove", function () {
        i.unbind(a, "mousemove", s), i.unbind(a, "mouseup", l)
      })
    },
    lN = function (e) {
      var n, i, a, u, t;
      cN(e), (n = e).on("drop", function (e) {
        var t = "undefined" != typeof e.clientX ? n.getDoc().elementFromPoint(e.clientX, e.clientY) : null;
        !nN(t) && "false" !== n.dom.getContentEditableParent(t) || e.preventDefault()
      }), e.getParam("block_unsupported_drop", !0, "boolean") && (a = function (e) {
        var t;
        e.defaultPrevented || (t = e.dataTransfer) && (M(t.types, "Files") || 0 < t.files.length) && (e.preventDefault(), "drop" === e.type && cb(i, "Dropped file type is not supported"))
      }, u = function (e) {
        vm(i, e.target) && a(e)
      }, t = function () {
        var t = Eu.DOM,
          n = i.dom,
          r = document,
          o = i.inline ? i.getBody() : i.getDoc(),
          e = ["drop", "dragover"];
        W(e, function (e) {
          t.bind(r, e, u), n.bind(o, e, a)
        }), i.on("remove", function () {
          W(e, function (e) {
            t.unbind(r, e, u), n.unbind(o, e, a)
          })
        })
      }, (i = e).on("init", function () {
        qr.setEditorTimeout(i, t, 0)
      }))
    },
    fN = Hn,
    dN = Vn,
    mN = function (e, t) {
      return id(e.getBody(), t)
    },
    pN = function (u) {
      var s, c = u.selection,
        l = u.dom,
        f = l.isBlock,
        d = u.getBody(),
        m = qc(u, d, f, function () {
          return Em(u)
        }),
        p = "sel-" + l.uniqueId(),
        i = "data-mce-selected",
        g = function (e) {
          return e !== d && (dN(e) || $n(e)) && l.isChildOf(e, d)
        },
        h = function (e) {
          e && c.setRng(e)
        },
        r = c.getRng,
        v = function (e, t, n, r) {
          return void 0 === r && (r = !0), u.fire("ShowCaret", {
            target: t,
            direction: e,
            before: n
          }).isDefaultPrevented() ? null : (r && c.scrollIntoView(t, -1 === e), m.show(n, t))
        },
        t = function (e) {
          return bo(e) || No(e) || Eo(e)
        },
        y = function (e) {
          return t(e.startContainer) || t(e.endContainer)
        },
        b = function (e) {
          var t = u.schema.getShortEndedElements(),
            n = l.createRng(),
            r = e.startContainer,
            o = e.startOffset,
            i = e.endContainer,
            a = e.endOffset;
          return he(t, r.nodeName.toLowerCase()) ? 0 === o ? n.setStartBefore(r) : n.setStartAfter(r) : n.setStart(r, o), he(t, i.nodeName.toLowerCase()) ? 0 === a ? n.setEndBefore(i) : n.setEndAfter(i) : n.setEnd(i, a), n
        },
        C = function (e) {
          var t = e.cloneNode(!0),
            n = u.fire("ObjectSelected", {
              target: e,
              targetClone: t
            });
          if (n.isDefaultPrevented()) return null;
          var r = function (e, t, n) {
              var r = u.$,
                o = Dr(At.fromDom(u.getBody()), "#" + p).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", p)).appendTo(u.getBody());
              var i = l.createRng();
              t === n && wt.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(lo).append(t).append(lo), i.setStart(o[0].firstChild, 1), i.setEnd(o[0].lastChild, 0)), o.css({
                top: l.getPos(e, u.getBody()).y
              }), o[0].focus();
              var a = c.getSel();
              return a.removeAllRanges(), a.addRange(i), i
            }(e, n.targetClone, t),
            o = At.fromDom(e);
          return W(Gu(At.fromDom(u.getBody()), "*[data-mce-selected]"), function (e) {
            Ot(o, e) || Qn(e, i)
          }), l.getAttrib(e, i) || e.setAttribute(i, "1"), s = e, S(), r
        },
        w = function (e, t) {
          if (!e) return null;
          if (e.collapsed) {
            if (!y(e)) {
              var n = t ? 1 : -1,
                r = dl(n, d, e),
                o = r.getNode(!t);
              if (Kc(o)) return v(n, o, !!t && !r.isAtEnd(), !1);
              var i = r.getNode(t);
              if (Kc(i)) return v(n, i, !t && !r.isAtEnd(), !1)
            }
            return null
          }
          var a = e.startContainer,
            u = e.startOffset,
            s = e.endOffset;
          if (3 === a.nodeType && 0 === u && dN(a.parentNode) && (a = a.parentNode, u = l.nodeIndex(a), a = a.parentNode), 1 !== a.nodeType) return null;
          if (s === u + 1 && a === e.endContainer) {
            var c = a.childNodes[u];
            if (g(c)) return C(c)
          }
          return null
        },
        x = function () {
          s && s.removeAttribute(i), Dr(At.fromDom(u.getBody()), "#" + p).each(pn), s = null
        },
        S = function () {
          m.hide()
        };
      return wt.ceFalse && function () {
        u.on("mouseup", function (e) {
          var t = r();
          t.collapsed && nb(u, e.clientX, e.clientY) && lC(u, t, !1).each(h)
        }), u.on("click", function (e) {
          var t = mN(u, e.target);
          t && (dN(t) && (e.preventDefault(), u.focus()), fN(t) && l.isChildOf(t, c.getNode()) && x())
        }), u.on("blur NewBlock", x), u.on("ResizeWindow FullscreenStateChanged", m.reposition);
        var a = function (e) {
            var t = _l(e);
            if (!e.firstChild) return !1;
            var n, r = $s.before(e.firstChild),
              o = t.next(r);
            return o && !(Np(n = o) || Ep(n) || Cp(n) || wp(n))
          },
          i = function (e, t) {
            var n, r, o = l.getParent(e, f),
              i = l.getParent(t, f);
            return !(!o || e === i || !l.isChildOf(o, i) || !1 !== dN(mN(u, o))) || o && (n = o, r = i, !(l.getParent(n, f) === l.getParent(r, f))) && a(o)
          };
        u.on("tap", function (e) {
          var t = e.target,
            n = mN(u, t);
          dN(n) ? (e.preventDefault(), cC(u, n).each(w)) : g(t) && cC(u, t).each(w)
        }, !0), u.on("mousedown", function (e) {
          var t, n, r, o = e.target;
          o !== d && "HTML" !== o.nodeName && !l.isChildOf(o, d) || !1 === nb(u, e.clientX, e.clientY) || ((t = mN(u, o)) ? dN(t) ? (e.preventDefault(), cC(u, t).each(w)) : (x(), fN(t) && e.shiftKey || ad(e.clientX, e.clientY, c.getRng()) || (S(), c.placeCaretAt(e.clientX, e.clientY))) : g(o) ? cC(u, o).each(w) : !1 === Kc(o) && (x(), S(), (n = cx(d, e.clientX, e.clientY)) && (i(o, n.node) || (e.preventDefault(), r = v(1, n.node, n.before, !1), u.getBody().focus(), h(r)))))
        }), u.on("keypress", function (e) {
          ud.modifierPressed(e) || dN(c.getNode()) && e.preventDefault()
        }), u.on("GetSelectionRange", function (e) {
          var t = e.range;
          if (s) {
            if (!s.parentNode) return void(s = null);
            (t = t.cloneRange()).selectNode(s), e.range = t
          }
        }), u.on("SetSelectionRange", function (e) {
          e.range = b(e.range);
          var t = w(e.range, e.forward);
          t && (e.range = t)
        });
        var n, e, o;
        u.on("AfterSetSelectionRange", function (e) {
          var t, n = e.range,
            r = n.startContainer.parentNode;
          y(n) || "mcepastebin" === r.id || S(), t = r, l.hasClass(t, "mce-offscreen-selection") || x()
        }), u.on("copy", function (e) {
          var t, n, r = e.clipboardData;
          e.isDefaultPrevented() || !e.clipboardData || wt.ie || (t = (n = l.get(p)) ? n.getElementsByTagName("*")[0] : n) && (e.preventDefault(), r.clearData(), r.setData("text/html", t.outerHTML), r.setData("text/plain", t.outerText || t.innerText))
        }), lN(u), e = zu(function () {
          var e, t;
          n.removed || !n.getBody().contains(document.activeElement) || (e = n.selection.getRng()).collapsed && (t = fC(n, e, !1), n.selection.setRng(t))
        }, 0), (n = u).on("focus", function () {
          e.throttle()
        }), n.on("blur", function () {
          e.cancel()
        }), (o = u).on("init", function () {
          o.on("focusin", function (e) {
            var t, n, r = e.target;
            $n(r) && (t = id(o.getBody(), r), n = Vn(t) ? t : r, o.selection.getNode() !== n && cC(o, n).each(function (e) {
              return o.selection.setRng(e)
            }))
          })
        })
      }(), {
        showCaret: v,
        showBlockCaretContainer: function (e) {
          e.hasAttribute("data-mce-caret") && (ko(e), h(r()), c.scrollIntoView(e))
        },
        hideFakeCaret: S,
        destroy: function () {
          m.destroy(), s = null
        }
      }
    },
    gN = function (u) {
      var s, n, r, o = kt.each,
        c = ud.BACKSPACE,
        l = ud.DELETE,
        f = u.dom,
        d = u.selection,
        e = u.parser,
        t = wt.gecko,
        i = wt.ie,
        a = wt.webkit,
        m = "data:text/mce-internal,",
        p = i ? "Text" : "URL",
        g = function (e, t) {
          try {
            u.getDoc().execCommand(e, !1, t)
          } catch (n) {}
        },
        h = function (e) {
          return e.isDefaultPrevented()
        },
        v = function () {
          u.shortcuts.add("meta+a", null, "SelectAll")
        },
        y = function () {
          u.on("keydown", function (e) {
            if (!h(e) && e.keyCode === c && d.isCollapsed() && 0 === d.getRng().startOffset) {
              var t = d.getNode().previousSibling;
              if (t && t.nodeName && "table" === t.nodeName.toLowerCase()) return e.preventDefault(), !1
            }
          })
        },
        b = function () {
          u.inline || (u.contentStyles.push("body {min-height: 150px}"), u.on("click", function (e) {
            var t;
            if ("HTML" === e.target.nodeName) {
              if (11 < wt.ie) return void u.getBody().focus();
              t = u.selection.getRng(), u.getBody().focus(), u.selection.setRng(t), u.selection.normalize(), u.nodeChanged()
            }
          }))
        };
      return u.on("keydown", function (e) {
        var t;
        if (!h(e) && e.keyCode === ud.BACKSPACE) {
          var n = (t = d.getRng()).startContainer,
            r = t.startOffset,
            o = f.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 && (u.formatter.toggle("blockquote", null, i), (t = f.createRng()).setStart(n, 0), t.setEnd(n, 0), d.setRng(t))
          }
        }
      }), s = function (e) {
        var t = f.create("body"),
          n = e.cloneContents();
        return t.appendChild(n), d.serializer.serialize(t, {
          format: "html"
        })
      }, u.on("keydown", function (e) {
        var t, n, r, o, i, a = e.keyCode;
        if (!h(e) && (a === l || a === c)) {
          if (t = u.selection.isCollapsed(), n = u.getBody(), t && !f.isEmpty(n)) return;
          if (!t && (r = u.selection.getRng(), o = s(r), (i = f.createRng()).selectNode(u.getBody()), o !== s(i))) return;
          e.preventDefault(), u.setContent(""), n.firstChild && f.isBlock(n.firstChild) ? u.selection.setCursorLocation(n.firstChild, 0) : u.selection.setCursorLocation(n, 0), u.nodeChanged()
        }
      }), wt.windowsPhone || u.on("keyup focusin mouseup", function (e) {
        ud.modifierPressed(e) || d.normalize()
      }, !0), a && (u.inline || f.bind(u.getDoc(), "mousedown mouseup", function (e) {
        var t;
        if (e.target === u.getDoc().documentElement)
          if (t = d.getRng(), u.getBody().focus(), "mousedown" === e.type) {
            if (bo(t.startContainer)) return;
            d.placeCaretAt(e.clientX, e.clientY)
          } else d.setRng(t)
      }), u.on("click", function (e) {
        var t = e.target;
        /^(IMG|HR)$/.test(t.nodeName) && "false" !== f.getContentEditableParent(t) && (e.preventDefault(), u.selection.select(t), u.nodeChanged()), "A" === t.nodeName && f.hasClass(t, "mce-item-anchor") && (e.preventDefault(), d.select(t))
      }), vc(u) && u.on("init", function () {
        g("DefaultParagraphSeparator", vc(u))
      }), u.on("init", function () {
        u.dom.bind(u.getBody(), "submit", function (e) {
          e.preventDefault()
        })
      }), y(), e.addNodeFilter("br", function (e) {
        for (var t = e.length; t--;) "Apple-interchange-newline" === e[t].attr("class") && e[t].remove()
      }), wt.iOS ? (u.inline || u.on("keydown", function () {
        document.activeElement === document.body && u.getWin().focus()
      }), b(), u.on("click", function (e) {
        var t = e.target;
        do {
          if ("A" === t.tagName) return void e.preventDefault()
        } while (t = t.parentNode)
      }), u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")) : v()), 11 <= wt.ie && (b(), y()), wt.ie && (v(), g("AutoUrlDetect", !1), u.on("dragstart", function (e) {
        var t, n, r;
        (t = e).dataTransfer && (u.selection.isCollapsed() && "IMG" === t.target.tagName && d.select(t.target), 0 < (n = u.selection.getContent()).length && (r = m + escape(u.id) + "," + escape(n), t.dataTransfer.setData(p, r)))
      }), u.on("drop", function (e) {
        var t, n, r, o, i, a;
        h(e) || (t = (i = e).dataTransfer && (a = i.dataTransfer.getData(p)) && 0 <= a.indexOf(m) ? (a = a.substr(m.length).split(","), {
          id: unescape(a[0]),
          html: unescape(a[1])
        }) : null) && t.id !== u.id && (e.preventDefault(), n = fd(e.x, e.y, u.getDoc()), d.setRng(n), r = t.html, o = !0, u.queryCommandSupported("mceInsertClipboardContent") ? u.execCommand("mceInsertClipboardContent", !1, {
          content: r,
          internal: o
        }) : u.execCommand("mceInsertContent", !1, r))
      })), t && (u.on("keydown", function (e) {
        if (!h(e) && e.keyCode === c) {
          if (!u.getBody().getElementsByTagName("hr").length) return;
          if (d.isCollapsed() && 0 === d.getRng().startOffset) {
            var t = d.getNode(),
              n = t.previousSibling;
            if ("HR" === t.nodeName) return f.remove(t), void e.preventDefault();
            n && n.nodeName && "hr" === n.nodeName.toLowerCase() && (f.remove(n), e.preventDefault())
          }
        }
      }), Range.prototype.getClientRects || u.on("mousedown", function (e) {
        var t;
        h(e) || "HTML" !== e.target.nodeName || ((t = u.getBody()).blur(), qr.setEditorTimeout(u, function () {
          t.focus()
        }))
      }), n = function () {
        var e = f.getAttribs(d.getStart().cloneNode(!1));
        return function () {
          var t = d.getStart();
          t !== u.getBody() && (f.setAttrib(t, "style", null), o(e, function (e) {
            t.setAttributeNode(e.cloneNode(!0))
          }))
        }
      }, r = function () {
        return !d.isCollapsed() && f.getParent(d.getStart(), f.isBlock) !== f.getParent(d.getEnd(), f.isBlock)
      }, u.on("keypress", function (e) {
        var t;
        if (!h(e) && (8 === e.keyCode || 46 === e.keyCode) && r()) return t = n(), u.getDoc().execCommand("delete", !1, null), t(), e.preventDefault(), !1
      }), f.bind(u.getDoc(), "cut", function (e) {
        var t;
        !h(e) && r() && (t = n(), qr.setEditorTimeout(u, function () {
          t()
        }))
      }), u.getParam("readonly") || u.on("BeforeExecCommand mousedown", function () {
        g("StyleWithCSS", !1), g("enableInlineTableEditing", !1), Nc(u) || g("enableObjectResizing", !1)
      }), u.on("SetContent ExecCommand", function (e) {
        "setcontent" !== e.type && "mceInsertLink" !== e.command || o(f.select("a"), function (e) {
          var t = e.parentNode,
            n = f.getRoot();
          if (t.lastChild === e) {
            for (; t && !f.isBlock(t);) {
              if (t.parentNode.lastChild !== t || t === n) return;
              t = t.parentNode
            }
            f.add(t, "br", {
              "data-mce-bogus": 1
            })
          }
        })
      }), u.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"), wt.mac && u.on("keydown", function (e) {
        !ud.metaKeyPressed(e) || e.shiftKey || 37 !== e.keyCode && 39 !== e.keyCode || (e.preventDefault(), u.selection.getSel().modify("move", 37 === e.keyCode ? "backward" : "forward", "lineboundary"))
      }), y()), {
        refreshContentEditable: function () {},
        isHidden: function () {
          if (!t || u.removed) return !1;
          var e = u.selection.getSel();
          return !e || !e.rangeCount || 0 === e.rangeCount
        }
      }
    },
    hN = Eu.DOM,
    vN = function (e) {
      return me(e, function (e) {
        return !1 === R(e)
      })
    },
    yN = function (e) {
      var t, n = e.settings,
        r = e.editorUpload.blobCache;
      return vN({
        allow_conditional_comments: n.allow_conditional_comments,
        allow_html_data_urls: n.allow_html_data_urls,
        allow_svg_data_urls: n.allow_svg_data_urls,
        allow_html_in_named_anchor: n.allow_html_in_named_anchor,
        allow_script_urls: n.allow_script_urls,
        allow_unsafe_link_target: n.allow_unsafe_link_target,
        convert_fonts_to_spans: n.convert_fonts_to_spans,
        fix_list_elements: n.fix_list_elements,
        font_size_legacy_values: n.font_size_legacy_values,
        forced_root_block: n.forced_root_block,
        forced_root_block_attrs: n.forced_root_block_attrs,
        padd_empty_with_br: n.padd_empty_with_br,
        preserve_cdata: n.preserve_cdata,
        remove_trailing_brs: n.remove_trailing_brs,
        inline_styles: n.inline_styles,
        root_name: (t = e).inline ? t.getElement().nodeName.toLowerCase() : undefined,
        validate: !0,
        blob_cache: r,
        images_dataimg_filter: n.images_dataimg_filter
      })
    },
    bN = function (u) {
      var e = u.dom.getRoot();
      u.inline || Vf(u) && u.selection.getStart(!0) !== e || Fl(e).each(function (e) {
        var t, n, r, o, i = e.getNode(),
          a = Bn(i) ? Fl(i).getOr(e) : e;
        wt.browser.isIE() ? (t = u, n = a.toRange(), r = At.fromDom(t.getBody()), o = (um(t) ? U.from(n) : U.none()).map(sm).filter(am(r)), t.bookmark = o.isSome() ? o : t.bookmark) : u.selection.setRng(a.toRange())
      })
    },
    CN = function (e) {
      var t;
      e.bindPendingEventDelegates(), e.initialized = !0, e.fire("Init"), e.focus(!0), bN(e), e.nodeChanged({
        initial: !0
      }), e.execCallback("init_instance_callback", e), (t = e).settings.auto_focus && qr.setEditorTimeout(t, function () {
        var e = !0 === t.settings.auto_focus ? t : t.editorManager.get(t.settings.auto_focus);
        e.destroyed || e.focus()
      }, 100)
    },
    wN = function (t, e) {
      var n = t.settings,
        r = t.getDoc(),
        o = t.getBody();
      n.browser_spellcheck || n.gecko_spellcheck || (r.body.spellcheck = !1, hN.setAttrib(o, "spellcheck", "false")), t.quirks = gN(t), t.fire("PostRender");
      var i, a, u, s, c, l, f, d, m, p, g, h = t.getParam("directionality", Iu.isRtl() ? "rtl" : undefined);
      h !== undefined && (o.dir = h), n.protect && t.on("BeforeSetContent", function (t) {
        kt.each(n.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())
      }), !1 === e && t.load({
        initial: !0,
        format: "html"
      }), t.startContent = t.getContent({
        format: "raw"
      }), t.on("compositionstart compositionend", function (e) {
        t.composing = "compositionstart" === e.type
      }), 0 < t.contentStyles.length && (i = "", kt.each(t.contentStyles, function (e) {
        i += e + "\r\n"
      }), t.dom.addStyle(i)), u = (a = t).contentCSS, c = (s = a).inline ? s.ui.styleSheetLoader : s.dom.styleSheetLoader, l = function () {
        a.on("remove", function () {
          return c.unloadAll(u)
        }), CN(a)
      }, c.loadAll(u, l, l), n.content_style && (f = t, d = n.content_style, m = At.fromDom(f.getBody()), p = on(rn(m)), g = At.fromTag("style"), Xn(g, "type", "text/css"), fn(g, At.fromText(d)), fn(p, g), f.on("remove", function () {
        pn(g)
      }))
    },
    xN = function (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 && (hN.addClass(r, "mce-content-body"), t.contentDocument = o = document, t.contentWindow = window, t.bodyElement = r, t.contentAreaContainer = r);
      var u, i, a, s, c = t.getBody();
      c.disabled = !0, t.readonly = !!n.readonly, t.readonly || (t.inline && "static" === hN.getStyle(c, "position", !0) && (c.style.position = "relative"), c.contentEditable = t.getParam("content_editable_state", !0)), c.disabled = !1, t.editorUpload = yb(t), t.schema = Ci(n), t.dom = Eu(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: wc(t),
        onSetAttrib: function (e) {
          t.fire("SetAttrib", e)
        }
      }), t.parser = ((i = by(yN(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--;)
          if ((r = (n = e[o]).attr(t)) && !n.attr(a)) {
            if (0 === r.indexOf("data:") || 0 === r.indexOf("blob:")) continue;
            "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 Km("br", 1)).shortEnded = !0)
        }
      }), i), t.serializer = Ny((s = (a = t).settings, ke(ke({}, yN(a)), vN({
        url_converter: s.url_converter,
        url_converter_scope: s.url_converter_scope,
        element_format: s.element_format,
        entities: s.entities,
        entity_encoding: s.entity_encoding,
        indent: s.indent,
        indent_after: s.indent_after,
        indent_before: s.indent_before,
        block_elements: s.block_elements,
        boolean_attributes: s.boolean_attributes,
        custom_elements: s.custom_elements,
        extended_valid_elements: s.extended_valid_elements,
        invalid_elements: s.invalid_elements,
        invalid_styles: s.invalid_styles,
        move_caret_before_on_enter_elements: s.move_caret_before_on_enter_elements,
        non_empty_elements: s.non_empty_elements,
        schema: s.schema,
        self_closing_elements: s.self_closing_elements,
        short_ended_elements: s.short_ended_elements,
        special: s.special,
        text_block_elements: s.text_block_elements,
        text_inline_elements: s.text_inline_elements,
        valid_children: s.valid_children,
        valid_classes: s.valid_classes,
        valid_elements: s.valid_elements,
        valid_styles: s.valid_styles,
        verify_html: s.verify_html,
        whitespace_elements: s.whitespace_elements
      }))), t), t.selection = Qv(t.dom, t.getWin(), t.serializer, t), t.annotator = td(t), t.formatter = _b(t), t.undoManager = Rb(t), t._nodeChangeDispatcher = new YS(t), t._selectionOverrides = pN(t), Ow(t), JS(t), Hv(t) || ZS(t);
      var l, f, d, m, p = Hv(l = t) ? Ou(null) : XS(l);
      Tw(t, p), vc(f = t) && f.on("NodeChange", N(Pw, f)), Pb(t), t.fire("PreInit"), ge((m = d = t).plugins, "rtc").fold(function () {
        return m.rtcInstance = zv(d), U.none()
      }, function (e) {
        return U.some(e.setup().then(function (e) {
          return m.rtcInstance = jv(d, e), e.isRemote
        }))
      }).fold(function () {
        wN(t, !1)
      }, function (e) {
        t.setProgressState(!0), e.then(function (e) {
          t.setProgressState(!1), wN(t, e)
        })
      })
    },
    SN = Eu.DOM,
    NN = 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 = gc(e, "body_id", "tinymce"),
        r = gc(e, "body_class", "");
      return hc(e) && (t += '<meta http-equiv="Content-Security-Policy" content="' + hc(e) + '" />'), t += '</head><body id="' + n + '" class="mce-content-body ' + r + '" data-id="' + e.id + '"><br></body></html>'
    },
    EN = function (e, t) {
      var n, r, o, i, a = e.editorManager.translate("Rich Text Area. Press ALT-0 for help."),
        u = (n = e.id, r = a, t.height, o = e.getParam("iframe_attrs", {}), i = At.fromTag("iframe"), Yn(i, o), Yn(i, {
          id: n + "_ifr",
          frameBorder: "0",
          allowTransparency: "true",
          title: r
        }), Wu(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 && wt.browser.isIE()) {
          var n = vb("mce");
          e[n] = function () {
            xN(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 SN.setAttrib(t, "src", r), !0
        }
        return !1
      }(e, u);
      return e.contentAreaContainer = t.iframeContainer, e.iframeElement = u, e.iframeHTML = NN(e), SN.add(t.iframeContainer, u), s
    },
    kN = Eu.DOM,
    _N = function (t, n, e) {
      var r = ib.get(e),
        o = ib.urls[e] || t.documentBaseUrl.replace(/\/$/, "");
      if (e = kt.trim(e), r && -1 === kt.inArray(n, e)) {
        if (kt.each(ib.dependencies(e), function (e) {
            _N(t, n, e)
          }), t.plugins[e]) return;
        try {
          var i = new r(t, o, t.$);
          (t.plugins[e] = i).init && (i.init(t, o), n.push(e))
        } catch (Ok) {
          ! function (e, t, n) {
            var r = Iu.translate(["Failed to initialize plugin: {0}", t]);
            mb(r, n), cb(e, r)
          }(t, e, Ok)
        }
      }
    },
    AN = function (e) {
      return e.replace(/^\-/, "")
    },
    RN = function (e) {
      return {
        editorContainer: e,
        iframeContainer: e,
        api: {}
      }
    },
    TN = function (e) {
      var t, n, r = e.getElement();
      return e.inline ? RN(null) : (t = r, n = kN.create("div"), kN.insertAfter(n, t), RN(n))
    },
    DN = function (e) {
      var t, n, r, o = e.getElement();
      return e.orgDisplay = o.style.display, q(kc(e)) ? e.theme.renderUI() : T(kc(e)) ? (n = (t = e).getElement(), (r = kc(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 ? r.iframeHeight : n.offsetHeight, r) : TN(e)
    },
    ON = function (e) {
      var n, t, r, o, i, a, u, s, c;
      e.fire("ScriptsLoaded"), n = e, t = kt.trim(Cc(n)), r = n.ui.registry.getAll().icons, o = ke(ke({}, Yy.get("default").icons), Yy.get(t).icons), ue(o, function (e, t) {
        he(r, t) || n.ui.registry.addIcon(t, e)
      }), u = kc(i = e), q(u) ? (i.settings.theme = AN(u), a = ab.get(u), i.theme = new a(i, ab.urls[u]), i.theme.init && i.theme.init(i, ab.urls[u] || i.documentBaseUrl.replace(/\/$/, ""), i.$)) : i.theme = {}, s = e, c = [], kt.each(Ac(s).split(/[ ,]/), function (e) {
        _N(s, c, AN(e))
      });
      var l, f, d, m = DN(e);
      l = e, f = U.from(m.api).getOr({}), d = {
        show: U.from(f.show).getOr(V),
        hide: U.from(f.hide).getOr(V),
        disable: U.from(f.disable).getOr(V),
        isDisabled: U.from(f.isDisabled).getOr(C),
        enable: function () {
          l.mode.isReadOnly() || U.from(f.enable).map(b)
        }
      }, l.ui = ke(ke({}, l.ui), d);
      var p, g, h, v, y = {
        editorContainer: m.editorContainer,
        iframeContainer: m.iframeContainer
      };
      return e.editorContainer = y.editorContainer ? y.editorContainer : null, (p = e).contentCSS = p.contentCSS.concat(pb(p)), e.inline ? xN(e) : (v = EN(g = e, h = y), h.editorContainer && (SN.get(h.editorContainer).style.display = g.orgDisplay, g.hidden = SN.isHidden(h.editorContainer)), g.getElement().style.display = "none", SN.setAttrib(g.id, "aria-hidden", "true"), void(v || xN(g)))
    },
    BN = Eu.DOM,
    PN = function (e) {
      return "-" === e.charAt(0)
    },
    LN = function (e, t) {
      var n, r = xc(t),
        o = t.getParam("language_url", "", "string");
      !1 === Iu.hasCode(r) && "en" !== r && (n = "" !== o ? o : t.editorManager.baseURL + "/langs/" + r + ".js", e.add(n, V, undefined, function () {
        lb(t, "LanguageLoadError", fb("language", n, r))
      }))
    },
    IN = function (t, e, n) {
      return U.from(e).filter(function (e) {
        return 0 < e.length && !Yy.has(e)
      }).map(function (e) {
        return {
          url: t.editorManager.baseURL + "/icons/" + e + "/icons" + n + ".js",
          name: U.some(e)
        }
      })
    },
    MN = function (e, o, t) {
      var n, r = IN(o, "default", t),
        i = (n = o, U.from(n.getParam("icons_url", "", "string")).filter(function (e) {
          return 0 < e.length
        }).map(function (e) {
          return {
            url: e,
            name: U.none()
          }
        }).orThunk(function () {
          return IN(o, Cc(o), "")
        }));
      W(function (e) {
        for (var t = [], n = function (e) {
            t.push(e)
          }, r = 0; r < e.length; r++) e[r].each(n);
        return t
      }([r, i]), function (r) {
        e.add(r.url, V, undefined, function () {
          var e, t, n;
          e = o, t = r.url, n = r.name.getOrUndefined(), lb(e, "IconsLoadError", fb("icons", t, n))
        })
      })
    },
    FN = function (e, t) {
      var n, r, o, i, a, u, s = Ru.ScriptLoader;
      n = s, o = t, i = function () {
        var r, o;
        LN(s, e), MN(s, e, t), r = e, o = t, kt.each(r.getParam("external_plugins"), function (e, t) {
          ib.load(t, e, V, undefined, function () {
            db(r, e, t)
          }), r.settings.plugins += " " + t
        }), kt.each(Ac(r).split(/[ ,]/), function (e) {
          var t, n;
          (e = kt.trim(e)) && !ib.urls[e] && (PN(e) ? (e = e.substr(1, e.length), t = ib.dependencies(e), kt.each(t, function (e) {
            var t = {
                prefix: "plugins/",
                resource: e,
                suffix: "/plugin" + o + ".js"
              },
              n = ib.createUrl(t, e);
            ib.load(n.resource, n, V, undefined, function () {
              db(r, n.prefix + n.resource + n.suffix, n.resource)
            })
          })) : (n = {
            prefix: "plugins/",
            resource: e,
            suffix: "/plugin" + o + ".js"
          }, ib.load(e, n, V, undefined, function () {
            db(r, n.prefix + n.resource + n.suffix, e)
          })))
        }), s.loadQueue(function () {
          e.removed || ON(e)
        }, e, function () {
          e.removed || ON(e)
        })
      }, u = kc(r = e), q(u) ? (PN(u) || ab.urls.hasOwnProperty(u) || ((a = r.getParam("theme_url")) ? ab.load(u, r.documentBaseURI.toAbsolute(a)) : ab.load(u, "themes/" + u + "/theme" + o + ".js")), n.loadQueue(function () {
        ab.waitFor(u, i)
      })) : i()
    },
    UN = function (t) {
      var e = t.id;
      Iu.setCode(xc(t));
      var n, r, o, i, a, u = function () {
        BN.unbind(window, "ready", u), t.render()
      };
      Ti.Event.domLoaded ? t.getElement() && wt.contentEditable && (n = At.fromDom(t.getElement()), r = X(n.dom.attributes, function (e, t) {
        return e[t.name] = t.value, e
      }, {}), t.on("remove", function () {
        j(n.dom.attributes, function (e) {
          return Qn(n, e.name), 0
        }), Yn(n, r)
      }), t.ui.styleSheetLoader = (o = n, i = t, Kr.forElement(o, {
        contentCssCors: i.getParam("content_css_cors"),
        referrerPolicy: wc(i)
      })), t.getParam("inline") ? t.inline = !0 : (t.orgVisibility = t.getElement().style.visibility, t.getElement().style.visibility = "hidden"), (a = t.getElement().form || BN.getParent(e, "form")) && (t.formElement = a, t.getParam("hidden_input") && !Ln(t.getElement()) && (BN.insertAfter(BN.create("input", {
        type: "hidden",
        name: e
      }), e), t.hasHiddenInput = !0), t.formEventDelegate = function (e) {
        t.fire(e.type, e)
      }, BN.bind(a, "submit reset", t.formEventDelegate), t.on("reset", function () {
        t.resetContent()
      }), !t.getParam("submit_patch") || a.submit.nodeType || a.submit.length || a._mceOldSubmit || (a._mceOldSubmit = a.submit, a.submit = function () {
        return t.editorManager.triggerSave(), t.setDirty(!1), a._mceOldSubmit(a)
      })), t.windowManager = ub(t), t.notificationManager = ob(t), "xml" === t.getParam("encoding") && t.on("GetContent", function (e) {
        e.save && (e.content = BN.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), FN(t, t.suffix)) : BN.bind(window, "ready", u)
    },
    zN = function (e, t) {
      return n = t, qv(e).editor.addVisual(n);
      var n
    },
    jN = {
      "font-size": "size",
      "font-family": "face"
    },
    HN = function (n, t, e) {
      return Pm(At.fromDom(e), function (e) {
        return nr(t = e, n).orThunk(function () {
          return "font" === Lt(t) ? ge(jN, n).bind(function (e) {
            return Jn(t, e)
          }) : U.none()
        });
        var t
      }, function (e) {
        return Ot(At.fromDom(t), e)
      })
    },
    VN = function (o) {
      return function (r, e) {
        return U.from(e).map(At.fromDom).filter(Ft).bind(function (e) {
          return HN(o, r, e.dom).or((t = o, n = e.dom, U.from(Eu.DOM.getStyle(n, t, !0))));
          var t, n
        }).getOr("")
      }
    },
    qN = VN("font-size"),
    $N = a(function (e) {
      return e.replace(/[\'\"\\]/g, "").replace(/,\s+/g, ",")
    }, VN("font-family")),
    WN = function (e) {
      return Fl(e.getBody()).map(function (e) {
        var t = e.container();
        return In(t) ? t.parentNode : t
      })
    },
    KN = function (e, t) {
      return n = e, U.from(n.selection.getRng()).bind(function (e) {
        var t = n.getBody();
        return e.startContainer === t && 0 === e.startOffset ? U.none() : U.from(n.selection.getStart(!0))
      }).orThunk(N(WN, e)).map(At.fromDom).filter(Ft).map(t);
      var n
    },
    XN = function (e, t) {
      if (/^[0-9.]+$/.test(t)) {
        var n = parseInt(t, 10);
        if (1 <= n && n <= 7) {
          var r = (a = e, kt.explode(a.getParam("font_size_style_values", "xx-small,x-small,small,medium,large,x-large,xx-large"))),
            o = (i = e, kt.explode(i.getParam("font_size_classes", "")));
          return o ? o[n - 1] || t : r[n - 1] || t
        }
        return t
      }
      return t;
      var i, a
    },
    YN = function (e, t) {
      var n, r = XN(e, t);
      e.formatter.toggle("fontname", {
        value: (n = r.split(/\s*,\s*/), z(n, function (e) {
          return -1 === e.indexOf(" ") || Ve(e, '"') || Ve(e, "'") ? e : "'" + e + "'"
        }).join(","))
      }), e.nodeChanged()
    },
    GN = function (e, t) {
      var n, r, o, i, a = "string" != typeof (n = t) ? (r = kt.extend({
        paste: n.paste,
        data: {
          paste: n.paste
        }
      }, n), {
        content: n.content,
        details: r
      }) : {
        content: n,
        details: {}
      };
      o = a.content, i = a.details, Vv(e).editor.insertContent(o, i)
    },
    JN = kt.each,
    QN = kt.map,
    ZN = kt.inArray,
    eE = (tE.prototype.execCommand = function (t, n, r, e) {
      var o, i, a = !1,
        u = this;
      if (!u.editor.removed) {
        if (/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t) || e && e.skip_focus ? (i = u.editor, dm(i).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 (JN(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 (c) {}
        return !!a && (u.editor.fire("ExecCommand", {
          command: t,
          ui: n,
          value: r
        }), !0)
      }
    }, tE.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 (n) {}
        return !1
      }
    }, tE.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 (n) {}
      }
    }, tE.prototype.addCommands = function (e, n) {
      void 0 === n && (n = "exec");
      var r = this;
      JN(e, function (t, e) {
        JN(e.toLowerCase().split(","), function (e) {
          r.commands[n][e] = t
        })
      })
    }, tE.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)
      }
    }, tE.prototype.queryCommandSupported = function (e) {
      if (e = e.toLowerCase(), this.commands.exec[e]) return !0;
      try {
        return this.editor.getDoc().queryCommandSupported(e)
      } catch (t) {}
      return !1
    }, tE.prototype.addQueryStateHandler = function (e, t, n) {
      var r = this;
      e = e.toLowerCase(), this.commands.state[e] = function () {
        return t.call(n || r.editor)
      }
    }, tE.prototype.addQueryValueHandler = function (e, t, n) {
      var r = this;
      e = e.toLowerCase(), this.commands.value[e] = function () {
        return t.call(n || r.editor)
      }
    }, tE.prototype.hasCustomCommand = function (e) {
      return e = e.toLowerCase(), !!this.commands.exec[e]
    }, tE.prototype.execNativeCommand = function (e, t, n) {
      return t === undefined && (t = !1), n === undefined && (n = null), this.editor.getDoc().execCommand(e, t, n)
    }, tE.prototype.isFormatMatch = function (e) {
      return this.editor.formatter.match(e)
    }, tE.prototype.toggleFormat = function (e, t) {
      this.editor.formatter.toggle(e, t ? {
        value: t
      } : undefined), this.editor.nodeChanged()
    }, tE.prototype.storeSelection = function (e) {
      this.selectionBookmark = this.editor.selection.getBookmark(e)
    }, tE.prototype.restoreSelection = function () {
      this.editor.selection.moveToBookmark(this.selectionBookmark)
    }, tE.prototype.setupCommands = function (i) {
      var a = this;
      this.addCommands({
        "mceResetDesignMode,mceBeginUndoLevel": function () {},
        "mceEndUndoLevel,mceAddUndoLevel": function () {
          i.undoManager.add()
        },
        "Cut,Copy,Paste": function (e) {
          var t, n, r = i.getDoc();
          try {
            a.execNativeCommand(e)
          } catch (o) {
            t = !0
          }
          "paste" !== e || r.queryCommandEnabled(e) || (t = !0), !t && r.queryCommandSupported(e) || (n = i.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead."), wt.mac && (n = n.replace(/Ctrl\+/g, "\u2318+")), i.notificationManager.open({
            text: n,
            type: "error"
          }))
        },
        unlink: function () {
          var e;
          i.selection.isCollapsed() ? (e = i.dom.getParent(i.selection.getStart(), "a")) && i.dom.remove(e, !0) : i.formatter.remove("link")
        },
        "JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone": function (e) {
          var t = e.substring(7);
          "full" === t && (t = "justify"), JN("left,center,right,justify".split(","), function (e) {
            t !== e && i.formatter.remove("align" + e)
          }), "none" !== t && a.toggleFormat("align" + t)
        },
        "InsertUnorderedList,InsertOrderedList": function (e) {
          var t;
          a.execNativeCommand(e);
          var n = i.dom.getParent(i.selection.getNode(), "ol,ul");
          n && (t = n.parentNode, /^(H[1-6]|P|ADDRESS|PRE)$/.test(t.nodeName) && (a.storeSelection(), i.dom.split(t, n), a.restoreSelection()))
        },
        "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function (e) {
          a.toggleFormat(e)
        },
        "ForeColor,HiliteColor": function (e, t, n) {
          a.toggleFormat(e, n)
        },
        FontName: function (e, t, n) {
          YN(i, n)
        },
        FontSize: function (e, t, n) {
          var r, o;
          o = n, (r = i).formatter.toggle("fontsize", {
            value: XN(r, o)
          }), r.nodeChanged()
        },
        LineHeight: function (e, t, n) {
          var r, o;
          o = n, (r = i).undoManager.transact(function () {
            r.formatter.toggle("lineheight", {
              value: String(o)
            }), r.nodeChanged()
          })
        },
        RemoveFormat: function (e) {
          i.formatter.remove(e)
        },
        mceBlockQuote: function () {
          a.toggleFormat("blockquote")
        },
        FormatBlock: function (e, t, n) {
          return a.toggleFormat(n || "p")
        },
        mceCleanup: function () {
          var e = i.selection.getBookmark();
          i.setContent(i.getContent()), i.selection.moveToBookmark(e)
        },
        mceRemoveNode: function (e, t, n) {
          var r = n || i.selection.getNode();
          r !== i.getBody() && (a.storeSelection(), i.dom.remove(r, !0), a.restoreSelection())
        },
        mceSelectNodeDepth: function (e, t, n) {
          var r = 0;
          i.dom.getParent(i.selection.getNode(), function (e) {
            if (1 === e.nodeType && r++ === n) return i.selection.select(e), !1
          }, i.getBody())
        },
        mceSelectNode: function (e, t, n) {
          i.selection.select(n)
        },
        mceInsertContent: function (e, t, n) {
          GN(i, n)
        },
        mceInsertRawHTML: function (e, t, n) {
          i.selection.setContent("tiny_mce_marker");
          var r = i.getContent();
          i.setContent(r.replace(/tiny_mce_marker/g, function () {
            return n
          }))
        },
        mceInsertNewLine: function (e, t, n) {
          MS(i, n)
        },
        mceToggleFormat: function (e, t, n) {
          a.toggleFormat(n)
        },
        mceSetContent: function (e, t, n) {
          i.setContent(n)
        },
        "Indent,Outdent": function (e) {
          _w(i, e)
        },
        mceRepaint: function () {},
        InsertHorizontalRule: function () {
          i.execCommand("mceInsertContent", !1, "<hr />")
        },
        mceToggleVisualAid: function () {
          i.hasVisual = !i.hasVisual, i.addVisual()
        },
        mceReplaceContent: function (e, t, n) {
          i.execCommand("mceInsertContent", !1, n.replace(/\{\$selection\}/g, i.selection.getContent({
            format: "text"
          })))
        },
        mceInsertLink: function (e, t, n) {
          "string" == typeof n && (n = {
            href: n
          });
          var r = i.dom.getParent(i.selection.getNode(), "a");
          n.href = n.href.replace(/ /g, "%20"), r && n.href || i.formatter.remove("link"), n.href && i.formatter.apply("link", n, r)
        },
        selectAll: function () {
          var e, t = i.dom.getParent(i.selection.getStart(), Hn);
          t && ((e = i.dom.createRng()).selectNodeContents(t), i.selection.setRng(e))
        },
        mceNewDocument: function () {
          i.setContent("")
        },
        InsertLineBreak: function (e, t, n) {
          return SS(i, n), !0
        }
      });
      var e = function (r) {
        return function () {
          var e = i.selection,
            t = e.isCollapsed() ? [i.dom.getParent(e.getNode(), i.dom.isBlock)] : e.getSelectedBlocks(),
            n = QN(t, function (e) {
              return !!i.formatter.matchNode(e, r)
            });
          return -1 !== ZN(n, !0)
        }
      };
      a.addCommands({
        JustifyLeft: e("alignleft"),
        JustifyCenter: e("aligncenter"),
        JustifyRight: e("alignright"),
        JustifyFull: e("alignjustify"),
        "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function (e) {
          return a.isFormatMatch(e)
        },
        mceBlockQuote: function () {
          return a.isFormatMatch("blockquote")
        },
        Outdent: function () {
          return Nw(i)
        },
        "InsertUnorderedList,InsertOrderedList": function (e) {
          var t = i.dom.getParent(i.selection.getNode(), "ul,ol");
          return t && ("insertunorderedlist" === e && "UL" === t.tagName || "insertorderedlist" === e && "OL" === t.tagName)
        }
      }, "state"), a.addCommands({
        Undo: function () {
          i.undoManager.undo()
        },
        Redo: function () {
          i.undoManager.redo()
        }
      }), a.addQueryValueHandler("FontName", function () {
        return KN(t = i, function (e) {
          return $N(t.getBody(), e.dom)
        }).getOr("");
        var t
      }, this), a.addQueryValueHandler("FontSize", function () {
        return KN(t = i, function (e) {
          return qN(t.getBody(), e.dom)
        }).getOr("");
        var t
      }, this), a.addQueryValueHandler("LineHeight", function () {
        return KN(t = i, function (n) {
          var e = At.fromDom(t.getBody());
          return Pm(n, function (e) {
            return nr(e, "line-height")
          }, N(Ot, e)).getOrThunk(function () {
            var e = parseFloat(er(n, "line-height")),
              t = parseFloat(er(n, "font-size"));
            return String(e / t)
          })
        }).getOr("");
        var t
      }, this)
    }, tE);

  function tE(e) {
    this.commands = {
      state: {},
      exec: {},
      value: {}
    }, this.editor = e, this.setupCommands(e)
  }
  var nE = "data-mce-contenteditable",
    rE = function (e, t, n) {
      var r, o;
      Xu(e, t) && !1 === n ? (o = t, Vu(r = e) ? r.dom.classList.remove(o) : $u(r, o), Ku(r)) : n && Wu(e, t)
    },
    oE = function (e, t, n) {
      try {
        e.getDoc().execCommand(t, !1, String(n))
      } catch (r) {}
    },
    iE = function (e, t) {
      e.dom.contentEditable = t ? "true" : "false"
    },
    aE = function (e, t) {
      var n, r, o, i = At.fromDom(e.getBody());
      rE(i, "mce-content-readonly", t), t ? (e.selection.controlSelection.hideResizeRect(), e._selectionOverrides.hideFakeCaret(), o = e, U.from(o.selection.getNode()).each(function (e) {
        e.removeAttribute("data-mce-selected")
      }), e.readonly = !0, iE(i, !1), W(Gu(i, '*[contenteditable="true"]'), function (e) {
        Xn(e, nE, "true"), iE(e, !1)
      })) : (e.readonly = !1, iE(i, !0), W(Gu(i, "*[" + nE + '="true"]'), function (e) {
        Qn(e, nE), iE(e, !0)
      }), oE(e, "StyleWithCSS", !1), oE(e, "enableInlineTableEditing", !1), oE(e, "enableObjectResizing", !1), (Em(r = e) || Nm(r)) && e.focus(), (n = e).selection.setRng(n.selection.getRng()), e.nodeChanged())
    },
    uE = function (e) {
      return e.readonly
    },
    sE = function (t) {
      t.parser.addAttributeFilter("contenteditable", function (e) {
        uE(t) && W(e, function (e) {
          e.attr(nE, e.attr("contenteditable")), e.attr("contenteditable", "false")
        })
      }), t.serializer.addAttributeFilter(nE, function (e) {
        uE(t) && W(e, function (e) {
          e.attr("contenteditable", e.attr(nE))
        })
      }), t.serializer.addTempAttr(nE)
    },
    cE = function (a, u) {
      var e, t;
      "click" !== u.type || ud.metaKeyPressed(u) || (e = At.fromDom(u.target), t = a, Or(e, "a", function (e) {
        return Ot(e, At.fromDom(t.getBody()))
      }).bind(function (e) {
        return Jn(e, "href")
      }).each(function (e) {
        var t, n, r, o, i;
        u.preventDefault(), /^#/.test(e) ? (t = a.dom.select(e + ',[name="' + (Ve(n = e, r = "#") ? (o = n, i = r.length, o.substring(i)) : n) + '"]')).length && a.selection.scrollIntoView(t[0], !0) : window.open(e, "_blank", "rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes")
      }))
    },
    lE = kt.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", " "),
    fE = (dE.isNative = function (e) {
      return !!lE[e.toLowerCase()]
    }, dE.prototype.fire = function (e, t) {
      var n = e.toLowerCase(),
        r = t || {};
      r.type = n, r.target || (r.target = this.scope), r.preventDefault || (r.preventDefault = function () {
        r.isDefaultPrevented = k
      }, r.stopPropagation = function () {
        r.isPropagationStopped = k
      }, r.stopImmediatePropagation = function () {
        r.isImmediatePropagationStopped = k
      }, r.isDefaultPrevented = C, r.isPropagationStopped = C, r.isImmediatePropagationStopped = C), 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.once && this.off(n, u.func), r.isImmediatePropagationStopped()) return r.stopPropagation(), r;
          if (!1 === u.func.call(this.scope, r)) return r.preventDefault(), r
        }
      return r
    }, dE.prototype.on = function (e, t, n, r) {
      if (!1 === t && (t = C), t) {
        var o = {
          func: t
        };
        r && kt.extend(o, r);
        for (var i = e.toLowerCase().split(" "), a = i.length; a--;) {
          var u = i[a],
            s = this.bindings[u];
          s || (s = this.bindings[u] = [], this.toggleEvent(u, !0)), n ? s.unshift(o) : s.push(o)
        }
      }
      return this
    }, dE.prototype.off = function (e, t) {
      var n = this;
      if (e)
        for (var r = e.toLowerCase().split(" "), o = r.length; o--;) {
          var i = r[o],
            a = this.bindings[i];
          if (!i) return ue(this.bindings, function (e, t) {
            n.toggleEvent(t, !1), delete n.bindings[t]
          }), this;
          if (a) {
            if (t)
              for (var u = a.length; u--;) a[u].func === t && (a = a.slice(0, u).concat(a.slice(u + 1)), this.bindings[i] = a);
            else a.length = 0;
            a.length || (this.toggleEvent(e, !1), delete this.bindings[i])
          }
        } else ue(this.bindings, function (e, t) {
          n.toggleEvent(t, !1)
        }), this.bindings = {};
      return this
    }, dE.prototype.once = function (e, t, n) {
      return this.on(e, t, n, {
        once: !0
      })
    }, dE.prototype.has = function (e) {
      return e = e.toLowerCase(), !(!this.bindings[e] || 0 === this.bindings[e].length)
    }, dE);

  function dE(e) {
    this.bindings = {}, this.settings = e || {}, this.scope = this.settings.scope || this, this.toggleEvent = this.settings.toggleEvent || C
  }
  var mE, pE = function (n) {
      return n._eventDispatcher || (n._eventDispatcher = new fE({
        scope: n,
        toggleEvent: function (e, t) {
          fE.isNative(e) && n.toggleNativeEvent && n.toggleNativeEvent(e, t)
        }
      })), n._eventDispatcher
    },
    gE = {
      fire: function (e, t, n) {
        if (this.removed && "remove" !== e && "detach" !== e) return t;
        var r = pE(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 pE(this).on(e, t, n)
      },
      off: function (e, t) {
        return pE(this).off(e, t)
      },
      once: function (e, t) {
        return pE(this).once(e, t)
      },
      hasEventListeners: function (e) {
        return pE(this).has(e)
      }
    },
    hE = Eu.DOM,
    vE = function (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 = Ec(e);
      return n ? (e.eventRoot || (e.eventRoot = hE.select(n)[0]), e.eventRoot) : e.getBody()
    },
    yE = function (e, t, n) {
      var r;
      (r = e).hidden || uE(r) ? uE(e) && cE(e, n) : e.fire(t, n)
    },
    bE = function (i, a) {
      var e;
      if (i.delegates || (i.delegates = {}), !i.delegates[a] && !i.removed) {
        var t = vE(i, a);
        if (Ec(i)) {
          if (mE || (mE = {}, i.editorManager.on("removeEditor", function () {
              i.editorManager.activeEditor || mE && (ue(mE, function (e, t) {
                i.dom.unbind(vE(i, t))
              }), mE = null)
            })), mE[a]) return;
          e = function (e) {
            for (var t = e.target, n = i.editorManager.get(), r = n.length; r--;) {
              var o = n[r].getBody();
              o !== t && !hE.isChildOf(t, o) || yE(n[r], a, e)
            }
          }, mE[a] = e, hE.bind(t, a, e)
        } else e = function (e) {
          yE(i, a, e)
        }, hE.bind(t, a, e), i.delegates[a] = e
      }
    },
    CE = ke(ke({}, gE), {
      bindPendingEventDelegates: function () {
        var t = this;
        kt.each(t._pendingNativeEvents, function (e) {
          bE(t, e)
        })
      },
      toggleNativeEvent: function (e, t) {
        var n = this;
        "focus" !== e && "blur" !== e && (t ? n.initialized ? bE(n, e) : n._pendingNativeEvents ? n._pendingNativeEvents.push(e) : n._pendingNativeEvents = [e] : n.initialized && (n.dom.unbind(vE(n, e), e, n.delegates[e]), delete n.delegates[e]))
      },
      unbindAllNativeEvents: function () {
        var n = this,
          e = n.getBody(),
          t = n.dom;
        n.delegates && (ue(n.delegates, function (e, t) {
          n.dom.unbind(vE(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()))
      }
    }),
    wE = ["design", "readonly"],
    xE = function (e, t, n, r) {
      var o, i = n[t.get()],
        a = n[r];
      try {
        a.activate()
      } catch (Ok) {
        return void console.error("problem while activating editor mode " + r + ":", Ok)
      }
      i.deactivate(), i.editorReadOnly !== a.editorReadOnly && aE(e, a.editorReadOnly), t.set(r), o = r, e.fire("SwitchMode", {
        mode: o
      })
    },
    SE = function (t) {
      var e, n, r = Ou("design"),
        o = Ou({
          design: {
            activate: V,
            deactivate: V,
            editorReadOnly: !1
          },
          readonly: {
            activate: V,
            deactivate: V,
            editorReadOnly: !0
          }
        });
      return (e = t).serializer ? sE(e) : e.on("PreInit", function () {
        sE(e)
      }), (n = t).on("ShowCaret", function (e) {
        uE(n) && e.preventDefault()
      }), n.on("ObjectSelected", function (e) {
        uE(n) && e.preventDefault()
      }), {
        isReadOnly: function () {
          return uE(t)
        },
        set: function (e) {
          return function (e, t, n, r) {
            if (r !== n.get()) {
              if (!he(t, r)) throw new Error("Editor mode '" + r + "' is invalid");
              e.initialized ? xE(e, n, t, r) : e.on("init", function () {
                return xE(e, n, t, r)
              })
            }
          }(t, o.get(), r, e)
        },
        get: function () {
          return r.get()
        },
        register: function (e, t) {
          o.set(function (e, t, n) {
            var r;
            if (M(wE, t)) throw new Error("Cannot override default mode " + t);
            return ke(ke({}, e), ((r = {})[t] = ke(ke({}, n), {
              deactivate: function () {
                try {
                  n.deactivate()
                } catch (Ok) {
                  console.error("problem while deactivating editor mode " + t + ":", Ok)
                }
              }
            }), r))
          }(o.get(), e, t))
        }
      }
    },
    NE = kt.each,
    EE = kt.explode,
    kE = {
      f1: 112,
      f2: 113,
      f3: 114,
      f4: 115,
      f5: 116,
      f6: 117,
      f7: 118,
      f8: 119,
      f9: 120,
      f10: 121,
      f11: 122,
      f12: 123
    },
    _E = kt.makeMap("alt,ctrl,shift,meta,access"),
    AE = (RE.prototype.add = function (e, n, t, r) {
      var o = this,
        i = o.normalizeCommandFunc(t);
      return NE(EE(kt.trim(e)), function (e) {
        var t = o.createShortcut(e, n, i, r);
        o.shortcuts[t.id] = t
      }), !0
    }, RE.prototype.remove = function (e) {
      var t = this.createShortcut(e);
      return !!this.shortcuts[t.id] && (delete this.shortcuts[t.id], !0)
    }, RE.prototype.normalizeCommandFunc = function (e) {
      var t = this,
        n = e;
      return "string" == typeof n ? function () {
        t.editor.execCommand(n, !1, null)
      } : kt.isArray(n) ? function () {
        t.editor.execCommand(n[0], n[1], n[2])
      } : n
    }, RE.prototype.parseShortcut = function (e) {
      var t, n = {};
      NE(EE(e.toLowerCase(), "+"), function (e) {
        e in _E ? n[e] = !0 : /^[0-9]{2,}$/.test(e) ? n.keyCode = parseInt(e, 10) : (n.charCode = e.charCodeAt(0), n.keyCode = kE[e] || e.toUpperCase().charCodeAt(0))
      });
      var r = [n.keyCode];
      for (t in _E) n[t] ? r.push(t) : n[t] = !1;
      return n.id = r.join(","), n.access && (n.alt = !0, wt.mac ? n.ctrl = !0 : n.shift = !0), n.meta && (wt.mac ? n.meta = !0 : (n.ctrl = !0, n.meta = !1)), n
    }, RE.prototype.createShortcut = function (e, t, n, r) {
      var o = kt.map(EE(e, ">"), this.parseShortcut);
      return o[o.length - 1] = kt.extend(o[o.length - 1], {
        func: n,
        scope: r || this.editor
      }), kt.extend(o[0], {
        desc: this.editor.translate(t),
        subpatterns: o.slice(1)
      })
    }, RE.prototype.hasModifier = function (e) {
      return e.altKey || e.ctrlKey || e.metaKey
    }, RE.prototype.isFunctionKey = function (e) {
      return "keydown" === e.type && 112 <= e.keyCode && e.keyCode <= 123
    }, RE.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)
    }, RE.prototype.executeShortcutAction = function (e) {
      return e.func ? e.func.call(e.scope) : null
    }, RE);

  function RE(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() || (NE(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 TE = function () {
      var e, t, n, r, o, i, a, u, s = (t = {}, n = {}, r = {}, o = {}, i = {}, a = {}, {
        addButton: (u = function (n, r) {
          return function (e, t) {
            return n[e.toLowerCase()] = ke(ke({}, t), {
              type: r
            })
          }
        })(e = {}, "button"),
        addGroupToolbarButton: u(e, "grouptoolbarbutton"),
        addToggleButton: u(e, "togglebutton"),
        addMenuButton: u(e, "menubutton"),
        addSplitButton: u(e, "splitbutton"),
        addMenuItem: u(t, "menuitem"),
        addNestedMenuItem: u(t, "nestedmenuitem"),
        addToggleMenuItem: u(t, "togglemenuitem"),
        addAutocompleter: u(n, "autocompleter"),
        addContextMenu: u(o, "contextmenu"),
        addContextToolbar: u(i, "contexttoolbar"),
        addContextForm: u(i, "contextform"),
        addSidebar: u(a, "sidebar"),
        addIcon: function (e, t) {
          return r[e.toLowerCase()] = t
        },
        getAll: function () {
          return {
            buttons: e,
            menuItems: t,
            icons: r,
            popups: n,
            contextMenus: o,
            contextToolbars: i,
            sidebars: a
          }
        }
      });
      return {
        addAutocompleter: s.addAutocompleter,
        addButton: s.addButton,
        addContextForm: s.addContextForm,
        addContextMenu: s.addContextMenu,
        addContextToolbar: s.addContextToolbar,
        addIcon: s.addIcon,
        addMenuButton: s.addMenuButton,
        addMenuItem: s.addMenuItem,
        addNestedMenuItem: s.addNestedMenuItem,
        addSidebar: s.addSidebar,
        addSplitButton: s.addSplitButton,
        addToggleButton: s.addToggleButton,
        addGroupToolbarButton: s.addGroupToolbarButton,
        addToggleMenuItem: s.addToggleMenuItem,
        getAll: s.getAll
      }
    },
    DE = kt.each,
    OE = kt.trim,
    BE = "source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),
    PE = {
      ftp: 21,
      http: 80,
      https: 443,
      mailto: 25
    },
    LE = (IE.parseDataUri = function (e) {
      var t, n = decodeURIComponent(e).split(","),
        r = /data:([^;]+)/.exec(n[0]);
      return r && (t = r[1]), {
        type: t,
        data: n[1]
      }
    }, IE.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
    }, IE.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()
    }, IE.prototype.toRelative = function (e) {
      var t;
      if ("./" === e) return e;
      var n = new IE(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)
    }, IE.prototype.toAbsolute = function (e, t) {
      var n = new IE(e, {
        base_uri: this
      });
      return n.getURI(t && this.isSameOrigin(n))
    }, IE.prototype.isSameOrigin = function (e) {
      if (this.host == e.host && this.protocol == e.protocol) {
        if (this.port == e.port) return !0;
        var t = PE[this.protocol];
        if (t && (this.port || t) == (e.port || t)) return !0
      }
      return !1
    }, IE.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
    }, IE.prototype.toAbsPath = function (e, t) {
      var n, r, o = 0,
        i = [],
        a = /\/$/.test(t) ? "/" : "",
        u = e.split("/"),
        s = t.split("/");
      for (DE(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 ? Z(i).join("/") : u.slice(0, n).join("/") + "/" + Z(i).join("/")).indexOf("/") && (r = "/" + r), a && r.lastIndexOf("/") !== r.length - 1 && (r += a), r
    }, IE.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
    }, IE);

  function IE(e, t) {
    e = OE(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 IE(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 = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e), DE(BE, 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 = ""))
  }
  var ME = Eu.DOM,
    FE = kt.extend,
    UE = kt.each,
    zE = kt.resolve,
    jE = wt.ie,
    HE = (VE.prototype.render = function () {
      UN(this)
    }, VE.prototype.focus = function (e) {
      var t, n;
      n = e, (t = this).removed || (n ? _m : km)(t)
    }, VE.prototype.hasFocus = function () {
      return Em(this)
    }, VE.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+$/, "")) ? zE(r) : 0, o = zE(o), this.callbackLookup = this.callbackLookup || {}, this.callbackLookup[e] = {
        func: o,
        scope: r
      }), o.apply(r || this, t)
    }, VE.prototype.translate = function (e) {
      return Iu.translate(e)
    }, VE.prototype.getParam = function (e, t, n) {
      return Xy(this, e, t, n)
    }, VE.prototype.hasPlugin = function (e, t) {
      return !(!M(Ac(this).split(/[ ,]/), e) || t && ib.get(e) === undefined)
    }, VE.prototype.nodeChanged = function (e) {
      this._nodeChangeDispatcher.nodeChanged(e)
    }, VE.prototype.addCommand = function (e, t, n) {
      this.editorCommands.addCommand(e, t, n)
    }, VE.prototype.addQueryStateHandler = function (e, t, n) {
      this.editorCommands.addQueryStateHandler(e, t, n)
    }, VE.prototype.addQueryValueHandler = function (e, t, n) {
      this.editorCommands.addQueryValueHandler(e, t, n)
    }, VE.prototype.addShortcut = function (e, t, n, r) {
      this.shortcuts.add(e, t, n, r)
    }, VE.prototype.execCommand = function (e, t, n, r) {
      return this.editorCommands.execCommand(e, t, n, r)
    }, VE.prototype.queryCommandState = function (e) {
      return this.editorCommands.queryCommandState(e)
    }, VE.prototype.queryCommandValue = function (e) {
      return this.editorCommands.queryCommandValue(e)
    }, VE.prototype.queryCommandSupported = function (e) {
      return this.editorCommands.queryCommandSupported(e)
    }, VE.prototype.show = function () {
      this.hidden && (this.hidden = !1, this.inline ? this.getBody().contentEditable = "true" : (ME.show(this.getContainer()), ME.hide(this.id)), this.load(), this.fire("show"))
    }, VE.prototype.hide = function () {
      var e = this,
        t = e.getDoc();
      e.hidden || (jE && t && !e.inline && t.execCommand("SelectAll"), e.save(), e.inline ? (e.getBody().contentEditable = "false", e === e.editorManager.focusedEditor && (e.editorManager.focusedEditor = null)) : (ME.hide(e.getContainer()), ME.setStyle(e.id, "display", e.orgDisplay)), e.hidden = !0, e.fire("hide"))
    }, VE.prototype.isHidden = function () {
      return !!this.hidden
    }, VE.prototype.setProgressState = function (e, t) {
      this.fire("ProgressState", {
        state: e,
        time: t
      })
    }, VE.prototype.load = function (e) {
      var t = this.getElement();
      if (this.removed) return "";
      if (t) {
        (e = e || {}).load = !0;
        var n = Ln(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
      }
    }, VE.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, Ln(o) ? o.value = t : (!e.is_removing && r.inline || (o.innerHTML = t), (n = ME.getParent(r.id, "form")) && UE(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
    }, VE.prototype.setContent = function (e, t) {
      return ky(this, e, t)
    }, VE.prototype.getContent = function (e) {
      return Ey(this, e)
    }, VE.prototype.insertContent = function (e, t) {
      t && (e = FE({
        content: e
      }, t)), this.execCommand("mceInsertContent", !1, e)
    }, VE.prototype.resetContent = function (e) {
      e === undefined ? ky(this, this.startContent, {
        format: "raw"
      }) : ky(this, e), this.undoManager.reset(), this.setDirty(!1), this.nodeChanged()
    }, VE.prototype.isDirty = function () {
      return !this.isNotDirty
    }, VE.prototype.setDirty = function (e) {
      var t = !this.isNotDirty;
      this.isNotDirty = !e, e && e !== t && this.fire("dirty")
    }, VE.prototype.getContainer = function () {
      return this.container || (this.container = ME.get(this.editorContainer || this.id + "_parent")), this.container
    }, VE.prototype.getContentAreaContainer = function () {
      return this.contentAreaContainer
    }, VE.prototype.getElement = function () {
      return this.targetElm || (this.targetElm = ME.get(this.id)), this.targetElm
    }, VE.prototype.getWin = function () {
      var e;
      return this.contentWindow || (e = this.iframeElement) && (this.contentWindow = e.contentWindow), this.contentWindow
    }, VE.prototype.getDoc = function () {
      var e;
      return this.contentDocument || (e = this.getWin()) && (this.contentDocument = e.document), this.contentDocument
    }, VE.prototype.getBody = function () {
      var e = this.getDoc();
      return this.bodyElement || (e ? e.body : null)
    }, VE.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) : e = this.documentBaseURI.toAbsolute(e, r.remove_script_host)
    }, VE.prototype.addVisual = function (e) {
      zN(this, e)
    }, VE.prototype.remove = function () {
      Ry(this)
    }, VE.prototype.destroy = function (e) {
      Ty(this, e)
    }, VE.prototype.uploadImages = function (e) {
      return this.editorUpload.uploadImages(e)
    }, VE.prototype._scanForImages = function () {
      return this.editorUpload.scanForImages()
    }, VE.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")
    }, VE.prototype.addSidebar = function () {
      throw new Error("editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead")
    }, VE.prototype.addMenuItem = function () {
      throw new Error("editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead")
    }, VE.prototype.addContextToolbar = function () {
      throw new Error("editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead")
    }, VE);

  function VE(e, t, n) {
    var r = this;
    this.plugins = {}, this.contentCSS = [], this.contentStyles = [], this.loadedCSS = {}, this.isNotDirty = !1, this.editorManager = n, this.documentBaseUrl = n.documentBaseURL, FE(this, CE), this.settings = Wy(this, e, this.documentBaseUrl, n.defaultSettings, t), 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 && (Ru.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy), Eu.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)), Uu.languageLoad = this.settings.language_load, Uu.baseURL = n.baseURL, this.id = e, this.setDirty(!1), this.documentBaseURI = new LE(this.settings.document_base_url, {
      base_uri: this.baseUri
    }), this.baseURI = this.baseUri, this.inline = !!this.settings.inline, this.shortcuts = new AE(this), this.editorCommands = new eE(this), this.settings.cache_suffix && (wt.cacheSuffix = this.settings.cache_suffix.replace(/^[\?\&]+/, "")), this.ui = {
      registry: TE(),
      styleSheetLoader: undefined,
      show: V,
      hide: V,
      enable: V,
      disable: V,
      isDisabled: C
    };
    var o = SE(this);
    this.mode = o, this.setMode = o.set, n.fire("SetupEditor", {
      editor: this
    }), this.execCallback("setup", this), this.$ = hu.overrideDefaults(function () {
      return {
        context: r.inline ? r.getBody() : r.getDoc(),
        element: r.getBody()
      }
    })
  }
  var qE, $E = Eu.DOM,
    WE = kt.explode,
    KE = kt.each,
    XE = kt.extend,
    YE = 0,
    GE = !1,
    JE = [],
    QE = [],
    ZE = function (t) {
      var n = t.type;
      KE(rk.get(), function (e) {
        switch (n) {
          case "scroll":
            e.fire("ScrollWindow", t);
            break;
          case "resize":
            e.fire("ResizeWindow", t)
        }
      })
    },
    ek = function (e) {
      e !== GE && (e ? hu(window).on("resize scroll", ZE) : hu(window).off("resize scroll", ZE), GE = e)
    },
    tk = function (t) {
      var e = QE;
      delete JE[t.id];
      for (var n = 0; n < JE.length; n++)
        if (JE[n] === t) {
          JE.splice(n, 1);
          break
        } return QE = H(QE, function (e) {
        return t !== e
      }), rk.activeEditor === t && (rk.activeEditor = 0 < QE.length ? QE[0] : null), rk.focusedEditor === t && (rk.focusedEditor = null), e.length !== QE.length
    },
    nk = "CSS1Compat" !== document.compatMode,
    rk = ke(ke({}, gE), {
      baseURI: null,
      baseURL: null,
      defaultSettings: {},
      documentBaseURL: null,
      suffix: null,
      $: hu,
      majorVersion: "5",
      minorVersion: "6.2",
      releaseDate: "2020-12-08",
      editors: JE,
      i18n: Iu,
      activeEditor: null,
      focusedEditor: null,
      settings: {},
      setup: function () {
        var e, t = "",
          n = LE.getDocumentBaseUrl(document.location);
        /^[^:]+:\/\/\/?[^\/]+\//.test(n) && (n = n.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""), /[\/\\]$/.test(n) || (n += "/"));
        var r, o = window.tinymce || window.tinyMCEPreInit;
        if (o) e = o.base || o.baseURL, t = o.suffix;
        else {
          for (var i, a = document.getElementsByTagName("script"), u = 0; u < a.length; u++) {
            if ("" !== (i = a[u].src || "")) {
              var s = i.substring(i.lastIndexOf("/"));
              if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(i)) {
                -1 !== s.indexOf(".min") && (t = ".min"), e = i.substring(0, i.lastIndexOf("/"));
                break
              }
            }
          }!e && document.currentScript && (-1 !== (i = document.currentScript.src).indexOf(".min") && (t = ".min"), e = i.substring(0, i.lastIndexOf("/")))
        }
        this.baseURL = new LE(n).toAbsolute(e), this.documentBaseURL = n, this.baseURI = new LE(this.baseURL), this.suffix = t, (r = this).on("AddEditor", N(ym, r)), r.on("RemoveEditor", N(bm, r))
      },
      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;
        r !== undefined && ue(r, function (e, t) {
          Uu.PluginManager.urls[t] = e
        })
      },
      init: function (r) {
        var n, u = this,
          s = kt.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", " "),
          c = function (e) {
            var t = e.id;
            return t || (t = ge(e, "name").filter(function (e) {
              return !$E.get(e)
            }).getOrThunk($E.uniqueId), e.setAttribute("id", t)), t
          },
          l = function (e, t) {
            return t.constructor === RegExp ? t.test(e.className) : $E.hasClass(e, t)
          },
          f = function (e) {
            n = e
          },
          e = function () {
            var o, i = 0,
              a = [],
              n = function (e, t, n) {
                var r = new HE(e, t, u);
                a.push(r), r.on("init", function () {
                  ++i === o.length && f(a)
                }), r.targetElm = r.targetElm || n, r.render()
              };
            $E.unbind(window, "ready", e),
              function (e) {
                var t = r[e];
                if (t) t.apply(u, Array.prototype.slice.call(arguments, 2))
              }("onpageload"), o = hu.unique(function (t) {
                var n = [];
                if (wt.browser.isIE() && wt.browser.version.major < 11) return mb("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 (nk) return mb("Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."), [];
                if (t.types) return KE(t.types, function (e) {
                  n = n.concat($E.select(e.selector))
                }), n;
                if (t.selector) return $E.select(t.selector);
                if (t.target) return [t.target];
                switch (t.mode) {
                  case "exact":
                    var e = t.elements || "";
                    0 < e.length && KE(WE(e), function (t) {
                      var e = $E.get(t);
                      e ? n.push(e) : KE(document.forms, function (e) {
                        KE(e.elements, function (e) {
                          e.name === t && (t = "mce_editor_" + YE++, $E.setAttrib(e, "id", t), n.push(e))
                        })
                      })
                    });
                    break;
                  case "textareas":
                  case "specific_textareas":
                    KE($E.select("textarea"), function (e) {
                      t.editor_deselector && l(e, t.editor_deselector) || t.editor_selector && !l(e, t.editor_selector) || n.push(e)
                    })
                }
                return n
              }(r)), r.types ? KE(r.types, function (t) {
                kt.each(o, function (e) {
                  return !$E.is(e, t.selector) || (n(c(e), XE({}, r, t), e), !1)
                })
              }) : (kt.each(o, function (e) {
                var t;
                (t = u.get(e.id)) && t.initialized && !(t.getContainer() || t.getBody()).parentNode && (tk(t), t.unbindAllNativeEvents(), t.destroy(!0), t.removed = !0, t = null)
              }), 0 === (o = kt.grep(o, function (e) {
                return !u.get(e.id)
              })).length ? f([]) : KE(o, function (e) {
                var t;
                t = e, r.inline && t.tagName.toLowerCase() in s ? mb("Could not initialize inline editor on invalid inline target element", e) : n(c(e), r, e)
              }))
          };
        return u.settings = r, $E.bind(window, "ready", e), new Br(function (t) {
          n ? t(n) : f = function (e) {
            t(e)
          }
        })
      },
      get: function (t) {
        return 0 === arguments.length ? QE.slice(0) : q(t) ? Y(QE, function (e) {
          return e.id === t
        }).getOr(null) : O(t) && QE[t] ? QE[t] : null
      },
      add: function (e) {
        var n = this;
        return JE[e.id] === e || (null === n.get(e.id) && ("length" !== e.id && (JE[e.id] = e), JE.push(e), QE.push(e)), ek(!0), n.activeEditor = e, n.fire("AddEditor", {
          editor: e
        }), qE || (qE = function (e) {
          var t = n.fire("BeforeUnload");
          if (t.returnValue) return e.preventDefault(), e.returnValue = t.returnValue, t.returnValue
        }, window.addEventListener("beforeunload", qE))), e
      },
      createEditor: function (e, t) {
        return this.add(new HE(e, t, this))
      },
      remove: function (e) {
        var t, n, r = this;
        if (e) {
          if (!q(e)) return n = e, x(r.get(n.id)) ? null : (tk(n) && r.fire("RemoveEditor", {
            editor: n
          }), 0 === QE.length && window.removeEventListener("beforeunload", qE), n.remove(), ek(0 < QE.length), n);
          KE($E.select(e), function (e) {
            (n = r.get(e.id)) && r.remove(n)
          })
        } else
          for (t = QE.length - 1; 0 <= t; t--) r.remove(QE[t])
      },
      execCommand: function (e, t, n) {
        var r = this.get(n);
        switch (e) {
          case "mceAddEditor":
            return this.get(n) || new HE(n, this.settings, this).render(), !0;
          case "mceRemoveEditor":
            return r && r.remove(), !0;
          case "mceToggleEditor":
            return r ? (r.isHidden() ? r.show() : r.hide(), !0) : (this.execCommand("mceAddEditor", 0, n), !0)
        }
        return !!this.activeEditor && this.activeEditor.execCommand(e, t, n)
      },
      triggerSave: function () {
        KE(QE, function (e) {
          e.save()
        })
      },
      addI18n: function (e, t) {
        Iu.add(e, t)
      },
      translate: function (e) {
        return Iu.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 LE(this.documentBaseURL).toAbsolute(e.replace(/\/+$/, "")), this.baseURI = new LE(this.baseURL)
      }
    });
  rk.setup();
  var ok, ik, ak, uk, sk = Math.min,
    ck = Math.max,
    lk = Math.round,
    fk = function (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 += lk(s / 2)), "c" === c[1] && (r += lk(u / 2)), "b" === c[3] && (o -= a), "r" === c[4] && (r -= i), "c" === c[3] && (o -= lk(a / 2)), "c" === c[4] && (r -= lk(i / 2)), dk(r, o, i, a)
    },
    dk = function (e, t, n, r) {
      return {
        x: e,
        y: t,
        w: n,
        h: r
      }
    },
    mk = {
      inflate: function (e, t, n) {
        return dk(e.x - t, e.y - n, e.w + 2 * t, e.h + 2 * n)
      },
      relativePosition: fk,
      findBestRelativePosition: function (e, t, n, r) {
        for (var o, i = 0; i < r.length; i++)
          if ((o = fk(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 = ck(e.x, t.x),
          r = ck(e.y, t.y),
          o = sk(e.x + e.w, t.x + t.w),
          i = sk(e.y + e.h, t.y + t.h);
        return o - n < 0 || i - r < 0 ? null : dk(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 = ck(0, t.x - r),
          l = ck(0, t.y - o),
          f = ck(0, i - u),
          d = ck(0, a - s);
        return r += c, o += l, n && (i += c, a += l, r -= f, o -= d), dk(r, o, (i -= f) - r, (a -= d) - o)
      },
      create: dk,
      fromClientRect: function (e) {
        return dk(e.left, e.top, e.width, e.height)
      }
    },
    pk = (ok = {}, ik = {}, {
      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 (ok[r] !== undefined) return ok[r];
        var e = new Br(function (e, t) {
          var n = function (e, t, n) {
            void 0 === n && (n = 1e3);
            var r = !1,
              o = null,
              i = function (n) {
                return function () {
                  for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                  r || (r = !0, null !== o && (clearTimeout(o), o = null), n.apply(null, e))
                }
              },
              a = i(e),
              u = i(t);
            return {
              start: function () {
                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
                r || null !== o || (o = setTimeout(function () {
                  return u.apply(null, e)
                }, n))
              },
              resolve: a,
              reject: u
            }
          }(e, t);
          ik[r] = n.resolve, Ru.ScriptLoader.loadScript(o, function () {
            return n.start(a)
          }, function () {
            return n.reject(i)
          })
        });
        return ok[r] = e
      },
      add: function (e, t) {
        ik[e] !== undefined && (ik[e](t), delete ik[e]), ok[e] = Br.resolve(t)
      }
    }),
    gk = kt.each,
    hk = kt.extend,
    vk = function () {};
  vk.extend = ak = function (n) {
    var o = this.prototype,
      r = function () {
        var e, t, n;
        if (!uk && (this.init && this.init.apply(this, arguments), t = this.Mixins))
          for (e = t.length; e--;)(n = t[e]).init && n.init.apply(this, arguments)
      },
      t = function () {
        return this
      };
    uk = !0;
    var i = new this;
    return uk = !1, n.Mixins && (gk(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 && gk(n.Methods.split(","), function (e) {
      n[e] = t
    }), n.Properties && gk(n.Properties.split(","), function (e) {
      var t = "_" + e;
      n[e] = function (e) {
        return e !== undefined ? (this[t] = e, this) : this[t]
      }
    }), n.Statics && gk(n.Statics, function (e, t) {
      r[t] = e
    }), n.Defaults && o.Defaults && (n.Defaults = hk({}, o.Defaults, n.Defaults)), ue(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 = ak, r
  };
  var yk = Math.min,
    bk = Math.max,
    Ck = Math.round,
    wk = {
      serialize: function (e) {
        var t = JSON.stringify(e);
        return q(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 (t) {}
      }
    },
    xk = {
      callbacks: {},
      count: 0,
      send: function (t) {
        var n = this,
          r = Eu.DOM,
          o = t.count !== undefined ? t.count : 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++
      }
    },
    Sk = ke(ke({}, gE), {
      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) : qr.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 || "", Sk.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 && kt.each(e.requestheaders, function (e) {
            t.setRequestHeader(e.key, e.value)
          }), t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), (t = Sk.fire("beforeSend", {
            xhr: t,
            settings: e
          }).xhr).send(e.data), !e.async) return r();
        qr.setTimeout(r, 10)
      }
    }),
    Nk = kt.extend,
    Ek = (kk.sendRPC = function (e) {
      return (new kk).send(e)
    }, kk.prototype.send = function (e) {
      var n = e.error,
        r = e.success,
        o = Nk(this.settings, e);
      o.success = function (e, t) {
        void 0 === (e = wk.parse(e)) && (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 = wk.serialize({
        id: e.id || "c" + this.count++,
        method: e.method,
        params: e.params
      }), o.content_type = "application/json", Sk.send(o)
    }, kk);

  function kk(e) {
    this.settings = Nk({}, e), this.count = 0
  }
  try {
    var _k, Ak = "__storage_test__";
    (_k = window.localStorage).setItem(Ak, Ak), _k.removeItem(Ak)
  } catch (Ok) {
    _k = function () {
      return n = {}, r = [], e = {
        getItem: function (e) {
          var t = n[e];
          return t || null
        },
        setItem: function (e, t) {
          r.push(e), n[e] = String(t)
        },
        key: function (e) {
          return r[e]
        },
        removeItem: function (t) {
          r = r.filter(function (e) {
            return e === t
          }), delete n[t]
        },
        clear: function () {
          r = [], n = {}
        },
        length: 0
      }, Object.defineProperty(e, "length", {
        get: function () {
          return r.length
        },
        configurable: !1,
        enumerable: !1
      }), e;
      var n, r, e
    }()
  }
  var Rk, Tk = {
      geom: {
        Rect: mk
      },
      util: {
        Promise: Br,
        Delay: qr,
        Tools: kt,
        VK: ud,
        URI: LE,
        Class: vk,
        EventDispatcher: fE,
        Observable: gE,
        I18n: Iu,
        XHR: Sk,
        JSON: wk,
        JSONRequest: Ek,
        JSONP: xk,
        LocalStorage: _k,
        Color: function (e) {
          var n = {},
            u = 0,
            s = 0,
            c = 0,
            t = function (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 = bk(0, yk(t, 1)), n = bk(0, yk(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 = Ck(255 * (u + a)), s = Ck(255 * (s + a)), c = Ck(255 * (c + a))
                } else u = s = c = Ck(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
            };
          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 = yk(e /= 255, yk(t /= 255, n /= 255)), a = bk(e, bk(t, n)), i === a ? {
              h: 0,
              s: 0,
              v: 100 * (o = i)
            } : (r = (a - i) / a, {
              h: Ck(60 * ((e === i ? 3 : n === i ? 1 : 5) - (e === i ? t - n : n === i ? e - t : n - e) / ((o = a) - i))),
              s: Ck(100 * r),
              v: Ck(100 * o)
            });
            var e, t, n, r, o, i, a
          }, n.toHex = function () {
            var e = function (e) {
              return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e
            };
            return "#" + e(u) + e(s) + e(c)
          }, n.parse = t, n
        }
      },
      dom: {
        EventUtils: Ti,
        Sizzle: Ta,
        DomQuery: hu,
        TreeWalker: Xr,
        TextSeeker: fs,
        DOMUtils: Eu,
        ScriptLoader: Ru,
        RangeUtils: xd,
        Serializer: Ny,
        StyleSheetLoader: $r,
        ControlSelection: cd,
        BookmarkManager: od,
        Selection: Qv,
        Event: Ti.Event
      },
      html: {
        Styles: xi,
        Entities: ci,
        Node: Km,
        Schema: Ci,
        SaxParser: ip,
        DomParser: by,
        Writer: Gm,
        Serializer: Jm
      },
      Env: wt,
      AddOnManager: Uu,
      Annotator: td,
      Formatter: _b,
      UndoManager: Rb,
      EditorCommands: eE,
      WindowManager: ub,
      NotificationManager: ob,
      EditorObservable: CE,
      Shortcuts: AE,
      Editor: HE,
      FocusManager: mm,
      EditorManager: rk,
      DOM: Eu.DOM,
      ScriptLoader: Ru.ScriptLoader,
      PluginManager: ib,
      ThemeManager: ab,
      IconManager: Yy,
      Resource: pk,
      trim: kt.trim,
      isArray: kt.isArray,
      is: kt.is,
      toArray: kt.toArray,
      makeMap: kt.makeMap,
      each: kt.each,
      map: kt.map,
      grep: kt.grep,
      inArray: kt.inArray,
      extend: kt.extend,
      create: kt.create,
      walk: kt.walk,
      createNS: kt.createNS,
      resolve: kt.resolve,
      explode: kt.explode,
      _addCacheSuffix: kt._addCacheSuffix,
      isOpera: wt.opera,
      isWebKit: wt.webkit,
      isIE: wt.ie,
      isGecko: wt.gecko,
      isMac: wt.mac
    },
    Dk = kt.extend(rk, Tk);
  Rk = Dk, window.tinymce = Rk, window.tinyMCE = Rk,
    function (e) {
      if ("object" == typeof module) try {
        module.exports = e
      } catch (t) {}
    }(Dk)
}();