/*!
* TinyMCE
*
* Copyright (c) 2022 Ephox Corporation DBA Tiny Technologies, Inc.
* Licensed under the Tiny commercial license. See https://www.tiny.cloud/legal/
*
* Version: 6.0.2
*/
! function() {
"use strict";
var e = function(e) { if (null === e) return "null"; if (void 0 === e) return "undefined"; var t = typeof e; return "object" === t && (Array.prototype.isPrototypeOf(e) || e.constructor && "Array" === e.constructor.name) ? "array" : "object" === t && (String.prototype.isPrototypeOf(e) || e.constructor && "String" === e.constructor.name) ? "string" : t },
t = function(e) { return { eq: e } },
n = t((function(e, t) { return e === t })),
o = function(e) {
return t((function(t, n) {
if (t.length !== n.length) return !1;
for (var o = t.length, r = 0; r < o; r++)
if (!e.eq(t[r], n[r])) return !1;
return !0
}))
},
r = function(e) {
return t((function(r, s) {
var a = Object.keys(r),
i = Object.keys(s);
if (! function(e, n) { return function(e, n) { return t((function(t, o) { return e.eq(n(t), n(o)) })) }(o(e), (function(e) { return function(e, t) { return Array.prototype.slice.call(e).sort(t) }(e, n) })) }(n).eq(a, i)) return !1;
for (var l = a.length, d = 0; d < l; d++) { var c = a[d]; if (!e.eq(r[c], s[c])) return !1 }
return !0
}))
},
s = t((function(t, n) { if (t === n) return !0; var a = e(t); return a === e(n) && (function(e) { return -1 !== ["undefined", "boolean", "number", "string", "function", "xml", "null"].indexOf(e) }(a) ? t === n : "array" === a ? o(s).eq(t, n) : "object" === a && r(s).eq(t, n)) }));
const a = Object.getPrototypeOf,
i = (e, t, n) => { var o; return !!n(e, t.prototype) || (null === (o = e.constructor) || void 0 === o ? void 0 : o.name) === t.name },
l = e => t => (e => { const t = typeof e; return null === e ? "null" : "object" === t && Array.isArray(e) ? "array" : "object" === t && i(e, String, ((e, t) => t.isPrototypeOf(e))) ? "string" : t })(t) === e,
d = e => t => typeof t === e,
c = e => t => e === t,
u = (e, t) => f(e) && i(e, t, ((e, t) => a(e) === t)),
m = l("string"),
f = l("object"),
g = e => u(e, Object),
p = l("array"),
h = c(null),
b = d("boolean"),
v = c(void 0),
y = e => null == e,
C = e => !y(e),
x = d("function"),
w = d("number"),
k = (e, t) => {
if (p(e)) {
for (let n = 0, o = e.length; n < o; ++n)
if (!t(e[n])) return !1;
return !0
}
return !1
},
S = () => {},
_ = (e, t) => (...n) => e(t.apply(null, n)),
E = (e, t) => n => e(t(n)),
N = e => () => e,
R = e => e,
A = (e, t) => e === t;
function O(e, ...t) { return (...n) => { const o = t.concat(n); return e.apply(null, o) } }
const T = e => t => !e(t),
B = e => e(),
D = e => { e() },
L = N(!1),
P = N(!0);
class M {
constructor(e, t) { this.tag = e, this.value = t }
static some(e) { return new M(!0, e) }
static none() { return M.singletonNone }
fold(e, t) { return this.tag ? t(this.value) : e() }
isSome() { return this.tag }
isNone() { return !this.tag }
map(e) { return this.tag ? M.some(e(this.value)) : M.none() }
bind(e) { return this.tag ? e(this.value) : M.none() }
exists(e) { return this.tag && e(this.value) }
forall(e) { return !this.tag || e(this.value) }
filter(e) { return !this.tag || e(this.value) ? this : M.none() }
getOr(e) { return this.tag ? this.value : e }
or(e) { return this.tag ? this : e }
getOrThunk(e) { return this.tag ? this.value : e() }
orThunk(e) { return this.tag ? this : e() }
getOrDie(e) { if (this.tag) return this.value; throw new Error(null != e ? e : "Called getOrDie on None") }
static from(e) { return C(e) ? M.some(e) : M.none() }
getOrNull() { return this.tag ? this.value : null }
getOrUndefined() { return this.value }
each(e) { this.tag && e(this.value) }
toArray() { return this.tag ? [this.value] : [] }
toString() { return this.tag ? `some(${this.value})` : "none()" }
}
M.singletonNone = new M(!1);
const I = Array.prototype.slice,
F = Array.prototype.indexOf,
U = Array.prototype.push,
z = (e, t) => F.call(e, t),
j = (e, t) => z(e, t) > -1,
V = (e, t) => {
for (let n = 0, o = e.length; n < o; n++)
if (t(e[n], n)) return !0;
return !1
},
H = (e, t) => {
const n = e.length,
o = new Array(n);
for (let r = 0; r < n; r++) {
const n = e[r];
o[r] = t(n, r)
}
return o
},
$ = (e, t) => { for (let n = 0, o = e.length; n < o; n++) t(e[n], n) },
q = (e, t) => { for (let n = e.length - 1; n >= 0; n--) t(e[n], n) },
W = (e, t) => {
const n = [],
o = [];
for (let r = 0, s = e.length; r < s; r++) {
const s = e[r];
(t(s, r) ? n : o).push(s)
}
return { pass: n, fail: o }
},
K = (e, t) => {
const n = [];
for (let o = 0, r = e.length; o < r; o++) {
const r = e[o];
t(r, o) && n.push(r)
}
return n
},
G = (e, t, n) => (q(e, ((e, o) => { n = t(n, e, o) })), n),
Y = (e, t, n) => ($(e, ((e, o) => { n = t(n, e, o) })), n),
X = (e, t, n) => { for (let o = 0, r = e.length; o < r; o++) { const r = e[o]; if (t(r, o)) return M.some(r); if (n(r, o)) break } return M.none() },
Q = (e, t) => X(e, t, L),
J = (e, t) => {
for (let n = 0, o = e.length; n < o; n++)
if (t(e[n], n)) return M.some(n);
return M.none()
},
Z = e => {
const t = [];
for (let n = 0, o = e.length; n < o; ++n) {
if (!p(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e);
U.apply(t, e[n])
}
return t
},
ee = (e, t) => Z(H(e, t)),
te = (e, t) => {
for (let n = 0, o = e.length; n < o; ++n)
if (!0 !== t(e[n], n)) return !1;
return !0
},
ne = e => { const t = I.call(e, 0); return t.reverse(), t },
oe = (e, t) => K(e, (e => !j(t, e))),
re = (e, t) => {
const n = {};
for (let o = 0, r = e.length; o < r; o++) {
const r = e[o];
n[String(r)] = t(r, o)
}
return n
},
se = (e, t) => { const n = I.call(e, 0); return n.sort(t), n },
ae = (e, t) => t >= 0 && t < e.length ? M.some(e[t]) : M.none(),
ie = e => ae(e, 0),
le = e => ae(e, e.length - 1),
de = x(Array.from) ? Array.from : e => I.call(e),
ce = (e, t) => { for (let n = 0; n < e.length; n++) { const o = t(e[n], n); if (o.isSome()) return o } return M.none() },
ue = Object.keys,
me = Object.hasOwnProperty,
fe = (e, t) => {
const n = ue(e);
for (let o = 0, r = n.length; o < r; o++) {
const r = n[o];
t(e[r], r)
}
},
ge = (e, t) => pe(e, ((e, n) => ({ k: n, v: t(e, n) }))),
pe = (e, t) => {
const n = {};
return fe(e, ((e, o) => {
const r = t(e, o);
n[r.k] = r.v
})), n
},
he = e => (t, n) => { e[n] = t },
be = (e, t, n, o) => (fe(e, ((e, r) => {
(t(e, r) ? n : o)(e, r)
})), {}),
ve = (e, t) => { const n = {}; return be(e, t, he(n), S), n },
ye = (e, t) => { const n = []; return fe(e, ((e, o) => { n.push(t(e, o)) })), n },
Ce = e => ye(e, R),
xe = (e, t) => we(e, t) ? M.from(e[t]) : M.none(),
we = (e, t) => me.call(e, t),
ke = (e, t) => we(e, t) && void 0 !== e[t] && null !== e[t],
Se = e => { const t = {}; return $(e, (e => { t[e] = {} })), ue(t) },
_e = Array.isArray,
Ee = (e, t, n) => {
let o, r;
if (!e) return !1;
if (n = n || e, void 0 !== e.length) {
for (o = 0, r = e.length; o < r; o++)
if (!1 === t.call(n, e[o], o, e)) return !1
} else
for (o in e)
if (we(e, o) && !1 === t.call(n, e[o], o, e)) return !1; return !0
},
Ne = (e, t) => { const n = []; return Ee(e, ((o, r) => { n.push(t(o, r, e)) })), n },
Re = (e, t) => { const n = []; return Ee(e, ((o, r) => { t && !t(o, r, e) || n.push(o) })), n },
Ae = (e, t) => {
if (e)
for (let n = 0, o = e.length; n < o; n++)
if (e[n] === t) return n;
return -1
},
Oe = (e, t, n, o) => { let r = v(n) ? e[0] : n; for (let n = 0; n < e.length; n++) r = t.call(o, r, e[n], n); return r },
Te = (e, t, n) => {
let o, r;
for (o = 0, r = e.length; o < r; o++)
if (t.call(n, e[o], o, e)) return o;
return -1
},
Be = e => e[e.length - 1],
De = e => { let t, n = !1; return (...o) => (n || (n = !0, t = e.apply(null, o)), t) },
Le = () => Pe(0, 0),
Pe = (e, t) => ({ major: e, minor: t }),
Me = { nu: Pe, detect: (e, t) => { const n = String(t).toLowerCase(); return 0 === e.length ? Le() : ((e, t) => { const n = ((e, t) => { for (let n = 0; n < e.length; n++) { const o = e[n]; if (o.test(t)) return o } })(e, t); if (!n) return { major: 0, minor: 0 }; const o = e => Number(t.replace(n, "$" + e)); return Pe(o(1), o(2)) })(e, n) }, unknown: Le },
Ie = (e, t) => { const n = String(t).toLowerCase(); return Q(e, (e => e.search(n))) },
Fe = (e, t, n) => "" === t || e.length >= t.length && e.substr(n, n + t.length) === t,
Ue = (e, t) => -1 !== e.indexOf(t),
ze = (e, t) => Fe(e, t, 0),
je = (e, t) => Fe(e, t, e.length - t.length),
Ve = e => t => t.replace(e, ""),
He = Ve(/^\s+|\s+$/g),
$e = Ve(/^\s+/g),
qe = Ve(/\s+$/g),
We = e => e.length > 0,
Ke = e => !We(e),
Ge = (e, t = 10) => { const n = parseInt(e, t); return isNaN(n) ? M.none() : M.some(n) },
Ye = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
Xe = e => t => Ue(t, e),
Qe = [{ name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: e => Ue(e, "edge/") && Ue(e, "chrome") && Ue(e, "safari") && Ue(e, "applewebkit") }, { name: "Chromium", brand: "Chromium", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Ye], search: e => Ue(e, "chrome") && !Ue(e, "chromeframe") }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: e => Ue(e, "msie") || Ue(e, "trident") }, { name: "Opera", versionRegexes: [Ye, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Xe("opera") }, { name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Xe("firefox") }, { name: "Safari", versionRegexes: [Ye, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: e => (Ue(e, "safari") || Ue(e, "mobile/")) && Ue(e, "applewebkit") }],
Je = [{ name: "Windows", search: Xe("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: "iOS", search: e => Ue(e, "iphone") || Ue(e, "ipad"), versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/] }, { name: "Android", search: Xe("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: "macOS", search: Xe("mac os x"), versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: "Linux", search: Xe("linux"), versionRegexes: [] }, { name: "Solaris", search: Xe("sunos"), versionRegexes: [] }, { name: "FreeBSD", search: Xe("freebsd"), versionRegexes: [] }, { name: "ChromeOS", search: Xe("cros"), versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/] }],
Ze = { browsers: N(Qe), oses: N(Je) },
et = "Edge",
tt = "Chromium",
nt = "Opera",
ot = "Firefox",
rt = "Safari",
st = e => {
const t = e.current,
n = e.version,
o = e => () => t === e;
return { current: t, version: n, isEdge: o(et), isChromium: o(tt), isIE: o("IE"), isOpera: o(nt), isFirefox: o(ot), isSafari: o(rt) }
},
at = () => st({ current: void 0, version: Me.unknown() }),
it = st,
lt = (N(et), N(tt), N("IE"), N(nt), N(ot), N(rt), "Windows"),
dt = "Android",
ct = "Linux",
ut = "macOS",
mt = "Solaris",
ft = "FreeBSD",
gt = "ChromeOS",
pt = e => {
const t = e.current,
n = e.version,
o = e => () => t === e;
return { current: t, version: n, isWindows: o(lt), isiOS: o("iOS"), isAndroid: o(dt), isMacOS: o(ut), isLinux: o(ct), isSolaris: o(mt), isFreeBSD: o(ft), isChromeOS: o(gt) }
},
ht = () => pt({ current: void 0, version: Me.unknown() }),
bt = pt,
vt = (N(lt), N("iOS"), N(dt), N(ct), N(ut), N(mt), N(ft), N(gt), e => window.matchMedia(e).matches);
let yt = De((() => ((e, t, n) => {
const o = Ze.browsers(),
r = Ze.oses(),
s = t.bind((e => ((e, t) => ce(t.brands, (t => { const n = t.brand.toLowerCase(); return Q(e, (e => { var t; return n === (null === (t = e.brand) || void 0 === t ? void 0 : t.toLowerCase()) })).map((e => ({ current: e.name, version: Me.nu(parseInt(t.version, 10), 0) }))) })))(o, e))).orThunk((() => ((e, t) => Ie(e, t).map((e => { const n = Me.detect(e.versionRegexes, t); return { current: e.name, version: n } })))(o, e))).fold(at, it),
a = ((e, t) => Ie(e, t).map((e => { const n = Me.detect(e.versionRegexes, t); return { current: e.name, version: n } })))(r, e).fold(ht, bt),
i = ((e, t, n, o) => {
const r = e.isiOS() && !0 === /ipad/i.test(n),
s = e.isiOS() && !r,
a = e.isiOS() || e.isAndroid(),
i = a || o("(pointer:coarse)"),
l = r || !s && a && o("(min-device-width:768px)"),
d = s || a && !l,
c = t.isSafari() && e.isiOS() && !1 === /safari/i.test(n),
u = !d && !l && !c;
return { isiPad: N(r), isiPhone: N(s), isTablet: N(l), isPhone: N(d), isTouch: N(i), isAndroid: e.isAndroid, isiOS: e.isiOS, isWebView: N(c), isDesktop: N(u) }
})(a, s, e, n);
return { browser: s, os: a, deviceType: i }
})(navigator.userAgent, M.from(navigator.userAgentData), vt)));
const Ct = () => yt(),
xt = navigator.userAgent,
wt = Ct(),
kt = wt.browser,
St = wt.os,
_t = wt.deviceType,
Et = -1 !== xt.indexOf("Windows Phone"),
Nt = { transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", documentMode: kt.isIE() ? document.documentMode || 7 : 10, cacheSuffix: null, container: null, canHaveCSP: !kt.isIE(), windowsPhone: Et, browser: { current: kt.current, version: kt.version, isChromium: kt.isChromium, isEdge: kt.isEdge, isFirefox: kt.isFirefox, isIE: kt.isIE, isOpera: kt.isOpera, isSafari: kt.isSafari }, os: { current: St.current, version: St.version, isAndroid: St.isAndroid, isChromeOS: St.isChromeOS, isFreeBSD: St.isFreeBSD, isiOS: St.isiOS, isLinux: St.isLinux, isMacOS: St.isMacOS, isSolaris: St.isSolaris, isWindows: St.isWindows }, deviceType: { isDesktop: _t.isDesktop, isiPad: _t.isiPad, isiPhone: _t.isiPhone, isPhone: _t.isPhone, isTablet: _t.isTablet, isTouch: _t.isTouch, isWebView: _t.isWebView } },
Rt = /^\s*|\s*$/g,
At = e => null == e ? "" : ("" + e).replace(Rt, ""),
Ot = (e, t) => t ? !("array" !== t || !_e(e)) || typeof e === t : void 0 !== e,
Tt = function(e, t, n, o) {
o = o || this, e && (n && (e = e[n]), Ee(e, ((e, r) => {
if (!1 === t.call(o, e, r, n)) return !1;
Tt(e, t, n, o)
})))
},
Bt = {
trim: At,
isArray: _e,
is: Ot,
toArray: e => { if (_e(e)) return e; { const t = []; for (let n = 0, o = e.length; n < o; n++) t[n] = e[n]; return t } },
makeMap: (e, t, n) => { let o; for (t = t || ",", "string" == typeof(e = e || []) && (e = e.split(t)), n = n || {}, o = e.length; o--;) n[e[o]] = {}; return n },
each: Ee,
map: Ne,
grep: Re,
inArray: Ae,
hasOwn: we,
extend: (e, ...t) => {
for (let n = 0; n < t.length; n++) {
const o = t[n];
for (const t in o)
if (we(o, t)) {
const n = o[t];
void 0 !== n && (e[t] = n)
}
}
return e
},
walk: Tt,
resolve: (e, t) => { let n, o; for (t = t || window, n = 0, o = (e = e.split(".")).length; n < o && (t = t[e[n]]); n++); return t },
explode: (e, t) => !e || Ot(e, "array") ? e : Ne(e.split(t || ","), At),
_addCacheSuffix: e => { const t = Nt.cacheSuffix; return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e }
},
Dt = (e, t, n = A) => e.exists((e => n(e, t))),
Lt = (e, t, n) => e.isSome() && t.isSome() ? M.some(n(e.getOrDie(), t.getOrDie())) : M.none(),
Pt = (e, t) => e ? M.some(t) : M.none();
"undefined" != typeof window ? window : Function("return this;")();
const Mt = e => e.dom.nodeName.toLowerCase(),
It = e => e.dom.nodeType,
Ft = e => t => It(t) === e,
Ut = Ft(1),
zt = Ft(3),
jt = Ft(9),
Vt = Ft(11),
Ht = (e, t, n) => {
if (!(m(n) || b(n) || w(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 + "")
},
$t = (e, t, n) => { Ht(e.dom, t, n) },
qt = (e, t) => {
const n = e.dom;
fe(t, ((e, t) => { Ht(n, t, e) }))
},
Wt = (e, t) => { const n = e.dom.getAttribute(t); return null === n ? void 0 : n },
Kt = (e, t) => M.from(Wt(e, t)),
Gt = (e, t) => { const n = e.dom; return !(!n || !n.hasAttribute) && n.hasAttribute(t) },
Yt = (e, t) => { e.dom.removeAttribute(t) },
Xt = e => Y(e.dom.attributes, ((e, t) => (e[t.name] = t.value, e)), {}),
Qt = (e, t) => { const n = Wt(e, t); return void 0 === n || "" === n ? [] : n.split(" ") },
Jt = e => void 0 !== e.dom.classList,
Zt = e => Qt(e, "class"),
en = (e, t) => ((e, t, n) => { const o = Qt(e, t).concat([n]); return $t(e, t, o.join(" ")), !0 })(e, "class", t),
tn = (e, t) => ((e, t, n) => { const o = K(Qt(e, t), (e => e !== n)); return o.length > 0 ? $t(e, t, o.join(" ")) : Yt(e, t), !1 })(e, "class", t),
nn = (e, t) => { Jt(e) ? e.dom.classList.add(t) : en(e, t) },
on = e => { 0 === (Jt(e) ? e.dom.classList : Zt(e)).length && Yt(e, "class") },
rn = (e, t) => { Jt(e) ? e.dom.classList.remove(t) : tn(e, t), on(e) },
sn = (e, t) => Jt(e) && e.dom.classList.contains(t),
an = e => void 0 !== e.style && x(e.style.getPropertyValue),
ln = e => { if (null == e) throw new Error("Node cannot be null or undefined"); return { dom: e } },
dn = (e, t) => { const n = (t || document).createElement("div"); if (n.innerHTML = e, !n.hasChildNodes() || n.childNodes.length > 1) { const t = "HTML does not have a single root node"; throw console.error(t, e), new Error(t) } return ln(n.childNodes[0]) },
cn = (e, t) => { const n = (t || document).createElement(e); return ln(n) },
un = (e, t) => { const n = (t || document).createTextNode(e); return ln(n) },
mn = ln,
fn = (e, t, n) => M.from(e.dom.elementFromPoint(t, n)).map(ln),
gn = (e, t) => {
const n = [],
o = e => (n.push(e), t(e));
let r = t(e);
do { r = r.bind(o) } while (r.isSome());
return n
},
pn = (e, t) => { const n = e.dom; if (1 !== n.nodeType) return !1; { const e = n; if (void 0 !== e.matches) return e.matches(t); if (void 0 !== e.msMatchesSelector) return e.msMatchesSelector(t); if (void 0 !== e.webkitMatchesSelector) return e.webkitMatchesSelector(t); if (void 0 !== e.mozMatchesSelector) return e.mozMatchesSelector(t); throw new Error("Browser lacks native selectors") } },
hn = e => 1 !== e.nodeType && 9 !== e.nodeType && 11 !== e.nodeType || 0 === e.childElementCount,
bn = (e, t) => e.dom === t.dom,
vn = (e, t) => {
const n = e.dom,
o = t.dom;
return n !== o && n.contains(o)
},
yn = e => mn(e.dom.ownerDocument),
Cn = e => jt(e) ? e : yn(e),
xn = e => mn(Cn(e).dom.defaultView),
wn = e => M.from(e.dom.parentNode).map(mn),
kn = e => M.from(e.dom.previousSibling).map(mn),
Sn = e => M.from(e.dom.nextSibling).map(mn),
_n = e => ne(gn(e, kn)),
En = e => gn(e, Sn),
Nn = e => H(e.dom.childNodes, mn),
Rn = (e, t) => { const n = e.dom.childNodes; return M.from(n[t]).map(mn) },
An = e => Rn(e, 0),
On = e => Rn(e, e.dom.childNodes.length - 1),
Tn = e => e.dom.childNodes.length,
Bn = e => Vt(e) && C(e.dom.host),
Dn = x(Element.prototype.attachShadow) && x(Node.prototype.getRootNode),
Ln = N(Dn),
Pn = Dn ? e => mn(e.dom.getRootNode()) : Cn,
Mn = e => Bn(e) ? e : (e => { const t = e.dom.head; if (null == t) throw new Error("Head is not available yet"); return mn(t) })(Cn(e)),
In = e => mn(e.dom.host),
Fn = e => { if (Ln() && C(e.target)) { const t = mn(e.target); if (Ut(t) && Un(t) && e.composed && e.composedPath) { const t = e.composedPath(); if (t) return ie(t) } } return M.from(e.target) },
Un = e => C(e.dom.shadowRoot),
zn = e => { const t = zt(e) ? e.dom.parentNode : e.dom; if (null == t || null === t.ownerDocument) return !1; const n = t.ownerDocument; return (e => { const t = Pn(e); return Bn(t) ? M.some(t) : M.none() })(mn(t)).fold((() => n.body.contains(t)), E(zn, In)) },
jn = (e, t, n) => {
if (!m(n)) throw console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e), new Error("CSS value must be a string: " + n);
an(e) && e.style.setProperty(t, n)
},
Vn = (e, t, n) => {
const o = e.dom;
jn(o, t, n)
},
Hn = (e, t) => {
const n = e.dom;
fe(t, ((e, t) => { jn(n, t, e) }))
},
$n = (e, t) => {
const n = e.dom,
o = window.getComputedStyle(n).getPropertyValue(t);
return "" !== o || zn(e) ? o : qn(n, t)
},
qn = (e, t) => an(e) ? e.style.getPropertyValue(t) : "",
Wn = (e, t) => {
const n = e.dom,
o = qn(n, t);
return M.from(o).filter((e => e.length > 0))
},
Kn = e => {
const t = {},
n = e.dom;
if (an(n))
for (let e = 0; e < n.style.length; e++) {
const o = n.style.item(e);
t[o] = n.style[o]
}
return t
},
Gn = (e, t) => {
((e, t) => { an(e) && e.style.removeProperty(t) })(e.dom, t), Dt(Kt(e, "style").map(He), "") && Yt(e, "style")
},
Yn = (e, t) => { wn(e).each((n => { n.dom.insertBefore(t.dom, e.dom) })) },
Xn = (e, t) => { Sn(e).fold((() => { wn(e).each((e => { Jn(e, t) })) }), (e => { Yn(e, t) })) },
Qn = (e, t) => { An(e).fold((() => { Jn(e, t) }), (n => { e.dom.insertBefore(t.dom, n.dom) })) },
Jn = (e, t) => { e.dom.appendChild(t.dom) },
Zn = (e, t) => { $(t, (t => { Jn(e, t) })) },
eo = e => { e.dom.textContent = "", $(Nn(e), (e => { to(e) })) },
to = e => {
const t = e.dom;
null !== t.parentNode && t.parentNode.removeChild(t)
},
no = e => {
const t = Nn(e);
var n, o;
t.length > 0 && (n = e, $(o = t, ((e, t) => {
const r = 0 === t ? n : o[t - 1];
Xn(r, e)
}))), to(e)
},
oo = e => e.dom.innerHTML,
ro = (e, t) => {
const n = yn(e).dom,
o = mn(n.createDocumentFragment()),
r = ((e, t) => { const n = (t || document).createElement("div"); return n.innerHTML = e, Nn(mn(n)) })(t, n);
Zn(o, r), eo(e), Jn(e, o)
},
so = (e, t, n, o) => ((e, t, n, o, r) => {
const s = ((e, t) => n => {
e(n) && t((e => {
const t = mn(Fn(e).getOr(e.target)),
n = () => e.stopPropagation(),
o = () => e.preventDefault(),
r = _(o, n);
return ((e, t, n, o, r, s, a) => ({ target: e, x: t, y: n, stop: o, prevent: r, kill: s, raw: a }))(t, e.clientX, e.clientY, n, o, r, e)
})(n))
})(n, o);
return e.dom.addEventListener(t, s, false), { unbind: O(ao, e, t, s, false) }
})(e, t, n, o),
ao = (e, t, n, o) => { e.dom.removeEventListener(t, n, o) },
io = (e, t) => ({ left: e, top: t, translate: (n, o) => io(e + n, t + o) }),
lo = io,
co = (e, t) => void 0 !== e ? e : void 0 !== t ? t : 0,
uo = e => {
const t = e.dom,
n = t.ownerDocument.body;
return n === t ? lo(n.offsetLeft, n.offsetTop) : zn(e) ? (e => { const t = e.getBoundingClientRect(); return lo(t.left, t.top) })(t) : lo(0, 0)
},
mo = e => {
const t = void 0 !== e ? e.dom : document,
n = t.body.scrollLeft || t.documentElement.scrollLeft,
o = t.body.scrollTop || t.documentElement.scrollTop;
return lo(n, o)
},
fo = (e, t, n) => {
const o = (void 0 !== n ? n.dom : document).defaultView;
o && o.scrollTo(e, t)
},
go = (e, t) => { Ct().browser.isSafari() && x(e.dom.scrollIntoViewIfNeeded) ? e.dom.scrollIntoViewIfNeeded(!1) : e.dom.scrollIntoView(t) },
po = (e, t, n, o) => ({ x: e, y: t, width: n, height: o, right: e + n, bottom: t + o }),
ho = e => {
const t = void 0 === e ? window : e,
n = t.document,
o = mo(mn(n));
return (e => { const t = void 0 === e ? window : e; return Ct().browser.isFirefox() ? M.none() : M.from(t.visualViewport) })(t).fold((() => {
const e = t.document.documentElement,
n = e.clientWidth,
r = e.clientHeight;
return po(o.left, o.top, n, r)
}), (e => po(Math.max(e.pageLeft, o.left), Math.max(e.pageTop, o.top), e.width, e.height)))
},
bo = e => t => !!t && t.nodeType === e,
vo = e => !!e && !Object.getPrototypeOf(e),
yo = bo(1),
Co = e => { const t = e.map((e => e.toLowerCase())); return e => { if (e && e.nodeName) { const n = e.nodeName.toLowerCase(); return j(t, n) } return !1 } },
xo = (e, t) => {
const n = t.toLowerCase().split(" ");
return t => {
if (yo(t))
for (let o = 0; o < n.length; o++) { const r = t.ownerDocument.defaultView.getComputedStyle(t, null); if ((r ? r.getPropertyValue(e) : null) === n[o]) return !0 }
return !1
}
},
wo = e => t => yo(t) && t.hasAttribute(e),
ko = e => yo(e) && e.hasAttribute("data-mce-bogus"),
So = e => yo(e) && "TABLE" === e.tagName,
_o = e => t => { if (yo(t)) { if (t.contentEditable === e) return !0; if (t.getAttribute("data-mce-contenteditable") === e) return !0 } return !1 },
Eo = Co(["textarea", "input"]),
No = bo(3),
Ro = bo(4),
Ao = bo(7),
Oo = bo(8),
To = bo(9),
Bo = bo(11),
Do = Co(["br"]),
Lo = Co(["img"]),
Po = _o("true"),
Mo = _o("false"),
Io = Co(["td", "th"]),
Fo = Co(["video", "audio", "object", "embed"]),
Uo = Ct().browser,
zo = e => Q(e, Ut),
jo = (e, t) => e.children && j(e.children, t);
var Vo = (e, t, n, o, r) => e(n, o) ? M.some(n) : x(r) && r(n) ? M.none() : t(n, o, r);
const Ho = (e, t, n) => { let o = e.dom; const r = x(n) ? n : L; for (; o.parentNode;) { o = o.parentNode; const e = mn(o); if (t(e)) return M.some(e); if (r(e)) break } return M.none() },
$o = (e, t, n) => Vo(((e, t) => t(e)), Ho, e, t, n),
qo = (e, t, n) => Ho(e, (e => pn(e, t)), n),
Wo = (e, t) => ((e, t) => { const n = void 0 === t ? document : t.dom; return hn(n) ? M.none() : M.from(n.querySelector(e)).map(mn) })(t, e),
Ko = (e, t, n) => Vo(((e, t) => pn(e, t)), qo, e, t, n),
Go = (e, t = {}) => {
let n = 0;
const o = {},
r = mn(e),
s = Cn(r),
a = t.maxLoadTime || 5e3,
i = i => new Promise(((l, d) => {
let c;
const u = Bt._addCacheSuffix(i),
m = (e => xe(o, e).getOrThunk((() => ({ id: "mce-u" + n++, passed: [], failed: [], count: 0 }))))(u);
o[u] = m, m.count++;
const f = (e, t) => { $(e, D), m.status = t, m.passed = [], m.failed = [], c && (c.onload = null, c.onerror = null, c = null) },
g = () => f(m.passed, 2),
p = () => f(m.failed, 3),
h = () => {
var t;
t = h, (() => { const t = e.styleSheets; let n = t.length; for (; n--;) { const e = t[n].ownerNode; if (e && e.id === c.id) return g(), !0 } return !1 })() || (Date.now() - v < a ? setTimeout(t) : p())
};
if (l && m.passed.push(l), d && m.failed.push(d), 1 === m.status) return;
if (2 === m.status) return void g();
if (3 === m.status) return void p();
m.status = 1;
const b = cn("link", s.dom);
qt(b, { rel: "stylesheet", type: "text/css", id: m.id });
const v = Date.now();
var y;
t.contentCssCors && $t(b, "crossOrigin", "anonymous"), t.referrerPolicy && $t(b, "referrerpolicy", t.referrerPolicy), c = b.dom, c.onload = h, c.onerror = p, y = b, Jn(Mn(r), y), $t(b, "href", u)
})),
l = e => {
const t = Bt._addCacheSuffix(e);
xe(o, t).each((e => {
0 == --e.count && (delete o[t], (e => {
const t = Mn(r);
Wo(t, "#" + e).each(to)
})(e.id))
}))
};
return { load: i, loadAll: e => Promise.allSettled(H(e, (e => i(e).then(N(e))))).then((e => { const t = W(e, (e => "fulfilled" === e.status)); return t.fail.length > 0 ? Promise.reject(H(t.fail, (e => e.reason))) : H(t.pass, (e => e.value)) })), unload: l, unloadAll: e => { $(e, (e => { l(e) })) }, _setReferrerPolicy: e => { t.referrerPolicy = e } }
},
Yo = (() => { const e = new WeakMap; return { forElement: (t, n) => { const o = Pn(t).dom; return M.from(e.get(o)).getOrThunk((() => { const t = Go(o, n); return e.set(o, t), t })) } } })();
class Xo {
constructor(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) }
current() { return this.node }
next(e) { return this.node = this.findSibling(this.node, "firstChild", "nextSibling", e), this.node }
prev(e) { return this.node = this.findSibling(this.node, "lastChild", "previousSibling", e), this.node }
prev2(e) { return this.node = this.findPreviousNode(this.node, "lastChild", "previousSibling", e), this.node }
findSibling(e, t, n, o) {
let r, s;
if (e) {
if (!o && e[t]) return e[t];
if (e !== this.rootNode) {
if (r = e[n], r) return r;
for (s = e.parentNode; s && s !== this.rootNode; s = s.parentNode)
if (r = s[n], r) return r
}
}
}
findPreviousNode(e, t, n, o) {
let r, s, a;
if (e) {
if (r = e[n], this.rootNode && r === this.rootNode) return;
if (r) {
if (!o)
for (a = r[t]; a; a = a[t])
if (!a[t]) return a;
return r
}
if (s = e.parentNode, s && s !== this.rootNode) return s
}
}
}
const Qo = e => { let t; return n => (t = t || re(e, P), we(t, Mt(n))) },
Jo = Qo(["h1", "h2", "h3", "h4", "h5", "h6"]),
Zo = Qo(["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"]),
er = e => Ut(e) && !Zo(e),
tr = e => Ut(e) && "br" === Mt(e),
nr = Qo(["h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "address", "pre", "form", "blockquote", "center", "dir", "fieldset", "header", "footer", "article", "section", "hgroup", "aside", "nav", "figure"]),
or = Qo(["ul", "ol", "dl"]),
rr = Qo(["li", "dd", "dt"]),
sr = Qo(["thead", "tbody", "tfoot"]),
ar = Qo(["td", "th"]),
ir = Qo(["pre", "script", "textarea", "style"]),
lr = "\ufeff",
dr = "\xa0",
cr = e => e === lr,
ur = lr,
mr = cr,
fr = e => e.replace(/\uFEFF/g, ""),
gr = yo,
pr = No,
hr = e => (pr(e) && (e = e.parentNode), gr(e) && e.hasAttribute("data-mce-caret")),
br = e => pr(e) && mr(e.data),
vr = e => hr(e) || br(e),
yr = e => e.firstChild !== e.lastChild || !Do(e.firstChild),
Cr = e => { const t = e.container(); return !!No(t) && (t.data.charAt(e.offset()) === ur || e.isAtStart() && br(t.previousSibling)) },
xr = e => { const t = e.container(); return !!No(t) && (t.data.charAt(e.offset() - 1) === ur || e.isAtEnd() && br(t.nextSibling)) },
wr = e => pr(e) && e.data[0] === ur,
kr = e => pr(e) && e.data[e.data.length - 1] === ur,
Sr = e => e && e.hasAttribute("data-mce-caret") ? ((e => {
const t = e.getElementsByTagName("br"),
n = t[t.length - 1];
ko(n) && n.parentNode.removeChild(n)
})(e), e.removeAttribute("data-mce-caret"), e.removeAttribute("data-mce-bogus"), e.removeAttribute("style"), e.removeAttribute("data-mce-style"), e.removeAttribute("_moz_abspos"), e) : null,
_r = e => hr(e.startContainer),
Er = Po,
Nr = Mo,
Rr = Do,
Ar = No,
Or = Co(["script", "style", "textarea"]),
Tr = Co(["img", "input", "textarea", "hr", "iframe", "video", "audio", "object", "embed"]),
Br = Co(["table"]),
Dr = vr,
Lr = e => !Dr(e) && (Ar(e) ? !Or(e.parentNode) : Tr(e) || Rr(e) || Br(e) || Pr(e)),
Pr = e => !1 === (e => yo(e) && "true" === e.getAttribute("unselectable"))(e) && Nr(e),
Mr = (e, t) => Lr(e) && ((e, t) => { for (e = e.parentNode; e && e !== t; e = e.parentNode) { if (Pr(e)) return !1; if (Er(e)) return !0 } return !0 })(e, t),
Ir = /^[ \t\r\n]*$/,
Fr = e => Ir.test(e),
Ur = e => "\n" === e || "\r" === e,
zr = (e, t = 4, n = !0, o = !0) => {
const r = ((e, t) => t <= 0 ? "" : new Array(t + 1).join(" "))(0, t),
s = e.replace(/\t/g, r),
a = Y(s, ((e, t) => (e => -1 !== " \f\t\v".indexOf(e))(t) || t === dr ? e.pcIsSpace || "" === e.str && n || e.str.length === s.length - 1 && o || ((e, t) => t < e.length && t >= 0 && Ur(e[t]))(s, e.str.length + 1) ? { pcIsSpace: !1, str: e.str + dr } : { pcIsSpace: !0, str: e.str + " " } : { pcIsSpace: Ur(t), str: e.str + t }), { pcIsSpace: !1, str: "" });
return a.str
},
jr = (e, t) => Lr(e) && !1 === ((e, t) => No(e) && Fr(e.data) && !1 === ((e, t) => { const n = mn(t); return o = mn(e), r = O(bn, n), qo(o, "pre,code", r).isSome(); var o, r })(e, t))(e, t) || (e => yo(e) && "A" === e.nodeName && !e.hasAttribute("href") && (e.hasAttribute("name") || e.hasAttribute("id")))(e) || Vr(e),
Vr = wo("data-mce-bookmark"),
Hr = wo("data-mce-bogus"),
$r = ("data-mce-bogus", "all", e => yo(e) && "all" === e.getAttribute("data-mce-bogus"));
const qr = (e, t = !0) => ((e, t) => {
let n = 0;
if (jr(e, e)) return !1; {
let o = e.firstChild;
if (!o) return !0;
const r = new Xo(o, e);
do {
if (t) { if ($r(o)) { o = r.next(!0); continue } if (Hr(o)) { o = r.next(); continue } }
if (Do(o)) n++, o = r.next();
else {
if (jr(o, e)) return !1;
o = r.next()
}
} while (o);
return n <= 1
}
})(e.dom, t),
Wr = (e, t) => C(e) && (jr(e, t) || er(mn(e))),
Kr = e => (e => "span" === e.nodeName.toLowerCase())(e) && "bookmark" === e.getAttribute("data-mce-type"),
Gr = (e, t, n) => {
const o = n || t;
if (yo(t) && Kr(t)) return t;
const r = t.childNodes;
for (let t = r.length - 1; t >= 0; t--) Gr(e, r[t], o);
if (yo(t)) {
const e = t.childNodes;
1 === e.length && Kr(e[0]) && t.parentNode.insertBefore(e[0], t)
}
return (e => Bo(e) || To(e))(t) || jr(t, o) || (e => !!yo(e) && e.childNodes.length > 0)(t) || ((e, t) => No(e) && e.data.length > 0 && ((e, t) => {
const n = new Xo(e, t).prev(!1),
o = new Xo(e, t).next(!1),
r = v(n) || Wr(n, t),
s = v(o) || Wr(o, t);
return r && s
})(e, t))(t, o) || e.remove(t), t
},
Yr = Bt.makeMap,
Xr = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
Qr = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
Jr = /[<>&\"\']/g,
Zr = /([a-z0-9]+);?|&([a-z0-9]+);/gi,
es = { 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" },
ts = { '"': """, "'": "'", "<": "<", ">": ">", "&": "&", "`": "`" },
ns = { "<": "<", ">": ">", "&": "&", """: '"', "'": "'" },
os = (e, t) => { let n, o, r; const s = {}; if (e) { for (e = e.split(","), t = t || 10, n = 0; n < e.length; n += 2) o = String.fromCharCode(parseInt(e[n], t)), ts[o] || (r = "&" + e[n + 1] + ";", s[o] = r, s[r] = o); return s } },
rs = os("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),
ss = (e, t) => e.replace(t ? Xr : Qr, (e => ts[e] || e)),
as = (e, t) => e.replace(t ? Xr : Qr, (e => e.length > 1 ? "" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : ts[e] || "" + e.charCodeAt(0) + ";")),
is = (e, t, n) => (n = n || rs, e.replace(t ? Xr : Qr, (e => ts[e] || n[e] || e))),
ls = {
encodeRaw: ss,
encodeAllRaw: e => ("" + e).replace(Jr, (e => ts[e] || e)),
encodeNumeric: as,
encodeNamed: is,
getEncodeFunc: (e, t) => {
const n = os(t) || rs,
o = Yr(e.replace(/\+/g, ","));
return o.named && o.numeric ? (e, t) => e.replace(t ? Xr : Qr, (e => void 0 !== ts[e] ? ts[e] : void 0 !== n[e] ? n[e] : e.length > 1 ? "" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : "" + e.charCodeAt(0) + ";")) : o.named ? t ? (e, t) => is(e, t, n) : is : o.numeric ? as : ss
},
decode: e => e.replace(Zr, ((e, t) => t ? (t = "x" === t.charAt(0).toLowerCase() ? parseInt(t.substr(1), 16) : parseInt(t, 10)) > 65535 ? (t -= 65536, String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t))) : es[t] || String.fromCharCode(t) : ns[e] || rs[e] || (e => { const t = cn("div").dom; return t.innerHTML = e, t.textContent || t.innerText || e })(e)))
},
ds = {},
cs = {},
us = Bt.makeMap,
ms = Bt.each,
fs = Bt.extend,
gs = Bt.explode,
ps = Bt.inArray,
hs = (e, t) => (e = Bt.trim(e)) ? e.split(t || " ") : [],
bs = (e, t) => { let n; return e && (n = {}, "string" == typeof e && (e = { "*": e }), ms(e, ((e, o) => { n[o] = n[o.toUpperCase()] = "map" === t ? us(e, /[, ]/) : gs(e, /[, ]/) }))), n },
vs = e => {
var t;
const n = {},
o = {};
let r = [];
const s = {},
a = {},
i = (t, n, o) => { let r = e[t]; return r ? r = us(r, /[, ]/, us(r.toUpperCase(), /[, ]/)) : (r = ds[t], r || (r = us(n, " ", us(n.toUpperCase(), " ")), r = fs(r, o), ds[t] = r)), r },
l = null !== (t = (e = e || {}).schema) && void 0 !== t ? t : "html5",
d = (e => {
const t = {};
let n, o, r, s, a, i;
const l = (e, o = "", r = "") => {
const s = hs(r),
a = hs(e);
let i = a.length;
for (; i--;) {
const e = hs([n, o].join(" "));
t[a[i]] = { attributes: re(e, (() => ({}))), attributesOrder: e, children: re(s, N(cs)) }
}
},
d = (e, n) => {
const o = hs(e),
r = hs(n);
let s = o.length;
for (; s--;) { const e = t[o[s]]; for (let t = 0, n = r.length; t < n; t++) e.attributes[r[t]] = {}, e.attributesOrder.push(r[t]) }
};
return ds[e] ? ds[e] : (n = "id accesskey class dir lang style tabindex title role", o = "address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul", r = "a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment", "html4" !== e && (n += " contenteditable contextmenu draggable dropzone hidden spellcheck translate", o += " article aside details dialog figure main header footer hgroup section nav", r += " audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"), "html5-strict" !== e && (n += " xml:lang", i = "acronym applet basefont big font strike tt", r = [r, i].join(" "), ms(hs(i), (e => { l(e, "", r) })), a = "center dir isindex noframes", o = [o, a].join(" "), s = [o, r].join(" "), ms(hs(a), (e => { l(e, "", s) }))), s = s || [o, r].join(" "), l("html", "manifest", "head body"), l("head", "", "base command link meta noscript script style title"), l("title hr noscript br"), l("base", "href target"), l("link", "href rel media hreflang type sizes hreflang"), l("meta", "name http-equiv content charset"), l("style", "media type scoped"), l("script", "src async defer type charset"), l("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload", s), l("address dt dd div caption", "", s), l("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn", "", r), l("blockquote", "cite", s), l("ol", "reversed start type", "li"), l("ul", "", "li"), l("li", "value", s), l("dl", "", "dt dd"), l("a", "href target rel media hreflang type", r), l("q", "cite", r), l("ins del", "cite datetime", s), l("img", "src sizes srcset alt usemap ismap width height"), l("iframe", "src name width height", s), l("embed", "src type width height"), l("object", "data type typemustmatch name usemap form width height", [s, "param"].join(" ")), l("param", "name value"), l("map", "name", [s, "area"].join(" ")), l("area", "alt coords shape href target rel media hreflang type"), l("table", "border", "caption colgroup thead tfoot tbody tr" + ("html4" === e ? " col" : "")), l("colgroup", "span", "col"), l("col", "span"), l("tbody thead tfoot", "", "tr"), l("tr", "", "td th"), l("td", "colspan rowspan headers", s), l("th", "colspan rowspan headers scope abbr", s), l("form", "accept-charset action autocomplete enctype method name novalidate target", s), l("fieldset", "disabled form name", [s, "legend"].join(" ")), l("label", "form for", r), l("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"), l("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value", "html4" === e ? s : r), l("select", "disabled form multiple name required size", "option optgroup"), l("optgroup", "disabled label", "option"), l("option", "disabled label selected value"), l("textarea", "cols dirname disabled form maxlength name readonly required rows wrap"), l("menu", "type label", [s, "li"].join(" ")), l("noscript", "", s), "html4" !== e && (l("wbr"), l("ruby", "", [r, "rt rp"].join(" ")), l("figcaption", "", s), l("mark rt rp summary bdi", "", r), l("canvas", "width height", s), l("video", "src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered", [s, "track source"].join(" ")), l("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", [s, "track source"].join(" ")), l("picture", "", "img source"), l("source", "src srcset type media sizes"), l("track", "kind src srclang label default"), l("datalist", "", [r, "option"].join(" ")), l("article section nav aside main header footer", "", s), l("hgroup", "", "h1 h2 h3 h4 h5 h6"), l("figure", "", [s, "figcaption"].join(" ")), l("time", "datetime", r), l("dialog", "open", s), l("command", "type label icon disabled checked radiogroup command"), l("output", "for form name", r), l("progress", "value max", r), l("meter", "value min max low high optimum", r), l("details", "open", [s, "summary"].join(" ")), l("keygen", "autofocus challenge disabled form keytype name")), "html5-strict" !== e && (d("script", "language xml:space"), d("style", "xml:space"), d("object", "declare classid code codebase codetype archive standby align border hspace vspace"), d("embed", "align name hspace vspace"), d("param", "valuetype type"), d("a", "charset name rev shape coords"), d("br", "clear"), d("applet", "codebase archive code object alt name width height align hspace vspace"), d("img", "name longdesc align border hspace vspace"), d("iframe", "longdesc frameborder marginwidth marginheight scrolling align"), d("font basefont", "size color face"), d("input", "usemap align"), d("select"), d("textarea"), d("h1 h2 h3 h4 h5 h6 div p legend caption", "align"), d("ul", "type compact"), d("li", "type"), d("ol dl menu dir", "compact"), d("pre", "width xml:space"), d("hr", "align noshade size width"), d("isindex", "prompt"), d("table", "summary width frame rules cellspacing cellpadding align bgcolor"), d("col", "width align char charoff valign"), d("colgroup", "width align char charoff valign"), d("thead", "align char charoff valign"), d("tr", "align char charoff valign bgcolor"), d("th", "axis align char charoff valign nowrap bgcolor width height"), d("form", "accept"), d("td", "abbr axis scope align char charoff valign nowrap bgcolor width height"), d("tfoot", "align char charoff valign"), d("tbody", "align char charoff valign"), d("area", "nohref"), d("body", "background bgcolor text link vlink alink")), "html4" !== e && (d("input button select textarea", "autofocus"), d("input textarea", "placeholder"), d("a", "download"), d("link script img", "crossorigin"), d("img", "loading"), d("iframe", "sandbox seamless allowfullscreen loading")), "html4" !== e && $([t.video, t.audio], (e => { delete e.children.audio, delete e.children.video })), ms(hs("a form meter progress dfn"), (e => { t[e] && delete t[e].children[e] })), delete t.caption.children.table, delete t.script, ds[e] = t, t)
})(l);
!1 === e.verify_html && (e.valid_elements = "*[*]");
const c = bs(e.valid_styles),
u = bs(e.invalid_styles, "map"),
m = bs(e.valid_classes, "map"),
f = i("whitespace_elements", "pre script noscript style textarea video audio iframe object code"),
g = i("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"),
p = i("void_elements", "area base basefont br col frame hr img input isindex link meta param embed source wbr track"),
h = i("boolean_attributes", "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls allowfullscreen"),
b = "td th iframe video audio object script code",
v = i("non_empty_elements", b + " pre", p),
y = i("move_caret_before_on_enter_elements", b + " table", p),
C = i("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"),
x = i("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", C),
w = i("text_inline_elements", "span strong b em i font strike u var cite dfn code mark q sup sub samp");
ms("script noscript iframe noframes noembed title style textarea xmp plaintext".split(" "), (e => { a[e] = new RegExp("" + e + "[^>]*>", "gi") }));
const k = e => new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$"),
S = e => {
let t, o, s, a, i, l, d, c, u, m, f, g, p, h, b, v, y, C;
const x = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/,
w = /^([!\-])?(\w+[\\:]:\w+|[^=~<]+)?(?:([=~<])(.*))?$/,
S = /[*?+]/;
if (e) {
const _ = hs(e, ",");
for (n["@"] && (v = n["@"].attributes, y = n["@"].attributesOrder), t = 0, o = _.length; t < o; t++)
if (i = x.exec(_[t]), i) {
if (h = i[1], u = i[2], b = i[3], c = i[5], g = {}, p = [], l = { attributes: g, attributesOrder: p }, "#" === h && (l.paddEmpty = !0), "-" === h && (l.removeEmpty = !0), "!" === i[4] && (l.removeEmptyAttrs = !0), v && (fe(v, ((e, t) => { g[t] = e })), p.push.apply(p, y)), c)
for (c = hs(c, "|"), s = 0, a = c.length; s < a; s++)
if (i = w.exec(c[s]), i) {
if (d = {}, f = i[1], m = i[2].replace(/[\\:]:/g, ":"), h = i[3], C = i[4], "!" === f && (l.attributesRequired = l.attributesRequired || [], l.attributesRequired.push(m), d.required = !0), "-" === f) { delete g[m], p.splice(ps(p, m), 1); continue }
h && ("=" === h && (l.attributesDefault = l.attributesDefault || [], l.attributesDefault.push({ name: m, value: C }), d.defaultValue = C), "~" === h && (l.attributesForced = l.attributesForced || [], l.attributesForced.push({ name: m, value: C }), d.forcedValue = C), "<" === h && (d.validValues = us(C, "?"))), S.test(m) ? (l.attributePatterns = l.attributePatterns || [], d.pattern = k(m), l.attributePatterns.push(d)) : (g[m] || p.push(m), g[m] = d)
}
v || "@" !== u || (v = g, y = p), b && (l.outputName = u, n[b] = l), S.test(u) ? (l.pattern = k(u), r.push(l)) : n[u] = l
}
}
},
_ = e => { r = [], $(ue(n), (e => { delete n[e] })), S(e), ms(d, ((e, t) => { o[t] = e.children })) },
E = e => {
const t = /^(~)?(.+)$/;
e && (ds.text_block_elements = ds.block_elements = null, ms(hs(e, ","), (e => {
const r = t.exec(e),
a = "~" === r[1],
i = a ? "span" : "div",
l = r[2];
if (o[l] = o[i], s[l] = i, a || (x[l.toUpperCase()] = {}, x[l] = {}), !n[l]) {
let e = n[i];
e = fs({}, e), delete e.removeEmptyAttrs, delete e.removeEmpty, n[l] = e
}
ms(o, ((e, t) => { e[i] && (o[t] = e = fs({}, o[t]), e[l] = e[i]) }))
})))
},
R = e => {
const t = /^([+\-]?)([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]+)\[([^\]]+)]$/;
ds[l] = null, e && ms(hs(e, ","), (e => {
const n = t.exec(e);
let r, s;
n && (s = n[1], r = s ? o[n[2]] : o[n[2]] = { "#comment": {} }, r = o[n[2]], ms(hs(n[3], "|"), (e => { "-" === s ? delete r[e] : r[e] = {} })))
}))
},
A = e => {
let t, o = n[e];
if (o) return o;
for (t = r.length; t--;)
if (o = r[t], o.pattern.test(e)) return o
};
e.valid_elements ? _(e.valid_elements) : (ms(d, ((e, t) => { n[t] = { attributes: e.attributes, attributesOrder: e.attributesOrder }, o[t] = e.children })), ms(hs("strong/b em/i"), (e => {
const t = hs(e, "/");
n[t[1]].outputName = t[0]
})), ms(hs("ol ul sub sup blockquote span font a table tbody strong em b i"), (e => { n[e] && (n[e].removeEmpty = !0) })), ms(hs("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"), (e => { n[e].paddEmpty = !0 })), ms(hs("span"), (e => { n[e].removeEmptyAttrs = !0 }))), E(e.custom_elements), R(e.valid_children), S(e.extended_valid_elements), R("+ol[ul|ol],+ul[ul|ol]"), ms({ 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" }, ((e, t) => { n[t] && (n[t].parentsRequired = hs(e)) })), e.invalid_elements && ms(gs(e.invalid_elements), (e => { n[e] && delete n[e] })), A("span") || S("span[!data-mce-type|*]");
const O = N(c),
T = N(u),
B = N(m),
D = N(h),
L = N(x),
P = N(C),
M = N(w),
I = N(Object.seal(p)),
F = N(g),
U = N(v),
z = N(y),
j = N(f),
V = N(Object.seal(a)),
H = N(s);
return {
type: l,
children: o,
elements: n,
getValidStyles: O,
getValidClasses: B,
getBlockElements: L,
getInvalidStyles: T,
getVoidElements: I,
getTextBlockElements: P,
getTextInlineElements: M,
getBoolAttrs: D,
getElementRule: A,
getSelfClosingElements: F,
getNonEmptyElements: U,
getMoveCaretBeforeOnEnterElements: z,
getWhitespaceElements: j,
getSpecialElements: V,
isValidChild: (e, t) => { const n = o[e.toLowerCase()]; return !(!n || !n[t.toLowerCase()]) },
isValid: (e, t) => {
let n, o;
const r = A(e);
if (r) {
if (!t) return !0;
if (r.attributes[t]) return !0;
if (n = r.attributePatterns, n)
for (o = n.length; o--;)
if (n[o].pattern.test(t)) return !0
}
return !1
},
getCustomElements: H,
addValidElements: S,
setValidElements: _,
addCustomElements: E,
addValidChildren: R
}
},
ys = (e, t) => {
const n = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
o = /\s*([^:]+):\s*([^;]+);?/g,
r = /\s+$/;
let s;
const a = {};
let i, l;
e = e || {}, t && (i = t.getValidStyles(), l = t.getInvalidStyles());
const d = "\\\" \\' \\; \\: ; : \ufeff".split(" ");
for (s = 0; s < d.length; s++) a[d[s]] = "\ufeff" + s, a["\ufeff" + s] = d[s];
const c = {
parse: t => {
const i = {};
let l, d, u, m;
const f = e.url_converter,
g = e.url_converter_scope || c,
p = (e, t, n) => {
const o = i[e + "-top" + t];
if (!o) return;
const r = i[e + "-right" + t];
if (!r) return;
const a = i[e + "-bottom" + t];
if (!a) return;
const l = i[e + "-left" + t];
if (!l) return;
const d = [o, r, a, l];
for (s = d.length - 1; s-- && d[s] === d[s + 1];);
s > -1 && n || (i[e + t] = -1 === s ? d[0] : d.join(" "), delete i[e + "-top" + t], delete i[e + "-right" + t], delete i[e + "-bottom" + t], delete i[e + "-left" + t])
},
h = e => {
let t, n = i[e];
if (n) {
for (n = n.split(" "), t = n.length; t--;)
if (n[t] !== n[0]) return !1;
return i[e] = n[0], !0
}
},
b = e => (m = !0, a[e]),
v = (e, t) => (m && (e = e.replace(/\uFEFF[0-9]/g, (e => a[e]))), t || (e = e.replace(/\\([\'\";:])/g, "$1")), e),
y = e => String.fromCharCode(parseInt(e.slice(1), 16)),
C = e => e.replace(/\\[0-9a-f]+/gi, y),
x = (t, n, o, r, s, a) => { if (s = s || a) return "'" + (s = v(s)).replace(/\'/g, "\\'") + "'"; if (n = v(n || o || r), !e.allow_script_urls) { const t = n.replace(/[\s\r\n]+/g, ""); if (/(java|vb)script:/i.test(t)) return ""; if (!e.allow_svg_data_urls && /^data:image\/svg/i.test(t)) return "" } return f && (n = f.call(g, n, "style")), "url('" + n.replace(/\'/g, "\\'") + "')" };
if (t) {
for (t = (t = t.replace(/[\u0000-\u001F]/g, "")).replace(/\\[\"\';:\uFEFF]/g, b).replace(/\"[^\"]+\"|\'[^\']+\'/g, (e => e.replace(/[;:]/g, b))); l = o.exec(t);)
if (o.lastIndex = l.index + l[0].length, d = l[1].replace(r, "").toLowerCase(), u = l[2].replace(r, ""), d && u) { if (d = C(d), u = C(u), -1 !== d.indexOf("\ufeff") || -1 !== d.indexOf('"')) continue; if (!e.allow_script_urls && ("behavior" === d || /expression\s*\(|\/\*|\*\//.test(u))) continue; "font-weight" === d && "700" === u ? u = "bold" : "color" !== d && "background-color" !== d || (u = u.toLowerCase()), u = u.replace(n, x), i[d] = m ? v(u, !0) : u }
p("border", "", !0), p("border", "-width"), p("border", "-color"), p("border", "-style"), p("padding", ""), p("margin", ""), "border", k = "border-style", S = "border-color", h(w = "border-width") && h(k) && h(S) && (i.border = i[w] + " " + i[k] + " " + i[S], delete i[w], delete i[k], delete i[S]), "medium none" === i.border && delete i.border, "none" === i["border-image"] && delete i["border-image"]
}
var w, k, S;
return i
},
serialize: (e, t) => {
let n = "";
const o = t => {
let o;
const r = i[t];
if (r)
for (let s = 0, a = r.length; s < a; s++) t = r[s], o = e[t], o && (n += (n.length > 0 ? " " : "") + t + ": " + o + ";")
};
return t && i ? (o("*"), o(t)) : fe(e, ((e, o) => {!e || l && !((e, t) => { let n = l["*"]; return !(n && n[e] || (n = l[t], n && n[e])) })(o, t) || (n += (n.length > 0 ? " " : "") + o + ": " + e + ";") })), n
}
};
return c
},
Cs = { keyLocation: !0, layerX: !0, layerY: !0, returnValue: !0, webkitMovementX: !0, webkitMovementY: !0, keyIdentifier: !0, mozPressure: !0 },
xs = (e, t) => { const n = null != t ? t : {}; for (const t in e) we(Cs, t) || (n[t] = e[t]); return C(n.composedPath) && (n.composedPath = () => e.composedPath()), n },
ws = (e, t, n, o) => { var r; const s = xs(t, o); return s.type = e, y(s.target) && (s.target = null !== (r = s.srcElement) && void 0 !== r ? r : n), (e => y(e.preventDefault) || (e => e instanceof Event || x(e.initEvent))(e))(t) && (s.preventDefault = () => { s.defaultPrevented = !0, s.isDefaultPrevented = P, x(t.preventDefault) && t.preventDefault() }, s.stopPropagation = () => { s.cancelBubble = !0, s.isPropagationStopped = P, x(t.stopPropagation) && t.stopPropagation() }, s.stopImmediatePropagation = () => { s.isImmediatePropagationStopped = P, s.stopPropagation() }, (e => e.isDefaultPrevented === P || e.isDefaultPrevented === L)(s) || (s.isDefaultPrevented = !0 === s.defaultPrevented ? P : L, s.isPropagationStopped = !0 === s.cancelBubble ? P : L, s.isImmediatePropagationStopped = L)), s },
ks = /^(?:mouse|contextmenu)|click/,
Ss = (e, t, n, o) => { e.addEventListener ? e.addEventListener(t, n, o || !1) : e.attachEvent && e.attachEvent("on" + t, n) },
_s = (e, t, n, o) => { e.removeEventListener ? e.removeEventListener(t, n, o || !1) : e.detachEvent && e.detachEvent("on" + t, n) },
Es = (e, t) => {
const n = ws(e.type, e, document, t);
if ((e => C(e) && ks.test(e.type))(e) && v(e.pageX) && !v(e.clientX)) {
const t = n.target.ownerDocument || document,
o = t.documentElement,
r = t.body,
s = n;
s.pageX = e.clientX + (o && o.scrollLeft || r && r.scrollLeft || 0) - (o && o.clientLeft || r && r.clientLeft || 0), s.pageY = e.clientY + (o && o.scrollTop || r && r.scrollTop || 0) - (o && o.clientTop || r && r.clientTop || 0)
}
return n
},
Ns = (e, t, n) => {
const o = e.document,
r = { type: "ready" };
if (n.domLoaded) return void t(r);
const s = () => { _s(e, "DOMContentLoaded", s), _s(e, "load", s), n.domLoaded || (n.domLoaded = !0, t(r)), e = null };
"complete" === o.readyState || "interactive" === o.readyState && o.body ? s() : Ss(e, "DOMContentLoaded", s), n.domLoaded || Ss(e, "load", s)
};
class Rs {
constructor() { 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 }
bind(e, t, n, o) {
const r = this;
let s, a, i, l, d, c, u;
const m = window,
f = e => { r.executeHandlers(Es(e || m.event), s) };
if (!e || 3 === e.nodeType || 8 === e.nodeType) return;
e[r.expando] ? s = e[r.expando] : (s = r.count++, e[r.expando] = s, r.events[s] = {}), o = o || e;
const g = t.split(" ");
for (i = g.length; i--;) l = g[i], c = f, d = u = !1, "DOMContentLoaded" === l && (l = "ready"), r.domLoaded && "ready" === l && "complete" === e.readyState ? n.call(o, Es({ type: l })) : (r.hasMouseEnterLeave || (d = r.mouseEnterLeave[l], d && (c = e => {
const t = e.currentTarget;
let n = e.relatedTarget;
if (n && t.contains) n = t.contains(n);
else
for (; n && n !== t;) n = n.parentNode;
n || ((e = Es(e || m.event)).type = "mouseout" === e.type ? "mouseleave" : "mouseenter", e.target = t, r.executeHandlers(e, s))
})), r.hasFocusIn || "focusin" !== l && "focusout" !== l || (u = !0, d = "focusin" === l ? "focus" : "blur", c = e => {
(e = Es(e || m.event)).type = "focus" === e.type ? "focusin" : "focusout", r.executeHandlers(e, s)
}), a = r.events[s][l], a ? "ready" === l && r.domLoaded ? n(Es({ type: l })) : a.push({ func: n, scope: o }) : (r.events[s][l] = a = [{ func: n, scope: o }], a.fakeName = d, a.capture = u, a.nativeHandler = c, "ready" === l ? Ns(e, c, r) : Ss(e, d || l, c, u)));
return e = a = null, n
}
unbind(e, t, n) {
let o, r, s, a, i;
if (!e || 3 === e.nodeType || 8 === e.nodeType) return this;
const l = e[this.expando];
if (l) {
if (i = this.events[l], t) {
const l = t.split(" ");
for (r = l.length; r--;)
if (a = l[r], o = i[a], o) {
if (n)
for (s = o.length; s--;)
if (o[s].func === n) {
const e = o.nativeHandler,
t = o.fakeName,
n = o.capture;
o = o.slice(0, s).concat(o.slice(s + 1)), o.nativeHandler = e, o.fakeName = t, o.capture = n, i[a] = o
}
n && 0 !== o.length || (delete i[a], _s(e, o.fakeName || a, o.nativeHandler, o.capture))
}
} else fe(i, ((t, n) => { _s(e, t.fakeName || n, t.nativeHandler, t.capture) })), i = {};
for (a in i)
if (we(i, a)) return this;
delete this.events[l];
try { delete e[this.expando] } catch (t) { e[this.expando] = null }
}
return this
}
fire(e, t, n) { return this.dispatch(e, t, n) }
dispatch(e, t, n) {
let o;
if (!e || 3 === e.nodeType || 8 === e.nodeType) return this;
const r = Es({ type: t, target: e }, n);
do { o = e[this.expando], o && this.executeHandlers(r, o), e = e.parentNode || e.ownerDocument || e.defaultView || e.parentWindow } while (e && !r.isPropagationStopped());
return this
}
clean(e) {
let 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), n = e.getElementsByTagName("*"), t = n.length; t--;)(e = n[t])[this.expando] && this.unbind(e);
return this
}
destroy() { this.events = {} }
cancel(e) { return e && (e.preventDefault(), e.stopImmediatePropagation()), !1 }
executeHandlers(e, t) {
const n = this.events[t],
o = n && n[e.type];
if (o)
for (let t = 0, n = o.length; t < n; t++) { const n = o[t]; if (n && !1 === n.func.call(n.scope, e) && e.preventDefault(), e.isImmediatePropagationStopped()) return }
}
}
Rs.Event = new Rs;
const As = Bt.each,
Os = Bt.grep,
Ts = "data-mce-style",
Bs = (e, t, n) => { y(n) || "" === n ? Yt(e, t) : $t(e, t, n) },
Ds = (e, t) => {
const n = Wt(t, "style"),
o = e.serialize(e.parse(n), Mt(t));
Bs(t, Ts, o)
},
Ls = (e, t) => {
let n, o, r = 0;
if (e)
for (n = e.nodeType, e = e.previousSibling; e; e = e.previousSibling) o = e.nodeType, (!t || 3 !== o || o !== n && e.nodeValue.length) && (r++, n = o);
return r
},
Ps = Bt.makeMap("fill-opacity font-weight line-height opacity orphans widows z-index zoom", " "),
Ms = e => e.replace(/[A-Z]/g, (e => "-" + e.toLowerCase())),
Is = (e, t = {}) => {
const n = {},
o = window,
r = {};
let s = 0;
const a = Yo.forElement(mn(e), { contentCssCors: t.contentCssCors, referrerPolicy: t.referrerPolicy }),
i = [],
l = t.schema ? t.schema : vs({}),
d = ys({ url_converter: t.url_converter, url_converter_scope: t.url_converter_scope }, t.schema),
c = t.ownEvents ? new Rs : Rs.Event,
u = l.getBlockElements(),
g = t => t && e && m(t) ? e.getElementById(t) : t,
h = e => { const t = g(e); return C(t) ? mn(t) : null },
b = (e, t, n) => {
let o;
const r = h(e);
if (C(r) && Ut(r)) {
const e = J[t];
o = e && e.get ? e.get(r.dom, t) : Wt(r, t)
}
return C(o) ? o : null != n ? n : ""
},
v = e => { const t = g(e); return y(t) ? [] : t.attributes },
k = (e, n, o) => {
L(e, (e => {
if (yo(e)) {
const r = mn(e);
"" === o && (o = null);
const s = Wt(r, n),
a = J[n];
a && a.set ? a.set(r.dom, o, n) : Bs(r, n, o), s !== o && t.onSetAttrib && t.onSetAttrib({ attrElm: r, attrName: n, attrValue: o })
}
}))
},
_ = () => t.root_element || e.body,
E = (t, n) => ((e, t, n) => {
let o = 0,
r = 0;
const s = e.ownerDocument;
if (n = n || e, t) {
if (n === e && t.getBoundingClientRect && "static" === $n(mn(e), "position")) { const n = t.getBoundingClientRect(); return o = n.left + (s.documentElement.scrollLeft || e.scrollLeft) - s.documentElement.clientLeft, r = n.top + (s.documentElement.scrollTop || e.scrollTop) - s.documentElement.clientTop, { x: o, y: r } }
let a = t;
for (; a && a !== n && a.nodeType && !jo(a, n);) {
const e = a;
o += e.offsetLeft || 0, r += e.offsetTop || 0, a = e.offsetParent
}
for (a = t.parentNode; a && a !== n && a.nodeType && !jo(a, n);) o -= a.scrollLeft || 0, r -= a.scrollTop || 0, a = a.parentNode;
r += (e => Uo.isFirefox() && "table" === Mt(e) ? zo(Nn(e)).filter((e => "caption" === Mt(e))).bind((e => zo(En(e)).map((t => {
const n = t.dom.offsetTop,
o = e.dom.offsetTop,
r = e.dom.offsetHeight;
return n <= o ? -r : 0
})))).getOr(0) : 0)(mn(t))
}
return { x: o, y: r }
})(e.body, g(t), n),
R = (e, n, o) => {
const r = (e, t) => m(e) ? e : w(e) ? we(Ps, t) ? e + "" : e + "px" : ge(e, r),
s = (e, t, n) => {
const o = Ms(t);
y(n) || "" === n ? Gn(e, o) : Vn(e, o, r(n, o))
};
L(e, (e => {
const r = mn(e);
m(n) ? s(r, n, o) : fe(n, ((e, t) => { s(r, t, e) })), t.update_styles && Ds(d, r)
}))
},
A = (e, t, n) => { const o = g(e); if (!y(o) && yo(o)) return n ? $n(mn(o), Ms(t)) : ("float" === (t = t.replace(/-(\D)/g, ((e, t) => t.toUpperCase()))) && (t = "cssFloat"), o.style ? o.style[t] : void 0) },
O = e => { let t, n; const o = g(e); return t = A(o, "width"), n = A(o, "height"), -1 === t.indexOf("px") && (t = 0), -1 === n.indexOf("px") && (n = 0), { w: parseInt(t, 10) || o.offsetWidth || o.clientWidth, h: parseInt(n, 10) || o.offsetHeight || o.clientHeight } },
T = (e, t) => { if (!e) return !1; const n = p(e) ? e : [e]; return V(n, (e => pn(mn(e), t))) },
B = (e, t, n, o) => {
const r = [];
let s, a = g(e);
for (o = void 0 === o, n = n || ("BODY" !== _().nodeName ? _().parentNode : null), m(t) && (s = t, t = "*" === t ? yo : e => T(e, s)); a && !(a === n || y(a.nodeType) || To(a) || Bo(a));) {
if (!t || t(a)) {
if (!o) return [a];
r.push(a)
}
a = a.parentNode
}
return o ? r : null
},
D = (e, t, n) => {
let o = t;
if (e)
for (m(t) && (o = e => T(e, t)), e = e[n]; e; e = e[n])
if (x(o) && o(e)) return e;
return null
},
L = function(e, t, n) {
const o = null != n ? n : this,
r = m(e) ? g(e) : e;
if (!r) return !1;
if (p(r) && (r.length || 0 === r.length)) { const e = []; return As(r, ((n, r) => { n && e.push(t.call(o, m(n) ? g(n) : n, r)) })), e }
return t.call(o, r)
},
P = (e, t) => { L(e, (e => { fe(t, ((t, n) => { k(e, n, t) })) })) },
M = (e, t) => {
L(e, (e => {
const n = mn(e);
ro(n, t)
}))
},
I = (t, n, o, r, s) => L(t, (t => { const a = m(n) ? e.createElement(n) : n; return C(o) && P(a, o), r && (!m(r) && r.nodeType ? a.appendChild(r) : m(r) && M(a, r)), s ? a : t.appendChild(a) })),
F = (t, n, o) => I(e.createElement(t), t, n, o, !0),
U = ls.encodeAllRaw,
z = (e, t) => L(e, (e => { const n = mn(e); return t && $(Nn(n), (e => { zt(e) && 0 === e.dom.length ? to(e) : Yn(n, e) })), to(n), n.dom })),
H = (e, t, n) => {
L(e, (e => {
if (yo(e)) {
const o = mn(e),
r = t.split(" ");
$(r, (e => {
C(n) ? (n ? nn : rn)(o, e) : ((e, t) => {
const n = Jt(e) ? e.dom.classList.toggle(t) : ((e, t) => j(Zt(e), t) ? tn(e, t) : en(e, t))(e, t);
on(e)
})(o, e)
}))
}
}))
},
q = (e, t, n) => L(t, (t => (p(t) && (e = e.cloneNode(!0)), n && As(Os(t.childNodes), (t => { e.appendChild(t) })), t.parentNode.replaceChild(e, t)))),
W = e => { if (yo(e)) { const t = "a" === e.nodeName.toLowerCase() && !b(e, "href") && b(e, "id"); if (b(e, "name") || b(e, "data-mce-bookmark") || t) return !0 } return !1 },
K = () => e.createRange(),
G = (n, r, s, a) => { if (p(n)) { let e = n.length; const t = []; for (; e--;) t[e] = G(n[e], r, s, a); return t } return !t.collect || n !== e && n !== o || i.push([n, r, s, a]), c.bind(n, r, s, a || Q) },
Y = (t, n, r) => {
if (p(t)) { let e = t.length; const o = []; for (; e--;) o[e] = Y(t[e], n, r); return o }
if (i.length > 0 && (t === e || t === o)) {
let e = i.length;
for (; e--;) {
const o = i[e];
t !== o[0] || n && n !== o[1] || r && r !== o[2] || c.unbind(o[0], o[1], o[2])
}
}
return c.unbind(t, n, r)
},
X = e => { if (e && yo(e)) { const t = e.getAttribute("data-mce-contenteditable"); return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null } return null },
Q = {
doc: e,
settings: t,
win: o,
files: r,
stdMode: !0,
boxModel: !0,
styleSheetLoader: a,
boundEvents: i,
styles: d,
schema: l,
events: c,
isBlock: e => m(e) ? we(u, e) : yo(e) && we(u, e.nodeName),
root: null,
clone: (e, t) => e.cloneNode(t),
getRoot: _,
getViewPort: e => { const t = ho(e); return { x: t.x, y: t.y, w: t.width, h: t.height } },
getRect: e => {
const t = g(e),
n = E(t),
o = O(t);
return { x: n.x, y: n.y, w: o.w, h: o.h }
},
getSize: O,
getParent: (e, t, n) => { const o = B(e, t, n, !1); return o && o.length > 0 ? o[0] : null },
getParents: B,
get: g,
getNext: (e, t) => D(e, t, "nextSibling"),
getPrev: (e, t) => D(e, t, "previousSibling"),
select: (n, o) => { var r, s; const a = null !== (s = null !== (r = g(o)) && void 0 !== r ? r : t.root_element) && void 0 !== s ? s : e; return de(a.querySelectorAll(n)) },
is: T,
add: I,
create: F,
createHTML: (e, t, n = "") => { let o, r = ""; for (o in r += "<" + e, t) ke(t, o) && (r += " " + o + '="' + U(t[o]) + '"'); return Ke(n) && we(l.getVoidElements(), e) ? r + " />" : r + ">" + n + "" + e + ">" },
createFragment: t => {
let n;
const o = e.createElement("div"),
r = e.createDocumentFragment();
for (r.appendChild(o), t && (o.innerHTML = t); n = o.firstChild;) r.appendChild(n);
return r.removeChild(o), r
},
remove: z,
setStyle: R,
getStyle: A,
setStyles: (e, t) => { R(e, t) },
removeAllAttribs: e => L(e, (e => { const t = e.attributes; for (let n = t.length - 1; n >= 0; n--) e.removeAttributeNode(t.item(n)) })),
setAttrib: k,
setAttribs: P,
getAttrib: b,
getPos: E,
parseStyle: e => d.parse(e),
serializeStyle: (e, t) => d.serialize(e, t),
addStyle: t => {
let o, r;
if (Q !== Is.DOM && e === document) {
if (n[t]) return;
n[t] = !0
}
r = e.getElementById("mceDefaultStyles"), r || (r = e.createElement("style"), r.id = "mceDefaultStyles", r.type = "text/css", o = e.getElementsByTagName("head")[0], o.firstChild ? o.insertBefore(r, o.firstChild) : o.appendChild(r)), r.styleSheet ? r.styleSheet.cssText += t : r.appendChild(e.createTextNode(t))
},
loadCSS: e => { e || (e = ""), $(e.split(","), (e => { r[e] = !0, a.load(e).catch(S) })) },
addClass: (e, t) => { H(e, t, !0) },
removeClass: (e, t) => { H(e, t, !1) },
hasClass: (e, t) => {
const n = h(e),
o = t.split(" ");
return te(o, (e => sn(n, e)))
},
toggleClass: H,
show: e => { L(e, (e => Gn(mn(e), "display"))) },
hide: e => { L(e, (e => Vn(mn(e), "display", "none"))) },
isHidden: e => { const t = h(e); return Dt(Wn(t, "display"), "none") },
uniqueId: e => (e || "mce_") + s++,
setHTML: M,
getOuterHTML: e => {
const t = h(e);
return yo(t.dom) ? t.dom.outerHTML : (e => {
const t = cn("div"),
n = mn(e.dom.cloneNode(!0));
return Jn(t, n), oo(t)
})(t)
},
setOuterHTML: (e, t) => { L(e, (e => { yo(e) && (e.outerHTML = t) })) },
decode: ls.decode,
encode: U,
insertAfter: (e, t) => {
const n = g(t);
return L(e, (e => {
const t = n.parentNode,
o = n.nextSibling;
return o ? t.insertBefore(e, o) : t.appendChild(e), e
}))
},
replace: q,
rename: (e, t) => { let n; return e.nodeName !== t.toUpperCase() && (n = F(t), As(v(e), (t => { k(n, t.nodeName, b(e, t.nodeName)) })), q(n, e, !0)), n || e },
findCommonAncestor: (e, t) => {
let n, o = e;
for (; o;) {
for (n = t; n && o !== n;) n = n.parentNode;
if (o === n) break;
o = o.parentNode
}
return !o && e.ownerDocument ? e.ownerDocument.documentElement : o
},
run: L,
getAttribs: v,
isEmpty: (e, t) => {
let n, o, r = 0;
if (W(e)) return !1;
if (e = e.firstChild) {
const s = new Xo(e, e.parentNode),
a = l ? l.getWhitespaceElements() : {};
t = t || (l ? l.getNonEmptyElements() : null);
do {
if (n = e.nodeType, yo(e)) { const n = e.getAttribute("data-mce-bogus"); if (n) { e = s.next("all" === n); continue } if (o = e.nodeName.toLowerCase(), t && t[o]) { if ("br" === o) { r++, e = s.next(); continue } return !1 } if (W(e)) return !1 }
if (8 === n) return !1;
if (3 === n && !Fr(e.nodeValue)) return !1;
if (3 === n && e.parentNode && a[e.parentNode.nodeName] && Fr(e.nodeValue)) return !1;
e = s.next()
} while (e)
}
return r <= 1
},
createRng: K,
nodeIndex: Ls,
split: (e, t, n) => { let o, r, s, a = K(); if (e && t) return a.setStart(e.parentNode, Ls(e)), a.setEnd(t.parentNode, Ls(t)), o = a.extractContents(), a = K(), a.setStart(t.parentNode, Ls(t) + 1), a.setEnd(e.parentNode, Ls(e) + 1), r = a.extractContents(), s = e.parentNode, s.insertBefore(Gr(Q, o), e), n ? s.insertBefore(n, e) : s.insertBefore(t, e), s.insertBefore(Gr(Q, r), e), z(e), n || t },
bind: G,
unbind: Y,
fire: (e, t, n) => c.dispatch(e, t, n),
dispatch: (e, t, n) => c.dispatch(e, t, n),
getContentEditable: X,
getContentEditableParent: e => { const t = _(); let n = null; for (; e && e !== t && (n = X(e), null === n); e = e.parentNode); return n },
destroy: () => {
if (i.length > 0) {
let e = i.length;
for (; e--;) {
const t = i[e];
c.unbind(t[0], t[1], t[2])
}
}
fe(r, ((e, t) => { a.unload(t), delete r[t] }))
},
isChildOf: (e, t) => e === t || t.contains(e),
dumpRng: e => "startContainer: " + e.startContainer.nodeName + ", startOffset: " + e.startOffset + ", endContainer: " + e.endContainer.nodeName + ", endOffset: " + e.endOffset
},
J = ((e, t, n) => {
const o = t.keep_values,
r = {
set: (e, o, r) => {
const s = mn(e);
x(t.url_converter) && C(o) && (o = t.url_converter.call(t.url_converter_scope || n(), o, r, e[0])), Bs(s, "data-mce-" + r, o), Bs(s, r, o)
},
get: (e, t) => { const n = mn(e); return Wt(n, "data-mce-" + t) || Wt(n, t) }
},
s = {
style: {
set: (t, n) => {
const r = mn(t);
f(n) ? Hn(r, n) : (o && Bs(r, Ts, n), Yt(r, "style"), m(n) && Hn(r, e.parse(n)))
},
get: t => {
const n = mn(t),
o = Wt(n, Ts) || Wt(n, "style");
return e.serialize(e.parse(o), Mt(n))
}
}
};
return o && (s.href = s.src = r), s
})(d, t, N(Q));
return Q
};
Is.DOM = Is(document), Is.nodeIndex = Ls;
const Fs = Is.DOM;
class Us {
constructor(e = {}) { this.states = {}, this.queue = [], this.scriptLoadedCallbacks = {}, this.queueLoadedCallbacks = [], this.loading = !1, this.settings = e }
_setReferrerPolicy(e) { this.settings.referrerPolicy = e }
loadScript(e) {
return new Promise(((t, n) => {
const o = Fs;
let r;
const s = () => { o.remove(a), r && (r.onerror = r.onload = r = null) },
a = o.uniqueId();
r = document.createElement("script"), r.id = a, r.type = "text/javascript", r.src = Bt._addCacheSuffix(e), this.settings.referrerPolicy && o.setAttrib(r, "referrerpolicy", this.settings.referrerPolicy), r.onload = () => { s(), t() }, r.onerror = () => { s(), n("Failed to load script: " + e) }, (document.getElementsByTagName("head")[0] || document.body).appendChild(r)
}))
}
isDone(e) { return 2 === this.states[e] }
markDone(e) { this.states[e] = 2 }
add(e) { const t = this; return t.queue.push(e), void 0 === t.states[e] && (t.states[e] = 0), new Promise(((n, o) => { t.scriptLoadedCallbacks[e] || (t.scriptLoadedCallbacks[e] = []), t.scriptLoadedCallbacks[e].push({ resolve: n, reject: o }) })) }
load(e) { return this.add(e) }
remove(e) { delete this.states[e], delete this.scriptLoadedCallbacks[e] }
loadQueue() { const e = this.queue; return this.queue = [], this.loadScripts(e) }
loadScripts(e) {
const t = this,
n = (e, n) => { xe(t.scriptLoadedCallbacks, n).each((t => { $(t, (t => t[e](n))) })), delete t.scriptLoadedCallbacks[n] },
o = e => { const t = K(e, (e => "rejected" === e.status)); return t.length > 0 ? Promise.reject(ee(t, (({ reason: e }) => p(e) ? e : [e]))) : Promise.resolve() },
r = e => Promise.allSettled(H(e, (e => 2 === t.states[e] ? (n("resolve", e), Promise.resolve()) : 3 === t.states[e] ? (n("reject", e), Promise.reject(e)) : (t.states[e] = 1, t.loadScript(e).then((() => { t.states[e] = 2, n("resolve", e); const s = t.queue; if (s.length > 0) return t.queue = [], r(s).then(o) }), (() => (t.states[e] = 3, n("reject", e), Promise.reject(e)))))))),
s = e => (t.loading = !0, r(e).then((e => { t.loading = !1; const n = t.queueLoadedCallbacks.shift(); return M.from(n).each(D), o(e) }))),
a = Se(e);
return t.loading ? new Promise(((e, n) => { t.queueLoadedCallbacks.push((() => s(a).then(e, n))) })) : s(a)
}
}
Us.ScriptLoader = new Us;
const zs = e => { let t = e; return { get: () => t, set: e => { t = e } } },
js = {},
Vs = zs("en"),
Hs = () => xe(js, Vs.get()),
$s = {
getData: () => ge(js, (e => ({...e }))),
setCode: e => { e && Vs.set(e) },
getCode: () => Vs.get(),
add: (e, t) => {
let n = js[e];
n || (js[e] = n = {}), fe(t, ((e, t) => { n[t.toLowerCase()] = e }))
},
translate: e => {
const t = Hs().getOr({}),
n = e => x(e) ? Object.prototype.toString.call(e) : o(e) ? "" : "" + e,
o = e => "" === e || null == e,
r = e => { const o = n(e); return xe(t, o.toLowerCase()).map(n).getOr(o) },
s = e => e.replace(/{context:\w+}$/, "");
if (o(e)) return "";
if (f(a = e) && we(a, "raw")) return n(e.raw);
var a;
if ((e => p(e) && e.length > 1)(e)) { const t = e.slice(1); return s(r(e[0]).replace(/\{([0-9]+)\}/g, ((e, o) => we(t, o) ? n(t[o]) : e))) }
return s(r(e))
},
isRtl: () => Hs().bind((e => xe(e, "_dir"))).exists((e => "rtl" === e)),
hasCode: e => we(js, e)
},
qs = () => {
const e = [],
t = {},
n = {},
o = [],
r = (e, t) => {
const n = K(o, (n => n.name === e && n.state === t));
$(n, (e => e.resolve()))
},
s = e => we(t, e),
a = (e, n) => { const o = $s.getCode();!o || n && -1 === ("," + (n || "") + ",").indexOf("," + o + ",") || Us.ScriptLoader.add(t[e] + "/langs/" + o + ".js") },
i = (e, t = "added") => "added" === t && (e => we(n, e))(e) || "loaded" === t && s(e) ? Promise.resolve() : new Promise((n => { o.push({ name: e, state: t, resolve: n }) }));
return {
items: e,
urls: t,
lookup: n,
get: e => { if (n[e]) return n[e].instance },
requireLangPack: (e, t) => {!1 !== qs.languageLoad && (s(e) ? a(e, t) : i(e, "loaded").then((() => a(e, t)))) },
add: (t, o) => (e.push(o), n[t] = { instance: o }, r(t, "added"), o),
remove: e => { delete t[e], delete n[e] },
createUrl: (e, t) => m(t) ? m(e) ? { prefix: "", resource: t, suffix: "" } : { prefix: e.prefix, resource: t, suffix: e.suffix } : t,
load: (e, o) => {
if (t[e]) return Promise.resolve();
let s = m(o) ? o : o.prefix + o.resource + o.suffix;
0 !== s.indexOf("/") && -1 === s.indexOf("://") && (s = qs.baseURL + "/" + s), t[e] = s.substring(0, s.lastIndexOf("/"));
const a = () => (r(e, "loaded"), Promise.resolve());
return n[e] ? a() : Us.ScriptLoader.add(s).then(a)
},
waitFor: i
}
};
qs.languageLoad = !0, qs.baseURL = "", qs.PluginManager = qs(), qs.ThemeManager = qs(), qs.ModelManager = qs();
const Ws = () => {
const e = (e => {
const t = zs(M.none()),
n = () => t.get().each(e);
return { clear: () => { n(), t.set(M.none()) }, isSet: () => t.get().isSome(), get: () => t.get(), set: e => { n(), t.set(M.some(e)) } }
})(S);
return {...e, on: t => e.get().each(t) }
},
Ks = (e, t) => { let n = null; return { cancel: () => { h(n) || (clearTimeout(n), n = null) }, throttle: (...o) => { h(n) && (n = setTimeout((() => { n = null, e.apply(null, o) }), t)) } } },
Gs = (e, t) => { let n = null; const o = () => { h(n) || (clearTimeout(n), n = null) }; return { cancel: o, throttle: (...r) => { o(), n = setTimeout((() => { n = null, e.apply(null, r) }), t) } } },
Ys = (e, t) => { let n = []; return $(Nn(e), (e => { t(e) && (n = n.concat([e])), n = n.concat(Ys(e, t)) })), n },
Xs = (e, t) => ((e, t) => { const n = void 0 === t ? document : t.dom; return hn(n) ? [] : H(n.querySelectorAll(e), mn) })(t, e),
Qs = N("mce-annotation"),
Js = N("data-mce-annotation"),
Zs = N("data-mce-annotation-uid"),
ea = N("data-mce-annotation-active"),
ta = (e, t) => {
const n = e.selection.getRng(),
o = mn(n.startContainer),
r = mn(e.getBody()),
s = t.fold((() => "." + Qs()), (e => `[${Js()}="${e}"]`)),
a = Rn(o, n.startOffset).getOr(o),
i = Ko(a, s, (e => bn(e, r))),
l = (e, t) => Gt(e, t) ? M.some(Wt(e, t)) : M.none();
return i.bind((t => l(t, `${Zs()}`).bind((n => l(t, `${Js()}`).map((t => { const o = na(e, n); return { uid: n, name: t, elements: o } }))))))
},
na = (e, t) => { const n = mn(e.getBody()); return Xs(n, `[${Zs()}="${t}"]`) },
oa = (e, t) => {
const n = mn(e.getBody()),
o = Xs(n, `[${Js()}="${t}"]`),
r = {};
return $(o, (e => {
const t = Wt(e, Zs()),
n = xe(r, t).getOr([]);
r[t] = n.concat([e])
})), r
};
let ra = 0;
const sa = e => {
const t = (new Date).getTime(),
n = Math.floor(1e9 * Math.random());
return ra++, e + "_" + n + ra + String(t)
},
aa = (e, t) => mn(e.dom.cloneNode(t)),
ia = e => aa(e, !1),
la = e => aa(e, !0),
da = (e, t, n = L) => {
const o = new Xo(e, t),
r = e => {
let t;
do { t = o[e]() } while (t && !No(t) && !n(t));
return M.from(t).filter(No)
};
return { current: () => M.from(o.current()).filter(No), next: () => r("next"), prev: () => r("prev"), prev2: () => r("prev2") }
},
ca = (e, t) => {
const n = t || (t => e.isBlock(t) || Do(t) || Mo(t)),
o = (e, t, n, r) => { if (No(e)) { const n = r(e, t, e.data); if (-1 !== n) return M.some({ container: e, offset: n }) } return n().bind((e => o(e.container, e.offset, n, r))) };
return { backwards: (e, t, r, s) => { const a = da(e, s, n); return o(e, t, (() => a.prev().map((e => ({ container: e, offset: e.length })))), r).getOrNull() }, forwards: (e, t, r, s) => { const a = da(e, s, n); return o(e, t, (() => a.next().map((e => ({ container: e, offset: 0 })))), r).getOrNull() } }
},
ua = Math.round,
ma = e => e ? { left: ua(e.left), top: ua(e.top), bottom: ua(e.bottom), right: ua(e.right), width: ua(e.width), height: ua(e.height) } : { left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0 },
fa = (e, t) => (e = ma(e), t || (e.left = e.left + e.width), e.right = e.left, e.width = 0, e),
ga = (e, t, n) => e >= 0 && e <= Math.min(t.height, n.height) / 2,
pa = (e, t) => { const n = Math.min(t.height / 2, e.height / 2); return e.bottom - n < t.top || !(e.top > t.bottom) && ga(t.top - e.bottom, e, t) },
ha = (e, t) => e.top > t.bottom || !(e.bottom < t.top) && ga(t.bottom - e.top, e, t),
ba = (e, t, n) => {
const o = Math.max(Math.min(t, e.left + e.width), e.left),
r = Math.max(Math.min(n, e.top + e.height), e.top);
return Math.sqrt((t - o) * (t - o) + (n - r) * (n - r))
},
va = e => {
const t = e.startContainer,
n = e.startOffset;
return t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null
},
ya = (e, t) => {
if (yo(e) && e.hasChildNodes()) {
const n = e.childNodes,
o = ((e, t, n) => Math.min(Math.max(e, 0), n))(t, 0, n.length - 1);
return n[o]
}
return e
},
Ca = 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]"),
xa = e => "string" == typeof e && e.charCodeAt(0) >= 768 && Ca.test(e),
wa = yo,
ka = Lr,
Sa = xo("display", "block table"),
_a = xo("float", "left right"),
Ea = ((...e) => t => {
for (let n = 0; n < e.length; n++)
if (!e[n](t)) return !1;
return !0
})(wa, ka, T(_a)),
Na = T(xo("white-space", "pre pre-line pre-wrap")),
Ra = No,
Aa = Do,
Oa = Is.nodeIndex,
Ta = (e, t) => t < 0 && yo(e) && e.hasChildNodes() ? void 0 : ya(e, t),
Ba = e => "createRange" in e ? e.createRange() : Is.DOM.createRng(),
Da = e => e && /[\r\n\t ]/.test(e),
La = e => !!e.setStart && !!e.setEnd,
Pa = e => {
const t = e.startContainer,
n = e.startOffset;
if (Da(e.toString()) && Na(t.parentNode) && No(t)) { const e = t.data; if (Da(e[n - 1]) || Da(e[n + 1])) return !0 }
return !1
},
Ma = e => 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom,
Ia = e => {
let t;
const n = e.getClientRects();
return t = n.length > 0 ? ma(n[0]) : ma(e.getBoundingClientRect()), !La(e) && Aa(e) && Ma(t) ? (e => {
const t = e.ownerDocument,
n = Ba(t),
o = t.createTextNode(dr),
r = e.parentNode;
r.insertBefore(o, e), n.setStart(o, 0), n.setEnd(o, 1);
const s = ma(n.getBoundingClientRect());
return r.removeChild(o), s
})(e) : Ma(t) && La(e) ? (e => {
const t = e.startContainer,
n = e.endContainer,
o = e.startOffset,
r = e.endOffset;
if (t === n && No(n) && 0 === o && 1 === r) { const t = e.cloneRange(); return t.setEndAfter(n), Ia(t) }
return null
})(e) : t
},
Fa = (e, t) => { const n = fa(e, t); return n.width = 1, n.right = n.left + 1, n },
Ua = (e, t, n) => {
const o = () => (n || (n = (e => {
const t = [],
n = e => {
var n, o;
0 !== e.height && (t.length > 0 && (n = e, o = t[t.length - 1], n.left === o.left && n.top === o.top && n.bottom === o.bottom && n.right === o.right) || t.push(e))
},
o = (e, o) => {
const r = Ba(e.ownerDocument);
if (o < e.data.length) { if (xa(e.data[o])) return t; if (xa(e.data[o - 1]) && (r.setStart(e, o), r.setEnd(e, o + 1), !Pa(r))) return n(Fa(Ia(r), !1)), t }
o > 0 && (r.setStart(e, o - 1), r.setEnd(e, o), Pa(r) || n(Fa(Ia(r), !1))), o < e.data.length && (r.setStart(e, o), r.setEnd(e, o + 1), Pa(r) || n(Fa(Ia(r), !0)))
},
r = e.container(),
s = e.offset();
if (Ra(r)) return o(r, s), t;
if (wa(r))
if (e.isAtEnd()) {
const e = Ta(r, s);
Ra(e) && o(e, e.data.length), Ea(e) && !Aa(e) && n(Fa(Ia(e), !1))
} else {
const a = Ta(r, s);
if (Ra(a) && o(a, 0), Ea(a) && e.isAtEnd()) return n(Fa(Ia(a), !1)), t;
const i = Ta(e.container(), e.offset() - 1);
Ea(i) && !Aa(i) && (Sa(i) || Sa(a) || !Ea(a)) && n(Fa(Ia(i), !1)), Ea(a) && n(Fa(Ia(a), !0))
}
return t
})(Ua(e, t))), n);
return { container: N(e), offset: N(t), toRange: () => { const n = Ba(e.ownerDocument); return n.setStart(e, t), n.setEnd(e, t), n }, getClientRects: o, isVisible: () => o().length > 0, isAtStart: () => (Ra(e), 0 === t), isAtEnd: () => Ra(e) ? t >= e.data.length : t >= e.childNodes.length, isEqual: n => n && e === n.container() && t === n.offset(), getNode: n => Ta(e, n ? t - 1 : t) }
};
Ua.fromRangeStart = e => Ua(e.startContainer, e.startOffset), Ua.fromRangeEnd = e => Ua(e.endContainer, e.endOffset), Ua.after = e => Ua(e.parentNode, Oa(e) + 1), Ua.before = e => Ua(e.parentNode, Oa(e)), Ua.isAbove = (e, t) => Lt(ie(t.getClientRects()), le(e.getClientRects()), pa).getOr(!1), Ua.isBelow = (e, t) => Lt(le(t.getClientRects()), ie(e.getClientRects()), ha).getOr(!1), Ua.isAtStart = e => !!e && e.isAtStart(), Ua.isAtEnd = e => !!e && e.isAtEnd(), Ua.isTextPosition = e => !!e && No(e.container()), Ua.isElementPosition = e => !1 === Ua.isTextPosition(e);
const za = (e, t) => { No(t) && 0 === t.data.length && e.remove(t) },
ja = (e, t, n) => {
Bo(n) ? ((e, t, n) => {
const o = M.from(n.firstChild),
r = M.from(n.lastChild);
t.insertNode(n), o.each((t => za(e, t.previousSibling))), r.each((t => za(e, t.nextSibling)))
})(e, t, n) : ((e, t, n) => { t.insertNode(n), za(e, n.previousSibling), za(e, n.nextSibling) })(e, t, n)
},
Va = No,
Ha = ko,
$a = Is.nodeIndex,
qa = e => { const t = e.parentNode; return Ha(t) ? qa(t) : t },
Wa = e => e ? Oe(e.childNodes, ((e, t) => (Ha(t) && "BR" !== t.nodeName ? e = e.concat(Wa(t)) : e.push(t), e)), []) : [],
Ka = e => t => e === t,
Ga = e => {
let t;
return t = Va(e) ? "text()" : e.nodeName.toLowerCase(), t + "[" + (e => {
let t, n;
t = Wa(qa(e)), n = Te(t, Ka(e), e), t = t.slice(0, n + 1);
const o = Oe(t, ((e, n, o) => (Va(n) && Va(t[o - 1]) && e++, e)), 0);
return t = Re(t, Co([e.nodeName])), n = Te(t, Ka(e), e), n - o
})(e) + "]"
},
Ya = (e, t) => {
let n, o, r, s, a, i = [];
return n = t.container(), o = t.offset(), Va(n) ? r = ((e, t) => {
for (;
(e = e.previousSibling) && Va(e);) t += e.data.length;
return t
})(n, o) : (s = n.childNodes, o >= s.length ? (r = "after", o = s.length - 1) : r = "before", n = s[o]), i.push(Ga(n)), a = ((e, t, n) => { const o = []; for (t = t.parentNode; t !== e; t = t.parentNode) o.push(t); return o })(e, n), a = Re(a, T(ko)), i = i.concat(Ne(a, (e => Ga(e)))), i.reverse().join("/") + "," + r
},
Xa = (e, t) => {
let n;
if (!t) return null;
const o = t.split(","),
r = o[0].split("/");
n = o.length > 1 ? o[1] : "before";
const s = Oe(r, ((e, t) => { const n = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t); return n ? ("text()" === n[1] && (n[1] = "#text"), ((e, t, n) => { let o = Wa(e); return o = Re(o, ((e, t) => !Va(e) || !Va(o[t - 1]))), o = Re(o, Co([t])), o[n] })(e, n[1], parseInt(n[2], 10))) : null }), e);
return s ? Va(s) ? ((e, t) => {
let n, o = e,
r = 0;
for (; Va(o);) {
if (n = o.data.length, t >= r && t <= r + n) { e = o, t -= r; break }
if (!Va(o.nextSibling)) { e = o, t = n; break }
r += n, o = o.nextSibling
}
return Va(e) && t > e.data.length && (t = e.data.length), Ua(e, t)
})(s, parseInt(n, 10)) : (n = "after" === n ? $a(s) + 1 : $a(s), Ua(s.parentNode, n)) : null
},
Qa = Mo,
Ja = (e, t, n, o, r) => {
let s = o[r ? "startContainer" : "endContainer"],
a = o[r ? "startOffset" : "endOffset"];
const i = [];
let l, d = 0;
const c = e.getRoot();
for (No(s) ? i.push(n ? ((e, t, n) => { let o, r; for (r = e(t.data.slice(0, n)).length, o = t.previousSibling; o && No(o); o = o.previousSibling) r += e(o.data).length; return r })(t, s, a) : a) : (l = s.childNodes, a >= l.length && l.length && (d = 1, a = Math.max(0, l.length - 1)), i.push(e.nodeIndex(l[a], n) + d)); s && s !== c; s = s.parentNode) i.push(e.nodeIndex(s, n));
return i
},
Za = (e, t, n) => { let o = 0; return Bt.each(e.select(t), (e => { if ("all" !== e.getAttribute("data-mce-bogus")) return e !== n && void o++ })), o },
ei = (e, t) => {
let n, o, r;
const s = t ? "start" : "end";
n = e[s + "Container"], o = e[s + "Offset"], yo(n) && "TR" === n.nodeName && (r = n.childNodes, n = r[Math.min(t ? o : o - 1, r.length - 1)], n && (o = t ? 0 : n.childNodes.length, e["set" + (t ? "Start" : "End")](n, o)))
},
ti = e => (ei(e, !0), ei(e, !1), e),
ni = (e, t) => { let n; if (yo(e) && (e = ya(e, t), Qa(e))) return e; if (vr(e)) { if (No(e) && hr(e) && (e = e.parentNode), n = e.previousSibling, Qa(n)) return n; if (n = e.nextSibling, Qa(n)) return n } },
oi = (e, t, n) => {
const o = n.getNode();
let r = o ? o.nodeName : null;
const s = n.getRng();
if (Qa(o) || "IMG" === r) return { name: r, index: Za(n.dom, r, o) };
const a = (e => ni(e.startContainer, e.startOffset) || ni(e.endContainer, e.endOffset))(s);
return a ? (r = a.tagName, { name: r, index: Za(n.dom, r, a) }) : ((e, t, n, o) => {
const r = t.dom,
s = {};
return s.start = Ja(r, e, n, o, !0), t.isCollapsed() || (s.end = Ja(r, e, n, o, !1)), _r(o) && (s.isFakeCaret = !0), s
})(e, n, t, s)
},
ri = (e, t, n) => { const o = { "data-mce-type": "bookmark", id: t, style: "overflow:hidden;line-height:0px" }; return n ? e.create("span", o, "") : e.create("span", o) },
si = (e, t) => {
const n = e.dom;
let o = e.getRng();
const r = n.uniqueId(),
s = e.isCollapsed(),
a = e.getNode(),
i = a.nodeName;
if ("IMG" === i) return { name: i, index: Za(n, i, a) };
const l = ti(o.cloneRange());
if (!s) {
l.collapse(!1);
const e = ri(n, r + "_end", t);
ja(n, l, e)
}
o = ti(o), o.collapse(!0);
const d = ri(n, r + "_start", t);
return ja(n, o, d), e.moveToBookmark({ id: r, keep: !0 }), { id: r }
},
ai = O(oi, R, !0),
ii = e => {
const t = t => t(e),
n = N(e),
o = () => r,
r = { tag: !0, inner: e, fold: (t, n) => n(e), isValue: P, isError: L, map: t => di.value(t(e)), mapError: o, bind: t, exists: t, forall: t, getOr: n, or: o, getOrThunk: n, orThunk: o, getOrDie: n, each: t => { t(e) }, toOptional: () => M.some(e) };
return r
},
li = e => {
const t = () => n,
n = { tag: !1, inner: e, fold: (t, n) => t(e), isValue: L, isError: P, map: t, mapError: t => di.error(t(e)), bind: t, exists: L, forall: P, getOr: R, or: R, getOrThunk: B, orThunk: B, getOrDie: (o = String(e), () => { throw new Error(o) }), each: S, toOptional: M.none };
var o;
return n
},
di = { value: ii, error: li, fromOption: (e, t) => e.fold((() => li(t)), ii) },
ci = e => {
if (!p(e)) throw new Error("cases must be an array");
if (0 === e.length) throw new Error("there must be at least one case");
const t = [],
n = {};
return $(e, ((o, r) => {
const s = ue(o);
if (1 !== s.length) throw new Error("one and only one name per case");
const a = s[0],
i = o[a];
if (void 0 !== n[a]) throw new Error("duplicate key detected:" + a);
if ("cata" === a) throw new Error("cannot have a case named cata (sorry)");
if (!p(i)) throw new Error("case arguments must be an array");
t.push(a), n[a] = (...n) => { const o = n.length; if (o !== i.length) throw new Error("Wrong number of arguments to case " + a + ". Expected " + i.length + " (" + i + "), got " + o); return { fold: (...t) => { if (t.length !== e.length) throw new Error("Wrong number of arguments to fold. Expected " + e.length + ", got " + t.length); return t[r].apply(null, n) }, match: e => { const o = ue(e); if (t.length !== o.length) throw new Error("Wrong number of arguments to match. Expected: " + t.join(",") + "\nActual: " + o.join(",")); if (!te(t, (e => j(o, e)))) throw new Error("Not all branches were specified when using match. Specified: " + o.join(", ") + "\nRequired: " + t.join(", ")); return e[a].apply(null, n) }, log: e => { console.log(e, { constructors: t, constructor: a, params: n }) } } }
})), n
};
ci([{ bothErrors: ["error1", "error2"] }, { firstError: ["error1", "value2"] }, { secondError: ["value1", "error2"] }, { bothValues: ["value1", "value2"] }]);
const ui = e => "inline-command" === e.type || "inline-format" === e.type,
mi = e => "block-command" === e.type || "block-format" === e.type,
fi = e => {
const t = t => di.error({ message: t, pattern: e }),
n = (n, o, r) => {
if (void 0 !== e.format) {
let r;
if (p(e.format)) {
if (!te(e.format, m)) return t(n + " pattern has non-string items in the `format` array");
r = e.format
} else {
if (!m(e.format)) return t(n + " pattern has non-string `format` parameter");
r = [e.format]
}
return di.value(o(r))
}
return void 0 !== e.cmd ? m(e.cmd) ? di.value(r(e.cmd, e.value)) : t(n + " pattern has non-string `cmd` parameter") : t(n + " pattern is missing both `format` and `cmd` parameters")
};
if (!f(e)) return t("Raw pattern is not an object");
if (!m(e.start)) return t("Raw pattern is missing `start` parameter");
if (void 0 !== e.end) {
if (!m(e.end)) return t("Inline pattern has non-string `end` parameter");
if (0 === e.start.length && 0 === e.end.length) return t("Inline pattern has empty `start` and `end` parameters");
let o = e.start,
r = e.end;
return 0 === r.length && (r = o, o = ""), n("Inline", (e => ({ type: "inline-format", start: o, end: r, format: e })), ((e, t) => ({ type: "inline-command", start: o, end: r, cmd: e, value: t })))
}
return void 0 !== e.replacement ? m(e.replacement) ? 0 === e.start.length ? t("Replacement pattern has empty `start` parameter") : di.value({ type: "inline-command", start: "", end: e.start, cmd: "mceInsertContent", value: e.replacement }) : t("Replacement pattern has non-string `replacement` parameter") : 0 === e.start.length ? t("Block pattern has empty `start` parameter") : n("Block", (t => ({ type: "block-format", start: e.start, format: t[0] })), ((t, n) => ({ type: "block-command", start: e.start, cmd: t, value: n })))
},
gi = e => (e => se(e, ((e, t) => e.start.length === t.start.length ? 0 : e.start.length > t.start.length ? -1 : 1)))(K(e, mi)),
pi = e => K(e, ui),
hi = e => {
const t = (e => {
const t = [],
n = [];
return $(e, (e => { e.fold((e => { t.push(e) }), (e => { n.push(e) })) })), { errors: t, values: n }
})(H(e, fi));
return $(t.errors, (e => console.error(e.message, e.pattern))), t.values
},
bi = Ct().deviceType,
vi = bi.isTouch(),
yi = Is.DOM,
Ci = e => u(e, RegExp),
xi = e => t => t.options.get(e),
wi = e => m(e) || f(e),
ki = (e, t = "") => n => {
const o = m(n);
if (o) {
if (-1 !== n.indexOf("=")) {
const r = (e => {
const t = e.indexOf("=") > 0 ? e.split(/[;,](?![^=;,]*(?:[;,]|$))/) : e.split(",");
return Y(t, ((e, t) => {
const n = t.split("="),
o = n[0],
r = n.length > 1 ? n[1] : o;
return e[He(o)] = He(r), e
}), {})
})(n);
return { value: xe(r, e.id).getOr(t), valid: o }
}
return { value: n, valid: o }
}
return { valid: !1, message: "Must be a string." }
},
Si = xi("iframe_attrs"),
_i = xi("doctype"),
Ei = xi("document_base_url"),
Ni = xi("body_id"),
Ri = xi("body_class"),
Ai = xi("content_security_policy"),
Oi = xi("br_in_pre"),
Ti = xi("forced_root_block"),
Bi = xi("forced_root_block_attrs"),
Di = xi("br_newline_selector"),
Li = xi("no_newline_selector"),
Pi = xi("keep_styles"),
Mi = xi("end_container_on_empty_block"),
Ii = xi("automatic_uploads"),
Fi = xi("images_reuse_filename"),
Ui = xi("images_replace_blob_uris"),
zi = xi("icons"),
ji = xi("icons_url"),
Vi = xi("images_upload_url"),
Hi = xi("images_upload_base_path"),
$i = xi("images_upload_credentials"),
qi = xi("images_upload_handler"),
Wi = xi("content_css_cors"),
Ki = xi("referrer_policy"),
Gi = xi("language"),
Yi = xi("language_url"),
Xi = xi("indent_use_margin"),
Qi = xi("indentation"),
Ji = xi("content_css"),
Zi = xi("content_style"),
el = xi("font_css"),
tl = xi("directionality"),
nl = xi("inline_boundaries_selector"),
ol = xi("object_resizing"),
rl = xi("resize_img_proportional"),
sl = xi("placeholder"),
al = xi("event_root"),
il = xi("service_message"),
ll = xi("theme"),
dl = xi("theme_url"),
cl = xi("model"),
ul = xi("model_url"),
ml = xi("inline_boundaries"),
fl = xi("formats"),
gl = xi("preview_styles"),
pl = xi("format_empty_lines"),
hl = xi("custom_ui_selector"),
bl = xi("inline"),
vl = xi("hidden_input"),
yl = xi("submit_patch"),
Cl = xi("add_form_submit_trigger"),
xl = xi("add_unload_trigger"),
wl = xi("custom_undo_redo_levels"),
kl = xi("disable_nodechange"),
Sl = xi("readonly"),
_l = xi("content_css_cors"),
El = xi("plugins"),
Nl = xi("external_plugins"),
Rl = xi("block_unsupported_drop"),
Al = xi("visual"),
Ol = xi("visual_table_class"),
Tl = xi("visual_anchor_class"),
Bl = xi("iframe_aria_text"),
Dl = xi("setup"),
Ll = xi("init_instance_callback"),
Pl = xi("urlconverter_callback"),
Ml = xi("auto_focus"),
Il = xi("browser_spellcheck"),
Fl = xi("protect"),
Ul = xi("paste_block_drop"),
zl = xi("paste_data_images"),
jl = xi("paste_preprocess"),
Vl = xi("paste_postprocess"),
Hl = xi("paste_webkit_styles"),
$l = xi("paste_remove_styles_if_webkit"),
ql = xi("paste_merge_formats"),
Wl = xi("smart_paste"),
Kl = xi("paste_as_text"),
Gl = xi("paste_tab_spaces"),
Yl = xi("allow_html_data_urls"),
Xl = xi("text_patterns"),
Ql = xi("noneditable_class"),
Jl = xi("editable_class"),
Zl = xi("noneditable_regexp"),
ed = e => Bt.explode(e.options.get("images_file_types")),
td = xi("table_tab_navigation"),
nd = yo,
od = No,
rd = e => {
const t = e.parentNode;
t && t.removeChild(e)
},
sd = e => { const t = fr(e); return { count: e.length - t.length, text: t } },
ad = e => { let t; for (; - 1 !== (t = e.data.lastIndexOf(ur));) e.deleteData(t, 1) },
id = (e, t) => (dd(e), t),
ld = (e, t) => Ua.isTextPosition(t) ? ((e, t) => od(e) && t.container() === e ? ((e, t) => {
const n = sd(e.data.substr(0, t.offset())),
o = sd(e.data.substr(t.offset()));
return (n.text + o.text).length > 0 ? (ad(e), Ua(e, t.offset() - n.count)) : t
})(e, t) : id(e, t))(e, t) : ((e, t) => t.container() === e.parentNode ? ((e, t) => {
const n = t.container(),
o = ((e, t) => { const n = z(e, t); return -1 === n ? M.none() : M.some(n) })(de(n.childNodes), e).map((e => e < t.offset() ? Ua(n, t.offset() - 1) : t)).getOr(t);
return dd(e), o
})(e, t) : id(e, t))(e, t),
dd = e => { nd(e) && vr(e) && (yr(e) ? e.removeAttribute("data-mce-caret") : rd(e)), od(e) && (ad(e), 0 === e.data.length && rd(e)) },
cd = Mo,
ud = Fo,
md = Io,
fd = (e, t, n) => {
const o = fa(t.getBoundingClientRect(), n);
let r, s;
if ("BODY" === e.tagName) {
const t = e.ownerDocument.documentElement;
r = e.scrollLeft || t.scrollLeft, s = e.scrollTop || t.scrollTop
} else {
const t = e.getBoundingClientRect();
r = e.scrollLeft - t.left, s = e.scrollTop - t.top
}
o.left += r, o.right += r, o.top += s, o.bottom += s, o.width = 1;
let a = t.offsetWidth - t.clientWidth;
return a > 0 && (n && (a *= -1), o.left += a, o.right += a), o
},
gd = (e, t, n, o) => {
const r = Ws();
let s, a;
const i = Ti(e),
l = e.dom,
d = () => {
(e => {
const t = Xs(mn(e), "*[contentEditable=false],video,audio,embed,object");
for (let e = 0; e < t.length; e++) {
const n = t[e].dom;
let o = n.previousSibling;
if (kr(o)) {
const e = o.data;
1 === e.length ? o.parentNode.removeChild(o) : o.deleteData(e.length - 1, 1)
}
o = n.nextSibling, wr(o) && (1 === o.data.length ? o.parentNode.removeChild(o) : o.deleteData(0, 1))
}
})(t), a && (dd(a), a = null), r.on((e => { l.remove(e.caret), r.clear() })), s && (clearInterval(s), s = void 0)
};
return {
show: (e, c) => {
let u;
if (d(), md(c)) return null;
if (!n(c)) return a = ((e, t) => {
const n = e.ownerDocument.createTextNode(ur),
o = e.parentNode;
if (t) {
const t = e.previousSibling;
if (pr(t)) { if (vr(t)) return t; if (kr(t)) return t.splitText(t.data.length - 1) }
o.insertBefore(n, e)
} else {
const t = e.nextSibling;
if (pr(t)) { if (vr(t)) return t; if (wr(t)) return t.splitText(1), t }
e.nextSibling ? o.insertBefore(n, e.nextSibling) : o.appendChild(n)
}
return n
})(c, e), u = c.ownerDocument.createRange(), hd(a.nextSibling) ? (u.setStart(a, 0), u.setEnd(a, 0)) : (u.setStart(a, 1), u.setEnd(a, 1)), u; {
a = ((e, t, n) => {
const o = t.ownerDocument.createElement(e);
o.setAttribute("data-mce-caret", n ? "before" : "after"), o.setAttribute("data-mce-bogus", "all"), o.appendChild((() => { const e = document.createElement("br"); return e.setAttribute("data-mce-bogus", "1"), e })());
const r = t.parentNode;
return n ? r.insertBefore(o, t) : t.nextSibling ? r.insertBefore(o, t.nextSibling) : r.appendChild(o), o
})(i, c, e);
const n = fd(t, c, e);
l.setStyle(a, "top", n.top);
const d = l.create("div", { class: "mce-visual-caret", "data-mce-bogus": "all" });
l.setStyles(d, {...n }), l.add(t, d), r.set({ caret: d, element: c, before: e }), e && l.addClass(d, "mce-visual-caret-before"), s = setInterval((() => { r.on((e => { o() ? l.toggleClass(e.caret, "mce-visual-caret-hidden") : l.addClass(e.caret, "mce-visual-caret-hidden") })) }), 500), u = c.ownerDocument.createRange(), u.setStart(a, 0), u.setEnd(a, 0)
}
return u
},
hide: d,
getCss: () => ".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: () => {
r.on((e => {
const n = fd(t, e.element, e.before);
l.setStyles(e.caret, {...n })
}))
},
destroy: () => clearInterval(s)
}
},
pd = () => Nt.browser.isFirefox(),
hd = e => cd(e) || ud(e),
bd = e => hd(e) || So(e) && pd(),
vd = Po,
yd = Mo,
Cd = Fo,
xd = xo("display", "block table table-cell table-caption list-item"),
wd = vr,
kd = hr,
Sd = yo,
_d = Lr,
Ed = e => e > 0,
Nd = e => e < 0,
Rd = (e, t) => {
let n;
for (; n = e(t);)
if (!kd(n)) return n;
return null
},
Ad = (e, t, n, o, r) => {
const s = new Xo(e, o),
a = yd(e) || kd(e);
if (Nd(t)) {
if (a && n(e = Rd(s.prev.bind(s), !0))) return e;
for (; e = Rd(s.prev.bind(s), r);)
if (n(e)) return e
}
if (Ed(t)) {
if (a && n(e = Rd(s.next.bind(s), !0))) return e;
for (; e = Rd(s.next.bind(s), r);)
if (n(e)) return e
}
return null
},
Od = (e, t) => {
for (; e && e !== t;) {
if (xd(e)) return e;
e = e.parentNode
}
return null
},
Td = (e, t, n) => Od(e.container(), n) === Od(t.container(), n),
Bd = (e, t) => {
if (!t) return null;
const n = t.container(),
o = t.offset();
return Sd(n) ? n.childNodes[o + e] : null
},
Dd = (e, t) => { const n = t.ownerDocument.createRange(); return e ? (n.setStartBefore(t), n.setEndBefore(t)) : (n.setStartAfter(t), n.setEndAfter(t)), n },
Ld = (e, t, n) => Od(t, e) === Od(n, e),
Pd = (e, t, n) => {
const o = e ? "previousSibling" : "nextSibling";
for (; n && n !== t;) {
let e = n[o];
if (wd(e) && (e = e[o]), yd(e) || Cd(e)) { if (Ld(t, e, n)) return e; break }
if (_d(e)) break;
n = n.parentNode
}
return null
},
Md = O(Dd, !0),
Id = O(Dd, !1),
Fd = (e, t, n) => {
let o;
const r = O(Pd, !0, t),
s = O(Pd, !1, t);
let a = n.startContainer;
const i = n.startOffset;
if (hr(a)) { Sd(a) || (a = a.parentNode); const e = a.getAttribute("data-mce-caret"); if ("before" === e && (o = a.nextSibling, bd(o))) return Md(o); if ("after" === e && (o = a.previousSibling, bd(o))) return Id(o) }
if (!n.collapsed) return n;
if (No(a)) { if (wd(a)) { if (1 === e) { if (o = s(a), o) return Md(o); if (o = r(a), o) return Id(o) } if (-1 === e) { if (o = r(a), o) return Id(o); if (o = s(a), o) return Md(o) } return n } if (kr(a) && i >= a.data.length - 1) return 1 === e && (o = s(a), o) ? Md(o) : n; if (wr(a) && i <= 1) return -1 === e && (o = r(a), o) ? Id(o) : n; if (i === a.data.length) return o = s(a), o ? Md(o) : n; if (0 === i) return o = r(a), o ? Id(o) : n }
return n
},
Ud = (e, t) => M.from(Bd(e ? 0 : -1, t)).filter(yd),
zd = (e, t, n) => { const o = Fd(e, t, n); return -1 === e ? Ua.fromRangeStart(o) : Ua.fromRangeEnd(o) },
jd = e => M.from(e.getNode()).map(mn),
Vd = (e, t) => {
for (; t = e(t);)
if (t.isVisible()) return t;
return t
},
Hd = (e, t) => { const n = Td(e, t); return !(n || !Do(e.getNode())) || n };
var $d;
! function(e) { e[e.Backwards = -1] = "Backwards", e[e.Forwards = 1] = "Forwards" }($d || ($d = {}));
const qd = Mo,
Wd = No,
Kd = yo,
Gd = Do,
Yd = Lr,
Xd = e => Tr(e) || (e => !!Pr(e) && !0 !== Y(de(e.getElementsByTagName("*")), ((e, t) => e || Er(t)), !1))(e),
Qd = Mr,
Jd = (e, t) => e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null,
Zd = (e, t) => { if (Ed(e)) { if (Yd(t.previousSibling) && !Wd(t.previousSibling)) return Ua.before(t); if (Wd(t)) return Ua(t, 0) } if (Nd(e)) { if (Yd(t.nextSibling) && !Wd(t.nextSibling)) return Ua.after(t); if (Wd(t)) return Ua(t, t.data.length) } return Nd(e) ? Gd(t) ? Ua.before(t) : Ua.after(t) : Ua.before(t) },
ec = (e, t, n) => {
let o, r, s, a;
if (!Kd(n) || !t) return null;
if (t.isEqual(Ua.after(n)) && n.lastChild) { if (a = Ua.after(n.lastChild), Nd(e) && Yd(n.lastChild) && Kd(n.lastChild)) return Gd(n.lastChild) ? Ua.before(n.lastChild) : a } else a = t;
const i = a.container();
let l = a.offset();
if (Wd(i)) {
if (Nd(e) && l > 0) return Ua(i, --l);
if (Ed(e) && l < i.length) return Ua(i, ++l);
o = i
} else {
if (Nd(e) && l > 0 && (r = Jd(i, l - 1), Yd(r))) return !Xd(r) && (s = Ad(r, e, Qd, r), s) ? Wd(s) ? Ua(s, s.data.length) : Ua.after(s) : Wd(r) ? Ua(r, r.data.length) : Ua.before(r);
if (Ed(e) && l < i.childNodes.length && (r = Jd(i, l), Yd(r))) return Gd(r) ? ((e, t) => { const n = t.nextSibling; return n && Yd(n) ? Wd(n) ? Ua(n, 0) : Ua.before(n) : ec($d.Forwards, Ua.after(t), e) })(n, r) : !Xd(r) && (s = Ad(r, e, Qd, r), s) ? Wd(s) ? Ua(s, 0) : Ua.before(s) : Wd(r) ? Ua(r, 0) : Ua.after(r);
o = r || a.getNode()
}
if ((Ed(e) && a.isAtEnd() || Nd(e) && a.isAtStart()) && (o = Ad(o, e, P, n, !0), Qd(o, n))) return Zd(e, o);
r = Ad(o, e, Qd, n);
const d = Be(K(((e, t) => { const n = []; for (; e && e !== t;) n.push(e), e = e.parentNode; return n })(i, n), qd));
return !d || r && d.contains(r) ? r ? Zd(e, r) : null : (a = Ed(e) ? Ua.after(d) : Ua.before(d), a)
},
tc = e => ({ next: t => ec($d.Forwards, t, e), prev: t => ec($d.Backwards, t, e) }),
nc = e => Ua.isTextPosition(e) ? 0 === e.offset() : Lr(e.getNode()),
oc = e => { if (Ua.isTextPosition(e)) { const t = e.container(); return e.offset() === t.data.length } return Lr(e.getNode(!0)) },
rc = (e, t) => !Ua.isTextPosition(e) && !Ua.isTextPosition(t) && e.getNode() === t.getNode(!0),
sc = (e, t, n) => { const o = tc(t); return M.from(e ? o.next(n) : o.prev(n)) },
ac = (e, t, n) => sc(e, t, n).bind((o => Td(n, o, t) && ((e, t, n) => { return e ? !rc(t, n) && (o = t, !(!Ua.isTextPosition(o) && Do(o.getNode()))) && oc(t) && nc(n) : !rc(n, t) && nc(t) && oc(n); var o })(e, n, o) ? sc(e, t, o) : M.some(o))),
ic = (e, t, n, o) => ac(e, t, n).bind((n => o(n) ? ic(e, t, n, o) : M.some(n))),
lc = (e, t) => { const n = e ? t.firstChild : t.lastChild; return No(n) ? M.some(Ua(n, e ? 0 : n.data.length)) : n ? Lr(n) ? M.some(e ? Ua.before(n) : Do(o = n) ? Ua.before(o) : Ua.after(o)) : ((e, t, n) => { const o = e ? Ua.before(n) : Ua.after(n); return sc(e, t, o) })(e, t, n) : M.none(); var o },
dc = O(sc, !0),
cc = O(sc, !1),
uc = O(lc, !0),
mc = O(lc, !1),
fc = "_mce_caret",
gc = e => yo(e) && e.id === fc,
pc = (e, t) => {
for (; t && t !== e;) {
if (t.id === fc) return t;
t = t.parentNode
}
return null
},
hc = e => Bt.isArray(e.start),
bc = (e, t) => (yo(t) && e.isBlock(t) && !t.innerHTML && (t.innerHTML = '
'), t),
vc = (e, t) => mc(e).fold(L, (e => (t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0))),
yc = (e, t, n) => !(!(e => !1 === e.hasChildNodes())(t) || !pc(e, t) || (((e, t) => {
const n = e.ownerDocument.createTextNode(ur);
e.appendChild(n), t.setStart(n, 0), t.setEnd(n, 0)
})(t, n), 0)),
Cc = (e, t, n, o) => {
const r = n[t ? "start" : "end"];
let s, a, i, l;
const d = e.getRoot();
if (r) {
for (i = r[0], a = d, s = r.length - 1; s >= 1; s--) {
if (l = a.childNodes, yc(d, a, o)) return !0;
if (r[s] > l.length - 1) return !!yc(d, a, o) || vc(a, o);
a = l[r[s]]
}
3 === a.nodeType && (i = Math.min(r[0], a.nodeValue.length)), 1 === a.nodeType && (i = Math.min(r[0], a.childNodes.length)), t ? o.setStart(a, i) : o.setEnd(a, i)
}
return !0
},
xc = e => No(e) && e.data.length > 0,
wc = (e, t, n) => {
let o, r, s, a, i = e.get(n.id + "_" + t);
const l = n.keep;
let d, c;
if (i) {
if (o = i.parentNode, "start" === t ? (l ? i.hasChildNodes() ? (o = i.firstChild, r = 1) : xc(i.nextSibling) ? (o = i.nextSibling, r = 0) : xc(i.previousSibling) ? (o = i.previousSibling, r = i.previousSibling.data.length) : (o = i.parentNode, r = e.nodeIndex(i) + 1) : r = e.nodeIndex(i), d = o, c = r) : (l ? i.hasChildNodes() ? (o = i.firstChild, r = 1) : xc(i.previousSibling) ? (o = i.previousSibling, r = i.previousSibling.data.length) : (o = i.parentNode, r = e.nodeIndex(i)) : r = e.nodeIndex(i), d = o, c = r), !l) {
for (a = i.previousSibling, s = i.nextSibling, Bt.each(Bt.grep(i.childNodes), (e => { No(e) && (e.nodeValue = e.nodeValue.replace(/\uFEFF/g, "")) })); i = e.get(n.id + "_" + t);) e.remove(i, !0);
a && s && a.nodeType === s.nodeType && No(a) && !Nt.browser.isOpera() && (r = a.nodeValue.length, a.appendData(s.nodeValue), e.remove(s), d = a, c = r)
}
return M.some(Ua(d, c))
}
return M.none()
},
kc = (e, t, n) => ((e, t, n) => 2 === t ? oi(fr, n, e) : 3 === t ? (e => { const t = e.getRng(); return { start: Ya(e.dom.getRoot(), Ua.fromRangeStart(t)), end: Ya(e.dom.getRoot(), Ua.fromRangeEnd(t)) } })(e) : t ? (e => ({ rng: e.getRng() }))(e) : si(e, !1))(e, t, n),
Sc = (e, t) => {
((e, t) => {
const n = e.dom;
if (t) {
if (hc(t)) return ((e, t) => { const n = e.createRng(); return Cc(e, !0, t, n) && Cc(e, !1, t, n) ? M.some(n) : M.none() })(n, t);
if ((e => m(e.start))(t)) return M.some(((e, t) => { let n; const o = e.createRng(); return n = Xa(e.getRoot(), t.start), o.setStart(n.container(), n.offset()), n = Xa(e.getRoot(), t.end), o.setEnd(n.container(), n.offset()), o })(n, t));
if ((e => we(e, "id"))(t)) return ((e, t) => {
const n = wc(e, "start", t),
o = wc(e, "end", t);
return Lt(n, o.or(n), ((t, n) => { const o = e.createRng(); return o.setStart(bc(e, t.container()), t.offset()), o.setEnd(bc(e, n.container()), n.offset()), o }))
})(n, t);
if ((e => we(e, "name"))(t)) return ((e, t) => M.from(e.select(t.name)[t.index]).map((t => { const n = e.createRng(); return n.selectNode(t), n })))(n, t);
if ((e => we(e, "rng"))(t)) return M.some(t.rng)
}
return M.none()
})(e, t).each((t => { e.setRng(t) }))
},
_c = e => yo(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type"),
Ec = (dr, e => "\xa0" === e);
const Nc = e => "" !== e && -1 !== " \f\n\r\t\v".indexOf(e),
Rc = e => !Nc(e) && !Ec(e) && !cr(e),
Ac = e => { const t = e.toString(16); return (1 === t.length ? "0" + t : t).toUpperCase() },
Oc = e => (e => ({ value: e }))(Ac(e.red) + Ac(e.green) + Ac(e.blue)),
Tc = /^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)\s*$/i,
Bc = /^\s*rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d?(?:\.\d+)?)\s*\)\s*$/i,
Dc = (e, t, n, o) => ({ red: e, green: t, blue: n, alpha: o }),
Lc = (e, t, n, o) => {
const r = parseInt(e, 10),
s = parseInt(t, 10),
a = parseInt(n, 10),
i = parseFloat(o);
return Dc(r, s, a, i)
},
Pc = e => (e => { if ("transparent" === e) return M.some(Dc(0, 0, 0, 0)); const t = Tc.exec(e); if (null !== t) return M.some(Lc(t[1], t[2], t[3], "1")); const n = Bc.exec(e); return null !== n ? M.some(Lc(n[1], n[2], n[3], n[4])) : M.none() })(e).map(Oc).map((e => "#" + e.value)).getOr(e),
Mc = e => !!e.nodeType,
Ic = (e, t, n) => {
const o = n.startOffset;
let r = n.startContainer;
var s;
if ((r !== n.endContainer || !(s = r.childNodes[o]) || !/^(IMG)$/.test(s.nodeName)) && yo(r)) {
const s = r.childNodes;
let a;
o < s.length ? (r = s[o], a = new Xo(r, e.getParent(r, e.isBlock))) : (r = s[s.length - 1], a = new Xo(r, e.getParent(r, e.isBlock)), a.next(!0));
for (let e = a.current(); e; e = a.next())
if (No(e) && !jc(e)) return n.setStart(e, 0), void t.setRng(n)
}
},
Fc = (e, t, n) => {
if (e) {
const o = t ? "nextSibling" : "previousSibling";
for (e = n ? e : e[o]; e; e = e[o])
if (yo(e) || !jc(e)) return e
}
},
Uc = (e, t) => (Mc(t) && (t = t.nodeName), !!e.schema.getTextBlockElements()[t.toLowerCase()]),
zc = (e, t, n) => e.schema.isValidChild(t, n),
jc = (e, t = !1) => { if (C(e) && No(e)) { const n = t ? e.data.replace(/ /g, "\xa0") : e.data; return Fr(n) } return !1 },
Vc = (e, t) => (x(e) ? e = e(t) : C(t) && (e = e.replace(/%(\w+)/g, ((e, n) => t[n] || e))), e),
Hc = (e, t) => (t = t || "", e = "" + ((e = e || "").nodeName || e), t = "" + (t.nodeName || t), e.toLowerCase() === t.toLowerCase()),
$c = (e, t) => ("color" !== t && "backgroundColor" !== t || (e = Pc(e)), "fontWeight" === t && 700 === e && (e = "bold"), "fontFamily" === t && (e = e.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")), "" + e),
qc = (e, t, n) => $c(e.getStyle(t, n), n),
Wc = (e, t) => { let n; return e.getParent(t, (t => (n = e.getStyle(t, "text-decoration"), n && "none" !== n))), n },
Kc = (e, t, n) => e.getParents(t, n, e.getRoot()),
Gc = e => ke(e, "block"),
Yc = e => ke(e, "selector"),
Xc = e => ke(e, "inline"),
Qc = e => Yc(e) && !1 !== e.expand && !Xc(e),
Jc = _c,
Zc = Kc,
eu = jc,
tu = Uc,
nu = (e, t) => {
let n = t;
for (; n;) {
if (yo(n) && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t;
n = n.parentNode
}
return t
},
ou = (e, t, n, o) => {
const r = t.data;
for (let t = n; e ? t >= 0 : t < r.length; e ? t-- : t++)
if (o(r.charAt(t))) return e ? t + 1 : t;
return -1
},
ru = (e, t, n) => ou(e, t, n, (e => Ec(e) || Nc(e))),
su = (e, t, n) => ou(e, t, n, Rc),
au = (e, t, n, o, r, s) => {
let a;
const i = e.getParent(n, e.isBlock) || t,
l = (t, n, o) => {
const s = ca(e),
l = r ? s.backwards : s.forwards;
return M.from(l(t, n, ((e, t) => Jc(e.parentNode) ? -1 : (a = e, o(r, e, t))), i))
};
return l(n, o, ru).bind((e => s ? l(e.container, e.offset + (r ? -1 : 0), su) : M.some(e))).orThunk((() => a ? M.some({ container: a, offset: r ? 0 : a.length }) : M.none()))
},
iu = (e, t, n, o, r) => {
No(o) && Ke(o.data) && o[r] && (o = o[r]);
const s = Zc(e, o);
for (let o = 0; o < s.length; o++)
for (let r = 0; r < t.length; r++) { const a = t[r]; if ((!C(a.collapsed) || a.collapsed === n.collapsed) && Yc(a) && e.is(s[o], a.selector)) return s[o] }
return o
},
lu = (e, t, n, o) => {
let r = n;
const s = e.dom,
a = s.getRoot(),
i = t[0];
if (Gc(i) && (r = i.wrapper ? null : s.getParent(n, i.block, a)), !r) {
const t = s.getParent(n, "LI,TD,TH");
r = s.getParent(No(n) ? n.parentNode : n, (t => t !== a && tu(e, t)), t)
}
if (r && Gc(i) && i.wrapper && (r = Zc(s, r, "ul,ol").reverse()[0] || r), !r)
for (r = n; r[o] && !s.isBlock(r[o]) && (r = r[o], !Hc(r, "br")););
return r || n
},
du = (e, t, n, o) => { const r = n.parentNode; return !C(n[o]) && (!(r !== t && !y(r) && !e.isBlock(r)) || du(e, t, r, o)) },
cu = (e, t, n, o, r) => {
let s = n;
const a = r ? "previousSibling" : "nextSibling",
i = e.getRoot();
if (No(n) && !eu(n) && (r ? o > 0 : o < n.data.length)) return n;
for (;;) {
if (!t[0].block_expand && e.isBlock(s)) return s;
for (let t = s[a]; t; t = t[a]) { const n = No(t) && !du(e, i, t, a); if (!Jc(t) && (!Do(l = t) || !l.getAttribute("data-mce-bogus") || l.nextSibling) && !eu(t, n)) return s }
if (s === i || s.parentNode === i) { n = s; break }
s = s.parentNode
}
var l;
return n
},
uu = e => Jc(e.parentNode) || Jc(e),
mu = (e, t, n, o = !1) => {
let { startContainer: r, startOffset: s, endContainer: a, endOffset: i } = t;
const l = e.dom,
d = n[0];
return yo(r) && r.hasChildNodes() && (r = ya(r, s), No(r) && (s = 0)), yo(a) && a.hasChildNodes() && (a = ya(a, t.collapsed ? i : i - 1), No(a) && (i = a.nodeValue.length)), r = nu(l, r), a = nu(l, a), uu(r) && (r = Jc(r) ? r : r.parentNode, r = t.collapsed ? r.previousSibling || r : r.nextSibling || r, No(r) && (s = t.collapsed ? r.length : 0)), uu(a) && (a = Jc(a) ? a : a.parentNode, a = t.collapsed ? a.nextSibling || a : a.previousSibling || a, No(a) && (i = t.collapsed ? 0 : a.length)), t.collapsed && (au(l, e.getBody(), r, s, !0, o).each((({ container: e, offset: t }) => { r = e, s = t })), au(l, e.getBody(), a, i, !1, o).each((({ container: e, offset: t }) => { a = e, i = t }))), (Xc(d) || d.block_expand) && (Xc(d) && No(r) && 0 !== s || (r = cu(l, n, r, s, !0)), Xc(d) && No(a) && i !== a.nodeValue.length || (a = cu(l, n, a, i, !1))), Qc(d) && (r = iu(l, n, t, r, "previousSibling"), a = iu(l, n, t, a, "nextSibling")), (Gc(d) || Yc(d)) && (r = lu(e, n, r, "previousSibling"), a = lu(e, n, a, "nextSibling"), Gc(d) && (l.isBlock(r) || (r = cu(l, n, r, s, !0)), l.isBlock(a) || (a = cu(l, n, a, i, !1)))), yo(r) && (s = l.nodeIndex(r), r = r.parentNode), yo(a) && (i = l.nodeIndex(a) + 1, a = a.parentNode), { startContainer: r, startOffset: s, endContainer: a, endOffset: i }
},
fu = (e, t, n) => {
const o = t.startOffset,
r = ya(t.startContainer, o),
s = t.endOffset,
a = ya(t.endContainer, s - 1),
i = e => {
const t = e[0];
No(t) && t === r && o >= t.data.length && e.splice(0, 1);
const n = e[e.length - 1];
return 0 === s && e.length > 0 && n === a && No(n) && e.splice(e.length - 1, 1), e
},
l = (e, t, n) => { const o = []; for (; e && e !== n; e = e[t]) o.push(e); return o },
d = (t, n) => e.getParent(t, (e => e.parentNode === n), n),
c = (e, t, o) => {
const r = o ? "nextSibling" : "previousSibling";
for (let s = e, a = s.parentNode; s && s !== t; s = a) {
a = s.parentNode;
const t = l(s === e ? s : s[r], r);
t.length && (o || t.reverse(), n(i(t)))
}
};
if (r === a) return n(i([r]));
const u = e.findCommonAncestor(r, a);
if (e.isChildOf(r, a)) return c(r, u, !0);
if (e.isChildOf(a, r)) return c(a, u);
const m = d(r, u) || r,
f = d(a, u) || a;
c(r, m, !0);
const g = l(m === r ? m : m.nextSibling, "nextSibling", f === a ? f.nextSibling : f);
g.length && n(i(g)), c(a, f)
},
gu = e => {
const t = [];
if (e)
for (let n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n));
return t
},
pu = (e, t) => { const n = Xs(t, "td[data-mce-selected],th[data-mce-selected]"); return n.length > 0 ? n : (e => K((e => ee(e, (e => { const t = va(e); return t ? [mn(t)] : [] })))(e), ar))(e) },
hu = e => pu(gu(e.selection.getSel()), mn(e.getBody())),
bu = (e, t) => qo(e, "table", t),
vu = e => An(e).fold(N([e]), (t => [e].concat(vu(t)))),
yu = e => On(e).fold(N([e]), (t => "br" === Mt(t) ? kn(t).map((t => [e].concat(yu(t)))).getOr([]) : [e].concat(yu(t)))),
Cu = (e, t) => Lt((e => {
const t = e.startContainer,
n = e.startOffset;
return No(t) ? 0 === n ? M.some(mn(t)) : M.none() : M.from(t.childNodes[n]).map(mn)
})(t), (e => {
const t = e.endContainer,
n = e.endOffset;
return No(t) ? n === t.data.length ? M.some(mn(t)) : M.none() : M.from(t.childNodes[n - 1]).map(mn)
})(t), ((t, n) => {
const o = Q(vu(e), O(bn, t)),
r = Q(yu(e), O(bn, n));
return o.isSome() && r.isSome()
})).getOr(!1),
xu = (e, t, n, o) => {
const r = n,
s = new Xo(n, r),
a = ve(e.schema.getMoveCaretBeforeOnEnterElements(), ((e, t) => !j(["td", "th", "table"], t.toLowerCase())));
do { if (No(n) && 0 !== Bt.trim(n.nodeValue).length) return void(o ? t.setStart(n, 0) : t.setEnd(n, n.nodeValue.length)); if (a[n.nodeName]) return void(o ? t.setStartBefore(n) : "BR" === n.nodeName ? t.setEndBefore(n) : t.setEndAfter(n)) } while (n = o ? s.next() : s.prev());
"BODY" === r.nodeName && (o ? t.setStart(r, 0) : t.setEnd(r, r.childNodes.length))
},
wu = e => { const t = e.selection.getSel(); return t && t.rangeCount > 0 },
ku = (e, t) => {
const n = hu(e);
n.length > 0 ? $(n, (n => {
const o = n.dom,
r = e.dom.createRng();
r.setStartBefore(o), r.setEndAfter(o), t(r, !0)
})) : t(e.selection.getRng(), !1)
},
Su = (e, t, n) => {
const o = si(e, t);
n(o), e.moveToBookmark(o)
},
_u = ((e, t) => {
const n = t => e(t) ? M.from(t.dom.nodeValue) : M.none();
return {
get: t => { if (!e(t)) throw new Error("Can only get text value of a text node"); return n(t).getOr("") },
getOption: n,
set: (t, n) => {
if (!e(t)) throw new Error("Can only set raw text value of a text node");
t.dom.nodeValue = n
}
}
})(zt),
Eu = e => _u.get(e),
Nu = e => _u.getOption(e),
Ru = (e, { uid: t = sa("mce-annotation"), ...n }, o, r) => {
const s = cn("span", e);
nn(s, Qs()), $t(s, `${Zs()}`, t), $t(s, `${Js()}`, o);
const { attributes: a = {}, classes: i = [] } = r(t, n);
return qt(s, a), ((e, t) => { $(t, (t => { nn(e, t) })) })(s, i), s
},
Au = (e, t, n, o, r) => {
const s = [],
a = Ru(e.getDoc(), r, n, o),
i = Ws(),
l = () => { i.clear() },
d = e => { $(e, c) },
c = t => {
switch (((e, t, n, o) => wn(t).fold((() => "skipping"), (r => "br" === o || (e => zt(e) && Eu(e) === ur)(t) ? "valid" : (e => Ut(e) && sn(e, Qs()))(t) ? "existing" : gc(t.dom) ? "caret" : zc(e, n, o) && zc(e, Mt(r), n) ? "valid" : "invalid-child")))(e, t, "span", Mt(t))) {
case "invalid-child":
{ l(); const e = Nn(t);d(e), l(); break }
case "valid":
{
const e = i.get().getOrThunk((() => { const e = ia(a); return s.push(e), i.set(e), e }));
((e, t) => { Yn(e, t), Jn(t, e) })(t, e);
break
}
}
};
return fu(e.dom, t, (e => {
l(), (e => {
const t = H(e, mn);
d(t)
})(e)
})), s
},
Ou = e => {
const t = (() => { const e = {}; return { register: (t, n) => { e[t] = { name: t, settings: n } }, lookup: t => xe(e, t).map((e => e.settings)), getNames: () => ue(e) } })();
((e, t) => {
e.serializer.addTempAttr(ea()), e.serializer.addNodeFilter("span", (e => {
$(e, (e => {
(e => M.from(e.attr(Js())).bind(t.lookup))(e).each((t => {!1 === t.persistent && e.unwrap() }))
}))
}))
})(e, t);
const n = ((e, t) => {
const n = zs({}),
o = () => ({ listeners: [], previous: Ws() }),
r = (e, t) => { s(e, (e => (t(e), e))) },
s = (e, t) => {
const r = n.get(),
s = t(xe(r, e).getOrThunk(o));
r[e] = s, n.set(r)
},
a = (t, n) => { $(na(e, t), (e => { n ? $t(e, ea(), "true") : Yt(e, ea()) })) },
i = Gs((() => {
const n = se(t.getNames());
$(n, (t => {
s(t, (n => {
const o = n.previous.get();
return ta(e, M.some(t)).fold((() => {
o.each((e => {
(e => { r(e, (t => { $(t.listeners, (t => t(!1, e))) })) })(t), n.previous.clear(), a(e, !1)
}))
}), (({ uid: e, name: t, elements: s }) => { Dt(o, e) || (o.each((e => a(e, !1))), ((e, t, n) => { r(e, (o => { $(o.listeners, (o => o(!0, e, { uid: t, nodes: H(n, (e => e.dom)) }))) })) })(t, e, s), n.previous.set(e), a(e, !0)) })), { previous: n.previous, listeners: n.listeners }
}))
}))
}), 30);
return e.on("remove", (() => { i.cancel() })), e.on("NodeChange", (() => { i.throttle() })), { addListener: (e, t) => { s(e, (e => ({ previous: e.previous, listeners: e.listeners.concat([t]) }))) } }
})(e, t);
return {
register: (e, n) => { t.register(e, n) },
annotate: (n, o) => {
t.lookup(n).each((t => {
((e, t, n, o) => {
e.undoManager.transact((() => {
const r = e.selection,
s = r.getRng(),
a = hu(e).length > 0;
if (s.collapsed && !a && ((e, t) => {
const n = mu(e, t, [{ inline: "span" }]);
t.setStart(n.startContainer, n.startOffset), t.setEnd(n.endContainer, n.endOffset), e.selection.setRng(t)
})(e, s), r.getRng().collapsed && !a) {
const s = Ru(e.getDoc(), o, t, n.decorate);
ro(s, dr), r.getRng().insertNode(s.dom), r.select(s.dom)
} else Su(r, !1, (() => { ku(e, (r => { Au(e, r, t, n.decorate, o) })) }))
}))
})(e, n, t, o)
}))
},
annotationChanged: (e, t) => { n.addListener(e, t) },
remove: t => {
const n = e.selection.getBookmark();
ta(e, M.some(t)).each((({ elements: e }) => { $(e, no) })), e.selection.moveToBookmark(n)
},
removeAll: t => {
const n = e.selection.getBookmark();
fe(oa(e, t), ((e, t) => $(e, no))), e.selection.moveToBookmark(n)
},
getAll: t => { const n = oa(e, t); return ge(n, (e => H(e, (e => e.dom)))) }
}
},
Tu = e => ({ getBookmark: O(kc, e), moveToBookmark: O(Sc, e) });
Tu.isBookmarkNode = _c;
const Bu = (e, t, n) => !n.collapsed && V(n.getClientRects(), (n => ((e, t, n) => t >= e.left && t <= e.right && n >= e.top && n <= e.bottom)(n, e, t))),
Du = (e, t, n) => e.dispatch(t, n),
Lu = (e, t, n, o) => e.dispatch("FormatApply", { format: t, node: n, vars: o }),
Pu = (e, t, n, o) => e.dispatch("FormatRemove", { format: t, node: n, vars: o }),
Mu = (e, t) => e.dispatch("SetContent", t),
Iu = (e, t) => e.dispatch("GetContent", t),
Fu = (e, t) => e.dispatch("PastePlainTextToggle", { state: t }),
Uu = { BACKSPACE: 8, DELETE: 46, DOWN: 40, ENTER: 13, ESC: 27, LEFT: 37, RIGHT: 39, SPACEBAR: 32, TAB: 9, UP: 38, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, modifierPressed: e => e.shiftKey || e.ctrlKey || e.altKey || Uu.metaKeyPressed(e), metaKeyPressed: e => Nt.os.isMacOS() || Nt.os.isiOS() ? e.metaKey : e.ctrlKey && !e.altKey },
zu = (e, t) => {
const n = "data-mce-selected",
o = t.dom,
r = Bt.each;
let s, a, i, l, d, c, u, m, f, g, p, h, b;
const v = t.getDoc(),
y = document,
x = Math.abs,
w = Math.round,
k = t.getBody();
let S, _;
const E = { nw: [0, 0, -1, -1], ne: [1, 0, 1, -1], se: [1, 1, 1, 1], sw: [0, 1, -1, 1] },
N = e => C(e) && (Lo(e) || t.dom.is(e, "figure.image")),
R = e => Fo(e) || o.hasClass(e, "mce-preview-object"),
A = e => {
const n = e.target;
((e, t) => { if ("longpress" === e.type || 0 === e.type.indexOf("touch")) { const n = e.touches[0]; return N(e.target) && !Bu(n.clientX, n.clientY, t) } return N(e.target) && !Bu(e.clientX, e.clientY, t) })(e, t.selection.getRng()) && !e.isDefaultPrevented() && t.selection.select(n)
},
O = e => o.is(e, "figure.image") ? [e.querySelector("img")] : o.hasClass(e, "mce-preview-object") && C(e.firstElementChild) ? [e, e.firstElementChild] : [e],
T = e => { const n = ol(t); return !!n && "false" !== e.getAttribute("data-mce-resize") && e !== t.getBody() && (o.hasClass(e, "mce-preview-object") ? pn(mn(e.firstElementChild), n) : pn(mn(e), n)) },
B = (e, n, r) => {
if (C(r)) {
const s = O(e);
$(s, (e => { e.style[n] || !t.schema.isValid(e.nodeName.toLowerCase(), n) ? o.setStyle(e, n, r) : o.setAttrib(e, n, "" + r) }))
}
},
D = (e, t, n) => { B(e, "width", t), B(e, "height", n) },
L = e => {
let n, r, d, v, y;
n = e.screenX - c, r = e.screenY - u, h = n * l[2] + m, b = r * l[3] + f, h = h < 5 ? 5 : h, b = b < 5 ? 5 : b, d = (N(s) || R(s)) && !1 !== rl(t) ? !Uu.modifierPressed(e) : Uu.modifierPressed(e), d && (x(n) > x(r) ? (b = w(h * g), h = w(b / g)) : (h = w(b / g), b = w(h * g))), D(a, h, b), v = l.startPos.x + n, y = l.startPos.y + r, v = v > 0 ? v : 0, y = y > 0 ? y : 0, o.setStyles(i, { left: v, top: y, display: "block" }), i.innerHTML = h + " × " + b, l[2] < 0 && a.clientWidth <= h && o.setStyle(a, "left", void 0 + (m - h)), l[3] < 0 && a.clientHeight <= b && o.setStyle(a, "top", void 0 + (f - b)), n = k.scrollWidth - S, r = k.scrollHeight - _, n + r !== 0 && o.setStyles(i, { left: v - n, top: y - r }), p || (((e, t, n, o, r) => { e.dispatch("ObjectResizeStart", { target: t, width: n, height: o, origin: r }) })(t, s, m, f, "corner-" + l.name), p = !0)
},
P = () => {
const e = p;
p = !1, e && (B(s, "width", h), B(s, "height", b)), o.unbind(v, "mousemove", L), o.unbind(v, "mouseup", P), y !== v && (o.unbind(y, "mousemove", L), o.unbind(y, "mouseup", P)), o.remove(a), o.remove(i), o.remove(d), M(s), e && (((e, t, n, o, r) => { e.dispatch("ObjectResized", { target: t, width: n, height: o, origin: r }) })(t, s, h, b, "corner-" + l.name), o.setAttrib(s, "style", o.getAttrib(s, "style"))), t.nodeChanged()
},
M = e => {
U();
const p = o.getPos(e, k),
C = p.x,
x = p.y,
w = e.getBoundingClientRect(),
N = w.width || w.right - w.left,
A = w.height || w.bottom - w.top;
s !== e && (I(), s = e, h = b = 0);
const B = t.dispatch("ObjectSelected", { target: e }),
M = o.getAttrib(s, n, "1");
T(e) && !B.isDefaultPrevented() ? r(E, ((e, t) => {
let r;
r = o.get("mceResizeHandle" + t), r && o.remove(r), r = o.add(k, "div", { id: "mceResizeHandle" + t, "data-mce-bogus": "all", class: "mce-resizehandle", unselectable: !0, style: "cursor:" + t + "-resize; margin:0; padding:0" }), o.bind(r, "mousedown", (r => {
r.stopImmediatePropagation(), r.preventDefault(), (r => {
const p = O(s)[0];
var h;
c = r.screenX, u = r.screenY, m = p.clientWidth, f = p.clientHeight, g = f / m, l = e, l.name = t, l.startPos = { x: N * e[0] + C, y: A * e[1] + x }, S = k.scrollWidth, _ = k.scrollHeight, d = o.add(k, "div", { class: "mce-resize-backdrop", "data-mce-bogus": "all" }), o.setStyles(d, { position: "fixed", left: "0", top: "0", width: "100%", height: "100%" }), a = R(h = s) ? o.create("img", { src: Nt.transparentSrc }) : h.cloneNode(!0), o.addClass(a, "mce-clonedresizable"), o.setAttrib(a, "data-mce-bogus", "all"), a.contentEditable = "false", o.setStyles(a, { left: C, top: x, margin: 0 }), D(a, N, A), a.removeAttribute(n), k.appendChild(a), o.bind(v, "mousemove", L), o.bind(v, "mouseup", P), y !== v && (o.bind(y, "mousemove", L), o.bind(y, "mouseup", P)), i = o.add(k, "div", { class: "mce-resize-helper", "data-mce-bogus": "all" }, m + " × " + f)
})(r)
})), e.elm = r, o.setStyles(r, { left: N * e[0] + C - r.offsetWidth / 2, top: A * e[1] + x - r.offsetHeight / 2 })
})) : I(), o.getAttrib(s, n) || s.setAttribute(n, M)
},
I = () => {
U(), s && s.removeAttribute(n), fe(E, ((e, t) => {
const n = o.get("mceResizeHandle" + t);
n && (o.unbind(n), o.remove(n))
}))
},
F = s => {
var a;
let i, l;
const d = (e, t) => {
if (e)
do { if (e === t) return !0 } while (e = e.parentNode)
};
p || t.removed || (r(o.select("img[data-mce-selected],hr[data-mce-selected]"), (e => { e.removeAttribute(n) })), l = "mousedown" === s.type ? s.target : e.getNode(), l = null === (a = Ko(mn(l), "table,img,figure.image,hr,video,span.mce-preview-object").getOrUndefined()) || void 0 === a ? void 0 : a.dom, d(l, k) && (z(), i = e.getStart(!0), d(i, l) && d(e.getEnd(!0), l)) ? M(l) : I())
},
U = () => { fe(E, (e => { e.elm && (o.unbind(e.elm), delete e.elm) })) },
z = () => { try { t.getDoc().execCommand("enableObjectResizing", !1, "false") } catch (e) {} };
return t.on("init", (() => {
z();
const e = Ks((e => { t.composing || F(e) }), 0);
t.on("nodechange ResizeEditor ResizeWindow ResizeContent drop FullscreenStateChanged", e.throttle), t.on("keyup compositionend", (t => { s && "TABLE" === s.nodeName && e.throttle(t) })), t.on("hide blur", I), t.on("contextmenu longpress", A, !0)
})), t.on("remove", U), { isResizable: T, showResizeRect: M, hideResizeRect: I, updateResizeRect: F, destroy: () => { s = a = d = null } }
},
ju = (e, t, n) => { const o = e.document.createRange(); var r; return r = o, t.fold((e => { r.setStartBefore(e.dom) }), ((e, t) => { r.setStart(e.dom, t) }), (e => { r.setStartAfter(e.dom) })), ((e, t) => { t.fold((t => { e.setEndBefore(t.dom) }), ((t, n) => { e.setEnd(t.dom, n) }), (t => { e.setEndAfter(t.dom) })) })(o, n), o },
Vu = (e, t, n, o, r) => { const s = e.document.createRange(); return s.setStart(t.dom, n), s.setEnd(o.dom, r), s },
Hu = ci([{ ltr: ["start", "soffset", "finish", "foffset"] }, { rtl: ["start", "soffset", "finish", "foffset"] }]),
$u = (e, t, n) => t(mn(n.startContainer), n.startOffset, mn(n.endContainer), n.endOffset);
Hu.ltr, Hu.rtl;
const qu = (e, t, n, o) => ({ start: e, soffset: t, finish: n, foffset: o }),
Wu = document.caretPositionFromPoint ? (e, t, n) => { var o, r; return M.from(null === (r = (o = e.dom).caretPositionFromPoint) || void 0 === r ? void 0 : r.call(o, t, n)).bind((t => { if (null === t.offsetNode) return M.none(); const n = e.dom.createRange(); return n.setStart(t.offsetNode, t.offset), n.collapse(), M.some(n) })) } : document.caretRangeFromPoint ? (e, t, n) => { var o, r; return M.from(null === (r = (o = e.dom).caretRangeFromPoint) || void 0 === r ? void 0 : r.call(o, t, n)) } : M.none,
Ku = ci([{ before: ["element"] }, { on: ["element", "offset"] }, { after: ["element"] }]),
Gu = { before: Ku.before, on: Ku.on, after: Ku.after, cata: (e, t, n, o) => e.fold(t, n, o), getStart: e => e.fold(R, R, R) },
Yu = ci([{ domRange: ["rng"] }, { relative: ["startSitu", "finishSitu"] }, { exact: ["start", "soffset", "finish", "foffset"] }]),
Xu = { domRange: Yu.domRange, relative: Yu.relative, exact: Yu.exact, exactFromRange: e => Yu.exact(e.start, e.soffset, e.finish, e.foffset), getWin: e => { const t = (e => e.match({ domRange: e => mn(e.startContainer), relative: (e, t) => Gu.getStart(e), exact: (e, t, n, o) => e }))(e); return xn(t) }, range: qu },
Qu = (e, t) => { const n = Mt(e); return "input" === n ? Gu.after(e) : j(["br", "img"], n) ? 0 === t ? Gu.before(e) : Gu.after(e) : Gu.on(e, t) },
Ju = (e, t) => {
const n = e.fold(Gu.before, Qu, Gu.after),
o = t.fold(Gu.before, Qu, Gu.after);
return Xu.relative(n, o)
},
Zu = (e, t, n, o) => {
const r = Qu(e, t),
s = Qu(n, o);
return Xu.relative(r, s)
},
em = (e, t) => { const n = (t || document).createDocumentFragment(); return $(e, (e => { n.appendChild(e.dom) })), mn(n) },
tm = e => {
const t = Xu.getWin(e).dom,
n = (e, n, o, r) => Vu(t, e, n, o, r),
o = (e => e.match({
domRange: e => {
const t = mn(e.startContainer),
n = mn(e.endContainer);
return Zu(t, e.startOffset, n, e.endOffset)
},
relative: Ju,
exact: Zu
}))(e);
return ((e, t) => { const n = ((e, t) => t.match({ domRange: e => ({ ltr: N(e), rtl: M.none }), relative: (t, n) => ({ ltr: De((() => ju(e, t, n))), rtl: De((() => M.some(ju(e, n, t)))) }), exact: (t, n, o, r) => ({ ltr: De((() => Vu(e, t, n, o, r))), rtl: De((() => M.some(Vu(e, o, r, t, n)))) }) }))(e, t); return ((e, t) => { const n = t.ltr(); return n.collapsed ? t.rtl().filter((e => !1 === e.collapsed)).map((e => Hu.rtl(mn(e.endContainer), e.endOffset, mn(e.startContainer), e.startOffset))).getOrThunk((() => $u(0, Hu.ltr, n))) : $u(0, Hu.ltr, n) })(0, n) })(t, o).match({ ltr: n, rtl: n })
},
nm = (e, t, n) => { return (o = n.defaultView, r = e, s = t, ((e, t, n) => { const o = mn(e.document); return Wu(o, t, n).map((e => qu(mn(e.startContainer), e.startOffset, mn(e.endContainer), e.endOffset))) })(o, r, s)).map((e => { const t = n.createRange(); return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), t })).getOrUndefined(); var o, r, s },
om = (e, t) => e && t && e.startContainer === t.startContainer && e.startOffset === t.startOffset && e.endContainer === t.endContainer && e.endOffset === t.endOffset,
rm = (e, t, n) => null !== ((e, t, n) => {
for (; e && e !== t;) {
if (n(e)) return e;
e = e.parentNode
}
return null
})(e, t, n),
sm = (e, t, n) => rm(e, t, (e => e.nodeName === n)),
am = e => e && "TABLE" === e.nodeName,
im = e => e && /^(TD|TH|CAPTION)$/.test(e.nodeName),
lm = (e, t) => vr(e) && !1 === rm(e, t, gc),
dm = (e, t, n) => {
const o = new Xo(t, e.getParent(t.parentNode, e.isBlock) || e.getRoot());
for (; t = o[n ? "prev" : "next"]();)
if (Do(t)) return !0
},
cm = (e, t, n, o, r) => {
let s;
const a = e.getRoot();
let i;
const l = e.schema.getNonEmptyElements(),
d = e.getParent(r.parentNode, e.isBlock) || a;
if (o && Do(r) && t && e.isEmpty(d)) return M.some(Ua(r.parentNode, e.nodeIndex(r)));
const c = new Xo(r, d);
for (; i = c[o ? "prev" : "next"]();) {
if ("false" === e.getContentEditableParent(i) || lm(i, a)) return M.none();
if (No(i) && i.nodeValue.length > 0) return !1 === sm(i, a, "A") ? M.some(Ua(i, o ? i.nodeValue.length : 0)) : M.none();
if (e.isBlock(i) || l[i.nodeName.toLowerCase()]) return M.none();
s = i
}
return n && s ? M.some(Ua(s, 0)) : M.none()
},
um = (e, t, n, o) => {
let r, s;
const a = e.getRoot();
let i, l, d = !1;
r = o[(n ? "start" : "end") + "Container"], s = o[(n ? "start" : "end") + "Offset"];
const c = yo(r) && s === r.childNodes.length,
u = e.schema.getNonEmptyElements();
if (l = n, vr(r)) return M.none();
if (yo(r) && s > r.childNodes.length - 1 && (l = !1), To(r) && (r = a, s = 0), r === a) {
if (l && (i = r.childNodes[s > 0 ? s - 1 : 0], i)) { if (vr(i)) return M.none(); if (u[i.nodeName] || am(i)) return M.none() }
if (r.hasChildNodes()) {
if (s = Math.min(!l && s > 0 ? s - 1 : s, r.childNodes.length - 1), r = r.childNodes[s], s = No(r) && c ? r.data.length : 0, !t && r === a.lastChild && am(r)) return M.none();
if (((e, t) => {
for (; t && t !== e;) {
if (Mo(t)) return !0;
t = t.parentNode
}
return !1
})(a, r) || vr(r)) return M.none();
if (r.hasChildNodes() && !1 === am(r)) {
i = r;
const t = new Xo(r, a);
do { if (Mo(i) || vr(i)) { d = !1; break } if (No(i) && i.nodeValue.length > 0) { s = l ? 0 : i.nodeValue.length, r = i, d = !0; break } if (u[i.nodeName.toLowerCase()] && !im(i)) { s = e.nodeIndex(i), r = i.parentNode, l || s++, d = !0; break } } while (i = l ? t.next() : t.prev())
}
}
}
return t && (No(r) && 0 === s && cm(e, c, t, !0, r).each((e => { r = e.container(), s = e.offset(), d = !0 })), yo(r) && (i = r.childNodes[s], i || (i = r.childNodes[s - 1]), !i || !Do(i) || ((e, t) => e.previousSibling && "A" === e.previousSibling.nodeName)(i) || dm(e, i, !1) || dm(e, i, !0) || cm(e, c, t, !0, i).each((e => { r = e.container(), s = e.offset(), d = !0 })))), l && !t && No(r) && s === r.nodeValue.length && cm(e, c, t, !1, r).each((e => { r = e.container(), s = e.offset(), d = !0 })), d ? M.some(Ua(r, s)) : M.none()
},
mm = (e, t) => {
const n = t.collapsed,
o = t.cloneRange(),
r = Ua.fromRangeStart(t);
return um(e, n, !0, o).each((e => { n && Ua.isAbove(r, e) || o.setStart(e.container(), e.offset()) })), n || um(e, n, !1, o).each((e => { o.setEnd(e.container(), e.offset()) })), n && o.collapse(!0), om(t, o) ? M.none() : M.some(o)
},
fm = (e, t) => e.splitText(t),
gm = e => {
let t = e.startContainer,
n = e.startOffset,
o = e.endContainer,
r = e.endOffset;
return t === o && No(t) ? n > 0 && n < t.nodeValue.length && (o = fm(t, n), t = o.previousSibling, r > n ? (r -= n, t = o = fm(o, r).previousSibling, r = o.nodeValue.length, n = 0) : r = 0) : (No(t) && n > 0 && n < t.nodeValue.length && (t = fm(t, n), n = 0), No(o) && r > 0 && r < o.nodeValue.length && (o = fm(o, r).previousSibling, r = o.nodeValue.length)), { startContainer: t, startOffset: n, endContainer: o, endOffset: r }
},
pm = e => ({ walk: (t, n) => fu(e, t, n), split: gm, normalize: t => mm(e, t).fold(L, (e => (t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0))) });
pm.compareRanges = om, pm.getCaretRangeFromPoint = nm, pm.getSelectedNode = va, pm.getNode = ya;
const hm = ((e, t) => {
const n = t => { const n = (e => { const t = e.dom; return zn(e) ? t.getBoundingClientRect().height : t.offsetHeight })(t); if (n <= 0 || null === n) { const n = $n(t, e); return parseFloat(n) || 0 } return n },
o = (e, t) => Y(t, ((t, n) => {
const o = $n(e, n),
r = void 0 === o ? 0 : parseInt(o, 10);
return isNaN(r) ? t : t + r
}), 0);
return {
set: (t, n) => {
if (!w(n) && !n.match(/^[0-9]+$/)) throw new Error(e + ".set accepts only positive integer values. Value was " + n);
const o = t.dom;
an(o) && (o.style[e] = n + "px")
},
get: n,
getOuter: n,
aggregate: o,
max: (e, t, n) => { const r = o(e, n); return t > r ? t - r : 0 }
}
})("height"),
bm = () => mn(document),
vm = (e, t) => e.view(t).fold(N([]), (t => {
const n = e.owner(t),
o = vm(e, n);
return [t].concat(o)
}));
var ym = Object.freeze({ __proto__: null, view: e => { var t; return (e.dom === document ? M.none() : M.from(null === (t = e.dom.defaultView) || void 0 === t ? void 0 : t.frameElement)).map(mn) }, owner: e => Cn(e) });
const Cm = e => "textarea" === Mt(e),
xm = (e, t) => {
const n = (e => {
const t = e.dom.ownerDocument,
n = t.body,
o = t.defaultView,
r = t.documentElement;
if (n === e.dom) return lo(n.offsetLeft, n.offsetTop);
const s = co(null == o ? void 0 : o.pageYOffset, r.scrollTop),
a = co(null == o ? void 0 : o.pageXOffset, r.scrollLeft),
i = co(r.clientTop, n.clientTop),
l = co(r.clientLeft, n.clientLeft);
return uo(e).translate(a - l, s - i)
})(e),
o = (e => hm.get(e))(e);
return { element: e, bottom: n.top + o, height: o, pos: n, cleanup: t }
},
wm = (e, t, n, o) => { Em(e, ((r, s) => Sm(e, t, n, o)), n) },
km = (e, t, n, o, r) => {
const s = { elm: o.element.dom, alignToTop: r };
((e, t) => e.dispatch("ScrollIntoView", t).isDefaultPrevented())(e, s) || (n(t, mo(t).top, o, r), ((e, t) => { e.dispatch("AfterScrollIntoView", t) })(e, s))
},
Sm = (e, t, n, o) => {
const r = mn(e.getBody()),
s = mn(e.getDoc());
r.dom.offsetWidth;
const a = ((e, t) => {
const n = ((e, t) => { const n = Nn(e); if (0 === n.length || Cm(e)) return { element: e, offset: t }; if (t < n.length && !Cm(n[t])) return { element: n[t], offset: 0 }; { const o = n[n.length - 1]; return Cm(o) ? { element: e, offset: t } : "img" === Mt(o) ? { element: o, offset: 1 } : zt(o) ? { element: o, offset: Eu(o).length } : { element: o, offset: Nn(o).length } } })(e, t),
o = dn('\ufeff');
return Yn(n.element, o), xm(o, (() => to(o)))
})(mn(n.startContainer), n.startOffset);
km(e, s, t, a, o), a.cleanup()
},
_m = (e, t, n, o) => {
const r = mn(e.getDoc());
km(e, r, n, (e => xm(mn(e), S))(t), o)
},
Em = (e, t, n) => {
const o = n.startContainer,
r = n.startOffset,
s = n.endContainer,
a = n.endOffset;
t(mn(o), mn(s));
const i = e.dom.createRng();
i.setStart(o, r), i.setEnd(s, a), e.selection.setRng(n)
},
Nm = (e, t, n, o) => {
const r = e.pos;
if (n) fo(r.left, r.top, o);
else {
const n = r.top - t + e.height;
fo(r.left, n, o)
}
},
Rm = (e, t, n, o, r) => {
const s = n + t,
a = o.pos.top,
i = o.bottom,
l = i - a >= n;
a < t ? Nm(o, n, !1 !== r, e) : a > s ? Nm(o, n, l ? !1 !== r : !0 === r, e) : i > s && !l && Nm(o, n, !0 === r, e)
},
Am = (e, t, n, o) => {
const r = e.dom.defaultView.innerHeight;
Rm(e, t, r, n, o)
},
Om = (e, t, n, o) => {
const r = e.dom.defaultView.innerHeight;
Rm(e, t, r, n, o);
const s = (e => {
const t = bm(),
n = mo(t),
o = ((e, t) => { const n = t.owner(e); return vm(t, n) })(e, ym),
r = uo(e),
s = G(o, ((e, t) => { const n = uo(t); return { left: e.left + n.left, top: e.top + n.top } }), { left: 0, top: 0 });
return lo(s.left + r.left + n.left, s.top + r.top + n.top)
})(n.element),
a = ho(window);
s.top < a.y ? go(n.element, !1 !== o) : s.top > a.bottom && go(n.element, !0 === o)
},
Tm = (e, t, n) => wm(e, Am, t, n),
Bm = (e, t, n) => _m(e, t, Am, n),
Dm = (e, t, n) => wm(e, Om, t, n),
Lm = (e, t, n) => _m(e, t, Om, n),
Pm = (e, t, n) => {
(e.inline ? Tm : Dm)(e, t, n)
},
Mm = e => e.dom.focus(),
Im = e => { const t = Pn(e).dom; return e.dom === t.activeElement },
Fm = (e = bm()) => M.from(e.dom.activeElement).map(mn),
Um = (e, t) => { const n = zt(t) ? Eu(t).length : Nn(t).length + 1; return e > n ? n : e < 0 ? 0 : e },
zm = e => Xu.range(e.start, Um(e.soffset, e.start), e.finish, Um(e.foffset, e.finish)),
jm = (e, t) => !vo(t.dom) && (vn(e, t) || bn(e, t)),
Vm = e => t => jm(e, t.start) && jm(e, t.finish),
Hm = e => Xu.range(mn(e.startContainer), e.startOffset, mn(e.endContainer), e.endOffset),
$m = e => { const t = document.createRange(); try { return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), M.some(t) } catch (e) { return M.none() } },
qm = e => {
const t = (e => e.inline)(e) ? (n = mn(e.getBody()), (e => { const t = e.getSelection(); return (t && 0 !== t.rangeCount ? M.from(t.getRangeAt(0)) : M.none()).map(Hm) })(xn(n).dom).filter(Vm(n))) : M.none();
var n;
e.bookmark = t.isSome() ? t : e.bookmark
},
Wm = e => (e.bookmark ? e.bookmark : M.none()).bind((t => { return n = mn(e.getBody()), o = t, M.from(o).filter(Vm(n)).map(zm); var n, o })).bind($m),
Km = { isEditorUIElement: e => { const t = e.className.toString(); return -1 !== t.indexOf("tox-") || -1 !== t.indexOf("mce-") } },
Gm = { setEditorTimeout: (e, t, n) => ((e, t) => (w(t) || (t = 0), setTimeout(e, t)))((() => { e.removed || t() }), n), setEditorInterval: (e, t, n) => { const o = ((e, t) => (w(t) || (t = 0), setInterval(e, t)))((() => { e.removed ? clearInterval(o) : t() }), n); return o } };
let Ym;
const Xm = Is.DOM,
Qm = (e, t) => {
const n = hl(e),
o = Xm.getParent(t, (t => (e => Km.isEditorUIElement(e))(t) || !!n && e.dom.is(t, n)));
return null !== o
},
Jm = (e, t) => {
const n = t.editor;
(e => {
const t = Ks((() => { qm(e) }), 0);
e.on("init", (() => {
e.inline && ((e, t) => {
const n = () => { t.throttle() };
Is.DOM.bind(document, "mouseup", n), e.on("remove", (() => { Is.DOM.unbind(document, "mouseup", n) }))
})(e, t), ((e, t) => {
((e, t) => { e.on("mouseup touchend", (e => { t.throttle() })) })(e, t), e.on("keyup NodeChange AfterSetSelectionRange", (t => {
(e => "nodechange" === e.type && e.selectionChange)(t) || qm(e)
}))
})(e, t)
})), e.on("remove", (() => { t.cancel() }))
})(n), n.on("focusin", (() => {
const t = e.focusedEditor;
t !== n && (t && t.dispatch("blur", { focusedEditor: n }), e.setActive(n), e.focusedEditor = n, n.dispatch("focus", { blurredEditor: t }), n.focus(!0))
})), n.on("focusout", (() => {
Gm.setEditorTimeout(n, (() => {
const t = e.focusedEditor;
Qm(n, (e => { try { const t = Pn(mn(e.getElement())); return Fm(t).fold((() => document.body), (e => e.dom)) } catch (e) { return document.body } })(n)) || t !== n || (n.dispatch("blur", { focusedEditor: null }), e.focusedEditor = null)
}))
})), Ym || (Ym = t => {
const n = e.activeEditor;
n && Fn(t).each((t => { t.ownerDocument === document && (t === document.body || Qm(n, t) || e.focusedEditor !== n || (n.dispatch("blur", { focusedEditor: null }), e.focusedEditor = null)) }))
}, Xm.bind(document, "focusin", Ym))
},
Zm = (e, t) => { e.focusedEditor === t.editor && (e.focusedEditor = null), e.activeEditor || (Xm.unbind(document, "focusin", Ym), Ym = null) },
ef = (e, t) => {
((e, t) => (e => e.collapsed ? M.from(ya(e.startContainer, e.startOffset)).map(mn) : M.none())(t).bind((t => sr(t) ? M.some(t) : !1 === vn(e, t) ? M.some(e) : M.none())))(mn(e.getBody()), t).bind((e => uc(e.dom))).fold((() => { e.selection.normalize() }), (t => e.selection.setRng(t.toRange())))
},
tf = e => { if (e.setActive) try { e.setActive() } catch (t) { e.focus() } else e.focus() },
nf = e => e.inline ? (e => { const t = e.getBody(); return t && (n = mn(t), Im(n) || (o = n, Fm(Pn(o)).filter((e => o.dom.contains(e.dom)))).isSome()); var n, o })(e) : (e => e.iframeElement && Im(mn(e.iframeElement)))(e),
of = e => e.editorManager.setActive(e),
rf = (e, t, n, o, r) => {
const s = n ? t.startContainer : t.endContainer,
a = n ? t.startOffset : t.endOffset;
return M.from(s).map(mn).map((e => o && t.collapsed ? e : Rn(e, r(e, a)).getOr(e))).bind((e => Ut(e) ? M.some(e) : wn(e).filter(Ut))).map((e => e.dom)).getOr(e)
},
sf = (e, t, n) => rf(e, t, !0, n, ((e, t) => Math.min(Tn(e), t))),
af = (e, t, n) => rf(e, t, !1, n, ((e, t) => t > 0 ? t - 1 : t)),
lf = (e, t) => { const n = e; for (; e && No(e) && 0 === e.length;) e = t ? e.nextSibling : e.previousSibling; return e || n },
df = (e, t) => H(t, (t => { const n = e.dispatch("GetSelectionRange", { range: t }); return n.range !== t ? n.range : t })),
cf = ["img", "br"],
uf = e => { const t = Nu(e).filter((e => 0 !== e.trim().length || e.indexOf(dr) > -1)).isSome(); return t || j(cf, Mt(e)) },
mf = "[data-mce-autocompleter]",
ff = (e, t) => {
if (gf(mn(e.getBody())).isNone()) {
const o = dn('', e.getDoc());
Jn(o, mn(t.extractContents())), t.insertNode(o.dom), wn(o).each((e => e.dom.normalize())), (n = o, ((e, t) => { const n = e => { const o = Nn(e); for (let e = o.length - 1; e >= 0; e--) { const r = o[e]; if (t(r)) return M.some(r); const s = n(r); if (s.isSome()) return s } return M.none() }; return n(e) })(n, uf)).map((t => { e.selection.setCursorLocation(t.dom, (e => "img" === Mt(e) ? 1 : Nu(e).fold((() => Nn(e).length), (e => e.length)))(t)) }))
}
var n
},
gf = e => Wo(e, mf),
pf = { "#text": 3, "#comment": 8, "#cdata": 4, "#pi": 7, "#doctype": 10, "#document-fragment": 11 },
hf = (e, t, n) => {
const o = n ? "lastChild" : "firstChild",
r = n ? "prev" : "next";
if (e[o]) return e[o];
if (e !== t) {
let n = e[r];
if (n) return n;
for (let o = e.parent; o && o !== t; o = o.parent)
if (n = o[r], n) return n
}
},
bf = e => { if (!Fr(e.value)) return !1; const t = e.parent; return !t || "span" === t.name && !t.attr("style") || !/^[ ]+$/.test(e.value) },
vf = e => { const 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 };
class yf {
constructor(e, t) { this.name = e, this.type = t, 1 === t && (this.attributes = [], this.attributes.map = {}) }
static create(e, t) { const n = new yf(e, pf[e] || 1); return t && fe(t, ((e, t) => { n.attr(t, e) })), n }
replace(e) { const t = this; return e.parent && e.remove(), t.insert(e, t), t.remove(), t }
attr(e, t) {
const n = this;
let o;
if ("string" != typeof e) return null != e && fe(e, ((e, t) => { n.attr(t, e) })), n;
if (o = n.attributes) {
if (void 0 !== t) {
if (null === t) {
if (e in o.map) {
delete o.map[e];
let t = o.length;
for (; t--;)
if (o[t].name === e) return o.splice(t, 1), n
}
return n
}
if (e in o.map) {
let n = o.length;
for (; n--;)
if (o[n].name === e) { o[n].value = t; break }
} else o.push({ name: e, value: t });
return o.map[e] = t, n
}
return o.map[e]
}
}
clone() {
const e = this,
t = new yf(e.name, e.type);
let n;
if (n = e.attributes) {
const e = [];
e.map = {};
for (let t = 0, o = n.length; t < o; t++) { const o = n[t]; "id" !== o.name && (e[e.length] = { name: o.name, value: o.value }, e.map[o.name] = o.value) }
t.attributes = e
}
return t.value = e.value, t
}
wrap(e) { const t = this; return t.parent.insert(e, t), e.append(t), t }
unwrap() {
const e = this;
for (let t = e.firstChild; t;) {
const n = t.next;
e.insert(t, e, !0), t = n
}
e.remove()
}
remove() {
const e = this,
t = e.parent,
n = e.next,
o = e.prev;
return t && (t.firstChild === e ? (t.firstChild = n, n && (n.prev = null)) : o.next = n, t.lastChild === e ? (t.lastChild = o, o && (o.next = null)) : n.prev = o, e.parent = e.next = e.prev = null), e
}
append(e) {
const t = this;
e.parent && e.remove();
const n = t.lastChild;
return n ? (n.next = e, e.prev = n, t.lastChild = e) : t.lastChild = t.firstChild = e, e.parent = t, e
}
insert(e, t, n) { e.parent && e.remove(); const o = t.parent || this; return n ? (t === o.firstChild ? o.firstChild = e : t.prev.next = e, e.prev = t.prev, e.next = t, t.prev = e) : (t === o.lastChild ? o.lastChild = e : t.next.prev = e, e.next = t.next, e.prev = t, t.next = e), e.parent = o, e }
getAll(e) {
const t = this,
n = [];
for (let o = t.firstChild; o; o = hf(o, t)) o.name === e && n.push(o);
return n
}
children() { const e = []; for (let t = this.firstChild; t; t = t.next) e.push(t); return e }
empty() {
const e = this;
if (e.firstChild) {
const t = [];
for (let n = e.firstChild; n; n = hf(n, e)) t.push(n);
let n = t.length;
for (; n--;) {
const e = t[n];
e.parent = e.firstChild = e.lastChild = e.next = e.prev = null
}
}
return e.firstChild = e.lastChild = null, e
}
isEmpty(e, t = {}, n) {
const o = this;
let r = o.firstChild;
if (vf(o)) return !1;
if (r)
do { if (1 === r.type) { if (r.attr("data-mce-bogus")) continue; if (e[r.name]) return !1; if (vf(r)) return !1 } if (8 === r.type) return !1; if (3 === r.type && !bf(r)) return !1; if (3 === r.type && r.parent && t[r.parent.name] && Fr(r.value)) return !1; if (n && n(r)) return !1 } while (r = hf(r, o));
return !0
}
walk(e) { return hf(this, null, e) }
}
const Cf = (e, t, n = 0) => {
const o = e.toLowerCase();
if (-1 !== o.indexOf("[if ", n) && ((e, t) => /^\s*\[if [\w\W]+\]>.*/.test(e.substr(t)))(o, n)) { const e = o.indexOf("[endif]", n); return o.indexOf(">", e) }
if (t) { const e = o.indexOf(">", n); return -1 !== e ? e : o.length } {
const t = /--!?>/g;
t.lastIndex = n;
const r = t.exec(e);
return r ? r.index + r[0].length : o.length
}
},
xf = (e, t, n) => {
const o = /<([!?\/])?([A-Za-z0-9\-_:.]+)/g,
r = /(?:\s(?:[^'">]+(?:"[^"]*"|'[^']*'))*[^"'>]*(?:"[^">]*|'[^'>]*)?|\s*|\/)>/g,
s = e.getVoidElements();
let a = 1,
i = n;
for (; 0 !== a;)
for (o.lastIndex = i;;) { const e = o.exec(t); if (null === e) return i; if ("!" === e[1]) { i = ze(e[2], "--") ? Cf(t, !1, e.index + "!--".length) : Cf(t, !0, e.index + 1); break } { r.lastIndex = o.lastIndex; const n = r.exec(t); if (h(n) || n.index !== o.lastIndex) continue; "/" === e[1] ? a -= 1 : we(s, e[2]) || (a += 1), i = o.lastIndex + n[0].length; break } }
return i
},
wf = (e, t) => {
const n = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,
o = e.schema;
let r = ((e, t) => { const n = new RegExp(["\\s?(" + e.join("|") + ')="[^"]+"'].join("|"), "gi"); return t.replace(n, "") })(e.getTempAttrs(), t);
const s = o.getVoidElements();
let a;
for (; a = n.exec(r);) {
const e = n.lastIndex,
t = a[0].length;
let i;
i = s[a[1]] ? e : xf(o, r, e), r = r.substring(0, e - t) + r.substring(i), n.lastIndex = e - t
}
return fr(r)
},
kf = wf,
Sf = Bt.each,
_f = e => ({
compare: (t, n) => {
if (t.nodeName !== n.nodeName) return !1;
const o = t => {
const n = {};
return Sf(e.getAttribs(t), (o => {
const r = o.nodeName.toLowerCase();
0 !== r.indexOf("_") && "style" !== r && 0 !== r.indexOf("data-") && (n[r] = e.getAttrib(t, r))
})), n
},
r = (e, t) => {
let n, o;
for (o in e)
if (we(e, o)) {
if (n = t[o], void 0 === n) return !1;
if (e[o] !== n) return !1;
delete t[o]
}
for (o in t)
if (we(t, o)) return !1;
return !0
};
return !(!r(o(t), o(n)) || !r(e.parseStyle(e.getAttrib(t, "style")), e.parseStyle(e.getAttrib(n, "style"))) || _c(t) || _c(n))
}
}),
Ef = Bt.makeMap,
Nf = e => {
const t = [],
n = (e = e || {}).indent,
o = Ef(e.indent_before || ""),
r = Ef(e.indent_after || ""),
s = ls.getEncodeFunc(e.entity_encoding || "raw", e.entities),
a = "xhtml" !== e.element_format;
return {
start: (e, i, l) => {
let d, c, u, m;
if (n && o[e] && t.length > 0 && (m = t[t.length - 1], m.length > 0 && "\n" !== m && t.push("\n")), t.push("<", e), i)
for (d = 0, c = i.length; d < c; d++) u = i[d], t.push(" ", u.name, '="', s(u.value, !0), '"');
t[t.length] = !l || a ? ">" : " />", l && n && r[e] && t.length > 0 && (m = t[t.length - 1], m.length > 0 && "\n" !== m && t.push("\n"))
},
end: e => {
let o;
t.push("", e, ">"), n && r[e] && t.length > 0 && (o = t[t.length - 1], o.length > 0 && "\n" !== o && t.push("\n"))
},
text: (e, n) => { e.length > 0 && (t[t.length] = n ? e : s(e)) },
cdata: e => { t.push("") },
comment: e => { t.push("\x3c!--", e, "--\x3e") },
pi: (e, o) => { o ? t.push("", e, " ", s(o), "?>") : t.push("", e, "?>"), n && t.push("\n") },
doctype: e => { t.push("", n ? "\n" : "") },
reset: () => { t.length = 0 },
getContent: () => t.join("").replace(/\n$/, "")
}
},
Rf = (e, t = vs()) => {
const n = Nf(e);
return (e = e || {}).validate = !("validate" in e) || e.validate, {
serialize: o => {
const r = e.validate,
s = {
3: e => { n.text(e.value, e.raw) },
8: e => { n.comment(e.value) },
7: e => { n.pi(e.name, e.value) },
10: e => { n.doctype(e.value) },
4: e => { n.cdata(e.value) },
11: e => {
if (e = e.firstChild)
do { a(e) } while (e = e.next)
}
};
n.reset();
const a = e => {
const o = s[e.type];
if (o) o(e);
else {
const o = e.name,
s = o in t.getVoidElements();
let i = e.attributes;
if (r && i && i.length > 1) {
const n = [];
n.map = {};
const o = t.getElementRule(e.name);
if (o) {
for (let e = 0, t = o.attributesOrder.length; e < t; e++) {
const t = o.attributesOrder[e];
if (t in i.map) {
const e = i.map[t];
n.map[t] = e, n.push({ name: t, value: e })
}
}
for (let e = 0, t = i.length; e < t; e++) {
const t = i[e].name;
if (!(t in n.map)) {
const e = i.map[t];
n.map[t] = e, n.push({ name: t, value: e })
}
}
i = n
}
}
if (n.start(o, i, s), !s) {
let t = e.firstChild;
if (t) {
"pre" !== o && "textarea" !== o || 3 !== t.type || "\n" !== t.value[0] || n.text("\n", !0);
do { a(t) } while (t = t.next)
}
n.end(o)
}
}
};
return 1 !== o.type || e.inner ? 3 === o.type ? s[3](o) : s[11](o) : a(o), n.getContent()
}
}
},
Af = new Set;
$(["margin", "margin-left", "margin-right", "margin-top", "margin-bottom", "padding", "padding-left", "padding-right", "padding-top", "padding-bottom", "border", "border-width", "border-style", "border-color", "background", "background-attachment", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-repeat", "background-size", "float", "position", "left", "right", "top", "bottom", "z-index", "display", "transform", "width", "max-width", "min-width", "height", "max-height", "min-height", "overflow", "overflow-x", "overflow-y", "text-overflow", "vertical-align", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function"], (e => { Af.add(e) }));
const Of = ["font", "text-decoration", "text-emphasis"],
Tf = (e, t) => ue(e.parseStyle(e.getAttrib(t, "style"))),
Bf = (e, t, n) => {
const o = Tf(e, t),
r = Tf(e, n),
s = o => {
var r, s;
const a = null !== (r = e.getStyle(t, o)) && void 0 !== r ? r : "",
i = null !== (s = e.getStyle(n, o)) && void 0 !== s ? s : "";
return We(a) && We(i) && a !== i
};
return V(o, (e => { const t = t => V(t, (t => t === e)); if (!t(r) && t(Of)) { const e = K(r, (e => V(Of, (t => ze(e, t))))); return V(e, s) } return s(e) }))
},
Df = (e, t, n) => M.from(n.container()).filter(No).exists((o => { const r = e ? 0 : -1; return t(o.data.charAt(n.offset() + r)) })),
Lf = O(Df, !0, Nc),
Pf = O(Df, !1, Nc),
Mf = e => { const t = e.container(); return No(t) && (0 === t.data.length || mr(t.data) && Tu.isBookmarkNode(t.parentNode)) },
If = (e, t) => n => M.from(Bd(e ? 0 : -1, n)).filter(t).isSome(),
Ff = e => Lo(e) && "block" === $n(mn(e), "display"),
Uf = e => Mo(e) && !(e => yo(e) && "all" === e.getAttribute("data-mce-bogus"))(e),
zf = If(!0, Ff),
jf = If(!1, Ff),
Vf = If(!0, Fo),
Hf = If(!1, Fo),
$f = If(!0, So),
qf = If(!1, So),
Wf = If(!0, Uf),
Kf = If(!1, Uf),
Gf = e => { eo(e), Jn(e, dn('
')) },
Yf = e => { On(e).each((t => { kn(t).each((n => { Zo(e) && tr(t) && Zo(n) && to(t) })) })) },
Xf = (e, t) => ((e, t, n) => {
return vn(t, e) ? (o = ((e, t) => {
const n = x(t) ? t : L;
let o = e.dom;
const r = [];
for (; null !== o.parentNode && void 0 !== o.parentNode;) {
const e = o.parentNode,
t = mn(e);
if (r.push(t), !0 === n(t)) break;
o = e
}
return r
})(e, (e => n(e) || bn(e, t))), o.slice(0, -1)) : [];
var o
})(e, t, L),
Qf = (e, t) => [e].concat(Xf(e, t)),
Jf = (e, t, n) => ic(e, t, n, Mf),
Zf = (e, t) => Q(Qf(mn(t.container()), e), Zo),
eg = (e, t, n) => Jf(e, t.dom, n).forall((e => Zf(t, n).fold((() => !1 === Td(e, n, t.dom)), (o => !1 === Td(e, n, t.dom) && vn(o, mn(e.container())))))),
tg = (e, t, n) => Zf(t, n).fold((() => Jf(e, t.dom, n).forall((e => !1 === Td(e, n, t.dom)))), (t => Jf(e, t.dom, n).isNone())),
ng = O(tg, !1),
og = O(tg, !0),
rg = O(eg, !1),
sg = O(eg, !0),
ag = e => jd(e).exists(tr),
ig = (e, t, n) => {
const o = K(Qf(mn(n.container()), t), Zo),
r = ie(o).getOr(t);
return sc(e, r.dom, n).filter(ag)
},
lg = (e, t) => jd(t).exists(tr) || ig(!0, e, t).isSome(),
dg = (e, t) => (e => M.from(e.getNode(!0)).map(mn))(t).exists(tr) || ig(!1, e, t).isSome(),
cg = O(ig, !1),
ug = O(ig, !0),
mg = e => Ua.isTextPosition(e) && !e.isAtStart() && !e.isAtEnd(),
fg = (e, t) => { const n = K(Qf(mn(t.container()), e), Zo); return ie(n).getOr(e) },
gg = (e, t) => mg(t) ? Pf(t) : Pf(t) || cc(fg(e, t).dom, t).exists(Pf),
pg = (e, t) => mg(t) ? Lf(t) : Lf(t) || dc(fg(e, t).dom, t).exists(Lf),
hg = e => jd(e).bind((e => $o(e, Ut))).exists((e => (e => j(["pre", "pre-wrap"], e))($n(e, "white-space")))),
bg = (e, t) => !hg(t) && (ng(e, t) || rg(e, t) || dg(e, t) || gg(e, t)),
vg = (e, t) => !hg(t) && (og(e, t) || sg(e, t) || lg(e, t) || pg(e, t)),
yg = (e, t) => bg(e, t) || vg(e, (e => {
const t = e.container(),
n = e.offset();
return No(t) && n < t.data.length ? Ua(t, n + 1) : e
})(t)),
Cg = (e, t) => Ec(e.charAt(t)),
xg = e => { const t = e.container(); return No(t) && Ue(t.data, dr) },
wg = (e, t) => M.some(t).filter(xg).bind((t => {
const n = t.container(),
o = ((e, t) => {
const n = t.data,
o = Ua(t, 0);
return !(!Cg(n, 0) || yg(e, o) || (t.data = " " + n.slice(1), 0))
})(e, n) || (e => {
const t = e.data,
n = (e => { const t = e.split(""); return H(t, ((e, n) => Ec(e) && n > 0 && n < t.length - 1 && Rc(t[n - 1]) && Rc(t[n + 1]) ? " " : e)).join("") })(t);
return n !== t && (e.data = n, !0)
})(n) || ((e, t) => {
const n = t.data,
o = Ua(t, n.length - 1);
return !(!Cg(n, n.length - 1) || yg(e, o) || (t.data = n.slice(0, -1) + " ", 0))
})(e, n);
return o ? M.some(t) : M.none()
})),
kg = (e, t, n) => {
if (0 === n) return;
const o = mn(e),
r = Ho(o, Zo).getOr(o),
s = e.data.slice(t, t + n),
a = t + n >= e.data.length && vg(r, Ua(e, e.data.length)),
i = 0 === t && bg(r, Ua(e, 0));
e.replaceData(t, n, zr(s, 4, i, a))
},
Sg = (e, t) => {
const n = e.data.slice(t),
o = n.length - $e(n).length;
kg(e, t, o)
},
_g = (e, t) => {
const n = e.data.slice(0, t),
o = n.length - qe(n).length;
kg(e, t - o, o)
},
Eg = (e, t, n, o = !0) => {
const r = qe(e.data).length,
s = o ? e : t,
a = o ? t : e;
return o ? s.appendData(a.data) : s.insertData(0, a.data), to(mn(a)), n && Sg(s, r), s
},
Ng = (e, t) => ((e, t) => {
const n = e.container(),
o = e.offset();
return !1 === Ua.isTextPosition(e) && n === t.parentNode && o > Ua.before(t).offset()
})(t, e) ? Ua(t.container(), t.offset() - 1) : t,
Rg = e => { return Lr(e.previousSibling) ? M.some((t = e.previousSibling, No(t) ? Ua(t, t.data.length) : Ua.after(t))) : e.previousSibling ? mc(e.previousSibling) : M.none(); var t },
Ag = e => { return Lr(e.nextSibling) ? M.some((t = e.nextSibling, No(t) ? Ua(t, 0) : Ua.before(t))) : e.nextSibling ? uc(e.nextSibling) : M.none(); var t },
Og = (e, t, n) => ((e, t, n) => e ? ((e, t) => Ag(t).orThunk((() => Rg(t))).orThunk((() => ((e, t) => dc(e, Ua.after(t)).fold((() => cc(e, Ua.before(t))), M.some))(e, t))))(t, n) : ((e, t) => Rg(t).orThunk((() => Ag(t))).orThunk((() => ((e, t) => { const n = Ua.before(t.previousSibling ? t.previousSibling : t.parentNode); return cc(e, n).fold((() => dc(e, Ua.after(t))), M.some) })(e, t))))(t, n))(e, t, n).map(O(Ng, n)),
Tg = (e, t, n) => { n.fold((() => { e.focus() }), (n => { e.selection.setRng(n.toRange(), t) })) },
Bg = (e, t) => t && we(e.schema.getBlockElements(), Mt(t)),
Dg = e => { if (qr(e)) { const t = dn('
'); return eo(e), Jn(e, t), M.some(Ua.before(t.dom)) } return M.none() },
Lg = (e, t, n, o = !0) => {
const r = Og(t, e.getBody(), n.dom),
s = Ho(n, O(Bg, e), (a = e.getBody(), e => e.dom === a));
var a;
const i = ((e, t, n) => {
const o = kn(e).filter(zt),
r = Sn(e).filter(zt);
return to(e), (s = o, a = r, i = t, l = (e, t, o) => {
const r = e.dom,
s = t.dom,
a = r.data.length;
return Eg(r, s, n), o.container() === s ? Ua(r, a) : o
}, s.isSome() && a.isSome() && i.isSome() ? M.some(l(s.getOrDie(), a.getOrDie(), i.getOrDie())) : M.none()).orThunk((() => (n && (o.each((e => _g(e.dom, e.dom.length))), r.each((e => Sg(e.dom, 0)))), t)));
var s, a, i, l
})(n, r, ((e, t) => we(e.schema.getTextInlineElements(), Mt(t)))(e, n));
e.dom.isEmpty(e.getBody()) ? (e.setContent(""), e.selection.setCursorLocation()) : s.bind(Dg).fold((() => { o && Tg(e, t, i) }), (n => { o && Tg(e, t, M.some(n)) }))
},
Pg = e => Xs(e, "td,th"),
Mg = (e, t) => ({ start: e, end: t }),
Ig = ci([{ singleCellTable: ["rng", "cell"] }, { fullTable: ["table"] }, { partialTable: ["cells", "outsideDetails"] }, { multiTable: ["startTableCells", "endTableCells", "betweenRng"] }]),
Fg = (e, t) => Ko(mn(e), "td,th", t),
Ug = e => !bn(e.start, e.end),
zg = (e, t) => bu(e.start, t).bind((n => bu(e.end, t).bind((e => Pt(bn(n, e), n))))),
jg = e => t => zg(t, e).map((e => ((e, t, n) => ({ rng: e, table: t, cells: n }))(t, e, Pg(e)))),
Vg = (e, t, n, o) => {
if (n.collapsed || !e.forall(Ug)) return M.none();
if (t.isSameTable) { const t = e.bind(jg(o)); return M.some({ start: t, end: t }) } {
const e = Fg(n.startContainer, o),
t = Fg(n.endContainer, o),
r = e.bind((e => t => bu(t, e).bind((e => le(Pg(e)).map((e => Mg(t, e))))))(o)).bind(jg(o)),
s = t.bind((e => t => bu(t, e).bind((e => ie(Pg(e)).map((e => Mg(e, t))))))(o)).bind(jg(o));
return M.some({ start: r, end: s })
}
},
Hg = (e, t) => J(e, (e => bn(e, t))),
$g = e => Lt(Hg(e.cells, e.rng.start), Hg(e.cells, e.rng.end), ((t, n) => e.cells.slice(t, n + 1))),
qg = (e, t) => { const { startTable: n, endTable: o } = t, r = e.cloneRange(); return n.each((e => r.setStartAfter(e.dom))), o.each((e => r.setEndBefore(e.dom))), r },
Wg = (e, t) => {
const n = (e => t => bn(e, t))(e),
o = ((e, t) => {
const n = Fg(e.startContainer, t),
o = Fg(e.endContainer, t);
return Lt(n, o, Mg)
})(t, n),
r = ((e, t) => {
const n = e => bu(mn(e), t),
o = n(e.startContainer),
r = n(e.endContainer),
s = o.isSome(),
a = r.isSome(),
i = Lt(o, r, bn).getOr(!1);
return { startTable: o, endTable: r, isStartInTable: s, isEndInTable: a, isSameTable: i, isMultiTable: !i && s && a }
})(t, n);
return ((e, t, n) => e.exists((e => ((e, t) => !Ug(e) && zg(e, t).exists((e => { const t = e.dom.rows; return 1 === t.length && 1 === t[0].cells.length })))(e, n) && Cu(e.start, t))))(o, t, n) ? o.map((e => Ig.singleCellTable(t, e.start))) : r.isMultiTable ? ((e, t, n, o) => Vg(e, t, n, o).bind((({ start: e, end: o }) => {
const r = e.bind($g).getOr([]),
s = o.bind($g).getOr([]);
if (r.length > 0 && s.length > 0) { const e = qg(n, t); return M.some(Ig.multiTable(r, s, e)) }
return M.none()
})))(o, r, t, n) : ((e, t, n, o) => Vg(e, t, n, o).bind((({ start: e, end: t }) => e.or(t))).bind((e => { const { isSameTable: o } = t, r = $g(e).getOr([]); if (o && e.cells.length === r.length) return M.some(Ig.fullTable(e.table)); if (r.length > 0) { if (o) return M.some(Ig.partialTable(r, M.none())); { const e = qg(n, t); return M.some(Ig.partialTable(r, M.some({...t, rng: e }))) } } return M.none() })))(o, r, t, n)
},
Kg = e => { var t; return (8 === It(t = e) || "#comment" === Mt(t) ? kn(e) : On(e)).bind(Kg).orThunk((() => M.some(e))) },
Gg = e => $(e, (e => { Yt(e, "contenteditable"), Gf(e) })),
Yg = (e, t, n, o) => {
const r = n.cloneRange();
o ? (r.setStart(n.startContainer, n.startOffset), r.setEndAfter(t.dom.lastChild)) : (r.setStartBefore(t.dom.firstChild), r.setEnd(n.endContainer, n.endOffset)), Zg(e, r, t, !1).each((e => e()))
},
Xg = e => {
const t = hu(e),
n = mn(e.selection.getNode());
Io(n.dom) && qr(n) ? e.selection.setCursorLocation(n.dom, 0) : e.selection.collapse(!0), t.length > 1 && V(t, (e => bn(e, n))) && $t(n, "data-mce-selected", "1")
},
Qg = (e, t, n) => M.some((() => {
const o = e.selection.getRng(),
r = n.bind((({ rng: n, isStartInTable: r }) => {
const s = ((e, t) => M.from(e.dom.getParent(t, e.dom.isBlock)).map(mn))(e, r ? n.endContainer : n.startContainer);
n.deleteContents(), ((e, t, n) => { n.each((n => { t ? to(n) : (Gf(n), e.selection.setCursorLocation(n.dom, 0)) })) })(e, r, s.filter(qr));
const a = r ? t[0] : t[t.length - 1];
return Yg(e, a, o, r), qr(a) ? M.none() : M.some(r ? t.slice(1) : t.slice(0, -1))
})).getOr(t);
Gg(r), Xg(e)
})),
Jg = (e, t, n, o) => M.some((() => {
const r = e.selection.getRng(),
s = t[0],
a = n[n.length - 1];
Yg(e, s, r, !0), Yg(e, a, r, !1);
const i = qr(s) ? t : t.slice(1),
l = qr(a) ? n : n.slice(0, -1);
Gg(i.concat(l)), o.deleteContents(), Xg(e)
})),
Zg = (e, t, n, o = !0) => M.some((() => {
t.deleteContents();
const r = Kg(n).getOr(n),
s = mn(e.dom.getParent(r.dom, e.dom.isBlock));
if (qr(s) && (Gf(s), o && e.selection.setCursorLocation(s.dom, 0)), !bn(n, s)) {
const e = Dt(wn(s), n) ? [] : wn(a = s).map(Nn).map((e => K(e, (e => !bn(a, e))))).getOr([]);
$(e.concat(Nn(n)), (e => { bn(e, s) || vn(e, s) || !qr(e) || to(e) }))
}
var a
})),
ep = (e, t) => M.some((() => Lg(e, !1, t))),
tp = (e, t) => Q(Qf(t, e), ar),
np = (e, t) => Q(Qf(t, e), ("caption", e => Ut(e) && "caption" === Mt(e))),
op = (e, t) => M.some((() => { Gf(t), e.selection.setCursorLocation(t.dom, 0) })),
rp = (e, t) => e ? $f(t) : qf(t),
sp = (e, t, n) => { const o = mn(e.getBody()); return np(o, n).fold((() => ((e, t, n, o) => { const r = Ua.fromRangeStart(e.selection.getRng()); return tp(n, o).bind((o => qr(o) ? op(e, o) : ((e, t, n, o, r) => ac(n, e.getBody(), r).bind((e => tp(t, mn(e.getNode())).bind((e => bn(e, o) ? M.none() : M.some(S))))))(e, n, t, o, r))) })(e, t, o, n).orThunk((() => Pt(((e, t) => { const n = Ua.fromRangeStart(e.selection.getRng()); return rp(t, n) || sc(t, e.getBody(), n).exists((e => rp(t, e))) })(e, t), S)))), (n => ((e, t, n, o) => { const r = Ua.fromRangeStart(e.selection.getRng()); return qr(o) ? op(e, o) : ((e, t, n, o, r) => ac(n, e.getBody(), r).fold((() => M.some(S)), (s => ((e, t, n, o) => uc(e.dom).bind((r => mc(e.dom).map((e => t ? n.isEqual(r) && o.isEqual(e) : n.isEqual(e) && o.isEqual(r))))).getOr(!0))(o, n, r, s) ? ((e, t) => op(e, t))(e, o) : ((e, t, n) => np(e, mn(n.getNode())).fold((() => M.some(S)), (e => Pt(!bn(e, t), S))))(t, o, s))))(e, n, t, o, r) })(e, t, o, n))) },
ap = (e, t) => {
const n = mn(e.selection.getStart(!0)),
o = hu(e);
return e.selection.isCollapsed() && 0 === o.length ? sp(e, t, n) : ((e, t, n) => {
const o = mn(e.getBody()),
r = e.selection.getRng();
return 0 !== n.length ? Qg(e, n, M.none()) : ((e, t, n, o) => np(t, o).fold((() => ((e, t, n) => Wg(t, n).bind((t => t.fold(O(Zg, e), O(ep, e), O(Qg, e), O(Jg, e)))))(e, t, n)), (t => ((e, t) => op(e, t))(e, t))))(e, o, r, t)
})(e, n, o)
},
ip = (e, t) => {
for (; t && t !== e;) {
if (Po(t) || Mo(t)) return t;
t = t.parentNode
}
return null
},
lp = (e, t) => { t(e), e.firstChild && lp(e.firstChild, t), e.next && lp(e.next, t) },
dp = (e, t, n, o) => {
const r = n.name;
for (let t = 0, s = e.length; t < s; t++) {
const s = e[t];
if (s.name === r) {
const e = o.nodes[r];
e ? e.nodes.push(n) : o.nodes[r] = { filter: s, nodes: [n] }
}
}
if (n.attributes)
for (let e = 0, r = t.length; e < r; e++) {
const r = t[e],
s = r.name;
if (s in n.attributes.map) {
const e = o.attributes[s];
e ? e.nodes.push(n) : o.attributes[s] = { filter: r, nodes: [n] }
}
}
},
cp = (e, t) => {
const n = e => {
fe(e, (e => {
const n = K(e.nodes, (e => C(e.parent)));
$(e.filter.callbacks, (o => { o(n, e.filter.name, t) }))
}))
};
n(e.nodes), n(e.attributes)
},
up = (e, t, n, o = {}) => {
const r = ((e, t, n) => { const o = { nodes: {}, attributes: {} }; return n.firstChild && lp(n.firstChild, (n => { dp(e, t, n, o) })), o })(e, t, n);
cp(r, o)
},
mp = (e, t, n, o) => { t.insert && n[o.name] ? o.empty().append(new yf("br", 1)) : o.empty().append(new yf("#text", 3)).value = dr },
fp = (e, t) => e && e.firstChild && e.firstChild === e.lastChild && e.firstChild.name === t,
gp = (e, t, n, o) => o.isEmpty(t, n, (t => ((e, t) => { const n = e.getElementRule(t.name); return n && n.paddEmpty })(e, t))),
pp = (e, t, n = e.parent) => {
if (t.getSpecialElements()[e.name]) e.empty().remove();
else {
const o = e.children();
for (const e of o) t.isValidChild(n.name, e.name) || pp(e, t, n);
e.unwrap()
}
},
hp = (e, t, n = S) => {
const o = t.getTextBlockElements(),
r = t.getNonEmptyElements(),
s = t.getWhitespaceElements(),
a = Bt.makeMap("tr,td,th,tbody,thead,tfoot,table"),
i = new Set;
for (let l = 0; l < e.length; l++) {
const d = e[l];
let c, u, m;
if (!d.parent || i.has(d)) continue;
if (o[d.name] && "li" === d.parent.name) {
let e = d.next;
for (; e && o[e.name];) e.name = "li", i.add(e), d.parent.insert(e, d.parent), e = e.next;
d.unwrap();
continue
}
const f = [d];
for (c = d.parent; c && !t.isValidChild(c.name, d.name) && !a[c.name]; c = c.parent) f.push(c);
if (c && f.length > 1)
if (t.isValidChild(c.name, d.name)) {
f.reverse(), u = f[0].clone(), n(u);
let e = u;
for (let o = 0; o < f.length - 1; o++) {
t.isValidChild(e.name, f[o].name) ? (m = f[o].clone(), n(m), e.append(m)) : m = e;
for (let e = f[o].firstChild; e && e !== f[o + 1];) {
const t = e.next;
m.append(e), e = t
}
e = m
}
gp(t, r, s, u) ? c.insert(d, f[0], !0) : (c.insert(u, f[0], !0), c.insert(d, u)), c = f[0], (gp(t, r, s, c) || fp(c, "br")) && c.empty().remove()
} else pp(d, t);
else if (d.parent) {
if ("li" === d.name) {
let e = d.prev;
if (e && ("ul" === e.name || "ol" === e.name)) { e.append(d); continue }
if (e = d.next, e && ("ul" === e.name || "ol" === e.name)) { e.insert(d, e.firstChild, !0); continue }
const t = new yf("ul", 1);
n(t), d.wrap(t);
continue
}
if (t.isValidChild(d.parent.name, "div") && t.isValidChild("div", d.name)) {
const e = new yf("div", 1);
n(e), d.wrap(e)
} else pp(d, t)
}
}
},
bp = e => e.collapsed ? e : (e => {
const t = Ua.fromRangeStart(e),
n = Ua.fromRangeEnd(e),
o = e.commonAncestorContainer;
return sc(!1, o, n).map((r => !Td(t, n, o) && Td(t, r, o) ? ((e, t, n, o) => { const r = document.createRange(); return r.setStart(e, t), r.setEnd(n, o), r })(t.container(), t.offset(), r.container(), r.offset()) : e)).getOr(e)
})(e),
vp = (e, t) => {
let n = t.firstChild,
o = t.lastChild;
return n && "meta" === n.name && (n = n.next), o && "mce_marker" === o.attr("id") && (o = o.prev), ((e, t) => { const n = e.getNonEmptyElements(); return t && (t.isEmpty(n) || ((e, t) => e.getBlockElements()[t.name] && (e => e.firstChild && e.firstChild === e.lastChild)(t) && (e => "br" === e.name || e.value === dr)(t.firstChild))(e, t)) })(e, o) && (o = o.prev), !(!n || n !== o || "ul" !== n.name && "ol" !== n.name)
},
yp = e => { return e.length > 0 && (!(n = e[e.length - 1]).firstChild || (t = n) && t.firstChild && t.firstChild === t.lastChild && (e => e.data === dr || Do(e))(t.firstChild)) ? e.slice(0, -1) : e; var t, n },
Cp = (e, t) => { const n = e.getParent(t, e.isBlock); return n && "LI" === n.nodeName ? n : null },
xp = (e, t) => {
const n = Ua.after(e),
o = tc(t).prev(n);
return o ? o.toRange() : null
},
wp = (e, t, n, o) => {
const r = ((e, t, n) => {
const o = t.serialize(n);
return (e => {
const t = e.firstChild,
n = e.lastChild;
return t && "META" === t.nodeName && t.parentNode.removeChild(t), n && "mce_marker" === n.id && n.parentNode.removeChild(n), e
})(e.createFragment(o))
})(t, e, o),
s = Cp(t, n.startContainer),
a = yp((i = r.firstChild, K(i.childNodes, (e => "LI" === e.nodeName))));
var i;
const l = t.getRoot(),
d = e => {
const o = Ua.fromRangeStart(n),
r = tc(t.getRoot()),
a = 1 === e ? r.prev(o) : r.next(o);
return !a || Cp(t, a.getNode()) !== s
};
return d(1) ? ((e, t, n) => {
const o = e.parentNode;
return Bt.each(t, (t => { o.insertBefore(t, e) })), ((e, t) => {
const n = Ua.before(e),
o = tc(t).next(n);
return o ? o.toRange() : null
})(e, n)
})(s, a, l) : d(2) ? ((e, t, n, o) => (o.insertAfter(t.reverse(), e), xp(t[0], n)))(s, a, l, t) : ((e, t, n, o) => {
const r = ((e, t) => {
const n = t.cloneRange(),
o = t.cloneRange();
return n.setStartBefore(e), o.setEndAfter(e), [n.cloneContents(), o.cloneContents()]
})(e, o),
s = e.parentNode;
return s.insertBefore(r[0], e), Bt.each(t, (t => { s.insertBefore(t, e) })), s.insertBefore(r[1], e), s.removeChild(e), xp(t[t.length - 1], n)
})(s, a, l, n)
},
kp = Io,
Sp = (e, t, n) => {
let o, r, s;
const a = e.selection,
i = e.dom,
l = e.parser,
d = n.merge,
c = Rf({ validate: !0 }, e.schema),
u = ''; - 1 === t.indexOf("{$caret}") && (t += "{$caret}"), t = t.replace(/\{\$caret\}/, u), r = a.getRng();
const m = r.startContainer || (r.parentElement ? r.parentElement() : null),
f = e.getBody();
m === f && a.isCollapsed() && i.isBlock(f.firstChild) && ((e, t) => t && !e.schema.getVoidElements()[t.nodeName])(e, f.firstChild) && i.isEmpty(f.firstChild) && (r = i.createRng(), r.setStart(f.firstChild, 0), r.setEnd(f.firstChild, 0), a.setRng(r)), a.isCollapsed() || (e => {
const t = e.dom,
n = bp(e.selection.getRng());
e.selection.setRng(n);
const o = t.getParent(n.startContainer, kp);
((e, t, n) => null !== n && n === e.getParent(t.endContainer, kp) && Cu(mn(n), t))(t, n, o) ? Zg(e, n, mn(o)): e.getDoc().execCommand("Delete", !1, null)
})(e), o = a.getNode();
const g = { context: o.nodeName.toLowerCase(), data: n.data, insert: !0 },
p = l.parse(t, g);
if (!0 === n.paste && vp(e.schema, p) && ((e, t) => !!Cp(e, t))(i, o)) return r = wp(c, i, a.getRng(), p), a.setRng(r), t;
if ((e => { let t = e; for (; t = t.walk();) 1 === t.type && t.attr("data-mce-fragment", "1") })(p), s = p.lastChild, "mce_marker" === s.attr("id")) {
const t = s;
for (s = s.prev; s; s = s.walk(!0))
if (3 === s.type || !i.isBlock(s.name)) { e.schema.isValidChild(s.parent.name, "span") && s.parent.insert(t, s, "br" === s.name); break }
}
if (e._selectionOverrides.showBlockCaretContainer(o), g.invalid) {
e.selection.setContent(u), o = a.getNode();
const n = e.getBody();
for (9 === o.nodeType ? o = s = n : s = o; s !== n;) o = s, s = s.parentNode;
t = o === n ? n.innerHTML : i.getOuterHTML(o);
const r = l.parse(t);
for (let e = r; e; e = e.walk())
if ("mce_marker" === e.attr("id")) { e.replace(p); break }
const d = p.children(),
m = p.parent.name;
p.unwrap();
const f = K(d, (t => !e.schema.isValidChild(m, t.name)));
hp(f, e.schema), up(l.getNodeFilters(), l.getAttributeFilters(), r), t = c.serialize(r), o === n ? i.setHTML(n, t) : i.setOuterHTML(o, t)
} else t = c.serialize(p), ((e, t, n) => {
if ("all" === n.getAttribute("data-mce-bogus")) n.parentNode.insertBefore(e.dom.createFragment(t), n);
else {
const o = n.firstChild,
r = n.lastChild;
!o || o === r && "BR" === o.nodeName ? e.dom.setHTML(n, t) : e.selection.setContent(t, { no_events: !0 })
}
})(e, t, o);
var h;
return ((e, t) => {
const n = e.schema.getTextInlineElements(),
o = e.dom;
if (t) {
const t = e.getBody(),
r = _f(o);
Bt.each(o.select("*[data-mce-fragment]"), (e => {
if (C(n[e.nodeName.toLowerCase()]) && ((e, t) => te(Tf(e, t), (e => !(e => Af.has(e))(e))))(o, e))
for (let n = e.parentNode; C(n) && n !== t && !Bf(o, e, n); n = n.parentNode)
if (r.compare(n, e)) { o.remove(e, !0); break }
}))
}
})(e, d), ((e, t) => {
let n;
const o = e.dom,
r = e.selection;
if (!t) return;
r.scrollIntoView(t);
const s = ip(e.getBody(), t);
if ("false" === o.getContentEditable(s)) return o.remove(t), void r.select(s);
let a = o.createRng();
const i = t.previousSibling;
if (No(i)) {
a.setStart(i, i.nodeValue.length);
const e = t.nextSibling;
No(e) && (i.appendData(e.data), e.parentNode.removeChild(e))
} else a.setStartBefore(t), a.setEndBefore(t);
const l = o.getParent(t, o.isBlock);
o.remove(t), l && o.isEmpty(l) && (eo(mn(l)), a.setStart(l, 0), a.setEnd(l, 0), kp(l) || (e => !!e.getAttribute("data-mce-fragment"))(l) || !(n = (t => { let n = Ua.fromRangeStart(t); if (n = tc(e.getBody()).next(n), n) return n.toRange() })(a)) ? o.add(l, o.create("br", { "data-mce-bogus": "1" })) : (a = n, o.remove(l))), r.setRng(a)
})(e, i.get("mce_marker")), h = e.getBody(), Bt.each(h.getElementsByTagName("*"), (e => { e.removeAttribute("data-mce-fragment") })), ((e, t) => { M.from(e.getParent(t, "td,th")).map(mn).each(Yf) })(i, a.getStart()), t
},
_p = e => e instanceof yf,
Ep = (e, t, n) => {
e.dom.setHTML(e.getBody(), t), !0 !== n && (e => {
nf(e) && uc(e.getBody()).each((t => {
const n = t.getNode(),
o = So(n) ? uc(n).getOr(t) : t;
e.selection.setRng(o.toRange())
}))
})(e)
},
Np = (e, t) => ((e, t) => { const n = e.dom; return n.parentNode ? ((e, t) => Q(e.dom.childNodes, (e => t(mn(e)))).map(mn))(mn(n.parentNode), (n => !bn(e, n) && t(n))) : M.none() })(e, t).isSome(),
Rp = e => x(e) ? e : L,
Ap = (e, t, n) => {
const o = t(e),
r = Rp(n);
return o.orThunk((() => r(e) ? M.none() : ((e, t, n) => {
let o = e.dom;
const r = Rp(n);
for (; o.parentNode;) {
o = o.parentNode;
const e = mn(o),
n = t(e);
if (n.isSome()) return n;
if (r(e)) break
}
return M.none()
})(e, t, r)))
},
Op = Hc,
Tp = (e, t, n) => {
const o = e.formatter.get(n);
if (o)
for (let n = 0; n < o.length; n++) { const r = o[n]; if (Yc(r) && !1 === r.inherit && e.dom.is(t, r.selector)) return !0 }
return !1
},
Bp = (e, t, n, o, r) => { const s = e.dom.getRoot(); return t !== s && (t = e.dom.getParent(t, (t => !!Tp(e, t, n) || t.parentNode === s || !!Pp(e, t, n, o, !0))), !!Pp(e, t, n, o, r)) },
Dp = (e, t, n) => !(!Xc(n) || !Op(t, n.inline)) || !(!Gc(n) || !Op(t, n.block)) || !!Yc(n) && yo(t) && e.is(t, n.selector),
Lp = (e, t, n, o, r, s) => {
const a = n[o];
if (x(n.onmatch)) return n.onmatch(t, n, o);
if (a)
if (v(a.length)) {
for (const i in a)
if (we(a, i)) {
const l = "attributes" === o ? e.getAttrib(t, i) : qc(e, t, i),
d = Vc(a[i], s),
c = y(l) || Ke(l);
if (c && y(d)) continue;
if (r && c && !n.exact) return !1;
if ((!r || n.exact) && !Op(l, $c(d, i))) return !1
}
} else
for (let n = 0; n < a.length; n++)
if ("attributes" === o ? e.getAttrib(t, a[n]) : qc(e, t, a[n])) return !0;
return !0
},
Pp = (e, t, n, o, r) => {
const s = e.formatter.get(n),
a = e.dom;
if (s && t)
for (let n = 0; n < s.length; n++) {
const i = s[n];
if (Dp(e.dom, t, i) && Lp(a, t, i, "attributes", r, o) && Lp(a, t, i, "styles", r, o)) {
const n = i.classes;
if (n)
for (let r = 0; r < n.length; r++)
if (!e.dom.hasClass(t, Vc(n[r], o))) return;
return i
}
}
},
Mp = (e, t, n, o, r) => { if (o) return Bp(e, o, t, n, r); if (o = e.selection.getNode(), Bp(e, o, t, n, r)) return !0; const s = e.selection.getStart(); return !(s === o || !Bp(e, s, t, n, r)) },
Ip = ur,
Fp = "_mce_caret",
Up = e => (e => {
const t = [];
for (; e;) {
if (3 === e.nodeType && e.nodeValue !== Ip || e.childNodes.length > 1) return [];
1 === e.nodeType && t.push(e), e = e.firstChild
}
return t
})(e).length > 0,
zp = e => {
if (e) {
const t = new Xo(e, e);
for (e = t.current(); e; e = t.next())
if (No(e)) return e
}
return null
},
jp = e => { const t = cn("span"); return qt(t, { id: Fp, "data-mce-bogus": "1", "data-mce-type": "format-caret" }), e && Jn(t, un(Ip)), t },
Vp = (e, t, n = !0) => {
const o = e.dom,
r = e.selection;
if (Up(t)) Lg(e, !1, mn(t), n);
else {
const e = r.getRng(),
n = o.getParent(t, o.isBlock),
s = e.startContainer,
a = e.startOffset,
i = e.endContainer,
l = e.endOffset,
d = (e => { const t = zp(e); return t && t.nodeValue.charAt(0) === Ip && t.deleteData(0, 1), t })(t);
o.remove(t, !0), s === d && a > 0 && e.setStart(d, a - 1), i === d && l > 0 && e.setEnd(d, l - 1), n && o.isEmpty(n) && Gf(mn(n)), r.setRng(e)
}
},
Hp = (e, t, n = !0) => {
const o = e.dom,
r = e.selection;
if (t) Vp(e, t, n);
else if (!(t = pc(e.getBody(), r.getStart())))
for (; t = o.get(Fp);) Vp(e, t, !1)
},
$p = (e, t) => (e.appendChild(t), t),
qp = (e, t) => { const n = G(e, ((e, t) => $p(e, t.cloneNode(!1))), t); return $p(n, n.ownerDocument.createTextNode(Ip)) },
Wp = (e, t, n, o) => {
const a = e.dom,
i = e.selection;
let l, d, c;
const u = [],
m = i.getRng(),
f = m.startContainer,
g = m.startOffset;
for (d = f, 3 === f.nodeType && (g !== f.nodeValue.length && (l = !0), d = d.parentNode); d;) {
if (Pp(e, d, t, n, o)) { c = d; break }
d.nextSibling && (l = !0), u.push(d), d = d.parentNode
}
if (c)
if (l) {
const r = i.getBookmark();
m.collapse(!0);
let s = mu(e, m, e.formatter.get(t), !0);
s = gm(s), e.formatter.remove(t, n, s, o), i.moveToBookmark(r)
} else {
const l = pc(e.getBody(), c),
d = jp(!1).dom;
((e, t, n) => {
const o = e.dom,
r = o.getParent(n, O(Uc, e));
r && o.isEmpty(r) ? n.parentNode.replaceChild(t, n) : ((e => {
const t = Xs(e, "br"),
n = K((e => { const t = []; let n = e.dom; for (; n;) t.push(mn(n)), n = n.lastChild; return t })(e).slice(-1), tr);
t.length === n.length && $(n, to)
})(mn(n)), o.isEmpty(n) ? n.parentNode.replaceChild(t, n) : o.insertAfter(t, n))
})(e, d, null !== l ? l : c);
const m = ((e, t, n, o, a, i) => {
const l = e.formatter,
d = e.dom,
c = K(ue(l.get()), (e => e !== o && !Ue(e, "removeformat"))),
u = ((e, t, n) => Y(n, ((n, o) => { const r = ((e, t) => V(e.formatter.get(t), (e => { const t = e => e.length > 1 && "%" === e.charAt(0); return V(["styles", "attributes"], (n => xe(e, n).exists((e => { const n = p(e) ? e : Ce(e); return V(n, t) })))) })))(e, o); return e.formatter.matchNode(t, o, {}, r) ? n.concat([o]) : n }), []))(e, n, c);
if (K(u, (t => !((e, t, n) => {
const o = ["inline", "block", "selector", "attributes", "styles", "classes"],
a = e => ve(e, ((e, t) => V(o, (e => e === t))));
return V(e.formatter.get(t), (t => { const o = a(t); return V(e.formatter.get(n), (e => { const t = a(e); return ((e, t, n = s) => r(n).eq(e, t))(o, t) })) }))
})(e, t, o))).length > 0) { const e = n.cloneNode(!1); return d.add(t, e), l.remove(o, a, e, i), d.remove(e), M.some(e) }
return M.none()
})(e, d, c, t, n, o),
f = qp(u.concat(m.toArray()), d);
Vp(e, l, !1), i.setCursorLocation(f, 1), a.isEmpty(c) && a.remove(c)
}
},
Kp = (e, t) => { const n = e.schema.getTextInlineElements(); return we(n, Mt(t)) && !gc(t.dom) && !ko(t.dom) },
Gp = {},
Yp = Re,
Xp = Ee;
Gp.pre || (Gp.pre = []), Gp.pre.push((e => {
const t = e.selection.getRng();
let n;
const o = e => r(e.previousSibling) && -1 !== Ae(n, e.previousSibling),
r = Co(["pre"]);
t.collapsed || (n = e.selection.getSelectedBlocks(), Xp(Yp(Yp(n, r), o), (e => {
((e, t) => {
const n = mn(t),
o = Cn(n).dom;
to(n), Zn(mn(e), [cn("br", o), cn("br", o), ...Nn(n)])
})(e.previousSibling, e)
})))
}));
const Qp = Bt.each,
Jp = e => yo(e) && !_c(e) && !gc(e) && !ko(e),
Zp = (e, t) => { for (let n = e; n; n = n[t]) { if (No(n) && We(n.data)) return e; if (yo(n) && !_c(n)) return n } return e },
eh = (e, t, n) => {
const o = _f(e);
if (t && n && (t = Zp(t, "previousSibling"), n = Zp(n, "nextSibling"), o.compare(t, n))) {
for (let e = t.nextSibling; e && e !== n;) {
const n = e;
e = e.nextSibling, t.appendChild(n)
}
return e.remove(n), Bt.each(Bt.grep(n.childNodes), (e => { t.appendChild(e) })), t
}
return n
},
th = (e, t, n, o) => {
if (o && !1 !== t.merge_siblings) {
const t = eh(e, Fc(o), o);
eh(e, t, Fc(t, !0))
}
},
nh = (e, t, n) => { Qp(e.childNodes, (e => { Jp(e) && (t(e) && n(e), e.hasChildNodes() && nh(e, t, n)) })) },
oh = (e, t) => n => !(!n || !qc(e, n, t)),
rh = (e, t, n) => o => { e.setStyle(o, t, n), "" === o.getAttribute("style") && o.removeAttribute("style"), ((e, t) => { "SPAN" === t.nodeName && 0 === e.getAttribs(t).length && e.remove(t, !0) })(e, o) },
sh = ci([{ keep: [] }, { rename: ["name"] }, { removed: [] }]),
ah = /^(src|href|style)$/,
ih = Bt.each,
lh = Hc,
dh = (e, t, n) => e.isChildOf(t, n) && t !== n && !e.isBlock(n),
ch = (e, t, n) => {
let o = t[n ? "startContainer" : "endContainer"],
r = t[n ? "startOffset" : "endOffset"];
if (yo(o)) { const e = o.childNodes.length - 1;!n && r && r--, o = o.childNodes[r > e ? e : r] }
return No(o) && n && r >= o.nodeValue.length && (o = new Xo(o, e.getBody()).next() || o), No(o) && !n && 0 === r && (o = new Xo(o, e.getBody()).prev() || o), o
},
uh = (e, t) => { const n = t ? "firstChild" : "lastChild"; if ((e => /^(TR|TH|TD)$/.test(e.nodeName))(e) && e[n]) { const t = e[n]; return "TR" === e.nodeName && t[n] || t } return e },
mh = (e, t, n, o) => { const r = e.create(n, o); return t.parentNode.insertBefore(r, t), r.appendChild(t), r },
fh = (e, t, n, o, r) => {
const s = mn(t),
a = mn(e.create(o, r)),
i = n ? En(s) : _n(s);
return Zn(a, i), n ? (Yn(s, a), Qn(a, s)) : (Xn(s, a), Jn(a, s)), a.dom
},
gh = (e, t, n, o, r) => {
let s;
const a = e.dom;
if (!Dp(a, o, t) && !((e, t) => t.links && "A" === e.nodeName)(o, t)) return sh.keep();
const i = o;
if (Xc(t) && "all" === t.remove && p(t.preserve_attributes)) { const e = K(a.getAttribs(i), (e => j(t.preserve_attributes, e.name.toLowerCase()))); if (a.removeAllAttribs(i), $(e, (e => a.setAttrib(i, e.name, e.value))), e.length > 0) return sh.rename("span") }
if ("all" !== t.remove) { ih(t.styles, ((e, o) => { e = $c(Vc(e, n), o + ""), w(o) && (o = e, r = null), (t.remove_similar || !r || lh(qc(a, r, o), e)) && a.setStyle(i, o, ""), s = !0 })), s && "" === a.getAttrib(i, "style") && (i.removeAttribute("style"), i.removeAttribute("data-mce-style")), ih(t.attributes, ((e, o) => { let s; if (e = Vc(e, n), w(o) && (o = e, r = null), t.remove_similar || !r || lh(a.getAttrib(r, o), e)) { if ("class" === o && (e = a.getAttrib(i, o)) && (s = "", $(e.split(/\s+/), (e => { /mce\-\w+/.test(e) && (s += (s ? " " : "") + e) })), s)) return void a.setAttrib(i, o, s); if (ah.test(o) && i.removeAttribute("data-mce-" + o), "style" === o && Co(["li"])(i) && "none" === a.getStyle(i, "list-style-type")) return i.removeAttribute(o), void a.setStyle(i, "list-style-type", "none"); "class" === o && i.removeAttribute("className"), i.removeAttribute(o) } })), ih(t.classes, (e => { e = Vc(e, n), r && !a.hasClass(r, e) || a.removeClass(i, e) })); const e = a.getAttribs(i); for (let t = 0; t < e.length; t++) { const n = e[t].nodeName; if (0 !== n.indexOf("_") && 0 !== n.indexOf("data-")) return sh.keep() } }
return "none" !== t.remove ? (((e, t, n) => {
const o = t.parentNode;
let r;
const s = e.dom,
a = Ti(e);
Gc(n) && o === s.getRoot() && (n.list_block && lh(t, n.list_block) || $(de(t.childNodes), (t => { zc(e, a, t.nodeName.toLowerCase()) ? r ? r.appendChild(t) : (r = mh(s, t, a), s.setAttribs(r, Bi(e))) : r = null }))), (e => Yc(e) && Xc(e) && Dt(xe(e, "mixed"), !0))(n) && !lh(n.inline, t) || s.remove(t, !0)
})(e, i, t), sh.removed()) : sh.keep()
},
ph = (e, t, n, o, r) => gh(e, t, n, o, r).fold(L, (t => (e.dom.rename(o, t), !0)), P),
hh = (e, t, n, o) => gh(e, t, n, o, o).fold(N(o), (t => (e.dom.createFragment().appendChild(o), e.dom.rename(o, t))), N(null)),
bh = (e, t, n, o, r) => {
const s = e.formatter.get(t),
a = s[0];
let i = !0;
const l = e.dom,
d = e.selection,
c = o => {
const i = ((e, t, n, o, r) => {
let s;
return $(Kc(e.dom, t.parentNode).reverse(), (t => {
if (!s && "_start" !== t.id && "_end" !== t.id) {
const a = Pp(e, t, n, o, r);
a && !1 !== a.split && (s = t)
}
})), s
})(e, o, t, n, r);
return ((e, t, n, o, r, s, a, i) => {
let l, d, c;
const u = e.dom;
if (n) {
const s = n.parentNode;
for (let n = o.parentNode; n && n !== s; n = n.parentNode) {
l = u.clone(n, !1);
for (let n = 0; n < t.length && (l = hh(e, t[n], i, l), null !== l); n++);
l && (d && l.appendChild(d), c || (c = l), d = l)
}
a.mixed && u.isBlock(n) || (o = u.split(n, o)), d && (r.parentNode.insertBefore(d, r), c.appendChild(r), Xc(a) && th(u, a, 0, d))
}
return o
})(e, s, i, o, o, 0, a, n)
},
u = t => V(s, (o => ph(e, o, n, t, t))),
m = t => {
let n = !0,
o = !1;
yo(t) && l.getContentEditable(t) && (n = i, i = "true" === l.getContentEditable(t), o = !0);
const r = de(t.childNodes);
if (i && !o) {
const e = u(t) || V(s, (e => Dp(l, t, e))),
n = t.parentNode;
!e && C(n) && Qc(a) && u(n)
}
if (a.deep && r.length) {
for (let e = 0; e < r.length; e++) m(r[e]);
o && (i = n)
}
$(["underline", "line-through", "overline"], (n => { yo(t) && e.dom.getStyle(t, "text-decoration") === n && t.parentNode && Wc(l, t.parentNode) === n && ph(e, { deep: !1, exact: !0, inline: "span", styles: { textDecoration: n } }, null, t) }))
},
f = e => { const t = l.get(e ? "_start" : "_end"); let n = t[e ? "firstChild" : "lastChild"]; return (e => _c(e) && yo(e) && ("_start" === e.id || "_end" === e.id))(n) && (n = n[e ? "firstChild" : "lastChild"]), No(n) && 0 === n.data.length && (n = e ? t.previousSibling || t.nextSibling : t.nextSibling || t.previousSibling), l.remove(t, !0), n },
g = t => {
let n, o, r = mu(e, t, s, t.collapsed);
if (a.split) {
if (r = gm(r), n = ch(e, r, !0), o = ch(e, r), n !== o) {
if (n = uh(n, !0), o = uh(o, !1), dh(l, n, o)) { const e = M.from(n.firstChild).getOr(n); return c(fh(l, e, !0, "span", { id: "_start", "data-mce-type": "bookmark" })), void f(!0) }
if (dh(l, o, n)) { const e = M.from(o.lastChild).getOr(o); return c(fh(l, e, !1, "span", { id: "_end", "data-mce-type": "bookmark" })), void f(!1) }
n = mh(l, n, "span", { id: "_start", "data-mce-type": "bookmark" }), o = mh(l, o, "span", { id: "_end", "data-mce-type": "bookmark" });
const e = l.createRng();
e.setStartAfter(n), e.setEndBefore(o), fu(l, e, (e => { $(e, (e => { _c(e) || _c(e.parentNode) || c(e) })) })), c(n), c(o), n = f(!0), o = f()
} else n = o = c(n);
r.startContainer = n.parentNode ? n.parentNode : n, r.startOffset = l.nodeIndex(n), r.endContainer = o.parentNode ? o.parentNode : o, r.endOffset = l.nodeIndex(o) + 1
}
fu(l, r, (e => { $(e, m) }))
};
if (o) {
if (Mc(o)) {
const e = l.createRng();
e.setStartBefore(o), e.setEndAfter(o), g(e)
} else g(o);
Pu(e, t, o, n)
} else if ("false" !== l.getContentEditable(d.getNode())) d.isCollapsed() && Xc(a) && !hu(e).length ? Wp(e, t, n, r) : (Su(d, !0, (() => { ku(e, g) })), Xc(a) && Mp(e, t, n, d.getStart()) && Ic(l, d, d.getRng()), e.nodeChanged()), Pu(e, t, o, n);
else {
o = d.getNode();
for (let t = 0; t < s.length && (!s[t].ceFalseOverride || !ph(e, s[t], n, o, o)); t++);
Pu(e, t, o, n)
}
},
vh = Bt.each,
yh = Bt.each,
Ch = e => yo(e) && !_c(e) && !gc(e) && !ko(e),
xh = (e, t, n, o) => {
const r = e.formatter.get(t),
s = r[0],
a = !o && e.selection.isCollapsed(),
i = e.dom,
l = e.selection,
d = (e, t = s) => {
if (x(t.onformat) && t.onformat(e, t, n, o), yh(t.styles, ((t, o) => { i.setStyle(e, o, Vc(t, n)) })), t.styles) {
const t = i.getAttrib(e, "style");
t && i.setAttrib(e, "data-mce-style", t)
}
yh(t.attributes, ((t, o) => { i.setAttrib(e, o, Vc(t, n)) })), yh(t.classes, (t => { t = Vc(t, n), i.hasClass(e, t) || i.addClass(e, t) }))
},
c = (e, t) => { let n = !1; return yh(e, (e => !!Yc(e) && (C(e.collapsed) && e.collapsed !== a ? void 0 : i.is(t, e.selector) && !gc(t) ? (d(t, e), n = !0, !1) : void 0))), n },
u = e => { if (m(e)) { const t = i.create(e); return d(t), t } return null },
f = (o, a, i) => {
const l = [];
let m = !0;
const f = s.inline || s.block,
g = u(f);
fu(o, a, (a => {
let u;
const p = a => {
let h = !1,
b = m;
const v = a.nodeName.toLowerCase(),
y = a.parentNode,
x = y.nodeName.toLowerCase();
if (yo(a) && o.getContentEditable(a) && (b = m, m = "true" === o.getContentEditable(a), h = !0), Do(a) && !((e, t, n, o) => {
if (pl(e) && Xc(t)) {
const t = {...e.schema.getTextBlockElements(), td: {}, th: {}, li: {}, dt: {}, dd: {}, figcaption: {}, caption: {}, details: {}, summary: {} },
r = Np(mn(n), (e => gc(e.dom)));
return ke(t, o) && qr(mn(n.parentNode), !1) && !r
}
return !1
})(e, s, a, x)) return u = null, void(Gc(s) && o.remove(a));
if (Gc(s) && s.wrapper && Pp(e, a, t, n)) u = null;
else { if (m && !h && Gc(s) && !s.wrapper && Uc(e, v) && zc(e, x, f)) { const e = o.rename(a, f); return d(e), l.push(e), void(u = null) } if (Yc(s)) { let e = c(r, a); if (!e && C(y) && Qc(s) && (e = c(r, y)), !Xc(s) || e) return void(u = null) }!m || h || !zc(e, f, v) || !zc(e, x, f) || !i && No(a) && mr(a.data) || gc(a) || Xc(s) && o.isBlock(a) ? (u = null, $(de(a.childNodes), p), h && (m = b), u = null) : (u || (u = o.clone(g, !1), a.parentNode.insertBefore(u, a), l.push(u)), u.appendChild(a)) }
};
$(a, p)
})), !0 === s.links && $(l, (e => {
const t = e => { "A" === e.nodeName && d(e, s), $(de(e.childNodes), t) };
t(e)
})), $(l, (a => {
const i = (e => {
let t = 0;
return $(e.childNodes, (e => {
(e => C(e) && No(e) && 0 === e.length)(e) || _c(e) || t++
})), t
})(a);
!(l.length > 1) && o.isBlock(a) || 0 !== i ? (Xc(s) || Gc(s) && s.wrapper) && (s.exact || 1 !== i || (a = (e => { const t = Q(e.childNodes, Ch).filter((e => Dp(o, e, s))); return t.map((t => { const n = o.clone(t, !1); return d(n), o.replace(n, e, !0), o.remove(t, !0), n })).getOr(e) })(a)), ((e, t, n, o) => {
vh(t, (t => {
Xc(t) && vh(e.dom.select(t.inline, o), (o => { Jp(o) && ph(e, t, n, o, t.exact ? o : null) })), ((e, t, n) => {
if (t.clear_child_styles) {
const o = t.links ? "*:not(a)" : "*";
Qp(e.select(o, n), (n => { Jp(n) && Qp(t.styles, ((t, o) => { e.setStyle(n, o, "") })) }))
}
})(e.dom, t, o)
}))
})(e, r, n, a), ((e, t, n, o, r) => { Pp(e, r.parentNode, n, o) && ph(e, t, o, r) || t.merge_with_parents && e.dom.getParent(r.parentNode, (s => { if (Pp(e, s, n, o)) return ph(e, t, o, r), !0 })) })(e, s, t, n, a), ((e, t, n, o) => { t.styles && t.styles.backgroundColor && nh(o, oh(e, "fontSize"), rh(e, "backgroundColor", Vc(t.styles.backgroundColor, n))) })(o, s, n, a), ((e, t, n, o) => {
const r = t => {
if (1 === t.nodeType && t.parentNode && 1 === t.parentNode.nodeType) {
const n = Wc(e, t.parentNode);
e.getStyle(t, "color") && n ? e.setStyle(t, "text-decoration", n) : e.getStyle(t, "text-decoration") === n && e.setStyle(t, "text-decoration", null)
}
};
t.styles && (t.styles.color || t.styles.textDecoration) && (Bt.walk(o, r, "childNodes"), r(o))
})(o, s, 0, a), ((e, t, n, o) => {!Xc(t) || "sub" !== t.inline && "sup" !== t.inline || (nh(o, oh(e, "fontSize"), rh(e, "fontSize", "")), e.remove(e.select("sup" === t.inline ? "sub" : "sup", o), !0)) })(o, s, 0, a), th(o, s, 0, a)) : o.remove(a, !0)
}))
};
if ("false" !== i.getContentEditable(l.getNode())) {
if (s) {
if (o)
if (Mc(o)) {
if (!c(r, o)) {
const t = i.createRng();
t.setStartBefore(o), t.setEndAfter(o), f(i, mu(e, t, r), !0)
}
} else f(i, o, !0);
else a && Xc(s) && !hu(e).length ? ((e, t, n) => {
let o, r;
const s = e.selection,
a = s.getRng();
let i = a.startOffset;
const l = a.startContainer.nodeValue;
o = pc(e.getBody(), s.getStart()), o && (r = zp(o));
const d = /[^\s\u00a0\u00ad\u200b\ufeff]/;
if (l && i > 0 && i < l.length && d.test(l.charAt(i)) && d.test(l.charAt(i - 1))) {
const o = s.getBookmark();
a.collapse(!0);
let r = mu(e, a, e.formatter.get(t));
r = gm(r), e.formatter.apply(t, n, r), s.moveToBookmark(o)
} else o && r.nodeValue === Ip || (c = e.getDoc(), u = jp(!0).dom, o = c.importNode(u, !0), r = o.firstChild, a.insertNode(o), i = 1), e.formatter.apply(t, n, o), s.setCursorLocation(r, i);
var c, u
})(e, t, n) : (l.setRng(bp(l.getRng())), Su(l, !0, (() => {
ku(e, ((t, n) => {
const o = n ? t : mu(e, t, r);
f(i, o, !1)
}))
})), Ic(i, l, l.getRng()), e.nodeChanged());
((e, t) => { Xp(Gp[e], (e => { e(t) })) })(t, e)
}
Lu(e, t, o, n)
} else {
o = l.getNode();
for (let e = 0, t = r.length; e < t; e++) { const t = r[e]; if (t.ceFalseOverride && Yc(t) && i.is(o, t.selector)) { d(o, t); break } }
Lu(e, t, o, n)
}
},
wh = e => we(e, "vars"),
kh = e => e.selection.getStart(),
Sh = (e, t, n, o, r) => X(t, (t => { const s = e.formatter.matchNode(t, n, null != r ? r : {}, o); return !v(s) }), (t => !!Tp(e, t, n) || !o && C(e.formatter.matchNode(t, n, r, !0)))),
_h = (e, t) => { const n = null != t ? t : kh(e); return K(Kc(e.dom, n), (e => yo(e) && !ko(e))) },
Eh = (e, t, n) => {
const o = _h(e, t);
fe(n, ((n, r) => {
const s = n => {
const s = Sh(e, o, r, n.similar, wh(n) ? n.vars : void 0),
a = s.isSome();
if (n.state.get() !== a) {
n.state.set(a);
const e = s.getOr(t);
wh(n) ? n.callback(a, { node: e, format: r, parents: o }) : $(n.callbacks, (t => t(a, { node: e, format: r, parents: o })))
}
};
$([n.withSimilar, n.withoutSimilar], s), $(n.withVars, s)
}))
};
var Nh = Object.hasOwnProperty,
Rh = Object.setPrototypeOf,
Ah = Object.isFrozen,
Oh = Object.getPrototypeOf,
Th = Object.getOwnPropertyDescriptor,
Bh = Object.freeze,
Dh = Object.seal,
Lh = Object.create,
Ph = "undefined" != typeof Reflect && Reflect,
Mh = Ph.apply,
Ih = Ph.construct;
Mh || (Mh = function(e, t, n) { return e.apply(t, n) }), Bh || (Bh = function(e) { return e }), Dh || (Dh = function(e) { return e }), Ih || (Ih = function(e, t) { return new(Function.prototype.bind.apply(e, [null].concat(function(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) }(t)))) });
var Fh, Uh = Yh(Array.prototype.forEach),
zh = Yh(Array.prototype.pop),
jh = Yh(Array.prototype.push),
Vh = Yh(String.prototype.toLowerCase),
Hh = Yh(String.prototype.match),
$h = Yh(String.prototype.replace),
qh = Yh(String.prototype.indexOf),
Wh = Yh(String.prototype.trim),
Kh = Yh(RegExp.prototype.test),
Gh = (Fh = TypeError, function() { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++) t[n] = arguments[n]; return Ih(Fh, t) });
function Yh(e) { return function(t) { for (var n = arguments.length, o = Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) o[r - 1] = arguments[r]; return Mh(e, t, o) } }
function Xh(e, t) {
Rh && Rh(e, null);
for (var n = t.length; n--;) {
var o = t[n];
if ("string" == typeof o) {
var r = Vh(o);
r !== o && (Ah(t) || (t[n] = r), o = r)
}
e[o] = !0
}
return e
}
function Qh(e) {
var t = Lh(null),
n = void 0;
for (n in e) Mh(Nh, e, [n]) && (t[n] = e[n]);
return t
}
function Jh(e, t) {
for (; null !== e;) {
var n = Th(e, t);
if (n) { if (n.get) return Yh(n.get); if ("function" == typeof n.value) return Yh(n.value) }
e = Oh(e)
}
return function(e) { return console.warn("fallback value for", e), null }
}
var Zh = Bh(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]),
eb = Bh(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]),
tb = Bh(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]),
nb = Bh(["animate", "color-profile", "cursor", "discard", "fedropshadow", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]),
ob = Bh(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover"]),
rb = Bh(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]),
sb = Bh(["#text"]),
ab = Bh(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot"]),
ib = Bh(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]),
lb = Bh(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]),
db = Bh(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]),
cb = Dh(/\{\{[\s\S]*|[\s\S]*\}\}/gm),
ub = Dh(/<%[\s\S]*|[\s\S]*%>/gm),
mb = Dh(/^data-[\-\w.\u00B7-\uFFFF]/),
fb = Dh(/^aria-[\-\w]+$/),
gb = Dh(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),
pb = Dh(/^(?:\w+script|data):/i),
hb = Dh(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),
bb = Dh(/^html$/i),
vb = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e };
function yb(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) }
var Cb = function() { return "undefined" == typeof window ? null : window },
xb = function(e, t) {
if ("object" !== (void 0 === e ? "undefined" : vb(e)) || "function" != typeof e.createPolicy) return null;
var n = null,
o = "data-tt-policy-suffix";
t.currentScript && t.currentScript.hasAttribute(o) && (n = t.currentScript.getAttribute(o));
var r = "dompurify" + (n ? "#" + n : "");
try { return e.createPolicy(r, { createHTML: function(e) { return e } }) } catch (e) { return console.warn("TrustedTypes policy " + r + " could not be created."), null }
},
wb = function e() {
var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Cb(),
n = function(t) { return e(t) };
if (n.version = "2.3.6", n.removed = [], !t || !t.document || 9 !== t.document.nodeType) return n.isSupported = !1, n;
var o = t.document,
r = t.document,
s = t.DocumentFragment,
a = t.HTMLTemplateElement,
i = t.Node,
l = t.Element,
d = t.NodeFilter,
c = t.NamedNodeMap,
u = void 0 === c ? t.NamedNodeMap || t.MozNamedAttrMap : c,
m = t.HTMLFormElement,
f = t.DOMParser,
g = t.trustedTypes,
p = l.prototype,
h = Jh(p, "cloneNode"),
b = Jh(p, "nextSibling"),
v = Jh(p, "childNodes"),
y = Jh(p, "parentNode");
if ("function" == typeof a) {
var C = r.createElement("template");
C.content && C.content.ownerDocument && (r = C.content.ownerDocument)
}
var x = xb(g, o),
w = x ? x.createHTML("") : "",
k = r,
S = k.implementation,
_ = k.createNodeIterator,
E = k.createDocumentFragment,
N = k.getElementsByTagName,
R = o.importNode,
A = {};
try { A = Qh(r).documentMode ? r.documentMode : {} } catch (e) {}
var O = {};
n.isSupported = "function" == typeof y && S && void 0 !== S.createHTMLDocument && 9 !== A;
var T = cb,
B = ub,
D = mb,
L = fb,
P = pb,
M = hb,
I = gb,
F = null,
U = Xh({}, [].concat(yb(Zh), yb(eb), yb(tb), yb(ob), yb(sb))),
z = null,
j = Xh({}, [].concat(yb(ab), yb(ib), yb(lb), yb(db))),
V = Object.seal(Object.create(null, { tagNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null }, attributeNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null }, allowCustomizedBuiltInElements: { writable: !0, configurable: !1, enumerable: !0, value: !1 } })),
H = null,
$ = null,
q = !0,
W = !0,
K = !1,
G = !1,
Y = !1,
X = !1,
Q = !1,
J = !1,
Z = !1,
ee = !1,
te = !0,
ne = !0,
oe = !1,
re = {},
se = null,
ae = Xh({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]),
ie = null,
le = Xh({}, ["audio", "video", "img", "source", "image", "track"]),
de = null,
ce = Xh({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]),
ue = "http://www.w3.org/1998/Math/MathML",
me = "http://www.w3.org/2000/svg",
fe = "http://www.w3.org/1999/xhtml",
ge = fe,
pe = !1,
he = void 0,
be = ["application/xhtml+xml", "text/html"],
ve = "text/html",
ye = void 0,
Ce = null,
xe = r.createElement("form"),
we = function(e) { return e instanceof RegExp || e instanceof Function },
ke = function(e) { Ce && Ce === e || (e && "object" === (void 0 === e ? "undefined" : vb(e)) || (e = {}), e = Qh(e), F = "ALLOWED_TAGS" in e ? Xh({}, e.ALLOWED_TAGS) : U, z = "ALLOWED_ATTR" in e ? Xh({}, e.ALLOWED_ATTR) : j, de = "ADD_URI_SAFE_ATTR" in e ? Xh(Qh(ce), e.ADD_URI_SAFE_ATTR) : ce, ie = "ADD_DATA_URI_TAGS" in e ? Xh(Qh(le), e.ADD_DATA_URI_TAGS) : le, se = "FORBID_CONTENTS" in e ? Xh({}, e.FORBID_CONTENTS) : ae, H = "FORBID_TAGS" in e ? Xh({}, e.FORBID_TAGS) : {}, $ = "FORBID_ATTR" in e ? Xh({}, e.FORBID_ATTR) : {}, re = "USE_PROFILES" in e && e.USE_PROFILES, q = !1 !== e.ALLOW_ARIA_ATTR, W = !1 !== e.ALLOW_DATA_ATTR, K = e.ALLOW_UNKNOWN_PROTOCOLS || !1, G = e.SAFE_FOR_TEMPLATES || !1, Y = e.WHOLE_DOCUMENT || !1, J = e.RETURN_DOM || !1, Z = e.RETURN_DOM_FRAGMENT || !1, ee = e.RETURN_TRUSTED_TYPE || !1, Q = e.FORCE_BODY || !1, te = !1 !== e.SANITIZE_DOM, ne = !1 !== e.KEEP_CONTENT, oe = e.IN_PLACE || !1, I = e.ALLOWED_URI_REGEXP || I, ge = e.NAMESPACE || fe, e.CUSTOM_ELEMENT_HANDLING && we(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (V.tagNameCheck = e.CUSTOM_ELEMENT_HANDLING.tagNameCheck), e.CUSTOM_ELEMENT_HANDLING && we(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (V.attributeNameCheck = e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), e.CUSTOM_ELEMENT_HANDLING && "boolean" == typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (V.allowCustomizedBuiltInElements = e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), he = he = -1 === be.indexOf(e.PARSER_MEDIA_TYPE) ? ve : e.PARSER_MEDIA_TYPE, ye = "application/xhtml+xml" === he ? function(e) { return e } : Vh, G && (W = !1), Z && (J = !0), re && (F = Xh({}, [].concat(yb(sb))), z = [], !0 === re.html && (Xh(F, Zh), Xh(z, ab)), !0 === re.svg && (Xh(F, eb), Xh(z, ib), Xh(z, db)), !0 === re.svgFilters && (Xh(F, tb), Xh(z, ib), Xh(z, db)), !0 === re.mathMl && (Xh(F, ob), Xh(z, lb), Xh(z, db))), e.ADD_TAGS && (F === U && (F = Qh(F)), Xh(F, e.ADD_TAGS)), e.ADD_ATTR && (z === j && (z = Qh(z)), Xh(z, e.ADD_ATTR)), e.ADD_URI_SAFE_ATTR && Xh(de, e.ADD_URI_SAFE_ATTR), e.FORBID_CONTENTS && (se === ae && (se = Qh(se)), Xh(se, e.FORBID_CONTENTS)), ne && (F["#text"] = !0), Y && Xh(F, ["html", "head", "body"]), F.table && (Xh(F, ["tbody"]), delete H.tbody), Bh && Bh(e), Ce = e) },
Se = Xh({}, ["mi", "mo", "mn", "ms", "mtext"]),
_e = Xh({}, ["foreignobject", "desc", "title", "annotation-xml"]),
Ee = Xh({}, ["title", "style", "font", "a", "script"]),
Ne = Xh({}, eb);
Xh(Ne, tb), Xh(Ne, nb);
var Re = Xh({}, ob);
Xh(Re, rb);
var Ae = function(e) {
var t = y(e);
t && t.tagName || (t = { namespaceURI: fe, tagName: "template" });
var n = Vh(e.tagName),
o = Vh(t.tagName);
return e.namespaceURI === me ? t.namespaceURI === fe ? "svg" === n : t.namespaceURI === ue ? "svg" === n && ("annotation-xml" === o || Se[o]) : Boolean(Ne[n]) : e.namespaceURI === ue ? t.namespaceURI === fe ? "math" === n : t.namespaceURI === me ? "math" === n && _e[o] : Boolean(Re[n]) : e.namespaceURI === fe && !(t.namespaceURI === me && !_e[o]) && !(t.namespaceURI === ue && !Se[o]) && !Re[n] && (Ee[n] || !Ne[n])
},
Oe = function(e) { jh(n.removed, { element: e }); try { e.parentNode.removeChild(e) } catch (t) { try { e.outerHTML = w } catch (t) { e.remove() } } },
Te = function(e, t) {
try { jh(n.removed, { attribute: t.getAttributeNode(e), from: t }) } catch (e) { jh(n.removed, { attribute: null, from: t }) }
if (t.removeAttribute(e), "is" === e && !z[e])
if (J || Z) try { Oe(t) } catch (e) {} else try { t.setAttribute(e, "") } catch (e) {}
},
Be = function(e) {
var t = void 0,
n = void 0;
if (Q) e = "