Liferay.Loader.define("dynamic-data-mapping-form-field-type$liferay-ckeditor@4.21.0-liferay.1/ckeditor/ckeditor", ['module', 'exports', 'require'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    /*
    Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
    For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/
    */
    (function () {
      window.CKEDITOR && window.CKEDITOR.dom || (window.CKEDITOR || (window.CKEDITOR = function () {
        var c = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,
            h = { timestamp: "N8LH", version: "4.21.0 DEV", revision: "d7a2cf6533", rnd: Math.floor(900 * Math.random()) + 100, _: { pending: [], basePathSrcPattern: c }, status: "unloaded", basePath: function () {
            var a = window.CKEDITOR_BASEPATH || "";if (!a) for (var l = document.getElementsByTagName("script"), g = 0; g < l.length; g++) {
              var m = l[g].src.match(c);if (m) {
                a = m[1];break;
              }
            }-1 == a.indexOf(":/") && "//" != a.slice(0, 2) && (a = 0 === a.indexOf("/") ? location.href.match(/^.*?:\/\/[^\/]*/)[0] + a : location.href.match(/^[^\?]*\/(?:)/)[0] + a);if (!a) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return a;
          }(), getUrl: function (a) {
            function c(l, m) {
              a.match(new RegExp("[\x26?]" + l + "\\b")) || (a += (0 <= a.indexOf("?") ? "\x26" : "?") + l + "\x3d" + m);
            }-1 === a.indexOf(":/") && 0 !== a.indexOf("/") && (a = this.basePath + a);"/" !== a.charAt(a.length - 1) && (this.timestamp && c("t", this.timestamp), Object.keys(h.ADDITIONAL_RESOURCE_PARAMS).forEach(function (g) {
              var m = h.ADDITIONAL_RESOURCE_PARAMS[g];/\.css$/.test(a) && "languageId" === g || c(g, m);
            }));return a;
          }, appendTimestamp: function (a) {
            if (!this.timestamp || "/" === a.charAt(a.length - 1) || /[&?]t=/.test(a)) return a;var c = 0 <= a.indexOf("?") ? "\x26" : "?";return a + c + "t\x3d" + this.timestamp;
          }, domReady: function () {
            function a() {
              try {
                document.addEventListener ? (document.removeEventListener("DOMContentLoaded", a, !1), window.removeEventListener("load", a, !1), c()) : document.attachEvent && "complete" === document.readyState && (document.detachEvent("onreadystatechange", a), window.detachEvent("onload", a), c());
              } catch (m) {}
            }function c() {
              for (var a; a = g.shift();) a();
            }var g = [];return function (m) {
              function b() {
                try {
                  document.documentElement.doScroll("left");
                } catch (f) {
                  setTimeout(b, 1);return;
                }a();
              }g.push(m);"complete" === document.readyState && setTimeout(a, 1);if (1 == g.length) if (document.addEventListener) document.addEventListener("DOMContentLoaded", a, !1), window.addEventListener("load", a, !1);else if (document.attachEvent) {
                document.attachEvent("onreadystatechange", a);window.attachEvent("onload", a);m = !1;try {
                  m = !window.frameElement;
                } catch (d) {}document.documentElement.doScroll && m && b();
              }
            };
          }() },
            g = window.CKEDITOR_GETURL;if (g) {
          var a = h.getUrl;h.getUrl = function (e) {
            return g.call(h, e) || a.call(h, e);
          };
        }return h;
      }()), function () {
        var c = {};CKEDITOR.event || (CKEDITOR.event = function () {}, CKEDITOR.event.implementOn = function (c) {
          var g = CKEDITOR.event.prototype,
              a;for (a in g) null == c[a] && (c[a] = g[a]);
        }, CKEDITOR.event.prototype = function () {
          function h(e) {
            var c = g(this);return c[e] || (c[e] = new a(e));
          }var g = function (a) {
            a = a.getPrivate && a.getPrivate() || a._ || (a._ = {});return a.events || (a.events = {});
          },
              a = function (a) {
            this.name = a;this.listeners = [];
          };a.prototype = { getListenerIndex: function (a) {
              for (var c = 0, g = this.listeners; c < g.length; c++) if (g[c].fn == a) return c;return -1;
            } };return { define: function (a, c) {
              var g = h.call(this, a);CKEDITOR.tools.extend(g, c, !0);
            }, on: function (a, g, k, m, b) {
              function d(n, b, d, w) {
                n = { name: a, sender: this, editor: n, data: b, listenerData: m,
                  stop: d, cancel: w, removeListener: f };return !1 === g.call(k, n) ? c : n.data;
              }function f() {
                n && n.removeListener(a, g);
              }var n = this,
                  w = h.call(this, a);if (0 > w.getListenerIndex(g)) {
                w = w.listeners;k || (k = this);isNaN(b) && (b = 10);d.fn = g;d.priority = b;for (var z = w.length - 1; 0 <= z; z--) if (w[z].priority <= b) return w.splice(z + 1, 0, d), { removeListener: f };w.unshift(d);
              }return { removeListener: f };
            }, once: function () {
              var a = Array.prototype.slice.call(arguments),
                  c = a[1];a[1] = function (a) {
                a.removeListener();return c.apply(this, arguments);
              };return this.on.apply(this, a);
            }, capture: function () {
              CKEDITOR.event.useCapture = 1;var a = this.on.apply(this, arguments);CKEDITOR.event.useCapture = 0;return a;
            }, fire: function () {
              var a = 0,
                  l = function () {
                a = 1;
              },
                  k = 0,
                  m = function () {
                k = 1;
              };return function (b, d, f) {
                var n = g(this)[b];b = a;var w = k;a = k = 0;if (n) {
                  var z = n.listeners;if (z.length) for (var z = z.slice(0), h, t = 0; t < z.length; t++) {
                    if (n.errorProof) try {
                      h = z[t].call(this, f, d, l, m);
                    } catch (u) {} else h = z[t].call(this, f, d, l, m);h === c ? k = 1 : "undefined" != typeof h && (d = h);if (a || k) break;
                  }
                }d = k ? !1 : "undefined" == typeof d ? !0 : d;
                a = b;k = w;return d;
              };
            }(), fireOnce: function (a, c, k) {
              c = this.fire(a, c, k);delete g(this)[a];return c;
            }, removeListener: function (a, c) {
              var k = g(this)[a];if (k) {
                var m = k.getListenerIndex(c);0 <= m && k.listeners.splice(m, 1);
              }
            }, removeAllListeners: function () {
              var a = g(this),
                  c;for (c in a) delete a[c];
            }, hasListeners: function (a) {
              return (a = g(this)[a]) && 0 < a.listeners.length;
            } };
        }());
      }(), CKEDITOR.editor || (CKEDITOR.editor = function () {
        CKEDITOR._.pending.push([this, arguments]);CKEDITOR.event.call(this);
      }, CKEDITOR.editor.prototype.fire = function (c, h) {
        c in { instanceReady: 1, loaded: 1 } && (this[c] = !0);return CKEDITOR.event.prototype.fire.call(this, c, h, this);
      }, CKEDITOR.editor.prototype.fireOnce = function (c, h) {
        c in { instanceReady: 1, loaded: 1 } && (this[c] = !0);return CKEDITOR.event.prototype.fireOnce.call(this, c, h, this);
      }, CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)), CKEDITOR.env || (CKEDITOR.env = function () {
        var c = navigator.userAgent.toLowerCase(),
            h = c.match(/edge[ \/](\d+.?\d*)/),
            g = -1 < c.indexOf("trident/"),
            g = !(!h && !g),
            g = { ie: g, edge: !!h, webkit: !g && -1 < c.indexOf(" applewebkit/"),
          air: -1 < c.indexOf(" adobeair/"), mac: -1 < c.indexOf("macintosh"), quirks: "BackCompat" == document.compatMode && (!document.documentMode || 10 > document.documentMode), mobile: -1 < c.indexOf("mobile"), iOS: /(ipad|iphone|ipod)/.test(c), isCustomDomain: function () {
            if (!this.ie) return !1;var a = document.domain,
                c = window.location.hostname;return a != c && a != "[" + c + "]";
          }, secure: "https:" == location.protocol };g.gecko = "Gecko" == navigator.product && !g.webkit && !g.ie;g.webkit && (-1 < c.indexOf("chrome") ? g.chrome = !0 : g.safari = !0);var a = 0;g.ie && (a = h ? parseFloat(h[1]) : g.quirks || !document.documentMode ? parseFloat(c.match(/msie (\d+)/)[1]) : document.documentMode, g.ie9Compat = 9 == a, g.ie8Compat = 8 == a, g.ie7Compat = 7 == a, g.ie6Compat = 7 > a || g.quirks);g.gecko && (h = c.match(/rv:([\d\.]+)/)) && (h = h[1].split("."), a = 1E4 * h[0] + 100 * (h[1] || 0) + 1 * (h[2] || 0));g.air && (a = parseFloat(c.match(/ adobeair\/(\d+)/)[1]));g.webkit && (a = parseFloat(c.match(/ applewebkit\/(\d+)/)[1]));g.version = a;g.isCompatible = !(g.ie && 7 > a) && !(g.gecko && 4E4 > a) && !(g.webkit && 534 > a);g.hidpi = 2 <= window.devicePixelRatio;
        g.needsBrFiller = g.gecko || g.webkit || g.ie && 10 < a;g.needsNbspFiller = g.ie && 11 > a;g.cssClass = "cke_browser_" + (g.ie ? "ie" : g.gecko ? "gecko" : g.webkit ? "webkit" : "unknown");g.quirks && (g.cssClass += " cke_browser_quirks");g.ie && (g.cssClass += " cke_browser_ie" + (g.quirks ? "6 cke_browser_iequirks" : g.version));g.air && (g.cssClass += " cke_browser_air");g.iOS && (g.cssClass += " cke_browser_ios");g.hidpi && (g.cssClass += " cke_hidpi");return g;
      }()), "unloaded" == CKEDITOR.status && function () {
        CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore = function () {
          if ("basic_ready" != CKEDITOR.status) CKEDITOR.loadFullCore._load = 1;else {
            delete CKEDITOR.loadFullCore;var c = document.createElement("script");c.type = "text/javascript";c.src = CKEDITOR.basePath + "ckeditor.js";document.getElementsByTagName("head")[0].appendChild(c);
          }
        };CKEDITOR.loadFullCoreTimeout = 0;CKEDITOR.add = function (c) {
          (this._.pending || (this._.pending = [])).push(c);
        };(function () {
          CKEDITOR.domReady(function () {
            var c = CKEDITOR.loadFullCore,
                h = CKEDITOR.loadFullCoreTimeout;c && (CKEDITOR.status = "basic_ready", c && c._load ? c() : h && setTimeout(function () {
              CKEDITOR.loadFullCore && CKEDITOR.loadFullCore();
            }, 1E3 * h));
          });
        })();CKEDITOR.status = "basic_loaded";
      }(), "use strict", CKEDITOR.VERBOSITY_WARN = 1, CKEDITOR.VERBOSITY_ERROR = 2, CKEDITOR.verbosity = CKEDITOR.VERBOSITY_WARN | CKEDITOR.VERBOSITY_ERROR, CKEDITOR.warn = function (c, h) {
        CKEDITOR.verbosity & CKEDITOR.VERBOSITY_WARN && CKEDITOR.fire("log", { type: "warn", errorCode: c, additionalData: h });
      }, CKEDITOR.error = function (c, h) {
        CKEDITOR.verbosity & CKEDITOR.VERBOSITY_ERROR && CKEDITOR.fire("log", { type: "error", errorCode: c, additionalData: h });
      }, CKEDITOR.on("log", function (c) {
        if (window.console && window.console.log) {
          var h = console[c.data.type] ? c.data.type : "log",
              g = c.data.errorCode;if (c = c.data.additionalData) console[h]("[CKEDITOR] Error code: " + g + ".", c);else console[h]("[CKEDITOR] Error code: " + g + ".");console[h]("[CKEDITOR] For more information about this error go to https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#" + g);
        }
      }, null, null, 999), CKEDITOR.dom = {}, function () {
        function c(f, b, a) {
          this._minInterval = f;this._context = a;this._lastOutput = this._scheduledTimer = 0;this._output = CKEDITOR.tools.bind(b, a || {});var d = this;this.input = function () {
            function f() {
              d._lastOutput = new Date().getTime();d._scheduledTimer = 0;d._call();
            }if (!d._scheduledTimer || !1 !== d._reschedule()) {
              var n = new Date().getTime() - d._lastOutput;n < d._minInterval ? d._scheduledTimer = setTimeout(f, d._minInterval - n) : f();
            }
          };
        }function h(f, b, a) {
          c.call(this, f, b, a);this._args = [];var d = this;this.input = CKEDITOR.tools.override(this.input, function (f) {
            return function () {
              d._args = Array.prototype.slice.call(arguments);f.call(this);
            };
          });
        }var g = [],
            a = CKEDITOR.env.gecko ? "-moz-" : CKEDITOR.env.webkit ? "-webkit-" : CKEDITOR.env.ie ? "-ms-" : "",
            e = /&/g,
            l = />/g,
            k = /</g,
            m = /"/g,
            b = /&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,
            d = { lt: "\x3c", gt: "\x3e", amp: "\x26", quot: '"', nbsp: " ", shy: "­" },
            f = function (f, b) {
          return "#" == b[0] ? String.fromCharCode(parseInt(b.slice(1), 10)) : d[b];
        };CKEDITOR.on("reset", function () {
          g = [];
        });CKEDITOR.tools = { arrayCompare: function (f, b) {
            if (!f && !b) return !0;if (!f || !b || f.length != b.length) return !1;
            for (var a = 0; a < f.length; a++) if (f[a] != b[a]) return !1;return !0;
          }, getIndex: function (f, b) {
            for (var a = 0; a < f.length; ++a) if (b(f[a])) return a;return -1;
          }, clone: function (f) {
            var b;if (f && f instanceof Array) {
              b = [];for (var a = 0; a < f.length; a++) b[a] = CKEDITOR.tools.clone(f[a]);return b;
            }if (null === f || "object" != typeof f || f instanceof String || f instanceof Number || f instanceof Boolean || f instanceof Date || f instanceof RegExp || f.nodeType || f.window === f) return f;b = new f.constructor();for (a in f) b[a] = CKEDITOR.tools.clone(f[a]);return b;
          },
          capitalize: function (f, b) {
            return f.charAt(0).toUpperCase() + (b ? f.slice(1) : f.slice(1).toLowerCase());
          }, extend: function (f) {
            var b = arguments.length,
                a,
                d;"boolean" == typeof (a = arguments[b - 1]) ? b-- : "boolean" == typeof (a = arguments[b - 2]) && (d = arguments[b - 1], b -= 2);for (var e = 1; e < b; e++) {
              var c = arguments[e] || {};CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(c), function (b) {
                if (!0 === a || null == f[b]) if (!d || b in d) f[b] = c[b];
              });
            }return f;
          }, prototypedCopy: function (f) {
            var b = function () {};b.prototype = f;return new b();
          }, copy: function (f) {
            var b = {},
                a;for (a in f) b[a] = f[a];return b;
          }, isArray: function (f) {
            return "[object Array]" == Object.prototype.toString.call(f);
          }, isEmpty: function (f) {
            for (var b in f) if (f.hasOwnProperty(b)) return !1;return !0;
          }, cssVendorPrefix: function (f, b, d) {
            if (d) return a + f + ":" + b + ";" + f + ":" + b;d = {};d[f] = b;d[a + f] = b;return d;
          }, cssStyleToDomStyle: function () {
            var f = document.createElement("div").style,
                b = "undefined" != typeof f.cssFloat ? "cssFloat" : "undefined" != typeof f.styleFloat ? "styleFloat" : "float";return function (f) {
              return "float" == f ? b : f.replace(/-./g, function (f) {
                return f.substr(1).toUpperCase();
              });
            };
          }(), buildStyleHtml: function (f) {
            f = [].concat(f);for (var b, a = [], d = 0; d < f.length; d++) if (b = f[d]) /@import|[{}]/.test(b) ? a.push("\x3cstyle\x3e" + b + "\x3c/style\x3e") : (b = CKEDITOR.appendTimestamp(b), a.push('\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"' + b + '"\x3e'));return a.join("");
          }, htmlEncode: function (f) {
            return void 0 === f || null === f ? "" : String(f).replace(e, "\x26amp;").replace(l, "\x26gt;").replace(k, "\x26lt;");
          }, htmlDecode: function (a) {
            return a.replace(b, f);
          }, htmlEncodeAttr: function (f) {
            return CKEDITOR.tools.htmlEncode(f).replace(m, "\x26quot;");
          }, htmlDecodeAttr: function (f) {
            return CKEDITOR.tools.htmlDecode(f);
          }, transformPlainTextToHtml: function (f, b) {
            var a = b == CKEDITOR.ENTER_BR,
                d = this.htmlEncode(f.replace(/\r\n/g, "\n")),
                d = d.replace(/\t/g, "\x26nbsp;\x26nbsp; \x26nbsp;"),
                e = b == CKEDITOR.ENTER_P ? "p" : "div";if (!a) {
              var c = /\n{2}/g;if (c.test(d)) var m = "\x3c" + e + "\x3e",
                  g = "\x3c/" + e + "\x3e",
                  d = m + d.replace(c, function () {
                return g + m;
              }) + g;
            }d = d.replace(/\n/g, "\x3cbr\x3e");a || (d = d.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/" + e + "\x3e)"), function (f) {
              return CKEDITOR.tools.repeat(f, 2);
            }));d = d.replace(/^ | $/g, "\x26nbsp;");return d = d.replace(/(>|\s) /g, function (f, b) {
              return b + "\x26nbsp;";
            }).replace(/ (?=<)/g, "\x26nbsp;");
          }, getNextNumber: function () {
            var f = 0;return function () {
              return ++f;
            };
          }(), getNextId: function () {
            return "cke_" + this.getNextNumber();
          }, getUniqueId: function () {
            for (var f = "e", b = 0; 8 > b; b++) f += Math.floor(65536 * (1 + Math.random())).toString(16).substring(1);return f;
          }, override: function (f, b) {
            var a = b(f);a.prototype = f.prototype;return a;
          }, setTimeout: function (f, b, a, d, e) {
            e || (e = window);a || (a = e);return e.setTimeout(function () {
              d ? f.apply(a, [].concat(d)) : f.apply(a);
            }, b || 0);
          }, debounce: function (f, b) {
            var a;return function () {
              var d = this,
                  e = arguments;clearTimeout(a);a = setTimeout(function () {
                a = null;f.apply(d, e);
              }, b);
            };
          }, throttle: function (f, b, a) {
            return new this.buffers.throttle(f, b, a);
          }, trim: function () {
            var f = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function (b) {
              return b.replace(f, "");
            };
          }(), ltrim: function () {
            var f = /^[ \t\n\r]+/g;return function (b) {
              return b.replace(f, "");
            };
          }(), rtrim: function () {
            var f = /[ \t\n\r]+$/g;return function (b) {
              return b.replace(f, "");
            };
          }(), indexOf: function (f, b) {
            if ("function" == typeof b) for (var a = 0, d = f.length; a < d; a++) {
              if (b(f[a])) return a;
            } else {
              if (f.indexOf) return f.indexOf(b);a = 0;for (d = f.length; a < d; a++) if (f[a] === b) return a;
            }return -1;
          }, search: function (f, b) {
            var a = CKEDITOR.tools.indexOf(f, b);return 0 <= a ? f[a] : null;
          }, bind: function (f, b) {
            var a = Array.prototype.slice.call(arguments, 2);return function () {
              return f.apply(b, a.concat(Array.prototype.slice.call(arguments)));
            };
          }, createClass: function (f) {
            var b = f.$,
                a = f.base,
                d = f.privates || f._,
                e = f.proto;f = f.statics;!b && (b = function () {
              a && this.base.apply(this, arguments);
            });if (d) var c = b,
                b = function () {
              var f = this._ || (this._ = {}),
                  b;for (b in d) {
                var a = d[b];f[b] = "function" == typeof a ? CKEDITOR.tools.bind(a, this) : a;
              }c.apply(this, arguments);
            };a && (b.prototype = this.prototypedCopy(a.prototype), b.prototype.constructor = b, b.base = a, b.baseProto = a.prototype, b.prototype.base = function p() {
              this.base = a.prototype.base;
              a.apply(this, arguments);this.base = p;
            });e && this.extend(b.prototype, e, !0);f && this.extend(b, f, !0);return b;
          }, addFunction: function (f, b) {
            return g.push(function () {
              return f.apply(b || this, arguments);
            }) - 1;
          }, removeFunction: function (f) {
            g[f] = null;
          }, callFunction: function (f) {
            var b = g[f];return b && b.apply(window, Array.prototype.slice.call(arguments, 1));
          }, cssLength: function () {
            var f = /^-?\d+\.?\d*px$/,
                b;return function (a) {
              b = CKEDITOR.tools.trim(a + "") + "px";return f.test(b) ? b : a || "";
            };
          }(), convertToPx: function () {
            var f, b;return function (a) {
              if (!f || f.isDetached()) f = CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e', CKEDITOR.document), CKEDITOR.document.getBody().append(f);if (!/%$/.test(a)) {
                var d = 0 > parseFloat(a);d && (a = a.replace("-", ""));f.setStyle("width", a);b = f.getClientRect();a = Math.round(b.width);return d ? -a : a;
              }return a;
            };
          }(), repeat: function (f, b) {
            return Array(b + 1).join(f);
          }, tryThese: function () {
            for (var f, b = 0, a = arguments.length; b < a; b++) {
              var d = arguments[b];
              try {
                f = d();break;
              } catch (e) {}
            }return f;
          }, genKey: function () {
            return Array.prototype.slice.call(arguments).join("-");
          }, defer: function (f) {
            return function () {
              var b = arguments,
                  a = this;window.setTimeout(function () {
                f.apply(a, b);
              }, 0);
            };
          }, normalizeCssText: function (f, b) {
            var a = [],
                d,
                e = CKEDITOR.tools.parseCssText(f, !0, b);for (d in e) a.push(d + ":" + e[d]);a.sort();return a.length ? a.join(";") + ";" : "";
          }, convertRgbToHex: function (f) {
            return f.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function (f, b, a, d) {
              f = [b, a, d];for (b = 0; 3 > b; b++) f[b] = ("0" + parseInt(f[b], 10).toString(16)).slice(-2);return "#" + f.join("");
            });
          }, normalizeHex: function (f) {
            return f.replace(/#(([0-9a-f]{3}){1,2})($|;|\s+)/gi, function (f, b, a, d) {
              f = b.toLowerCase();3 == f.length && (f = f.split(""), f = [f[0], f[0], f[1], f[1], f[2], f[2]].join(""));return "#" + f + d;
            });
          }, _isValidColorFormat: function (f) {
            if (!f) return !1;f = f.replace(/\s+/g, "");return (/^[a-z0-9()#%,./]+$/i.test(f)
            );
          }, parseCssText: function (f, b, a) {
            var d = {};a && (f = new CKEDITOR.dom.element("span").setAttribute("style", f).getAttribute("style") || "");f && (f = CKEDITOR.tools.normalizeHex(CKEDITOR.tools.convertRgbToHex(f)));if (!f || ";" == f) return d;f.replace(/&quot;/g, '"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function (f, a, n) {
              b && (a = a.toLowerCase(), "font-family" == a && (n = n.replace(/\s*,\s*/g, ",")), n = CKEDITOR.tools.trim(n));d[a] = n;
            });return d;
          }, writeCssText: function (f, b) {
            var a,
                d = [];for (a in f) d.push(a + ":" + f[a]);b && d.sort();return d.join("; ");
          }, objectCompare: function (f, b, a) {
            if (!f && !b) return !0;if (!f || !b) return !1;for (var d in f) if (f[d] != b[d]) return !1;
            if (!a) for (d in b) if (f[d] != b[d]) return !1;return !0;
          }, objectKeys: function (f) {
            return CKEDITOR.tools.object.keys(f);
          }, convertArrayToObject: function (f, b) {
            var a = {};1 == arguments.length && (b = !0);for (var d = 0, e = f.length; d < e; ++d) a[f[d]] = b;return a;
          }, getStyledSpans: function (f, b) {
            var a = CKEDITOR.env.ie && 8 == CKEDITOR.env.version ? f.toUpperCase() : f,
                a = b.find("span[style*\x3d" + a + "]").toArray();return CKEDITOR.tools.array.filter(a, function (b) {
              return !!b.getStyle(f);
            });
          }, fixDomain: function () {
            for (var f;;) try {
              f = window.parent.document.domain;
              break;
            } catch (b) {
              f = f ? f.replace(/.+?(?:\.|$)/, "") : document.domain;if (!f) break;document.domain = f;
            }return !!f;
          }, eventsBuffer: function (f, b, a) {
            return new this.buffers.event(f, b, a);
          }, enableHtml5Elements: function (f, b) {
            for (var a = "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split(" "), d = a.length, e; d--;) e = f.createElement(a[d]), b && f.appendChild(e);
          }, checkIfAnyArrayItemMatches: function (f, b) {
            for (var a = 0, d = f.length; a < d; ++a) if (f[a].match(b)) return !0;return !1;
          }, checkIfAnyObjectPropertyMatches: function (f, b) {
            for (var a in f) if (a.match(b)) return !0;return !1;
          }, keystrokeToString: function (f, b) {
            var a = this.keystrokeToArray(f, b);a.display = a.display.join("+");a.aria = a.aria.join("+");return a;
          }, keystrokeToArray: function (f, b) {
            var a = b & 16711680,
                d = b & 65535,
                e = CKEDITOR.env.mac,
                c = [],
                m = [];a & CKEDITOR.CTRL && (c.push(e ? "⌘" : f[17]), m.push(e ? f[224] : f[17]));a & CKEDITOR.ALT && (c.push(e ? "⌥" : f[18]), m.push(f[18]));a & CKEDITOR.SHIFT && (c.push(e ? "⇧" : f[16]), m.push(f[16]));d && (f[d] ? (c.push(f[d]), m.push(f[d])) : (c.push(String.fromCharCode(d)), m.push(String.fromCharCode(d))));return { display: c, aria: m };
          }, transparentImageData: "data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d", getCookie: function (f) {
            f = f.toLowerCase();for (var b = document.cookie.split(";"), a, d, e = 0; e < b.length; e++) if (a = b[e].split("\x3d"), d = decodeURIComponent(CKEDITOR.tools.trim(a[0]).toLowerCase()), d === f) return decodeURIComponent(1 < a.length ? a[1] : "");
            return null;
          }, setCookie: function (f, b) {
            document.cookie = encodeURIComponent(f) + "\x3d" + encodeURIComponent(b) + ";path\x3d/";
          }, getCsrfToken: function () {
            var f = CKEDITOR.tools.getCookie("ckCsrfToken");if (!f || 40 != f.length) {
              var f = [],
                  b = "";if (window.crypto && window.crypto.getRandomValues) f = new Uint8Array(40), window.crypto.getRandomValues(f);else for (var a = 0; 40 > a; a++) f.push(Math.floor(256 * Math.random()));for (a = 0; a < f.length; a++) var d = "abcdefghijklmnopqrstuvwxyz0123456789".charAt(f[a] % 36), b = b + (.5 < Math.random() ? d.toUpperCase() : d);f = b;CKEDITOR.tools.setCookie("ckCsrfToken", f);
            }return f;
          }, escapeCss: function (f) {
            if (f) {
              if (window.CSS && CSS.escape) f = CSS.escape(f);else {
                f = String(f);for (var b = f.length, a = -1, d, e = "", c = f.charCodeAt(0); ++a < b;) d = f.charCodeAt(a), e = 0 == d ? e + "�" : 127 == d || 1 <= d && 31 >= d || 0 == a && 48 <= d && 57 >= d || 1 == a && 48 <= d && 57 >= d && 45 == c ? e + ("\\" + d.toString(16) + " ") : 0 == a && 1 == b && 45 == d ? e + ("\\" + f.charAt(a)) : 128 <= d || 45 == d || 95 == d || 48 <= d && 57 >= d || 65 <= d && 90 >= d || 97 <= d && 122 >= d ? e + f.charAt(a) : e + ("\\" + f.charAt(a));f = e;
              }
            } else f = "";return f;
          }, getMouseButton: function (f) {
            return (f = f && f.data ? f.data.$ : f) ? CKEDITOR.tools.normalizeMouseButton(f.button) : !1;
          }, normalizeMouseButton: function (f, b) {
            if (!CKEDITOR.env.ie || 9 <= CKEDITOR.env.version && !CKEDITOR.env.ie6Compat) return f;for (var a = [[CKEDITOR.MOUSE_BUTTON_LEFT, 1], [CKEDITOR.MOUSE_BUTTON_MIDDLE, 4], [CKEDITOR.MOUSE_BUTTON_RIGHT, 2]], d = 0; d < a.length; d++) {
              var e = a[d];if (e[0] === f && b) return e[1];if (!b && e[1] === f) return e[0];
            }
          }, convertHexStringToBytes: function (f) {
            var b = [],
                a = f.length / 2,
                d;for (d = 0; d < a; d++) b.push(parseInt(f.substr(2 * d, 2), 16));return b;
          },
          convertBytesToBase64: function (f) {
            var b = "",
                a = f.length,
                d;for (d = 0; d < a; d += 3) {
              var e = f.slice(d, d + 3),
                  c = e.length,
                  m = [],
                  g;if (3 > c) for (g = c; 3 > g; g++) e[g] = 0;m[0] = (e[0] & 252) >> 2;m[1] = (e[0] & 3) << 4 | e[1] >> 4;m[2] = (e[1] & 15) << 2 | (e[2] & 192) >> 6;m[3] = e[2] & 63;for (g = 0; 4 > g; g++) b = g <= c ? b + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m[g]) : b + "\x3d";
            }return b;
          }, style: { parse: { _borderStyle: "none hidden dotted dashed solid double groove ridge inset outset".split(" "), _widthRegExp: /^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/,
              _rgbaRegExp: /rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi, _hslaRegExp: /hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi, background: function (f) {
                var b = {},
                    a = this._findColor(f);a.length && (b.color = a[0], CKEDITOR.tools.array.forEach(a, function (b) {
                  f = f.replace(b, "");
                }));if (f = CKEDITOR.tools.trim(f)) b.unprocessed = f;return b;
              }, margin: function (f) {
                return CKEDITOR.tools.style.parse.sideShorthand(f, function (f) {
                  return f.match(/(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset|revert)/g) || ["0px"];
                });
              }, sideShorthand: function (f, b) {
                function a(f) {
                  d.top = e[f[0]];d.right = e[f[1]];d.bottom = e[f[2]];d.left = e[f[3]];
                }var d = {},
                    e = b ? b(f) : f.split(/\s+/);switch (e.length) {case 1:
                    a([0, 0, 0, 0]);break;case 2:
                    a([0, 1, 0, 1]);break;case 3:
                    a([0, 1, 2, 1]);break;case 4:
                    a([0, 1, 2, 3]);}return d;
              }, border: function (f) {
                return CKEDITOR.tools.style.border.fromCssRule(f);
              }, _findColor: function (f) {
                var b = [],
                    a = CKEDITOR.tools.array,
                    b = b.concat(f.match(this._rgbaRegExp) || []),
                    b = b.concat(f.match(this._hslaRegExp) || []);return b = b.concat(a.filter(f.split(/\s+/), function (f) {
                  return f.match(/^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi) ? !0 : f.toLowerCase() in CKEDITOR.tools.style.parse._colors;
                }));
              } } }, array: { filter: function (f, b, a) {
              var d = [];this.forEach(f, function (e, c) {
                b.call(a, e, c, f) && d.push(e);
              });return d;
            }, find: function (f, b, a) {
              for (var d = f.length, e = 0; e < d;) {
                if (b.call(a, f[e], e, f)) return f[e];e++;
              }
            }, forEach: function (f, b, a) {
              var d = f.length,
                  e;for (e = 0; e < d; e++) b.call(a, f[e], e, f);
            }, map: function (f, b, a) {
              for (var d = [], e = 0; e < f.length; e++) d.push(b.call(a, f[e], e, f));return d;
            }, reduce: function (f, b, a, d) {
              for (var e = 0; e < f.length; e++) a = b.call(d, a, f[e], e, f);return a;
            }, every: function (f, b, a) {
              if (!f.length) return !0;b = this.filter(f, b, a);return f.length === b.length;
            }, some: function (f, b, a) {
              for (var d = 0; d < f.length; d++) if (b.call(a, f[d], d, f)) return !0;return !1;
            }, zip: function (f, b) {
              return CKEDITOR.tools.array.map(f, function (f, a) {
                return [f, b[a]];
              });
            }, unique: function (f) {
              return this.filter(f, function (b, a) {
                return a === CKEDITOR.tools.array.indexOf(f, b);
              });
            } }, object: { DONT_ENUMS: "toString toLocaleString valueOf hasOwnProperty isPrototypeOf propertyIsEnumerable constructor".split(" "),
            entries: function (f) {
              return CKEDITOR.tools.array.map(CKEDITOR.tools.object.keys(f), function (b) {
                return [b, f[b]];
              });
            }, values: function (f) {
              return CKEDITOR.tools.array.map(CKEDITOR.tools.object.keys(f), function (b) {
                return f[b];
              });
            }, keys: function (f) {
              var b = Object.prototype.hasOwnProperty,
                  a = [],
                  d = CKEDITOR.tools.object.DONT_ENUMS;if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (!f || "object" !== typeof f)) {
                b = [];if ("string" === typeof f) for (a = 0; a < f.length; a++) b.push(String(a));return b;
              }for (var e in f) a.push(e);if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) for (e = 0; e < d.length; e++) b.call(f, d[e]) && a.push(d[e]);return a;
            }, findKey: function (f, b) {
              if ("object" !== typeof f) return null;for (var a in f) if (f[a] === b) return a;return null;
            }, merge: function (f, b) {
              var a = CKEDITOR.tools,
                  d = a.clone(f),
                  e = a.clone(b);a.array.forEach(a.object.keys(e), function (f) {
                d[f] = "object" === typeof e[f] && "object" === typeof d[f] ? a.object.merge(d[f], e[f]) : e[f];
              });return d;
            } }, getAbsoluteRectPosition: function (f, b) {
            function a(f) {
              if (f) {
                var b = f.getClientRect();d.top += b.top;d.left += b.left;"x" in d && "y" in d && (d.x += b.x, d.y += b.y);a(f.getWindow().getFrame());
              }
            }var d = CKEDITOR.tools.copy(b);a(f.getFrame());var e = CKEDITOR.document.getWindow().getScrollPosition();d.top += e.y;d.left += e.x;"x" in d && "y" in d && (d.y += e.y, d.x += e.x);d.right = d.left + d.width;d.bottom = d.top + d.height;return d;
          } };c.prototype = { reset: function () {
            this._lastOutput = 0;this._clearTimer();
          }, _reschedule: function () {
            return !1;
          }, _call: function () {
            this._output();
          }, _clearTimer: function () {
            this._scheduledTimer && clearTimeout(this._scheduledTimer);
            this._scheduledTimer = 0;
          } };h.prototype = CKEDITOR.tools.prototypedCopy(c.prototype);h.prototype._reschedule = function () {
          this._scheduledTimer && this._clearTimer();
        };h.prototype._call = function () {
          this._output.apply(this._context, this._args);
        };CKEDITOR.tools.buffers = {};CKEDITOR.tools.buffers.event = c;CKEDITOR.tools.buffers.throttle = h;CKEDITOR.tools.style.border = CKEDITOR.tools.createClass({ $: function (f) {
            f = f || {};this.width = f.width;this.style = f.style;this.color = f.color;this._.normalize();
          }, _: { normalizeMap: { color: [[/windowtext/g, "black"]] }, normalize: function () {
              for (var f in this._.normalizeMap) {
                var b = this[f];b && (this[f] = CKEDITOR.tools.array.reduce(this._.normalizeMap[f], function (f, b) {
                  return f.replace(b[0], b[1]);
                }, b));
              }
            } }, proto: { toString: function () {
              return CKEDITOR.tools.array.filter([this.width, this.style, this.color], function (f) {
                return !!f;
              }).join(" ");
            } }, statics: { fromCssRule: function (f) {
              var b = {},
                  a = f.split(/\s+/g);f = CKEDITOR.tools.style.parse._findColor(f);f.length && (b.color = f[0]);CKEDITOR.tools.array.forEach(a, function (f) {
                b.style || -1 === CKEDITOR.tools.indexOf(CKEDITOR.tools.style.parse._borderStyle, f) ? !b.width && CKEDITOR.tools.style.parse._widthRegExp.test(f) && (b.width = f) : b.style = f;
              });return new CKEDITOR.tools.style.border(b);
            }, splitCssValues: function (f, b) {
              b = b || {};var a = CKEDITOR.tools.array.reduce(["width", "style", "color"], function (a, d) {
                var e = f["border-" + d] || b[d];a[d] = e ? CKEDITOR.tools.style.parse.sideShorthand(e) : null;return a;
              }, {});return CKEDITOR.tools.array.reduce(["top", "right", "bottom", "left"], function (b, d) {
                var e = {},
                    c;for (c in a) {
                  var m = f["border-" + d + "-" + c];e[c] = m ? m : a[c] && a[c][d];
                }b["border-" + d] = new CKEDITOR.tools.style.border(e);return b;
              }, {});
            } } });CKEDITOR.tools.array.indexOf = CKEDITOR.tools.indexOf;CKEDITOR.tools.array.isArray = CKEDITOR.tools.isArray;CKEDITOR.MOUSE_BUTTON_LEFT = 0;CKEDITOR.MOUSE_BUTTON_MIDDLE = 1;CKEDITOR.MOUSE_BUTTON_RIGHT = 2;
      }(), CKEDITOR.dtd = function () {
        var c = CKEDITOR.tools.extend,
            h = function (b, f) {
          for (var a = CKEDITOR.tools.clone(b), e = 1; e < arguments.length; e++) {
            f = arguments[e];for (var c in f) delete a[c];
          }return a;
        },
            g = {},
            a = {},
            e = { address: 1, article: 1, aside: 1, blockquote: 1, details: 1, div: 1, dl: 1, fieldset: 1, figure: 1, footer: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, header: 1, hgroup: 1, hr: 1, main: 1, menu: 1, nav: 1, ol: 1, p: 1, pre: 1, section: 1, table: 1, ul: 1 },
            l = { command: 1, link: 1, meta: 1, noscript: 1, script: 1, style: 1 },
            k = {},
            m = { "#": 1 },
            b = { center: 1, dir: 1, noframes: 1 };c(g, { a: 1, abbr: 1, area: 1, audio: 1, b: 1, bdi: 1, bdo: 1, br: 1, button: 1, canvas: 1, cite: 1, code: 1, command: 1, datalist: 1, del: 1, dfn: 1, em: 1, embed: 1, i: 1, iframe: 1, img: 1, input: 1, ins: 1, kbd: 1, keygen: 1, label: 1, map: 1,
          mark: 1, meter: 1, noscript: 1, object: 1, output: 1, progress: 1, q: 1, ruby: 1, s: 1, samp: 1, script: 1, select: 1, small: 1, span: 1, strong: 1, sub: 1, sup: 1, textarea: 1, time: 1, u: 1, "var": 1, video: 1, wbr: 1 }, m, { acronym: 1, applet: 1, basefont: 1, big: 1, font: 1, isindex: 1, strike: 1, style: 1, tt: 1 });c(a, e, g, b);h = { a: h(g, { a: 1, button: 1 }), abbr: g, address: a, area: k, article: a, aside: a, audio: c({ source: 1, track: 1 }, a), b: g, base: k, bdi: g, bdo: g, blockquote: a, body: a, br: k, button: h(g, { a: 1, button: 1 }), canvas: g, caption: a, cite: g, code: g, col: k, colgroup: { col: 1 }, command: k,
          datalist: c({ option: 1 }, g), dd: a, del: g, details: c({ summary: 1 }, a), dfn: g, div: a, dl: { dt: 1, dd: 1 }, dt: a, em: g, embed: k, fieldset: c({ legend: 1 }, a), figcaption: a, figure: c({ figcaption: 1 }, a), footer: a, form: a, h1: g, h2: g, h3: g, h4: g, h5: g, h6: g, head: c({ title: 1, base: 1 }, l), header: a, hgroup: { h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }, hr: k, html: c({ head: 1, body: 1 }, a, l), i: g, iframe: m, img: k, input: k, ins: g, kbd: g, keygen: k, label: g, legend: g, li: a, link: k, main: a, map: a, mark: g, menu: c({ li: 1 }, a), meta: k, meter: h(g, { meter: 1 }), nav: a, noscript: c({ link: 1, meta: 1, style: 1 }, g), object: c({ param: 1 }, g), ol: { li: 1 }, optgroup: { option: 1 }, option: m, output: g, p: g, param: k, pre: g, progress: h(g, { progress: 1 }), q: g, rp: g, rt: g, ruby: c({ rp: 1, rt: 1 }, g), s: g, samp: g, script: m, section: a, select: { optgroup: 1, option: 1 }, small: g, source: k, span: g, strong: g, style: m, sub: g, summary: c({ h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }, g), sup: g, table: { caption: 1, colgroup: 1, thead: 1, tfoot: 1, tbody: 1, tr: 1 }, tbody: { tr: 1 }, td: a, textarea: m, tfoot: { tr: 1 }, th: a, thead: { tr: 1 }, time: h(g, { time: 1 }), title: m, tr: { th: 1, td: 1 }, track: k, u: g, ul: { li: 1 }, "var": g,
          video: c({ source: 1, track: 1 }, a), wbr: k, acronym: g, applet: c({ param: 1 }, a), basefont: k, big: g, center: a, dialog: k, dir: { li: 1 }, font: g, isindex: k, noframes: a, strike: g, tt: g };c(h, { $block: c({ audio: 1, dd: 1, dt: 1, figcaption: 1, li: 1, video: 1 }, e, b), $blockLimit: { article: 1, aside: 1, audio: 1, body: 1, caption: 1, details: 1, dir: 1, div: 1, dl: 1, fieldset: 1, figcaption: 1, figure: 1, footer: 1, form: 1, header: 1, hgroup: 1, main: 1, menu: 1, nav: 1, ol: 1, section: 1, table: 1, td: 1, th: 1, tr: 1, ul: 1, video: 1 }, $cdata: { script: 1, style: 1 }, $editable: { address: 1, article: 1,
            aside: 1, blockquote: 1, body: 1, details: 1, div: 1, fieldset: 1, figcaption: 1, footer: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, header: 1, hgroup: 1, main: 1, nav: 1, p: 1, pre: 1, section: 1 }, $empty: { area: 1, base: 1, basefont: 1, br: 1, col: 1, command: 1, dialog: 1, embed: 1, hr: 1, img: 1, input: 1, isindex: 1, keygen: 1, link: 1, meta: 1, param: 1, source: 1, track: 1, wbr: 1 }, $inline: g, $list: { dl: 1, ol: 1, ul: 1 }, $listItem: { dd: 1, dt: 1, li: 1 }, $nonBodyContent: c({ body: 1, head: 1, html: 1 }, h.head), $nonEditable: { applet: 1, audio: 1, button: 1, embed: 1, iframe: 1, map: 1, object: 1,
            option: 1, param: 1, script: 1, textarea: 1, video: 1 }, $object: { applet: 1, audio: 1, button: 1, hr: 1, iframe: 1, img: 1, input: 1, object: 1, select: 1, table: 1, textarea: 1, video: 1 }, $removeEmpty: { abbr: 1, acronym: 1, b: 1, bdi: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, label: 1, kbd: 1, mark: 1, meter: 1, output: 1, q: 1, ruby: 1, s: 1, samp: 1, small: 1, span: 1, strike: 1, strong: 1, sub: 1, sup: 1, time: 1, tt: 1, u: 1, "var": 1 }, $tabIndex: { a: 1, area: 1, button: 1, input: 1, object: 1, select: 1, textarea: 1 }, $tableContent: { caption: 1, col: 1, colgroup: 1, tbody: 1,
            td: 1, tfoot: 1, th: 1, thead: 1, tr: 1 }, $transparent: { a: 1, audio: 1, canvas: 1, del: 1, ins: 1, map: 1, noscript: 1, object: 1, video: 1 }, $intermediate: { caption: 1, colgroup: 1, dd: 1, dt: 1, figcaption: 1, legend: 1, li: 1, optgroup: 1, option: 1, rp: 1, rt: 1, summary: 1, tbody: 1, td: 1, tfoot: 1, th: 1, thead: 1, tr: 1 } });return h;
      }(), CKEDITOR.dom.event = function (c) {
        this.$ = c;
      }, CKEDITOR.dom.event.prototype = { getKey: function () {
          return this.$.keyCode || this.$.which;
        }, getKeystroke: function () {
          var c = this.getKey();if (this.$.ctrlKey || this.$.metaKey) c += CKEDITOR.CTRL;
          this.$.shiftKey && (c += CKEDITOR.SHIFT);this.$.altKey && (c += CKEDITOR.ALT);return c;
        }, preventDefault: function (c) {
          var h = this.$;h.preventDefault ? h.preventDefault() : h.returnValue = !1;c && this.stopPropagation();
        }, stopPropagation: function () {
          var c = this.$;c.stopPropagation ? c.stopPropagation() : c.cancelBubble = !0;
        }, getTarget: function () {
          var c = this.$.target || this.$.srcElement;return c ? new CKEDITOR.dom.node(c) : null;
        }, getPhase: function () {
          return this.$.eventPhase || 2;
        }, getPageOffset: function () {
          var c = this.getTarget().getDocument().$;
          return { x: this.$.pageX || this.$.clientX + (c.documentElement.scrollLeft || c.body.scrollLeft), y: this.$.pageY || this.$.clientY + (c.documentElement.scrollTop || c.body.scrollTop) };
        } }, CKEDITOR.CTRL = 1114112, CKEDITOR.SHIFT = 2228224, CKEDITOR.ALT = 4456448, CKEDITOR.EVENT_PHASE_CAPTURING = 1, CKEDITOR.EVENT_PHASE_AT_TARGET = 2, CKEDITOR.EVENT_PHASE_BUBBLING = 3, CKEDITOR.HISTORY_NATIVE = 1, CKEDITOR.HISTORY_HASH = 2, CKEDITOR.HISTORY_OFF = 0, CKEDITOR.dom.domObject = function (c) {
        c && (this.$ = c);
      }, CKEDITOR.dom.domObject.prototype = function () {
        var c = function (c, g) {
          return function (a) {
            "undefined" != typeof CKEDITOR && c.fire(g, new CKEDITOR.dom.event(a));
          };
        };return { getPrivate: function () {
            var c;(c = this.getCustomData("_")) || this.setCustomData("_", c = {});return c;
          }, on: function (h) {
            var g = this.getCustomData("_cke_nativeListeners");g || (g = {}, this.setCustomData("_cke_nativeListeners", g));g[h] || (g = g[h] = c(this, h), this.$.addEventListener ? this.$.addEventListener(h, g, !!CKEDITOR.event.useCapture) : this.$.attachEvent && this.$.attachEvent("on" + h, g));return CKEDITOR.event.prototype.on.apply(this, arguments);
          }, removeListener: function (c) {
            CKEDITOR.event.prototype.removeListener.apply(this, arguments);if (!this.hasListeners(c)) {
              var g = this.getCustomData("_cke_nativeListeners"),
                  a = g && g[c];a && (this.$.removeEventListener ? this.$.removeEventListener(c, a, !1) : this.$.detachEvent && this.$.detachEvent("on" + c, a), delete g[c]);
            }
          }, removeAllListeners: function () {
            try {
              var c = this.getCustomData("_cke_nativeListeners"),
                  g;for (g in c) {
                var a = c[g];this.$.detachEvent ? this.$.detachEvent("on" + g, a) : this.$.removeEventListener && this.$.removeEventListener(g, a, !1);delete c[g];
              }
            } catch (e) {
              if (!CKEDITOR.env.edge || -2146828218 !== e.number) throw e;
            }CKEDITOR.event.prototype.removeAllListeners.call(this);
          } };
      }(), function (c) {
        var h = {};CKEDITOR.on("reset", function () {
          h = {};
        });c.equals = function (c) {
          try {
            return c && c.$ === this.$;
          } catch (a) {
            return !1;
          }
        };c.setCustomData = function (c, a) {
          var e = this.getUniqueId();(h[e] || (h[e] = {}))[c] = a;return this;
        };c.getCustomData = function (c) {
          var a = this.$["data-cke-expando"];return (a = a && h[a]) && c in a ? a[c] : null;
        };c.removeCustomData = function (c) {
          var a = this.$["data-cke-expando"],
              a = a && h[a],
              e,
              l;a && (e = a[c], l = c in a, delete a[c]);return l ? e : null;
        };c.clearCustomData = function () {
          this.removeAllListeners();var c = this.getUniqueId();c && delete h[c];
        };c.getUniqueId = function () {
          return this.$["data-cke-expando"] || (this.$["data-cke-expando"] = CKEDITOR.tools.getNextNumber());
        };CKEDITOR.event.implementOn(c);
      }(CKEDITOR.dom.domObject.prototype), CKEDITOR.dom.node = function (c) {
        return c ? new CKEDITOR.dom[c.nodeType == CKEDITOR.NODE_DOCUMENT ? "document" : c.nodeType == CKEDITOR.NODE_ELEMENT ? "element" : c.nodeType == CKEDITOR.NODE_TEXT ? "text" : c.nodeType == CKEDITOR.NODE_COMMENT ? "comment" : c.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT ? "documentFragment" : "domObject"](c) : this;
      }, CKEDITOR.dom.node.prototype = new CKEDITOR.dom.domObject(), CKEDITOR.NODE_ELEMENT = 1, CKEDITOR.NODE_DOCUMENT = 9, CKEDITOR.NODE_TEXT = 3, CKEDITOR.NODE_COMMENT = 8, CKEDITOR.NODE_DOCUMENT_FRAGMENT = 11, CKEDITOR.POSITION_IDENTICAL = 0, CKEDITOR.POSITION_DISCONNECTED = 1, CKEDITOR.POSITION_FOLLOWING = 2, CKEDITOR.POSITION_PRECEDING = 4, CKEDITOR.POSITION_IS_CONTAINED = 8, CKEDITOR.POSITION_CONTAINS = 16, CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype, { appendTo: function (c, h) {
          c.append(this, h);return c;
        }, clone: function (c, h) {
          function g(a) {
            a["data-cke-expando"] && (a["data-cke-expando"] = !1);if (a.nodeType == CKEDITOR.NODE_ELEMENT || a.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT) if (h || a.nodeType != CKEDITOR.NODE_ELEMENT || a.removeAttribute("id", !1), c) {
              a = a.childNodes;for (var e = 0; e < a.length; e++) g(a[e]);
            }
          }function a(e) {
            if (e.type == CKEDITOR.NODE_ELEMENT || e.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
              if (e.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
                var g = e.getName();":" == g[0] && e.renameNode(g.substring(1));
              }if (c) for (g = 0; g < e.getChildCount(); g++) a(e.getChild(g));
            }
          }var e = this.$.cloneNode(c);g(e);e = new CKEDITOR.dom.node(e);CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (this.type == CKEDITOR.NODE_ELEMENT || this.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) && a(e);return e;
        }, hasPrevious: function () {
          return !!this.$.previousSibling;
        }, hasNext: function () {
          return !!this.$.nextSibling;
        }, insertAfter: function (c) {
          c.$.parentNode.insertBefore(this.$, c.$.nextSibling);return c;
        }, insertBefore: function (c) {
          c.$.parentNode.insertBefore(this.$, c.$);return c;
        }, insertBeforeMe: function (c) {
          this.$.parentNode.insertBefore(c.$, this.$);return c;
        }, getAddress: function (c) {
          for (var h = [], g = this.getDocument().$.documentElement, a = this; a && a != g;) {
            var e = a.getParent();e && h.unshift(this.getIndex.call(a, c));a = e;
          }return h;
        }, getDocument: function () {
          return new CKEDITOR.dom.document(this.$.ownerDocument || this.$.parentNode.ownerDocument);
        }, getIndex: function (c) {
          function h(a, e) {
            var c = e ? a.getNext() : a.getPrevious();return c && c.type == CKEDITOR.NODE_TEXT ? c.isEmpty() ? h(c, e) : c : null;
          }var g = this,
              a = -1,
              e;if (!this.getParent() || c && g.type == CKEDITOR.NODE_TEXT && g.isEmpty() && !h(g) && !h(g, !0)) return -1;do if (!c || g.equals(this) || g.type != CKEDITOR.NODE_TEXT || !e && !g.isEmpty()) a++, e = g.type == CKEDITOR.NODE_TEXT; while (g = g.getPrevious());return a;
        }, getNextSourceNode: function (c, h, g) {
          if (g && !g.call) {
            var a = g;g = function (e) {
              return !e.equals(a);
            };
          }c = !c && this.getFirst && this.getFirst();var e;if (!c) {
            if (this.type == CKEDITOR.NODE_ELEMENT && g && !1 === g(this, !0)) return null;c = this.getNext();
          }for (; !c && (e = (e || this).getParent());) {
            if (g && !1 === g(e, !0)) return null;c = e.getNext();
          }return !c || g && !1 === g(c) ? null : h && h != c.type ? c.getNextSourceNode(!1, h, g) : c;
        }, getPreviousSourceNode: function (c, h, g) {
          if (g && !g.call) {
            var a = g;g = function (e) {
              return !e.equals(a);
            };
          }c = !c && this.getLast && this.getLast();var e;if (!c) {
            if (this.type == CKEDITOR.NODE_ELEMENT && g && !1 === g(this, !0)) return null;c = this.getPrevious();
          }for (; !c && (e = (e || this).getParent());) {
            if (g && !1 === g(e, !0)) return null;c = e.getPrevious();
          }return !c || g && !1 === g(c) ? null : h && c.type != h ? c.getPreviousSourceNode(!1, h, g) : c;
        }, getPrevious: function (c) {
          var h = this.$,
              g;do g = (h = h.previousSibling) && 10 != h.nodeType && new CKEDITOR.dom.node(h); while (g && c && !c(g));return g;
        }, getNext: function (c) {
          var h = this.$,
              g;do g = (h = h.nextSibling) && new CKEDITOR.dom.node(h); while (g && c && !c(g));return g;
        }, getParent: function (c) {
          var h = this.$.parentNode;return h && (h.nodeType == CKEDITOR.NODE_ELEMENT || c && h.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT) ? new CKEDITOR.dom.node(h) : null;
        }, getParents: function (c) {
          var h = this,
              g = [];do g[c ? "push" : "unshift"](h); while (h = h.getParent());
          return g;
        }, getCommonAncestor: function (c) {
          if (c.equals(this)) return this;if (c.contains && c.contains(this)) return c;var h = this.contains ? this : this.getParent();do if (h.contains(c)) return h; while (h = h.getParent());return null;
        }, getPosition: function (c) {
          var h = this.$,
              g = c.$;if (h.compareDocumentPosition) return h.compareDocumentPosition(g);if (h == g) return CKEDITOR.POSITION_IDENTICAL;if (this.type == CKEDITOR.NODE_ELEMENT && c.type == CKEDITOR.NODE_ELEMENT) {
            if (h.contains) {
              if (h.contains(g)) return CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING;if (g.contains(h)) return CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING;
            }if ("sourceIndex" in h) return 0 > h.sourceIndex || 0 > g.sourceIndex ? CKEDITOR.POSITION_DISCONNECTED : h.sourceIndex < g.sourceIndex ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING;
          }h = this.getAddress();c = c.getAddress();for (var g = Math.min(h.length, c.length), a = 0; a < g; a++) if (h[a] != c[a]) return h[a] < c[a] ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING;return h.length < c.length ? CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING;
        }, getAscendant: function (c, h) {
          var g = this.$,
              a,
              e;h || (g = g.parentNode);"function" == typeof c ? (e = !0, a = c) : (e = !1, a = function (a) {
            a = "string" == typeof a.nodeName ? a.nodeName.toLowerCase() : "";return "string" == typeof c ? a == c : a in c;
          });for (; g;) {
            if (a(e ? new CKEDITOR.dom.node(g) : g)) return new CKEDITOR.dom.node(g);try {
              g = g.parentNode;
            } catch (l) {
              g = null;
            }
          }return null;
        }, hasAscendant: function (c, h) {
          var g = this.$;h || (g = g.parentNode);for (; g;) {
            if (g.nodeName && g.nodeName.toLowerCase() == c) return !0;g = g.parentNode;
          }return !1;
        }, move: function (c, h) {
          c.append(this.remove(), h);
        }, remove: function (c) {
          var h = this.$,
              g = h.parentNode;if (g) {
            if (c) for (; c = h.firstChild;) g.insertBefore(h.removeChild(c), h);g.removeChild(h);
          }return this;
        }, replace: function (c) {
          this.insertBefore(c);c.remove();
        }, trim: function () {
          this.ltrim();this.rtrim();
        }, ltrim: function () {
          for (var c; this.getFirst && (c = this.getFirst());) {
            if (c.type == CKEDITOR.NODE_TEXT) {
              var h = CKEDITOR.tools.ltrim(c.getText()),
                  g = c.getLength();if (h) h.length < g && (c.split(g - h.length), this.$.removeChild(this.$.firstChild));else {
                c.remove();continue;
              }
            }break;
          }
        }, rtrim: function () {
          for (var c; this.getLast && (c = this.getLast());) {
            if (c.type == CKEDITOR.NODE_TEXT) {
              var h = CKEDITOR.tools.rtrim(c.getText()),
                  g = c.getLength();if (h) h.length < g && (c.split(h.length), this.$.lastChild.parentNode.removeChild(this.$.lastChild));else {
                c.remove();continue;
              }
            }break;
          }CKEDITOR.env.needsBrFiller && (c = this.$.lastChild) && 1 == c.type && "br" == c.nodeName.toLowerCase() && c.parentNode.removeChild(c);
        }, isReadOnly: function (c) {
          var h = this;this.type != CKEDITOR.NODE_ELEMENT && (h = this.getParent());CKEDITOR.env.edge && h && h.is("textarea", "input") && (c = !0);if (!c && h && "undefined" != typeof h.$.isContentEditable) return !(h.$.isContentEditable || h.data("cke-editable"));for (; h;) {
            if (h.data("cke-editable")) return !1;if (h.hasAttribute("contenteditable")) return "false" == h.getAttribute("contenteditable");h = h.getParent();
          }return !0;
        } }), CKEDITOR.dom.window = function (c) {
        CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject(), CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype, { focus: function () {
          this.$.focus();
        }, getViewPaneSize: function () {
          var c = this.$.document,
              h = "CSS1Compat" == c.compatMode;return { width: (h ? c.documentElement.clientWidth : c.body.clientWidth) || 0, height: (h ? c.documentElement.clientHeight : c.body.clientHeight) || 0 };
        }, getScrollPosition: function () {
          var c = this.$;if ("pageXOffset" in c) return { x: c.pageXOffset || 0, y: c.pageYOffset || 0 };c = c.document;return { x: c.documentElement.scrollLeft || c.body.scrollLeft || 0, y: c.documentElement.scrollTop || c.body.scrollTop || 0 };
        }, getFrame: function () {
          var c = this.$.frameElement;return c ? new CKEDITOR.dom.element.get(c) : null;
        } }), CKEDITOR.dom.document = function (c) {
        CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.document.prototype = new CKEDITOR.dom.domObject(), CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype, { type: CKEDITOR.NODE_DOCUMENT, appendStyleSheet: function (c) {
          c = CKEDITOR.appendTimestamp(c);if (this.$.createStyleSheet) this.$.createStyleSheet(c);else {
            var h = new CKEDITOR.dom.element("link");h.setAttributes({ rel: "stylesheet",
              type: "text/css", href: c });this.getHead().append(h);
          }
        }, appendStyleText: function (c) {
          if (this.$.createStyleSheet) {
            var h = this.$.createStyleSheet("");h.cssText = c;
          } else {
            var g = new CKEDITOR.dom.element("style", this);g.append(new CKEDITOR.dom.text(c, this));this.getHead().append(g);
          }return h || g.$.sheet;
        }, createElement: function (c, h) {
          var g = new CKEDITOR.dom.element(c, this);h && (h.attributes && g.setAttributes(h.attributes), h.styles && g.setStyles(h.styles));return g;
        }, createText: function (c) {
          return new CKEDITOR.dom.text(c, this);
        }, focus: function () {
          this.getWindow().focus();
        }, getActive: function () {
          var c;try {
            c = this.$.activeElement;
          } catch (h) {
            return null;
          }return new CKEDITOR.dom.element(c);
        }, getById: function (c) {
          return (c = this.$.getElementById(c)) ? new CKEDITOR.dom.element(c) : null;
        }, getByAddress: function (c, h) {
          for (var g = this.$.documentElement, a = 0; g && a < c.length; a++) {
            var e = c[a];if (h) for (var l = -1, k = 0; k < g.childNodes.length; k++) {
              var m = g.childNodes[k];if (!0 !== h || 3 != m.nodeType || !m.previousSibling || 3 != m.previousSibling.nodeType) if (l++, l == e) {
                g = m;break;
              }
            } else g = g.childNodes[e];
          }return g ? new CKEDITOR.dom.node(g) : null;
        }, getElementsByTag: function (c, h) {
          CKEDITOR.env.ie && 8 >= document.documentMode || !h || (c = h + ":" + c);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(c));
        }, getHead: function () {
          var c = this.$.getElementsByTagName("head")[0];return c = c ? new CKEDITOR.dom.element(c) : this.getDocumentElement().append(new CKEDITOR.dom.element("head"), !0);
        }, getBody: function () {
          return new CKEDITOR.dom.element(this.$.body);
        }, getDocumentElement: function () {
          return new CKEDITOR.dom.element(this.$.documentElement);
        },
        getWindow: function () {
          return new CKEDITOR.dom.window(this.$.parentWindow || this.$.defaultView);
        }, write: function (c) {
          this.$.open("text/html", "replace");CKEDITOR.env.ie && (c = c.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i, '$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e(' + CKEDITOR.tools.fixDomain + ")();\x3c/script\x3e"));this.$.write(c);this.$.close();
        }, find: function (c) {
          return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(c));
        }, findOne: function (c) {
          return (c = this.$.querySelector(c)) ? new CKEDITOR.dom.element(c) : null;
        },
        _getHtml5ShivFrag: function () {
          var c = this.getCustomData("html5ShivFrag");c || (c = this.$.createDocumentFragment(), CKEDITOR.tools.enableHtml5Elements(c, !0), this.setCustomData("html5ShivFrag", c));return c;
        } }), CKEDITOR.dom.nodeList = function (c) {
        this.$ = c;
      }, CKEDITOR.dom.nodeList.prototype = { count: function () {
          return this.$.length;
        }, getItem: function (c) {
          return 0 > c || c >= this.$.length ? null : (c = this.$[c]) ? new CKEDITOR.dom.node(c) : null;
        }, toArray: function () {
          return CKEDITOR.tools.array.map(this.$, function (c) {
            return new CKEDITOR.dom.node(c);
          });
        } }, CKEDITOR.dom.element = function (c, h) {
        "string" == typeof c && (c = (h ? h.$ : document).createElement(c));CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.element.get = function (c) {
        return (c = "string" == typeof c ? document.getElementById(c) || document.getElementsByName(c)[0] : c) && (c.$ ? c : new CKEDITOR.dom.element(c));
      }, CKEDITOR.dom.element.prototype = new CKEDITOR.dom.node(), CKEDITOR.dom.element.createFromHtml = function (c, h) {
        var g = new CKEDITOR.dom.element("div", h);g.setHtml(c);return g.getFirst().remove();
      }, CKEDITOR.dom.element.setMarker = function (c, h, g, a) {
        var e = h.getCustomData("list_marker_id") || h.setCustomData("list_marker_id", CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),
            l = h.getCustomData("list_marker_names") || h.setCustomData("list_marker_names", {}).getCustomData("list_marker_names");c[e] = h;l[g] = 1;return h.setCustomData(g, a);
      }, CKEDITOR.dom.element.clearAllMarkers = function (c) {
        for (var h in c) CKEDITOR.dom.element.clearMarkers(c, c[h], 1);
      }, CKEDITOR.dom.element.clearMarkers = function (c, h, g) {
        var a = h.getCustomData("list_marker_names"),
            e = h.getCustomData("list_marker_id"),
            l;for (l in a) h.removeCustomData(l);h.removeCustomData("list_marker_names");g && (h.removeCustomData("list_marker_id"), delete c[e]);
      }, function () {
        function c(a, b) {
          return -1 < (" " + a + " ").replace(l, " ").indexOf(" " + b + " ");
        }function h(a) {
          var b = !0;a.$.id || (a.$.id = "cke_tmp_" + CKEDITOR.tools.getNextNumber(), b = !1);return function () {
            b || a.removeAttribute("id");
          };
        }function g(a, b) {
          var d = CKEDITOR.tools.escapeCss(a.$.id);return "#" + d + " " + b.split(/,\s*/).join(", #" + d + " ");
        }function a(a) {
          for (var b = 0, d = 0, f = k[a].length; d < f; d++) b += parseFloat(this.getComputedStyle(k[a][d]) || 0, 10) || 0;return b;
        }var e = document.createElement("_").classList,
            e = "undefined" !== typeof e && null !== String(e.add).match(/\[Native code\]/gi),
            l = /[\n\t\r]/g;CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype, { type: CKEDITOR.NODE_ELEMENT, addClass: e ? function (a) {
            this.$.classList.add(a);return this;
          } : function (a) {
            var b = this.$.className;b && (c(b, a) || (b += " " + a));this.$.className = b || a;return this;
          }, removeClass: e ? function (a) {
            var b = this.$;b.classList.remove(a);
            b.className || b.removeAttribute("class");return this;
          } : function (a) {
            var b = this.getAttribute("class");b && c(b, a) && ((b = b.replace(new RegExp("(?:^|\\s+)" + a + "(?\x3d\\s|$)"), "").replace(/^\s+/, "")) ? this.setAttribute("class", b) : this.removeAttribute("class"));return this;
          }, hasClass: function (a) {
            return c(this.$.className, a);
          }, append: function (a, b) {
            "string" == typeof a && (a = this.getDocument().createElement(a));b ? this.$.insertBefore(a.$, this.$.firstChild) : this.$.appendChild(a.$);return a;
          }, appendHtml: function (a) {
            if (this.$.childNodes.length) {
              var b = new CKEDITOR.dom.element("div", this.getDocument());b.setHtml(a);b.moveChildren(this);
            } else this.setHtml(a);
          }, appendText: function (a) {
            null != this.$.text && CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? this.$.text += a : this.append(new CKEDITOR.dom.text(a));
          }, appendBogus: function (a) {
            if (a || CKEDITOR.env.needsBrFiller) {
              for (a = this.getLast(); a && a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.rtrim(a.getText());) a = a.getPrevious();a && a.is && a.is("br") || (a = this.getDocument().createElement("br"), CKEDITOR.env.gecko && a.setAttribute("type", "_moz"), this.append(a));
            }
          }, breakParent: function (a, b) {
            var d = new CKEDITOR.dom.range(this.getDocument());d.setStartAfter(this);d.setEndAfter(a);var f = d.extractContents(!1, b || !1),
                e;d.insertNode(this.remove());if (CKEDITOR.env.ie && !CKEDITOR.env.edge) {
              for (d = new CKEDITOR.dom.element("div"); e = f.getFirst();) e.$.style.backgroundColor && (e.$.style.backgroundColor = e.$.style.backgroundColor), d.append(e);d.insertAfter(this);d.remove(!0);
            } else f.insertAfterNode(this);
          }, contains: document.compareDocumentPosition ? function (a) {
            return !!(this.$.compareDocumentPosition(a.$) & 16);
          } : function (a) {
            var b = this.$;return a.type != CKEDITOR.NODE_ELEMENT ? b.contains(a.getParent().$) : b != a.$ && b.contains(a.$);
          }, focus: function () {
            function a() {
              try {
                this.$.focus();
              } catch (b) {}
            }return function (b) {
              b ? CKEDITOR.tools.setTimeout(a, 100, this) : a.call(this);
            };
          }(), getHtml: function () {
            var a = this.$.innerHTML;return CKEDITOR.env.ie ? a.replace(/<\?[^>]*>/g, "") : a;
          }, getOuterHtml: function () {
            if (this.$.outerHTML) return this.$.outerHTML.replace(/<\?[^>]*>/, "");var a = this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0));
            return a.innerHTML;
          }, getClientRect: function (a) {
            var b = CKEDITOR.tools.extend({}, this.$.getBoundingClientRect());!b.width && (b.width = b.right - b.left);!b.height && (b.height = b.bottom - b.top);return a ? CKEDITOR.tools.getAbsoluteRectPosition(this.getWindow(), b) : b;
          }, setHtml: CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? function (a) {
            try {
              var b = this.$;if (this.getParent()) return b.innerHTML = a;var d = this.getDocument()._getHtml5ShivFrag();d.appendChild(b);b.innerHTML = a;d.removeChild(b);return a;
            } catch (f) {
              this.$.innerHTML = "";
              b = new CKEDITOR.dom.element("body", this.getDocument());b.$.innerHTML = a;for (b = b.getChildren(); b.count();) this.append(b.getItem(0));return a;
            }
          } : function (a) {
            return this.$.innerHTML = a;
          }, setText: function () {
            var a = document.createElement("p");a.innerHTML = "x";a = a.textContent;return function (b) {
              this.$[a ? "textContent" : "innerText"] = b;
            };
          }(), getAttribute: function () {
            return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (a) {
              switch (a) {case "class":
                  a = "className";break;case "http-equiv":
                  a = "httpEquiv";break;case "name":
                  return this.$.name;case "tabindex":
                  return a = this.$.getAttribute(a, 2), 0 !== a && 0 === this.$.tabIndex && (a = null), a;case "checked":
                  return a = this.$.attributes.getNamedItem(a), (a.specified ? a.nodeValue : this.$.checked) ? "checked" : null;case "hspace":case "value":
                  return this.$[a];case "style":
                  return this.$.style.cssText;case "contenteditable":case "contentEditable":
                  return this.$.attributes.getNamedItem("contentEditable").specified ? this.$.getAttribute("contentEditable") : null;}return this.$.getAttribute(a, 2);
            } : function (a) {
              return this.$.getAttribute(a, 2);
            };
          }(), getAttributes: function (a) {
            var b = {},
                d = this.$.attributes,
                f;a = CKEDITOR.tools.isArray(a) ? a : [];for (f = 0; f < d.length; f++) -1 === CKEDITOR.tools.indexOf(a, d[f].name) && (b[d[f].name] = d[f].value);return b;
          }, getChildren: function () {
            return new CKEDITOR.dom.nodeList(this.$.childNodes);
          }, getClientSize: function () {
            return { width: this.$.clientWidth, height: this.$.clientHeight };
          }, getComputedStyle: document.defaultView && document.defaultView.getComputedStyle ? function (a) {
            var b = this.getWindow().$.getComputedStyle(this.$, null);return b ? b.getPropertyValue(a) : "";
          } : function (a) {
            return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)];
          }, getDtd: function () {
            var a = CKEDITOR.dtd[this.getName()];this.getDtd = function () {
              return a;
            };return a;
          }, getElementsByTag: CKEDITOR.dom.document.prototype.getElementsByTag, getTabIndex: function () {
            var a = this.$.tabIndex;return 0 !== a || CKEDITOR.dtd.$tabIndex[this.getName()] || 0 === parseInt(this.getAttribute("tabindex"), 10) ? a : -1;
          }, getText: function () {
            return this.$.textContent || this.$.innerText || "";
          },
          getWindow: function () {
            return this.getDocument().getWindow();
          }, getId: function () {
            return this.$.id || null;
          }, getNameAtt: function () {
            return this.$.name || null;
          }, getName: function () {
            var a = this.$.nodeName.toLowerCase();if (CKEDITOR.env.ie && 8 >= document.documentMode) {
              var b = this.$.scopeName;"HTML" != b && (a = b.toLowerCase() + ":" + a);
            }this.getName = function () {
              return a;
            };return this.getName();
          }, getValue: function () {
            return this.$.value;
          }, getFirst: function (a) {
            var b = this.$.firstChild;(b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getNext(a));
            return b;
          }, getLast: function (a) {
            var b = this.$.lastChild;(b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getPrevious(a));return b;
          }, getStyle: function (a) {
            return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)];
          }, is: function () {
            var a = this.getName();if ("object" == typeof arguments[0]) return !!arguments[0][a];for (var b = 0; b < arguments.length; b++) if (arguments[b] == a) return !0;return !1;
          }, isEditable: function (a) {
            var b = this.getName();return this.isReadOnly() || "none" == this.getComputedStyle("display") || "hidden" == this.getComputedStyle("visibility") || CKEDITOR.dtd.$nonEditable[b] || CKEDITOR.dtd.$empty[b] || this.is("a") && (this.data("cke-saved-name") || this.hasAttribute("name")) && !this.getChildCount() ? !1 : !1 !== a ? (a = CKEDITOR.dtd[b] || CKEDITOR.dtd.span, !(!a || !a["#"])) : !0;
          }, isIdentical: function (a) {
            var b = this.clone(0, 1);a = a.clone(0, 1);b.removeAttributes(["_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name"]);a.removeAttributes(["_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name"]);if (b.$.isEqualNode) return b.$.style.cssText = CKEDITOR.tools.normalizeCssText(b.$.style.cssText), a.$.style.cssText = CKEDITOR.tools.normalizeCssText(a.$.style.cssText), b.$.isEqualNode(a.$);b = b.getOuterHtml();a = a.getOuterHtml();if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && this.is("a")) {
              var d = this.getParent();d.type == CKEDITOR.NODE_ELEMENT && (d = d.clone(), d.setHtml(b), b = d.getHtml(), d.setHtml(a), a = d.getHtml());
            }return b == a;
          }, isVisible: function () {
            var a = (this.$.offsetHeight || this.$.offsetWidth) && "hidden" != this.getComputedStyle("visibility"),
                b,
                d;a && CKEDITOR.env.webkit && (b = this.getWindow(), !b.equals(CKEDITOR.document.getWindow()) && (d = b.$.frameElement) && (a = new CKEDITOR.dom.element(d).isVisible()));return !!a;
          }, isEmptyInlineRemoveable: function () {
            if (!CKEDITOR.dtd.$removeEmpty[this.getName()]) return !1;for (var a = this.getChildren(), b = 0, d = a.count(); b < d; b++) {
              var f = a.getItem(b);if (f.type != CKEDITOR.NODE_ELEMENT || !f.data("cke-bookmark")) if (f.type == CKEDITOR.NODE_ELEMENT && !f.isEmptyInlineRemoveable() || f.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(f.getText())) return !1;
            }return !0;
          },
          hasAttributes: CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function () {
            for (var a = this.$.attributes, b = 0; b < a.length; b++) {
              var d = a[b];switch (d.nodeName) {case "class":
                  if (this.getAttribute("class")) return !0;case "data-cke-expando":
                  continue;default:
                  if (d.specified) return !0;}
            }return !1;
          } : function () {
            var a = this.$.attributes,
                b = a.length,
                d = { "data-cke-expando": 1, _moz_dirty: 1 };return 0 < b && (2 < b || !d[a[0].nodeName] || 2 == b && !d[a[1].nodeName]);
          }, hasAttribute: function () {
            function a(b) {
              var d = this.$.attributes.getNamedItem(b);
              if ("input" == this.getName()) switch (b) {case "class":
                  return 0 < this.$.className.length;case "checked":
                  return !!this.$.checked;case "value":
                  return b = this.getAttribute("type"), "checkbox" == b || "radio" == b ? "on" != this.$.value : !!this.$.value;}return d ? d.specified : !1;
            }return CKEDITOR.env.ie ? 8 > CKEDITOR.env.version ? function (b) {
              return "name" == b ? !!this.$.name : a.call(this, b);
            } : a : function (a) {
              return !!this.$.attributes.getNamedItem(a);
            };
          }(), hide: function () {
            this.setStyle("display", "none");
          }, moveChildren: function (a, b) {
            var d = this.$;
            a = a.$;if (d != a) {
              var f;if (b) for (; f = d.lastChild;) a.insertBefore(d.removeChild(f), a.firstChild);else for (; f = d.firstChild;) a.appendChild(d.removeChild(f));
            }
          }, mergeSiblings: function () {
            function a(b, d, f) {
              if (d && d.type == CKEDITOR.NODE_ELEMENT) {
                for (var e = []; d.data("cke-bookmark") || d.isEmptyInlineRemoveable();) if (e.push(d), d = f ? d.getNext() : d.getPrevious(), !d || d.type != CKEDITOR.NODE_ELEMENT) return;if (b.isIdentical(d)) {
                  for (var c = f ? b.getLast() : b.getFirst(); e.length;) e.shift().move(b, !f);d.moveChildren(b, !f);d.remove();
                  c && c.type == CKEDITOR.NODE_ELEMENT && c.mergeSiblings();
                }
              }
            }return function (b) {
              if (!1 === b || CKEDITOR.dtd.$removeEmpty[this.getName()] || this.is("a")) a(this, this.getNext(), !0), a(this, this.getPrevious());
            };
          }(), show: function () {
            this.setStyles({ display: "", visibility: "" });
          }, setAttribute: function () {
            var a = function (a, d) {
              this.$.setAttribute(a, d);return this;
            };return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (b, d) {
              "class" == b ? this.$.className = d : "style" == b ? this.$.style.cssText = d : "tabindex" == b ? this.$.tabIndex = d : "checked" == b ? this.$.checked = d : "contenteditable" == b ? a.call(this, "contentEditable", d) : a.apply(this, arguments);return this;
            } : CKEDITOR.env.ie8Compat && CKEDITOR.env.secure ? function (b, d) {
              if ("src" == b && d.match(/^http:\/\//)) try {
                a.apply(this, arguments);
              } catch (f) {} else a.apply(this, arguments);return this;
            } : a;
          }(), setAttributes: function (a) {
            for (var b in a) this.setAttribute(b, a[b]);return this;
          }, setValue: function (a) {
            this.$.value = a;return this;
          }, removeAttribute: function () {
            return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (a) {
              "class" == a ? a = "className" : "tabindex" == a ? a = "tabIndex" : "contenteditable" == a && (a = "contentEditable");this.$.removeAttribute(a);
            } : function (a) {
              this.$.removeAttribute(a);
            };
          }(), removeAttributes: function (a) {
            if (CKEDITOR.tools.isArray(a)) for (var b = 0; b < a.length; b++) this.removeAttribute(a[b]);else for (b in a = a || this.getAttributes(), a) a.hasOwnProperty(b) && this.removeAttribute(b);
          }, removeStyle: function (a) {
            var b = this.$.style;if (b.removeProperty || "border" != a && "margin" != a && "padding" != a) b.removeProperty ? b.removeProperty(a) : b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)), this.$.style.cssText || this.removeAttribute("style");else {
              var d = ["top", "left", "right", "bottom"],
                  f;"border" == a && (f = ["color", "style", "width"]);for (var b = [], e = 0; e < d.length; e++) if (f) for (var c = 0; c < f.length; c++) b.push([a, d[e], f[c]].join("-"));else b.push([a, d[e]].join("-"));for (a = 0; a < b.length; a++) this.removeStyle(b[a]);
            }
          }, setStyle: function (a, b) {
            this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)] = b;return this;
          }, setStyles: function (a) {
            for (var b in a) this.setStyle(b, a[b]);return this;
          }, setOpacity: function (a) {
            CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? (a = Math.round(100 * a), this.setStyle("filter", 100 <= a ? "" : "progid:DXImageTransform.Microsoft.Alpha(opacity\x3d" + a + ")")) : this.setStyle("opacity", a);
          }, unselectable: function () {
            this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "none"));if (CKEDITOR.env.ie) {
              this.setAttribute("unselectable", "on");for (var a, b = this.getElementsByTag("*"), d = 0, f = b.count(); d < f; d++) a = b.getItem(d), a.setAttribute("unselectable", "on");
            }
          }, getPositionedAncestor: function () {
            for (var a = this; "html" != a.getName();) {
              if ("static" != a.getComputedStyle("position")) return a;a = a.getParent();
            }return null;
          }, getDocumentPosition: function (a) {
            var b = 0,
                d = 0,
                f = this.getDocument(),
                e = f.getBody(),
                c = "BackCompat" == f.$.compatMode;if (document.documentElement.getBoundingClientRect && (CKEDITOR.env.ie ? 8 !== CKEDITOR.env.version : 1)) {
              var g = this.$.getBoundingClientRect(),
                  l = f.$.documentElement,
                  k = l.clientTop || e.$.clientTop || 0,
                  u = l.clientLeft || e.$.clientLeft || 0,
                  h = !0;CKEDITOR.env.ie && (h = f.getDocumentElement().contains(this), f = f.getBody().contains(this), h = c && f || !c && h);h && (CKEDITOR.env.webkit || CKEDITOR.env.ie && 12 <= CKEDITOR.env.version ? (b = e.$.scrollLeft || l.scrollLeft, d = e.$.scrollTop || l.scrollTop) : (d = c ? e.$ : l, b = d.scrollLeft, d = d.scrollTop), b = g.left + b - u, d = g.top + d - k);
            } else for (k = this, u = null; k && "body" != k.getName() && "html" != k.getName();) {
              b += k.$.offsetLeft - k.$.scrollLeft;d += k.$.offsetTop - k.$.scrollTop;k.equals(this) || (b += k.$.clientLeft || 0, d += k.$.clientTop || 0);for (; u && !u.equals(k);) b -= u.$.scrollLeft, d -= u.$.scrollTop, u = u.getParent();
              u = k;k = (g = k.$.offsetParent) ? new CKEDITOR.dom.element(g) : null;
            }a && (g = this.getWindow(), k = a.getWindow(), !g.equals(k) && g.$.frameElement && (a = new CKEDITOR.dom.element(g.$.frameElement).getDocumentPosition(a), b += a.x, d += a.y));document.documentElement.getBoundingClientRect || !CKEDITOR.env.gecko || c || (b += this.$.clientLeft ? 1 : 0, d += this.$.clientTop ? 1 : 0);return { x: b, y: d };
          }, scrollIntoView: function (a) {
            var b = this.getParent();if (b) {
              do if ((b.$.clientWidth && b.$.clientWidth < b.$.scrollWidth || b.$.clientHeight && b.$.clientHeight < b.$.scrollHeight) && !b.is("body") && this.scrollIntoParent(b, a, 1), b.is("html")) {
                var d = b.getWindow();try {
                  var f = d.$.frameElement;f && (b = new CKEDITOR.dom.element(f));
                } catch (e) {}
              } while (b = b.getParent());
            }
          }, scrollIntoParent: function (a, b, d) {
            var f, e, c, g;function l(f, b) {
              /body|html/.test(a.getName()) ? a.getWindow().$.scrollBy(f, b) : (a.$.scrollLeft += f, a.$.scrollTop += b);
            }function k(a, f) {
              var b = { x: 0, y: 0 };if (!a.is(h ? "body" : "html")) {
                var d = a.$.getBoundingClientRect();b.x = d.left;b.y = d.top;
              }d = a.getWindow();d.equals(f) || (d = k(CKEDITOR.dom.element.get(d.$.frameElement), f), b.x += d.x, b.y += d.y);return b;
            }function u(a, f) {
              return parseInt(a.getComputedStyle("margin-" + f) || 0, 10) || 0;
            }!a && (a = this.getWindow());c = a.getDocument();var h = "BackCompat" == c.$.compatMode;a instanceof CKEDITOR.dom.window && (a = h ? c.getBody() : c.getDocumentElement());CKEDITOR.env.webkit && (c = this.getEditor(!1)) && (c._.previousScrollTop = null);c = a.getWindow();e = k(this, c);var p = k(a, c),
                x = this.$.offsetHeight;f = this.$.offsetWidth;var v = a.$.clientHeight,
                q = a.$.clientWidth;c = e.x - u(this, "left") - p.x || 0;g = e.y - u(this, "top") - p.y || 0;f = e.x + f + u(this, "right") - (p.x + q) || 0;e = e.y + x + u(this, "bottom") - (p.y + v) || 0;(0 > g || 0 < e) && l(0, !0 === b ? g : !1 === b ? e : 0 > g ? g : e);d && (0 > c || 0 < f) && l(0 > c ? c : f, 0);
          }, setState: function (a, b, d) {
            b = b || "cke";switch (a) {case CKEDITOR.TRISTATE_ON:
                this.addClass(b + "_on");this.removeClass(b + "_off");this.removeClass(b + "_disabled");d && this.setAttribute("aria-pressed", !0);d && this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:
                this.addClass(b + "_disabled");this.removeClass(b + "_off");this.removeClass(b + "_on");
                d && this.setAttribute("aria-disabled", !0);d && this.removeAttribute("aria-pressed");break;default:
                this.addClass(b + "_off"), this.removeClass(b + "_on"), this.removeClass(b + "_disabled"), d && this.removeAttribute("aria-pressed"), d && this.removeAttribute("aria-disabled");}
          }, getFrameDocument: function () {
            var a = this.$;try {
              a.contentWindow.document;
            } catch (b) {
              a.src = a.src;
            }return a && new CKEDITOR.dom.document(a.contentWindow.document);
          }, copyAttributes: function (a, b) {
            var d = this.$.attributes;b = b || {};for (var f = 0; f < d.length; f++) {
              var e = d[f],
                  c = e.nodeName.toLowerCase(),
                  g;if (!(c in b)) if ("checked" == c && (g = this.getAttribute(c))) a.setAttribute(c, g);else if (!CKEDITOR.env.ie || this.hasAttribute(c)) g = this.getAttribute(c), null === g && (g = e.nodeValue), a.setAttribute(c, g);
            }"" !== this.$.style.cssText && (a.$.style.cssText = this.$.style.cssText);
          }, renameNode: function (a) {
            if (this.getName() != a) {
              var b = this.getDocument();a = new CKEDITOR.dom.element(a, b);this.copyAttributes(a);this.moveChildren(a);this.getParent(!0) && this.$.parentNode.replaceChild(a.$, this.$);
              a.$["data-cke-expando"] = this.$["data-cke-expando"];this.$ = a.$;delete this.getName;
            }
          }, getChild: function () {
            function a(b, d) {
              var f = b.childNodes;if (0 <= d && d < f.length) return f[d];
            }return function (b) {
              var d = this.$;if (b.slice) for (b = b.slice(); 0 < b.length && d;) d = a(d, b.shift());else d = a(d, b);return d ? new CKEDITOR.dom.node(d) : null;
            };
          }(), getChildCount: function () {
            return this.$.childNodes.length;
          }, disableContextMenu: function () {
            function a(b) {
              return b.type == CKEDITOR.NODE_ELEMENT && b.hasClass("cke_enable_context_menu");
            }this.on("contextmenu", function (b) {
              b.data.getTarget().getAscendant(a, !0) || b.data.preventDefault();
            });
          }, getDirection: function (a) {
            return a ? this.getComputedStyle("direction") || this.getDirection() || this.getParent() && this.getParent().getDirection(1) || this.getDocument().$.dir || "ltr" : this.getStyle("direction") || this.getAttribute("dir");
          }, data: function (a, b) {
            a = "data-" + a;if (void 0 === b) return this.getAttribute(a);!1 === b ? this.removeAttribute(a) : this.setAttribute(a, b);return null;
          }, getEditor: function (a) {
            var b = CKEDITOR.instances,
                d,
                f,
                e;a = a || void 0 === a;for (d in b) if (f = b[d], f.element.equals(this) && f.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO || !a && (e = f.editable()) && (e.equals(this) || e.contains(this))) return f;return null;
          }, find: function (a) {
            var b = h(this);a = new CKEDITOR.dom.nodeList(this.$.querySelectorAll(g(this, a)));b();return a;
          }, findOne: function (a) {
            var b = h(this);a = this.$.querySelector(g(this, a));b();return a ? new CKEDITOR.dom.element(a) : null;
          }, forEach: function (a, b, d) {
            if (!(d || b && this.type != b)) var f = a(this);if (!1 !== f) {
              d = this.getChildren();
              for (var e = 0; e < d.count(); e++) f = d.getItem(e), f.type == CKEDITOR.NODE_ELEMENT ? f.forEach(a, b) : b && f.type != b || a(f);
            }
          }, fireEventHandler: function (a, b) {
            var d = "on" + a,
                f = this.$;if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) {
              var e = f.ownerDocument.createEventObject(),
                  c;for (c in b) e[c] = b[c];f.fireEvent(d, e);
            } else f[f[a] ? a : d](b);
          }, isDetached: function () {
            var a = this.getDocument(),
                b = a.getDocumentElement();return b.equals(this) || b.contains(this) ? !CKEDITOR.env.ie || 8 < CKEDITOR.env.version && !CKEDITOR.env.quirks ? !a.$.defaultView : !1 : !0;
          } });var k = { width: ["border-left-width", "border-right-width", "padding-left", "padding-right"], height: ["border-top-width", "border-bottom-width", "padding-top", "padding-bottom"] };CKEDITOR.dom.element.prototype.setSize = function (e, b, d) {
          "number" == typeof b && (!d || CKEDITOR.env.ie && CKEDITOR.env.quirks || (b -= a.call(this, e)), this.setStyle(e, b + "px"));
        };CKEDITOR.dom.element.prototype.getSize = function (e, b) {
          var d = Math.max(this.$["offset" + CKEDITOR.tools.capitalize(e)], this.$["client" + CKEDITOR.tools.capitalize(e)]) || 0;b && (d -= a.call(this, e));return d;
        };
      }(), CKEDITOR.dom.documentFragment = function (c) {
        c = c || CKEDITOR.document;this.$ = c.type == CKEDITOR.NODE_DOCUMENT ? c.$.createDocumentFragment() : c;
      }, CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype, CKEDITOR.dom.element.prototype, { type: CKEDITOR.NODE_DOCUMENT_FRAGMENT, insertAfterNode: function (c) {
          c = c.$;c.parentNode.insertBefore(this.$, c.nextSibling);
        }, getHtml: function () {
          var c = new CKEDITOR.dom.element("div");this.clone(1, 1).appendTo(c);return c.getHtml().replace(/\s*data-cke-expando=".*?"/g, "");
        } }, !0, { append: 1, appendBogus: 1, clone: 1, getFirst: 1, getHtml: 1, getLast: 1, getParent: 1, getNext: 1, getPrevious: 1, appendTo: 1, moveChildren: 1, insertBefore: 1, insertAfterNode: 1, replace: 1, trim: 1, type: 1, ltrim: 1, rtrim: 1, getDocument: 1, getChildCount: 1, getChild: 1, getChildren: 1 }), CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype, CKEDITOR.dom.document.prototype, !0, { find: 1, findOne: 1 }), function () {
        function c(a, f) {
          var b = this.range;if (this._.end) return null;if (!this._.start) {
            this._.start = 1;if (b.collapsed) return this.end(), null;b.optimize();
          }var d,
              e = b.startContainer;d = b.endContainer;var c = b.startOffset,
              g = b.endOffset,
              n,
              l = this.guard,
              k = this.type,
              h = a ? "getPreviousSourceNode" : "getNextSourceNode";if (!a && !this._.guardLTR) {
            var m = d.type == CKEDITOR.NODE_ELEMENT ? d : d.getParent(),
                F = d.type == CKEDITOR.NODE_ELEMENT ? d.getChild(g) : d.getNext();this._.guardLTR = function (a, f) {
              return (!f || !m.equals(a)) && (!F || !a.equals(F)) && (a.type != CKEDITOR.NODE_ELEMENT || !f || !a.equals(b.root));
            };
          }if (a && !this._.guardRTL) {
            var B = e.type == CKEDITOR.NODE_ELEMENT ? e : e.getParent(),
                G = e.type == CKEDITOR.NODE_ELEMENT ? c ? e.getChild(c - 1) : null : e.getPrevious();this._.guardRTL = function (a, f) {
              return (!f || !B.equals(a)) && (!G || !a.equals(G)) && (a.type != CKEDITOR.NODE_ELEMENT || !f || !a.equals(b.root));
            };
          }var E = a ? this._.guardRTL : this._.guardLTR;n = l ? function (a, f) {
            return !1 === E(a, f) ? !1 : l(a, f);
          } : E;this.current ? d = this.current[h](!1, k, n) : (a ? d.type == CKEDITOR.NODE_ELEMENT && (d = 0 < g ? d.getChild(g - 1) : !1 === n(d, !0) ? null : d.getPreviousSourceNode(!0, k, n)) : (d = e, d.type == CKEDITOR.NODE_ELEMENT && ((d = d.getChild(c)) || (d = !1 === n(e, !0) ? null : e.getNextSourceNode(!0, k, n)))), d && !1 === n(d) && (d = null));for (; d && !this._.end;) {
            this.current = d;if (!this.evaluator || !1 !== this.evaluator(d)) {
              if (!f) return d;
            } else if (f && this.evaluator) return !1;d = d[h](!1, k, n);
          }this.end();return this.current = null;
        }function h(a) {
          for (var f, b = null; f = c.call(this, a);) b = f;return b;
        }CKEDITOR.dom.walker = CKEDITOR.tools.createClass({ $: function (a) {
            this.range = a;this._ = {};
          }, proto: { end: function () {
              this._.end = 1;
            }, next: function () {
              return c.call(this);
            }, previous: function () {
              return c.call(this, 1);
            }, checkForward: function () {
              return !1 !== c.call(this, 0, 1);
            }, checkBackward: function () {
              return !1 !== c.call(this, 1, 1);
            }, lastForward: function () {
              return h.call(this);
            }, lastBackward: function () {
              return h.call(this, 1);
            }, reset: function () {
              delete this.current;this._ = {};
            } } });var g = { block: 1, "list-item": 1, table: 1, "table-row-group": 1, "table-header-group": 1, "table-footer-group": 1, "table-row": 1, "table-column-group": 1, "table-column": 1, "table-cell": 1, "table-caption": 1 },
            a = { absolute: 1, fixed: 1 };CKEDITOR.dom.element.prototype.isBlockBoundary = function (f) {
          return "none" != this.getComputedStyle("float") || this.getComputedStyle("position") in a || !g[this.getComputedStyle("display")] ? !!(this.is(CKEDITOR.dtd.$block) || f && this.is(f)) : !0;
        };CKEDITOR.dom.walker.blockBoundary = function (a) {
          return function (f) {
            return !(f.type == CKEDITOR.NODE_ELEMENT && f.isBlockBoundary(a));
          };
        };CKEDITOR.dom.walker.listItemBoundary = function () {
          return this.blockBoundary({ br: 1 });
        };CKEDITOR.dom.walker.bookmark = function (a, f) {
          function b(a) {
            return a && a.getName && "span" == a.getName() && a.data("cke-bookmark");
          }
          return function (d) {
            var e, c;e = d && d.type != CKEDITOR.NODE_ELEMENT && (c = d.getParent()) && b(c);e = a ? e : e || b(d);return !!(f ^ e);
          };
        };CKEDITOR.dom.walker.whitespaces = function (a) {
          return function (f) {
            var b;f && f.type == CKEDITOR.NODE_TEXT && (b = !CKEDITOR.tools.trim(f.getText()) || CKEDITOR.env.webkit && f.getText() == CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE);return !!(a ^ b);
          };
        };CKEDITOR.dom.walker.invisible = function (a) {
          var f = CKEDITOR.dom.walker.whitespaces(),
              b = CKEDITOR.env.webkit ? 1 : 0;return function (d) {
            f(d) ? d = 1 : (d.type == CKEDITOR.NODE_TEXT && (d = d.getParent()), d = d.$.offsetWidth <= b);return !!(a ^ d);
          };
        };CKEDITOR.dom.walker.nodeType = function (a, f) {
          return function (b) {
            return !!(f ^ b.type == a);
          };
        };CKEDITOR.dom.walker.bogus = function (a) {
          function f(a) {
            return !l(a) && !k(a);
          }return function (b) {
            var d = CKEDITOR.env.needsBrFiller ? b.is && b.is("br") : b.getText && e.test(b.getText());d && (d = b.getParent(), b = b.getNext(f), d = d.isBlockBoundary() && (!b || b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()));return !!(a ^ d);
          };
        };CKEDITOR.dom.walker.temp = function (a) {
          return function (f) {
            f.type != CKEDITOR.NODE_ELEMENT && (f = f.getParent());f = f && f.hasAttribute("data-cke-temp");return !!(a ^ f);
          };
        };var e = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/,
            l = CKEDITOR.dom.walker.whitespaces(),
            k = CKEDITOR.dom.walker.bookmark(),
            m = CKEDITOR.dom.walker.temp(),
            b = function (a) {
          return k(a) || l(a) || a.type == CKEDITOR.NODE_ELEMENT && a.is(CKEDITOR.dtd.$inline) && !a.is(CKEDITOR.dtd.$empty);
        };CKEDITOR.dom.walker.ignored = function (a) {
          return function (f) {
            f = l(f) || k(f) || m(f);return !!(a ^ f);
          };
        };var d = CKEDITOR.dom.walker.ignored();CKEDITOR.dom.walker.empty = function (a) {
          return function (f) {
            for (var b = 0, e = f.getChildCount(); b < e; ++b) if (!d(f.getChild(b))) return !!a;return !a;
          };
        };var f = CKEDITOR.dom.walker.empty(),
            n = CKEDITOR.dom.walker.validEmptyBlockContainers = CKEDITOR.tools.extend(function (a) {
          var f = {},
              b;for (b in a) CKEDITOR.dtd[b]["#"] && (f[b] = 1);return f;
        }(CKEDITOR.dtd.$block), { caption: 1, td: 1, th: 1 });CKEDITOR.dom.walker.editable = function (a) {
          return function (b) {
            b = d(b) ? !1 : b.type == CKEDITOR.NODE_TEXT || b.type == CKEDITOR.NODE_ELEMENT && (b.is(CKEDITOR.dtd.$inline) || b.is("hr") || "false" == b.getAttribute("contenteditable") || !CKEDITOR.env.needsBrFiller && b.is(n) && f(b)) ? !0 : !1;return !!(a ^ b);
          };
        };CKEDITOR.dom.element.prototype.getBogus = function () {
          var a = this;do a = a.getPreviousSourceNode(); while (b(a));return a && (CKEDITOR.env.needsBrFiller ? a.is && a.is("br") : a.getText && e.test(a.getText())) ? a : !1;
        };
      }(), "use strict", CKEDITOR.dom.range = function (c) {
        this.endOffset = this.endContainer = this.startOffset = this.startContainer = null;this.collapsed = !0;var h = c instanceof CKEDITOR.dom.document;this.document = h ? c : c.getDocument();this.root = h ? c.getBody() : c;
      }, function () {
        function c(a) {
          a.collapsed = a.startContainer && a.endContainer && a.startContainer.equals(a.endContainer) && a.startOffset == a.endOffset;
        }function h(a, b, d, e, c) {
          function g(a, f, b, d) {
            var e = b ? a.getPrevious() : a.getNext();if (d && h) return e;v || d ? f.append(a.clone(!0, c), b) : (a.remove(), m && f.append(a, b));return e;
          }function l() {
            var a,
                f,
                b,
                d = Math.min(I.length, D.length);for (a = 0; a < d; a++) if (f = I[a], b = D[a], !f.equals(b)) return a;return a - 1;
          }function k() {
            var b = P - 1,
                d = E && K && !q.equals(y);b < L - 1 || b < O - 1 || d ? (d ? a.moveToPosition(y, CKEDITOR.POSITION_BEFORE_START) : O == b + 1 && G ? a.moveToPosition(D[b], CKEDITOR.POSITION_BEFORE_END) : a.moveToPosition(D[b + 1], CKEDITOR.POSITION_BEFORE_START), e && (b = I[b + 1]) && b.type == CKEDITOR.NODE_ELEMENT && (d = CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e', a.document), d.insertAfter(b), b.mergeSiblings(!1), a.moveToBookmark({ startNode: d }))) : a.collapse(!0);
          }a.optimizeBookmark();var h = 0 === b,
              m = 1 == b,
              v = 2 == b;b = v || m;var q = a.startContainer,
              y = a.endContainer,
              A = a.startOffset,
              F = a.endOffset,
              B,
              G,
              E,
              K,
              H,
              M;if (v && y.type == CKEDITOR.NODE_TEXT && (q.equals(y) || q.type === CKEDITOR.NODE_ELEMENT && q.getFirst().equals(y))) d.append(a.document.createText(y.substring(A, F)));else {
            y.type == CKEDITOR.NODE_TEXT ? v ? M = !0 : y = y.split(F) : 0 < y.getChildCount() ? F >= y.getChildCount() ? (y = y.getChild(F - 1), G = !0) : y = y.getChild(F) : K = G = !0;q.type == CKEDITOR.NODE_TEXT ? v ? H = !0 : q.split(A) : 0 < q.getChildCount() ? 0 === A ? (q = q.getChild(A), B = !0) : q = q.getChild(A - 1) : E = B = !0;for (var I = q.getParents(), D = y.getParents(), P = l(), L = I.length - 1, O = D.length - 1, N = d, V, S, U, da = -1, T = P; T <= L; T++) {
              S = I[T];U = S.getNext();for (T != L || S.equals(D[T]) && L < O ? b && (V = N.append(S.clone(0, c))) : B ? g(S, N, !1, E) : H && N.append(a.document.createText(S.substring(A))); U;) {
                if (U.equals(D[T])) {
                  da = T;break;
                }U = g(U, N);
              }N = V;
            }N = d;for (T = P; T <= O; T++) if (d = D[T], U = d.getPrevious(), d.equals(I[T])) b && (N = N.getChild(0));else {
              T != O || d.equals(I[T]) && O < L ? b && (V = N.append(d.clone(0, c))) : G ? g(d, N, !1, K) : M && N.append(a.document.createText(d.substring(0, F)));if (T > da) for (; U;) U = g(U, N, !0);N = V;
            }v || k();
          }
        }function g() {
          var a = !1,
              b = CKEDITOR.dom.walker.whitespaces(),
              d = CKEDITOR.dom.walker.bookmark(!0),
              e = CKEDITOR.dom.walker.bogus();return function (c) {
            return d(c) || b(c) ? !0 : e(c) && !a ? a = !0 : c.type == CKEDITOR.NODE_TEXT && (c.hasAscendant("pre") || CKEDITOR.tools.trim(c.getText()).length) || c.type == CKEDITOR.NODE_ELEMENT && !c.is(l) ? !1 : !0;
          };
        }function a(a) {
          var b = CKEDITOR.dom.walker.whitespaces(),
              d = CKEDITOR.dom.walker.bookmark(1);return function (e) {
            return d(e) || b(e) ? !0 : !a && k(e) || e.type == CKEDITOR.NODE_ELEMENT && e.is(CKEDITOR.dtd.$removeEmpty);
          };
        }function e(a) {
          return function () {
            var e;return this[a ? "getPreviousNode" : "getNextNode"](function (a) {
              !e && d(a) && (e = a);return b(a) && !(k(a) && a.equals(e));
            });
          };
        }var l = { abbr: 1, acronym: 1, b: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, label: 1, kbd: 1, q: 1, samp: 1, small: 1, span: 1, strike: 1, strong: 1, sub: 1, sup: 1, tt: 1, u: 1, "var": 1 },
            k = CKEDITOR.dom.walker.bogus(),
            m = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/,
            b = CKEDITOR.dom.walker.editable(),
            d = CKEDITOR.dom.walker.ignored(!0);
        CKEDITOR.dom.range.prototype = { clone: function () {
            var a = new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset = this.startOffset;a._setEndContainer(this.endContainer);a.endOffset = this.endOffset;a.collapsed = this.collapsed;return a;
          }, collapse: function (a) {
            a ? (this._setEndContainer(this.startContainer), this.endOffset = this.startOffset) : (this._setStartContainer(this.endContainer), this.startOffset = this.endOffset);this.collapsed = !0;
          }, cloneContents: function (a) {
            var b = new CKEDITOR.dom.documentFragment(this.document);
            this.collapsed || h(this, 2, b, !1, "undefined" == typeof a ? !0 : a);return b;
          }, deleteContents: function (a) {
            this.collapsed || h(this, 0, null, a);
          }, extractContents: function (a, b) {
            var d = new CKEDITOR.dom.documentFragment(this.document);this.collapsed || h(this, 1, d, a, "undefined" == typeof b ? !0 : b);return d;
          }, equals: function (a) {
            return this.startOffset === a.startOffset && this.endOffset === a.endOffset && this.startContainer.equals(a.startContainer) && this.endContainer.equals(a.endContainer);
          }, createBookmark: function (a) {
            function b(a) {
              return a.getAscendant(function (a) {
                var f;
                if (f = a.data && a.data("cke-temp")) f = -1 === CKEDITOR.tools.array.indexOf(["cke_copybin", "cke_pastebin"], a.getAttribute("id"));return f;
              }, !0);
            }var d = this.startContainer,
                e = this.endContainer,
                c = this.collapsed,
                g,
                l,
                k,
                h;g = this.document.createElement("span");g.data("cke-bookmark", 1);g.setStyle("display", "none");g.setHtml("\x26nbsp;");a && (k = "cke_bm_" + CKEDITOR.tools.getNextNumber(), g.setAttribute("id", k + (c ? "C" : "S")));c || (l = g.clone(), l.setHtml("\x26nbsp;"), a && l.setAttribute("id", k + "E"), h = this.clone(), b(e) && (e = b(e), h.moveToPosition(e, CKEDITOR.POSITION_AFTER_END)), h.collapse(), h.insertNode(l));h = this.clone();b(d) && (e = b(d), h.moveToPosition(e, CKEDITOR.POSITION_BEFORE_START));h.collapse(!0);h.insertNode(g);l ? (this.setStartAfter(g), this.setEndBefore(l)) : this.moveToPosition(g, CKEDITOR.POSITION_AFTER_END);return { startNode: a ? k + (c ? "C" : "S") : g, endNode: a ? k + "E" : l, serializable: a, collapsed: c };
          }, createBookmark2: function () {
            function a(f) {
              var b = f.container,
                  e = f.offset,
                  c;c = b;var g = e;c = c.type != CKEDITOR.NODE_ELEMENT || 0 === g || g == c.getChildCount() ? 0 : c.getChild(g - 1).type == CKEDITOR.NODE_TEXT && c.getChild(g).type == CKEDITOR.NODE_TEXT;c && (b = b.getChild(e - 1), e = b.getLength());if (b.type == CKEDITOR.NODE_ELEMENT && 0 < e) {
                a: {
                  for (c = b; e--;) if (g = c.getChild(e).getIndex(!0), 0 <= g) {
                    e = g;break a;
                  }e = -1;
                }e += 1;
              }if (b.type == CKEDITOR.NODE_TEXT) {
                c = b;for (g = 0; (c = c.getPrevious()) && c.type == CKEDITOR.NODE_TEXT;) g += c.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE, "").length;c = g;b.isEmpty() ? (g = b.getPrevious(d), c ? (e = c, b = g ? g.getNext() : b.getParent().getFirst()) : (b = b.getParent(), e = g ? g.getIndex(!0) + 1 : 0)) : e += c;
              }f.container = b;f.offset = e;
            }function b(a, f) {
              var d = f.getCustomData("cke-fillingChar");if (d) {
                var e = a.container;d.equals(e) && (a.offset -= CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length, 0 >= a.offset && (a.offset = e.getIndex(), a.container = e.getParent()));
              }
            }var d = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT, !0);return function (d) {
              var e = this.collapsed,
                  c = { container: this.startContainer, offset: this.startOffset },
                  g = { container: this.endContainer, offset: this.endOffset };d && (a(c), b(c, this.root), e || (a(g), b(g, this.root)));return { start: c.container.getAddress(d), end: e ? null : g.container.getAddress(d), startOffset: c.offset, endOffset: g.offset, normalized: d, collapsed: e, is2: !0 };
            };
          }(), moveToBookmark: function (a) {
            if (a.is2) {
              var b = this.document.getByAddress(a.start, a.normalized),
                  d = a.startOffset,
                  e = a.end && this.document.getByAddress(a.end, a.normalized);a = a.endOffset;this.setStart(b, d);e ? this.setEnd(e, a) : this.collapse(!0);
            } else b = (d = a.serializable) ? this.document.getById(a.startNode) : a.startNode, a = d ? this.document.getById(a.endNode) : a.endNode, this.setStartBefore(b), b.remove(), a ? (this.setEndBefore(a), a.remove()) : this.collapse(!0);
          }, getBoundaryNodes: function () {
            var a = this.startContainer,
                b = this.endContainer,
                d = this.startOffset,
                e = this.endOffset,
                c;if (a.type == CKEDITOR.NODE_ELEMENT) if (c = a.getChildCount(), c > d) a = a.getChild(d);else if (1 > c) a = a.getPreviousSourceNode();else {
              for (a = a.$; a.lastChild;) a = a.lastChild;a = new CKEDITOR.dom.node(a);a = a.getNextSourceNode() || a;
            }if (b.type == CKEDITOR.NODE_ELEMENT) if (c = b.getChildCount(), c > e) b = b.getChild(e).getPreviousSourceNode(!0);else if (1 > c) b = b.getPreviousSourceNode();else {
              for (b = b.$; b.lastChild;) b = b.lastChild;b = new CKEDITOR.dom.node(b);
            }a.getPosition(b) & CKEDITOR.POSITION_FOLLOWING && (a = b);return { startNode: a, endNode: b };
          }, getCommonAncestor: function (a, b) {
            var d = this.startContainer,
                e = this.endContainer,
                d = d.equals(e) ? a && d.type == CKEDITOR.NODE_ELEMENT && this.startOffset == this.endOffset - 1 ? d.getChild(this.startOffset) : d : d.getCommonAncestor(e);return b && !d.is ? d.getParent() : d;
          }, optimize: function () {
            var a = this.startContainer,
                b = this.startOffset;
            a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setStartAfter(a) : this.setStartBefore(a));a = this.endContainer;b = this.endOffset;a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setEndAfter(a) : this.setEndBefore(a));
          }, optimizeBookmark: function () {
            var a = this.startContainer,
                b = this.endContainer;a.is && a.is("span") && a.data("cke-bookmark") && this.setStartAt(a, CKEDITOR.POSITION_BEFORE_START);b && b.is && b.is("span") && b.data("cke-bookmark") && this.setEndAt(b, CKEDITOR.POSITION_AFTER_END);
          }, trim: function (a, b) {
            var d = this.startContainer,
                e = this.startOffset,
                c = this.collapsed;if ((!a || c) && d && d.type == CKEDITOR.NODE_TEXT) {
              if (e) {
                if (e >= d.getLength()) e = d.getIndex() + 1, d = d.getParent();else {
                  var g = d.split(e),
                      e = d.getIndex() + 1,
                      d = d.getParent();this.startContainer.equals(this.endContainer) ? this.setEnd(g, this.endOffset - this.startOffset) : d.equals(this.endContainer) && (this.endOffset += 1);
                }
              } else e = d.getIndex(), d = d.getParent();this.setStart(d, e);if (c) {
                this.collapse(!0);return;
              }
            }d = this.endContainer;e = this.endOffset;b || c || !d || d.type != CKEDITOR.NODE_TEXT || (e ? (e >= d.getLength() || d.split(e), e = d.getIndex() + 1) : e = d.getIndex(), d = d.getParent(), this.setEnd(d, e));
          }, enlarge: function (a, b) {
            function d(a) {
              return a && a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable") ? null : a;
            }function e(a, f, b) {
              var d = new CKEDITOR.dom.range(b);d.setStart(a, f);d.setEndAt(b, CKEDITOR.POSITION_BEFORE_END);b = new CKEDITOR.dom.walker(d);for (b.guard = function (a) {
                return !(a.type == CKEDITOR.NODE_ELEMENT && a.isBlockBoundary());
              }; d = b.next();) {
                if (d.type != CKEDITOR.NODE_TEXT) return !1;
                g = d != a ? d.getText() : d.substring(f);if (c.test(g)) return !1;
              }return !0;
            }var c = new RegExp(/[^\s\ufeff]/),
                g,
                l;switch (a) {case CKEDITOR.ENLARGE_INLINE:
                var k = 1;case CKEDITOR.ENLARGE_ELEMENT:
                if (this.collapsed) break;var h = this.getCommonAncestor();l = this.root;var m,
                    v,
                    q,
                    y,
                    A,
                    F = !1,
                    B;B = this.startContainer;var G = this.startOffset;B.type == CKEDITOR.NODE_TEXT ? (G && (B = !CKEDITOR.tools.trim(B.substring(0, G)).length && B, F = !!B), B && ((y = B.getPrevious()) || (q = B.getParent()))) : (G && (y = B.getChild(G - 1) || B.getLast()), y || (q = B));for (q = d(q); q || y;) {
                  if (q && !y) {
                    !A && q.equals(h) && (A = !0);if (k ? q.isBlockBoundary() : !l.contains(q)) break;F && "inline" == q.getComputedStyle("display") || (F = !1, A ? m = q : this.setStartBefore(q));y = q.getPrevious();
                  }for (; y;) if (B = !1, y.type == CKEDITOR.NODE_COMMENT) y = y.getPrevious();else {
                    if (y.type == CKEDITOR.NODE_TEXT) g = y.getText(), c.test(g) && (y = null), B = /[\s\ufeff]$/.test(g);else if ((y.$.offsetWidth > (CKEDITOR.env.webkit ? 1 : 0) || b && y.is("br")) && !y.data("cke-bookmark")) if (F && CKEDITOR.dtd.$removeEmpty[y.getName()]) {
                      g = y.getText();if (c.test(g)) y = null;else for (var G = y.$.getElementsByTagName("*"), E = 0, K; K = G[E++];) if (!CKEDITOR.dtd.$removeEmpty[K.nodeName.toLowerCase()]) {
                        y = null;break;
                      }y && (B = !!g.length);
                    } else y = null;B && (F ? A ? m = q : q && this.setStartBefore(q) : F = !0);if (y) {
                      B = y.getPrevious();if (!q && !B) {
                        q = y;y = null;break;
                      }y = B;
                    } else q = null;
                  }q && (q = d(q.getParent()));
                }B = this.endContainer;G = this.endOffset;q = y = null;A = F = !1;B.type == CKEDITOR.NODE_TEXT ? CKEDITOR.tools.trim(B.substring(G)).length ? F = !0 : (F = !B.getLength(), G == B.getLength() ? (y = B.getNext()) || (q = B.getParent()) : e(B, G, l) && (q = B.getParent())) : (y = B.getChild(G)) || (q = B);for (; q || y;) {
                  if (q && !y) {
                    !A && q.equals(h) && (A = !0);if (k ? q.isBlockBoundary() : !l.contains(q)) break;F && "inline" == q.getComputedStyle("display") || (F = !1, A ? v = q : q && this.setEndAfter(q));y = q.getNext();
                  }for (; y;) {
                    B = !1;if (y.type == CKEDITOR.NODE_TEXT) g = y.getText(), e(y, 0, l) || (y = null), B = /^[\s\ufeff]/.test(g);else if (y.type == CKEDITOR.NODE_ELEMENT) {
                      if ((0 < y.$.offsetWidth || b && y.is("br")) && !y.data("cke-bookmark")) if (F && CKEDITOR.dtd.$removeEmpty[y.getName()]) {
                        g = y.getText();if (c.test(g)) y = null;else for (G = y.$.getElementsByTagName("*"), E = 0; K = G[E++];) if (!CKEDITOR.dtd.$removeEmpty[K.nodeName.toLowerCase()]) {
                          y = null;break;
                        }y && (B = !!g.length);
                      } else y = null;
                    } else B = 1;B && F && (A ? v = q : this.setEndAfter(q));if (y) {
                      B = y.getNext();if (!q && !B) {
                        q = y;y = null;break;
                      }y = B;
                    } else q = null;
                  }q && (q = d(q.getParent()));
                }m && v && (h = m.contains(v) ? v : m, this.setStartBefore(h), this.setEndAfter(h));break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:
                q = new CKEDITOR.dom.range(this.root);l = this.root;q.setStartAt(l, CKEDITOR.POSITION_AFTER_START);q.setEnd(this.startContainer, this.startOffset);q = new CKEDITOR.dom.walker(q);var H,
                    M,
                    I = CKEDITOR.dom.walker.blockBoundary(a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? { br: 1 } : null),
                    D = null,
                    P = function (a) {
                  if (a.type == CKEDITOR.NODE_ELEMENT && "false" == a.getAttribute("contenteditable")) {
                    if (D) {
                      if (D.equals(a)) {
                        D = null;return;
                      }
                    } else D = a;
                  } else if (D) return;var f = I(a);f || (H = a);return f;
                },
                    k = function (a) {
                  var f = P(a);!f && a.is && a.is("br") && (M = a);return f;
                };q.guard = P;q = q.lastBackward();H = H || l;this.setStartAt(H, !H.is("br") && (!q && this.checkStartOfBlock() || q && H.contains(q)) ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_AFTER_END);if (a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS) {
                  q = this.clone();q = new CKEDITOR.dom.walker(q);var L = CKEDITOR.dom.walker.whitespaces(),
                      O = CKEDITOR.dom.walker.bookmark();q.evaluator = function (a) {
                    return !L(a) && !O(a);
                  };if ((q = q.previous()) && q.type == CKEDITOR.NODE_ELEMENT && q.is("br")) break;
                }q = this.clone();q.collapse();q.setEndAt(l, CKEDITOR.POSITION_BEFORE_END);q = new CKEDITOR.dom.walker(q);q.guard = a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? k : P;H = D = M = null;q = q.lastForward();H = H || l;this.setEndAt(H, !q && this.checkEndOfBlock() || q && H.contains(q) ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_BEFORE_START);M && this.setEndAfter(M);}
          }, shrink: function (a, b, d) {
            var e = "boolean" === typeof d ? d : d && "boolean" === typeof d.shrinkOnBlockBoundary ? d.shrinkOnBlockBoundary : !0,
                c = d && d.skipBogus;if (!this.collapsed) {
              a = a || CKEDITOR.SHRINK_TEXT;var g = this.clone(),
                  l = this.startContainer,
                  k = this.endContainer,
                  h = this.startOffset,
                  m = this.endOffset,
                  v = d = 1;l && l.type == CKEDITOR.NODE_TEXT && (h ? h >= l.getLength() ? g.setStartAfter(l) : (g.setStartBefore(l), d = 0) : g.setStartBefore(l));k && k.type == CKEDITOR.NODE_TEXT && (m ? m >= k.getLength() ? g.setEndAfter(k) : (g.setEndAfter(k), v = 0) : g.setEndBefore(k));var g = new CKEDITOR.dom.walker(g),
                  q = CKEDITOR.dom.walker.bookmark(),
                  y = CKEDITOR.dom.walker.bogus();g.evaluator = function (b) {
                return b.type == (a == CKEDITOR.SHRINK_ELEMENT ? CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT);
              };var A;g.guard = function (b, d) {
                if (c && y(b) || q(b)) return !0;if (a == CKEDITOR.SHRINK_ELEMENT && b.type == CKEDITOR.NODE_TEXT || d && b.equals(A) || !1 === e && b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary() || b.type == CKEDITOR.NODE_ELEMENT && b.hasAttribute("contenteditable")) return !1;d || b.type != CKEDITOR.NODE_ELEMENT || (A = b);return !0;
              };d && (l = g[a == CKEDITOR.SHRINK_ELEMENT ? "lastForward" : "next"]()) && this.setStartAt(l, b ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_START);v && (g.reset(), (g = g[a == CKEDITOR.SHRINK_ELEMENT ? "lastBackward" : "previous"]()) && this.setEndAt(g, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_END));
              return !(!d && !v);
            }
          }, insertNode: function (a) {
            this.optimizeBookmark();this.trim(!1, !0);var b = this.startContainer,
                d = b.getChild(this.startOffset);d ? a.insertBefore(d) : b.append(a);a.getParent() && a.getParent().equals(this.endContainer) && this.endOffset++;this.setStartBefore(a);
          }, moveToPosition: function (a, b) {
            this.setStartAt(a, b);this.collapse(!0);
          }, moveToRange: function (a) {
            this.setStart(a.startContainer, a.startOffset);this.setEnd(a.endContainer, a.endOffset);
          }, selectNodeContents: function (a) {
            this.setStart(a, 0);this.setEnd(a, a.type == CKEDITOR.NODE_TEXT ? a.getLength() : a.getChildCount());
          }, setStart: function (a, b) {
            a.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[a.getName()] && (b = a.getIndex(), a = a.getParent());this._setStartContainer(a);this.startOffset = b;this.endContainer || (this._setEndContainer(a), this.endOffset = b);c(this);
          }, setEnd: function (a, b) {
            a.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[a.getName()] && (b = a.getIndex() + 1, a = a.getParent());this._setEndContainer(a);this.endOffset = b;this.startContainer || (this._setStartContainer(a), this.startOffset = b);c(this);
          }, setStartAfter: function (a) {
            this.setStart(a.getParent(), a.getIndex() + 1);
          }, setStartBefore: function (a) {
            this.setStart(a.getParent(), a.getIndex());
          }, setEndAfter: function (a) {
            this.setEnd(a.getParent(), a.getIndex() + 1);
          }, setEndBefore: function (a) {
            this.setEnd(a.getParent(), a.getIndex());
          }, setStartAt: function (a, b) {
            switch (b) {case CKEDITOR.POSITION_AFTER_START:
                this.setStart(a, 0);break;case CKEDITOR.POSITION_BEFORE_END:
                a.type == CKEDITOR.NODE_TEXT ? this.setStart(a, a.getLength()) : this.setStart(a, a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:
                this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:
                this.setStartAfter(a);}c(this);
          }, setEndAt: function (a, b) {
            switch (b) {case CKEDITOR.POSITION_AFTER_START:
                this.setEnd(a, 0);break;case CKEDITOR.POSITION_BEFORE_END:
                a.type == CKEDITOR.NODE_TEXT ? this.setEnd(a, a.getLength()) : this.setEnd(a, a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:
                this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:
                this.setEndAfter(a);}c(this);
          }, fixBlock: function (a, b) {
            var d = this.createBookmark(),
                e = this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(e);e.trim();this.insertNode(e);var c = e.getBogus();c && c.remove();e.appendBogus();this.moveToBookmark(d);return e;
          }, splitBlock: function (a, b) {
            var d = new CKEDITOR.dom.elementPath(this.startContainer, this.root),
                e = new CKEDITOR.dom.elementPath(this.endContainer, this.root),
                c = d.block,
                g = e.block,
                l = null;if (!d.blockLimit.equals(e.blockLimit)) return null;"br" != a && (c || (c = this.fixBlock(!0, a), g = new CKEDITOR.dom.elementPath(this.endContainer, this.root).block), g || (g = this.fixBlock(!1, a)));d = c && this.checkStartOfBlock();e = g && this.checkEndOfBlock();this.deleteContents();c && c.equals(g) && (e ? (l = new CKEDITOR.dom.elementPath(this.startContainer, this.root), this.moveToPosition(g, CKEDITOR.POSITION_AFTER_END), g = null) : d ? (l = new CKEDITOR.dom.elementPath(this.startContainer, this.root), this.moveToPosition(c, CKEDITOR.POSITION_BEFORE_START), c = null) : (g = this.splitElement(c, b || !1), c.is("ul", "ol") || c.appendBogus()));return { previousBlock: c, nextBlock: g, wasStartOfBlock: d, wasEndOfBlock: e, elementPath: l };
          }, splitElement: function (a, b) {
            if (!this.collapsed) return null;this.setEndAt(a, CKEDITOR.POSITION_BEFORE_END);var d = this.extractContents(!1, b || !1),
                e = a.clone(!1, b || !1);d.appendTo(e);e.insertAfter(a);this.moveToPosition(a, CKEDITOR.POSITION_AFTER_END);return e;
          }, removeEmptyBlocksAtEnd: function () {
            function a(f) {
              return function (a) {
                return b(a) || d(a) || a.type == CKEDITOR.NODE_ELEMENT && a.isEmptyInlineRemoveable() || f.is("table") && a.is("caption") ? !1 : !0;
              };
            }var b = CKEDITOR.dom.walker.whitespaces(),
                d = CKEDITOR.dom.walker.bookmark(!1);return function (b) {
              for (var d = this.createBookmark(), e = this[b ? "endPath" : "startPath"](), c = e.block || e.blockLimit, g; c && !c.equals(e.root) && !c.getFirst(a(c));) g = c.getParent(), this[b ? "setEndAt" : "setStartAt"](c, CKEDITOR.POSITION_AFTER_END), c.remove(1), c = g;this.moveToBookmark(d);
            };
          }(), startPath: function () {
            return new CKEDITOR.dom.elementPath(this.startContainer, this.root);
          }, endPath: function () {
            return new CKEDITOR.dom.elementPath(this.endContainer, this.root);
          }, checkBoundaryOfElement: function (b, d) {
            var e = d == CKEDITOR.START,
                c = this.clone();c.collapse(e);c[e ? "setStartAt" : "setEndAt"](b, e ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END);c = new CKEDITOR.dom.walker(c);c.evaluator = a(e);return c[e ? "checkBackward" : "checkForward"]();
          }, checkStartOfBlock: function (a) {
            var b = this.startContainer,
                d = this.startOffset;CKEDITOR.env.ie && d && b.type == CKEDITOR.NODE_TEXT && (b = CKEDITOR.tools.ltrim(b.substring(0, d)), m.test(b) && this.trim(0, 1));a || this.trim();a = new CKEDITOR.dom.elementPath(this.startContainer, this.root);b = this.clone();b.collapse(!0);b.setStartAt(a.block || a.blockLimit, CKEDITOR.POSITION_AFTER_START);a = new CKEDITOR.dom.walker(b);a.evaluator = g();return a.checkBackward();
          }, checkEndOfBlock: function (a) {
            var b = this.endContainer,
                d = this.endOffset;CKEDITOR.env.ie && b.type == CKEDITOR.NODE_TEXT && (b = CKEDITOR.tools.rtrim(b.substring(d)), m.test(b) && this.trim(1, 0));a || this.trim();a = new CKEDITOR.dom.elementPath(this.endContainer, this.root);b = this.clone();b.collapse(!1);b.setEndAt(a.block || a.blockLimit, CKEDITOR.POSITION_BEFORE_END);
            a = new CKEDITOR.dom.walker(b);a.evaluator = g();return a.checkForward();
          }, getPreviousNode: function (a, b, d) {
            var e = this.clone();e.collapse(1);e.setStartAt(d || this.root, CKEDITOR.POSITION_AFTER_START);d = new CKEDITOR.dom.walker(e);d.evaluator = a;d.guard = b;return d.previous();
          }, getNextNode: function (a, b, d) {
            var e = this.clone();e.collapse();e.setEndAt(d || this.root, CKEDITOR.POSITION_BEFORE_END);d = new CKEDITOR.dom.walker(e);d.evaluator = a;d.guard = b;return d.next();
          }, checkReadOnly: function () {
            function a(b, f) {
              for (; b;) {
                if (b.type == CKEDITOR.NODE_ELEMENT) {
                  if ("false" == b.getAttribute("contentEditable") && !b.data("cke-editable")) return 0;if (b.is("html") || "true" == b.getAttribute("contentEditable") && (b.contains(f) || b.equals(f))) break;
                }b = b.getParent();
              }return 1;
            }return function () {
              var b = this.startContainer,
                  d = this.endContainer;return !(a(b, d) && a(d, b));
            };
          }(), moveToElementEditablePosition: function (a, b) {
            if (a.type == CKEDITOR.NODE_ELEMENT && !a.isEditable(!1)) return this.moveToPosition(a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START), !0;for (var e = 0; a;) {
              if (a.type == CKEDITOR.NODE_TEXT) {
                b && this.endContainer && this.checkEndOfBlock() && m.test(a.getText()) ? this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START) : this.moveToPosition(a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START);e = 1;break;
              }if (a.type == CKEDITOR.NODE_ELEMENT) if (a.isEditable()) this.moveToPosition(a, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_START), e = 1;else if (b && a.is("br") && this.endContainer && this.checkEndOfBlock()) this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START);else if ("false" == a.getAttribute("contenteditable") && a.is(CKEDITOR.dtd.$block)) return this.setStartBefore(a), this.setEndAfter(a), !0;var c = a,
                  g = e,
                  l = void 0;c.type == CKEDITOR.NODE_ELEMENT && c.isEditable(!1) && (l = c[b ? "getLast" : "getFirst"](d));g || l || (l = c[b ? "getPrevious" : "getNext"](d));a = l;
            }return !!e;
          }, moveToClosestEditablePosition: function (a, b) {
            var d,
                e = 0,
                c,
                g,
                l = [CKEDITOR.POSITION_AFTER_END, CKEDITOR.POSITION_BEFORE_START];a ? (d = new CKEDITOR.dom.range(this.root), d.moveToPosition(a, l[b ? 0 : 1])) : d = this.clone();if (a && !a.is(CKEDITOR.dtd.$block)) e = 1;else if (c = d[b ? "getNextEditableNode" : "getPreviousEditableNode"]()) e = 1, (g = c.type == CKEDITOR.NODE_ELEMENT) && c.is(CKEDITOR.dtd.$block) && "false" == c.getAttribute("contenteditable") ? (d.setStartAt(c, CKEDITOR.POSITION_BEFORE_START), d.setEndAt(c, CKEDITOR.POSITION_AFTER_END)) : !CKEDITOR.env.needsBrFiller && g && c.is(CKEDITOR.dom.walker.validEmptyBlockContainers) ? (d.setEnd(c, 0), d.collapse()) : d.moveToPosition(c, l[b ? 1 : 0]);e && this.moveToRange(d);return !!e;
          }, moveToElementEditStart: function (a) {
            return this.moveToElementEditablePosition(a);
          },
          moveToElementEditEnd: function (a) {
            return this.moveToElementEditablePosition(a, !0);
          }, getEnclosedNode: function () {
            var a = this.clone();a.optimize();if (a.startContainer.type != CKEDITOR.NODE_ELEMENT || a.endContainer.type != CKEDITOR.NODE_ELEMENT) return null;var a = new CKEDITOR.dom.walker(a),
                b = CKEDITOR.dom.walker.bookmark(!1, !0),
                d = CKEDITOR.dom.walker.whitespaces(!0);a.evaluator = function (a) {
              return d(a) && b(a);
            };var e = a.next();a.reset();return e && e.equals(a.previous()) ? e : null;
          }, getTouchedStartNode: function () {
            var a = this.startContainer;
            return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.startOffset) || a;
          }, getTouchedEndNode: function () {
            var a = this.endContainer;return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.endOffset - 1) || a;
          }, getNextEditableNode: e(), getPreviousEditableNode: e(1), _getTableElement: function (a) {
            a = a || { td: 1, th: 1, tr: 1, tbody: 1, thead: 1, tfoot: 1, table: 1 };var b = this.getTouchedStartNode(),
                d = this.getTouchedEndNode(),
                e = b.getAscendant("table", !0),
                d = d.getAscendant("table", !0);return e && !this.root.contains(e) ? null : this.getEnclosedNode() ? this.getEnclosedNode().getAscendant(a, !0) : e && d && (e.equals(d) || e.contains(d) || d.contains(e)) ? b.getAscendant(a, !0) : null;
          }, scrollIntoView: function () {
            var a = new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e", this.document),
                b,
                d,
                e,
                c = this.clone();c.optimize();(e = c.startContainer.type == CKEDITOR.NODE_TEXT) ? (d = c.startContainer.getText(), b = c.startContainer.split(c.startOffset), a.insertAfter(c.startContainer)) : c.insertNode(a);a.scrollIntoView();e && (c.startContainer.setText(d), b.remove());a.remove();
          }, getClientRects: function () {
            function a(b, d) {
              var f = CKEDITOR.tools.array.map(b, function (a) {
                return a;
              }),
                  e = new CKEDITOR.dom.range(d.root),
                  c,
                  g,
                  l;d.startContainer instanceof CKEDITOR.dom.element && (g = 0 === d.startOffset && d.startContainer.hasAttribute("data-widget"));d.endContainer instanceof CKEDITOR.dom.element && (l = (l = d.endOffset === (d.endContainer.getChildCount ? d.endContainer.getChildCount() : d.endContainer.length)) && d.endContainer.hasAttribute("data-widget"));g && e.setStart(d.startContainer.getParent(), d.startContainer.getIndex());l && e.setEnd(d.endContainer.getParent(), d.endContainer.getIndex() + 1);if (g || l) d = e;e = d.cloneContents().find("[data-cke-widget-id]").toArray();if (e = CKEDITOR.tools.array.map(e, function (a) {
                var b = d.root.editor;a = a.getAttribute("data-cke-widget-id");return b.widgets.instances[a].element;
              })) return e = CKEDITOR.tools.array.map(e, function (a) {
                var b = a.getParent().hasClass("cke_widget_wrapper") ? a.getParent() : a;c = this.root.getDocument().$.createRange();c.setStart(b.getParent().$, b.getIndex());
                c.setEnd(b.getParent().$, b.getIndex() + 1);b = c.getClientRects();b.widgetRect = a.getClientRect();return b;
              }, d), CKEDITOR.tools.array.forEach(e, function (a) {
                function b(e) {
                  CKEDITOR.tools.array.forEach(f, function (b, c) {
                    var g = CKEDITOR.tools.objectCompare(a[e], b);g || (g = CKEDITOR.tools.objectCompare(a.widgetRect, b));g && (Array.prototype.splice.call(f, c, a.length - e, a.widgetRect), d = !0);
                  });d || (e < f.length - 1 ? b(e + 1) : f.push(a.widgetRect));
                }var d;b(0);
              }), f;
            }function b(a, d, f) {
              var c;d.collapsed ? f.startContainer instanceof CKEDITOR.dom.element ? (a = f.checkStartOfBlock(), c = new CKEDITOR.dom.text("​"), a ? f.startContainer.append(c, !0) : 0 === f.startOffset ? c.insertBefore(f.startContainer.getFirst()) : (f = f.startContainer.getChildren().getItem(f.startOffset - 1), c.insertAfter(f)), d.setStart(c.$, 0), d.setEnd(c.$, 0), a = d.getClientRects(), c.remove()) : f.startContainer instanceof CKEDITOR.dom.text && ("" === f.startContainer.getText() ? (f.startContainer.setText("​"), a = d.getClientRects(), f.startContainer.setText("")) : a = [e(f.createBookmark())]) : a = [e(f.createBookmark())];
              return a;
            }function d(a, b, f) {
              a = CKEDITOR.tools.extend({}, a);b && (a = CKEDITOR.tools.getAbsoluteRectPosition(f.document.getWindow(), a));!a.width && (a.width = a.right - a.left);!a.height && (a.height = a.bottom - a.top);return a;
            }function e(a) {
              var b = a.startNode;a = a.endNode;var d;b.setText("​");b.removeStyle("display");a ? (a.setText("​"), a.removeStyle("display"), d = [b.getClientRect(), a.getClientRect()], a.remove()) : d = [b.getClientRect(), b.getClientRect()];b.remove();return { right: Math.max(d[0].right, d[1].right), bottom: Math.max(d[0].bottom, d[1].bottom), left: Math.min(d[0].left, d[1].left), top: Math.min(d[0].top, d[1].top), width: Math.abs(d[0].left - d[1].left), height: Math.max(d[0].bottom, d[1].bottom) - Math.min(d[0].top, d[1].top) };
            }return void 0 !== document.getSelection ? function (e) {
              var c = this.root.getDocument().$.createRange(),
                  g;c.setStart(this.startContainer.$, this.startOffset);c.setEnd(this.endContainer.$, this.endOffset);g = c.getClientRects();g = a(g, this);g.length || (g = b(g, c, this));return CKEDITOR.tools.array.map(g, function (a) {
                return d(a, e, this);
              }, this);
            } : function (a) {
              return [d(e(this.createBookmark()), a, this)];
            };
          }(), _setStartContainer: function (a) {
            this.startContainer = a;
          }, _setEndContainer: function (a) {
            this.endContainer = a;
          }, _find: function (a, b) {
            var d = this.getCommonAncestor(),
                e = this.getBoundaryNodes(),
                c = [],
                g,
                l,
                k,
                h;if (d && d.find) for (l = d.find(a), g = 0; g < l.count(); g++) if (d = l.getItem(g), b || !d.isReadOnly()) k = d.getPosition(e.startNode) & CKEDITOR.POSITION_FOLLOWING || e.startNode.equals(d), h = d.getPosition(e.endNode) & CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IS_CONTAINED || e.endNode.equals(d), k && h && c.push(d);return c;
          } };CKEDITOR.dom.range.mergeRanges = function (a) {
          return CKEDITOR.tools.array.reduce(a, function (a, b) {
            var d = a[a.length - 1],
                f = !1;b = b.clone();b.enlarge(CKEDITOR.ENLARGE_ELEMENT);if (d) {
              var e = new CKEDITOR.dom.range(b.root),
                  f = new CKEDITOR.dom.walker(e),
                  c = CKEDITOR.dom.walker.whitespaces();e.setStart(d.endContainer, d.endOffset);e.setEnd(b.startContainer, b.startOffset);for (e = f.next(); c(e) || b.endContainer.equals(e);) e = f.next();f = !e;
            }f ? d.setEnd(b.endContainer, b.endOffset) : a.push(b);return a;
          }, []);
        };
      }(), CKEDITOR.POSITION_AFTER_START = 1, CKEDITOR.POSITION_BEFORE_END = 2, CKEDITOR.POSITION_BEFORE_START = 3, CKEDITOR.POSITION_AFTER_END = 4, CKEDITOR.ENLARGE_ELEMENT = 1, CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2, CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3, CKEDITOR.ENLARGE_INLINE = 4, CKEDITOR.START = 1, CKEDITOR.END = 2, CKEDITOR.SHRINK_ELEMENT = 1, CKEDITOR.SHRINK_TEXT = 2, "use strict", function () {
        function c(a) {
          1 > arguments.length || (this.range = a, this.forceBrBreak = 0, this.enlargeBr = 1, this.enforceRealBlocks = 0, this._ || (this._ = {}));
        }function h(a) {
          var b = [];a.forEach(function (a) {
            if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1;
          }, CKEDITOR.NODE_ELEMENT, !0);return b;
        }function g(a, b, e, c) {
          a: {
            null == c && (c = h(e));for (var l; l = c.shift();) if (l.getDtd().p) {
              c = { element: l, remaining: c };break a;
            }c = null;
          }if (!c) return 0;if ((l = CKEDITOR.filter.instances[c.element.data("cke-filter")]) && !l.check(b)) return g(a, b, e, c.remaining);b = new CKEDITOR.dom.range(c.element);b.selectNodeContents(c.element);b = b.createIterator();b.enlargeBr = a.enlargeBr;b.enforceRealBlocks = a.enforceRealBlocks;b.activeFilter = b.filter = l;a._.nestedEditable = { element: c.element, container: e, remaining: c.remaining, iterator: b };return 1;
        }function a(a, b, e) {
          if (!b) return !1;a = a.clone();a.collapse(!e);return a.checkBoundaryOfElement(b, e ? CKEDITOR.START : CKEDITOR.END);
        }var e = /^[\r\n\t ]+$/,
            l = CKEDITOR.dom.walker.bookmark(!1, !0),
            k = CKEDITOR.dom.walker.whitespaces(!0),
            m = function (a) {
          return l(a) && k(a);
        },
            b = { dd: 1, dt: 1, li: 1 };c.prototype = { getNextParagraph: function (d) {
            var f, c, k, h, r;
            d = d || "p";if (this._.nestedEditable) {
              if (f = this._.nestedEditable.iterator.getNextParagraph(d)) return this.activeFilter = this._.nestedEditable.iterator.activeFilter, f;this.activeFilter = this.filter;if (g(this, d, this._.nestedEditable.container, this._.nestedEditable.remaining)) return this.activeFilter = this._.nestedEditable.iterator.activeFilter, this._.nestedEditable.iterator.getNextParagraph(d);this._.nestedEditable = null;
            }if (!this.range.root.getDtd()[d]) return null;if (!this._.started) {
              var t = this.range.clone();
              c = t.startPath();var u = t.endPath(),
                  C = !t.collapsed && a(t, c.block),
                  p = !t.collapsed && a(t, u.block, 1);t.shrink(CKEDITOR.SHRINK_ELEMENT, !0);C && t.setStartAt(c.block, CKEDITOR.POSITION_BEFORE_END);p && t.setEndAt(u.block, CKEDITOR.POSITION_AFTER_START);c = t.endContainer.hasAscendant("pre", !0) || t.startContainer.hasAscendant("pre", !0);t.enlarge(this.forceBrBreak && !c || !this.enlargeBr ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS);t.collapsed || (c = new CKEDITOR.dom.walker(t.clone()), u = CKEDITOR.dom.walker.bookmark(!0, !0), c.evaluator = u, this._.nextNode = c.next(), c = new CKEDITOR.dom.walker(t.clone()), c.evaluator = u, c = c.previous(), this._.lastNode = c.getNextSourceNode(!0, null, t.root), this._.lastNode && this._.lastNode.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(this._.lastNode.getText()) && this._.lastNode.getParent().isBlockBoundary() && (u = this.range.clone(), u.moveToPosition(this._.lastNode, CKEDITOR.POSITION_AFTER_END), u.checkEndOfBlock() && (u = new CKEDITOR.dom.elementPath(u.endContainer, u.root), this._.lastNode = (u.block || u.blockLimit).getNextSourceNode(!0))), this._.lastNode && t.root.contains(this._.lastNode) || (this._.lastNode = this._.docEndMarker = t.document.createText(""), this._.lastNode.insertAfter(c)), t = null);this._.started = 1;c = t;
            }u = this._.nextNode;t = this._.lastNode;for (this._.nextNode = null; u;) {
              var C = 0,
                  p = u.hasAscendant("pre"),
                  x = u.type != CKEDITOR.NODE_ELEMENT,
                  v = 0;if (x) u.type == CKEDITOR.NODE_TEXT && e.test(u.getText()) && (x = 0);else {
                var q = u.getName();if (CKEDITOR.dtd.$block[q] && "false" == u.getAttribute("contenteditable")) {
                  f = u;g(this, d, f);break;
                } else if (u.isBlockBoundary(this.forceBrBreak && !p && { br: 1 })) {
                  if ("br" == q) x = 1;else if (!c && !u.getChildCount() && "hr" != q) {
                    f = u;k = u.equals(t);break;
                  }c && (c.setEndAt(u, CKEDITOR.POSITION_BEFORE_START), "br" != q && (this._.nextNode = u));C = 1;
                } else {
                  if (u.getFirst()) {
                    c || (c = this.range.clone(), c.setStartAt(u, CKEDITOR.POSITION_BEFORE_START));u = u.getFirst();continue;
                  }x = 1;
                }
              }x && !c && (c = this.range.clone(), c.setStartAt(u, CKEDITOR.POSITION_BEFORE_START));k = (!C || x) && u.equals(t);if (c && !C) for (; !u.getNext(m) && !k;) {
                q = u.getParent();if (q.isBlockBoundary(this.forceBrBreak && !p && { br: 1 })) {
                  C = 1;x = 0;k || q.equals(t);c.setEndAt(q, CKEDITOR.POSITION_BEFORE_END);break;
                }u = q;x = 1;k = u.equals(t);v = 1;
              }x && c.setEndAt(u, CKEDITOR.POSITION_AFTER_END);u = this._getNextSourceNode(u, v, t);if ((k = !u) || C && c) break;
            }if (!f) {
              if (!c) return this._.docEndMarker && this._.docEndMarker.remove(), this._.nextNode = null;f = new CKEDITOR.dom.elementPath(c.startContainer, c.root);u = f.blockLimit;C = { div: 1, th: 1, td: 1 };f = f.block;!f && u && !this.enforceRealBlocks && C[u.getName()] && c.checkStartOfBlock() && c.checkEndOfBlock() && !u.equals(c.root) ? f = u : !f || this.enforceRealBlocks && f.is(b) ? (f = this.range.document.createElement(d), c.extractContents().appendTo(f), f.trim(), c.insertNode(f), h = r = !0) : "li" != f.getName() ? c.checkStartOfBlock() && c.checkEndOfBlock() || (f = f.clone(!1), c.extractContents().appendTo(f), f.trim(), r = c.splitBlock(), h = !r.wasStartOfBlock, r = !r.wasEndOfBlock, c.insertNode(f)) : k || (this._.nextNode = f.equals(t) ? null : this._getNextSourceNode(c.getBoundaryNodes().endNode, 1, t));
            }h && (h = f.getPrevious()) && h.type == CKEDITOR.NODE_ELEMENT && ("br" == h.getName() ? h.remove() : h.getLast() && "br" == h.getLast().$.nodeName.toLowerCase() && h.getLast().remove());r && (h = f.getLast()) && h.type == CKEDITOR.NODE_ELEMENT && "br" == h.getName() && (!CKEDITOR.env.needsBrFiller || h.getPrevious(l) || h.getNext(l)) && h.remove();this._.nextNode || (this._.nextNode = k || f.equals(t) || !t ? null : this._getNextSourceNode(f, 1, t));return f;
          }, _getNextSourceNode: function (a, b, e) {
            function c(a) {
              return !(a.equals(e) || a.equals(g));
            }var g = this.range.root;
            for (a = a.getNextSourceNode(b, null, c); !l(a);) a = a.getNextSourceNode(b, null, c);return a;
          } };CKEDITOR.dom.range.prototype.createIterator = function () {
          return new c(this);
        };
      }(), CKEDITOR.command = function (c, h) {
        this.uiItems = [];this.exec = function (a) {
          if (this.state == CKEDITOR.TRISTATE_DISABLED || !this.checkAllowed()) return !1;this.editorFocus && c.focus();return !1 === this.fire("exec") ? !0 : !1 !== h.exec.call(this, c, a);
        };this.refresh = function (a, e) {
          if (!this.readOnly && a.readOnly) return !0;if (this.context && !e.isContextFor(this.context) || !this.checkAllowed(!0)) return this.disable(), !0;this.startDisabled || this.enable();this.modes && !this.modes[a.mode] && this.disable();return !1 === this.fire("refresh", { editor: a, path: e }) ? !0 : h.refresh && !1 !== h.refresh.apply(this, arguments);
        };var g;this.checkAllowed = function (a) {
          return a || "boolean" != typeof g ? g = c.activeFilter.checkFeature(this) : g;
        };CKEDITOR.tools.extend(this, h, { modes: { wysiwyg: 1 }, editorFocus: 1, contextSensitive: !!h.context, state: CKEDITOR.TRISTATE_DISABLED });CKEDITOR.event.call(this);
      }, CKEDITOR.command.prototype = { enable: function () {
          this.state == CKEDITOR.TRISTATE_DISABLED && this.checkAllowed() && this.setState(this.preserveState && "undefined" != typeof this.previousState ? this.previousState : CKEDITOR.TRISTATE_OFF);
        }, disable: function () {
          this.setState(CKEDITOR.TRISTATE_DISABLED);
        }, setState: function (c) {
          if (this.state == c || c != CKEDITOR.TRISTATE_DISABLED && !this.checkAllowed()) return !1;this.previousState = this.state;this.state = c;this.fire("state");return !0;
        }, toggleState: function () {
          this.state == CKEDITOR.TRISTATE_OFF ? this.setState(CKEDITOR.TRISTATE_ON) : this.state == CKEDITOR.TRISTATE_ON && this.setState(CKEDITOR.TRISTATE_OFF);
        } }, CKEDITOR.event.implementOn(CKEDITOR.command.prototype), CKEDITOR.ADDITIONAL_RESOURCE_PARAMS = {}, CKEDITOR.ENTER_P = 1, CKEDITOR.ENTER_BR = 2, CKEDITOR.ENTER_DIV = 3, CKEDITOR.config = { customConfig: "config.js", autoUpdateElement: !0, language: "", defaultLanguage: "en", contentsLangDirection: "", enterMode: CKEDITOR.ENTER_P, forceEnterMode: !1, shiftEnterMode: CKEDITOR.ENTER_BR, docType: "\x3c!DOCTYPE html\x3e", bodyId: "", bodyClass: "", fullPage: !1, height: 200,
        contentsCss: CKEDITOR.getUrl("contents.css"), extraPlugins: "", removePlugins: "", protectedSource: [], tabIndex: 0, useComputedState: !0, width: "", baseFloatZIndex: 1E4, blockedKeystrokes: [CKEDITOR.CTRL + 66, CKEDITOR.CTRL + 73, CKEDITOR.CTRL + 85] }, function () {
        function c(a, b, d, f, e) {
          var c, g;a = [];for (c in b) {
            g = b[c];g = "boolean" == typeof g ? {} : "function" == typeof g ? { match: g } : E(g);"$" != c.charAt(0) && (g.elements = c);d && (g.featureName = d.toLowerCase());var l = g;l.elements = k(l.elements, /\s+/) || null;l.propertiesOnly = l.propertiesOnly || !0 === l.elements;var h = /\s*,\s*/,
                m = void 0;for (m in M) {
              l[m] = k(l[m], h) || null;var n = l,
                  u = I[m],
                  O = k(l[I[m]], h),
                  q = l[m],
                  p = [],
                  J = !0,
                  w = void 0;O ? J = !1 : O = {};for (w in q) "!" == w.charAt(0) && (w = w.slice(1), p.push(w), O[w] = !0, J = !1);for (; w = p.pop();) q[w] = q["!" + w], delete q["!" + w];n[u] = (J ? !1 : O) || null;
            }l.match = l.match || null;f.push(g);a.push(g);
          }b = e.elements;e = e.generic;d = 0;for (f = a.length; d < f; ++d) {
            c = E(a[d]);g = !0 === c.classes || !0 === c.styles || !0 === c.attributes;l = c;m = u = h = void 0;for (h in M) l[h] = C(l[h]);n = !0;for (m in I) {
              h = I[m];
              u = l[h];O = [];q = void 0;for (q in u) -1 < q.indexOf("*") ? O.push(new RegExp("^" + q.replace(/\*/g, ".*") + "$")) : O.push(q);u = O;u.length && (l[h] = u, n = !1);
            }l.nothingRequired = n;l.noProperties = !(l.attributes || l.classes || l.styles);if (!0 === c.elements || null === c.elements) e[g ? "unshift" : "push"](c);else for (var L in l = c.elements, delete c.elements, l) if (b[L]) b[L][g ? "unshift" : "push"](c);else b[L] = [c];
          }
        }function h(a, b, d, f) {
          if (!a.match || a.match(b)) if (f || m(a, b)) if (a.propertiesOnly || (d.valid = !0), d.allAttributes || (d.allAttributes = g(a.attributes, b.attributes, d.validAttributes)), d.allStyles || (d.allStyles = g(a.styles, b.styles, d.validStyles)), !d.allClasses) {
            a = a.classes;b = b.classes;f = d.validClasses;if (a) {
              if (!0 === a) a = !0;else {
                for (var e = 0, c = b.length, l; e < c; ++e) l = b[e], f[l] || (f[l] = a(l));a = !1;
              }
            } else a = !1;d.allClasses = a;
          }
        }function g(a, b, d) {
          if (!a) return !1;if (!0 === a) return !0;for (var f in b) d[f] || (d[f] = a(f));return !1;
        }function a(a, b, d) {
          if (!a.match || a.match(b)) {
            if (a.noProperties) return !1;d.hadInvalidAttribute = e(a.attributes, b.attributes) || d.hadInvalidAttribute;
            d.hadInvalidStyle = e(a.styles, b.styles) || d.hadInvalidStyle;a = a.classes;b = b.classes;if (a) {
              for (var f = !1, c = !0 === a, g = b.length; g--;) if (c || a(b[g])) b.splice(g, 1), f = !0;a = f;
            } else a = !1;d.hadInvalidClass = a || d.hadInvalidClass;
          }
        }function e(a, b) {
          if (!a) return !1;var d = !1,
              e;for (e in b) if (!0 === a || a(e)) delete b[e], d = !0;return d;
        }function l(a, b, d) {
          if (a.disabled || a.customConfig && !d || !b) return !1;a._.cachedChecks = {};return !0;
        }function k(a, b) {
          if (!a) return !1;if (!0 === a) return a;if ("string" == typeof a) return a = K(a), "*" == a ? !0 : CKEDITOR.tools.convertArrayToObject(a.split(b));if (CKEDITOR.tools.isArray(a)) return a.length ? CKEDITOR.tools.convertArrayToObject(a) : !1;var d = {},
              f = 0,
              e;for (e in a) d[e] = a[e], f++;return f ? d : !1;
        }function m(a, d) {
          if (a.nothingRequired) return !0;var f, e, c, g;if (c = a.requiredClasses) for (g = d.classes, f = 0; f < c.length; ++f) if (e = c[f], "string" == typeof e) {
            if (-1 == CKEDITOR.tools.indexOf(g, e)) return !1;
          } else if (!CKEDITOR.tools.checkIfAnyArrayItemMatches(g, e)) return !1;return b(d.styles, a.requiredStyles) && b(d.attributes, a.requiredAttributes);
        }
        function b(a, b) {
          if (!b) return !0;for (var d = 0, f; d < b.length; ++d) if (f = b[d], "string" == typeof f) {
            if (!(f in a)) return !1;
          } else if (!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a, f)) return !1;return !0;
        }function d(a) {
          if (!a) return {};a = a.split(/\s*,\s*/).sort();for (var b = {}; a.length;) b[a.shift()] = "cke-test";return b;
        }function f(a) {
          var b,
              d,
              f,
              e,
              c = {},
              g = 1;for (a = K(a); b = a.match(D);) (d = b[2]) ? (f = n(d, "styles"), e = n(d, "attrs"), d = n(d, "classes")) : f = e = d = null, c["$" + g++] = { elements: b[1], classes: d, styles: f, attributes: e }, a = a.slice(b[0].length);
          return c;
        }function n(a, b) {
          var d = a.match(P[b]);return d ? K(d[1]) : null;
        }function w(a) {
          var b = a.styleBackup = a.attributes.style,
              d = a.classBackup = a.attributes["class"];a.styles || (a.styles = CKEDITOR.tools.parseCssText(b || "", 1));a.classes || (a.classes = d ? d.split(/\s+/) : []);
        }function z(b, d, f, e) {
          var c = 0,
              g;e.toHtml && (d.name = d.name.replace(L, "$1"));if (e.doCallbacks && b.elementCallbacks) {
            a: {
              g = b.elementCallbacks;for (var l = 0, k = g.length, m; l < k; ++l) if (m = g[l](d)) {
                g = m;break a;
              }g = void 0;
            }if (g) return g;
          }if (e.doTransform && (g = b._.transformations[d.name])) {
            w(d);
            for (l = 0; l < g.length; ++l) q(b, d, g[l]);t(d);
          }if (e.doFilter) {
            a: {
              l = d.name;k = b._;b = k.allowedRules.elements[l];g = k.allowedRules.generic;l = k.disallowedRules.elements[l];k = k.disallowedRules.generic;m = e.skipRequired;var n = { valid: !1, validAttributes: {}, validClasses: {}, validStyles: {}, allAttributes: !1, allClasses: !1, allStyles: !1, hadInvalidAttribute: !1, hadInvalidClass: !1, hadInvalidStyle: !1 },
                  p,
                  E;if (b || g) {
                w(d);if (l) for (p = 0, E = l.length; p < E; ++p) if (!1 === a(l[p], d, n)) {
                  b = null;break a;
                }if (k) for (p = 0, E = k.length; p < E; ++p) a(k[p], d, n);if (b) for (p = 0, E = b.length; p < E; ++p) h(b[p], d, n, m);if (g) for (p = 0, E = g.length; p < E; ++p) h(g[p], d, n, m);b = n;
              } else b = null;
            }if (!b || !b.valid) return f.push(d), 1;E = b.validAttributes;var v = b.validStyles;g = b.validClasses;var l = d.attributes,
                C = d.styles,
                k = d.classes;m = d.classBackup;var G = d.styleBackup,
                J,
                K,
                F = [],
                n = [],
                y = /^data-cke-/;p = !1;delete l.style;delete l["class"];delete d.classBackup;delete d.styleBackup;if (!b.allAttributes) for (J in l) E[J] || (y.test(J) ? J == (K = J.replace(/^data-cke-saved-/, "")) || E[K] || (delete l[J], p = !0) : (delete l[J], p = !0));if (!b.allStyles || b.hadInvalidStyle) {
              for (J in C) b.allStyles || v[J] ? F.push(J + ":" + C[J]) : p = !0;F.length && (l.style = F.sort().join("; "));
            } else G && (l.style = G);if (!b.allClasses || b.hadInvalidClass) {
              for (J = 0; J < k.length; ++J) (b.allClasses || g[k[J]]) && n.push(k[J]);n.length && (l["class"] = n.sort().join(" "));m && n.length < m.split(/\s+/).length && (p = !0);
            } else m && (l["class"] = m);p && (c = 1);if (!e.skipFinalValidation && !u(d)) return f.push(d), 1;
          }e.toHtml && (d.name = d.name.replace(O, "cke:$1"));return c;
        }function r(a) {
          var b = [],
              d;for (d in a) -1 < d.indexOf("*") && b.push(d.replace(/\*/g, ".*"));return b.length ? new RegExp("^(?:" + b.join("|") + ")$") : null;
        }function t(a) {
          var b = a.attributes,
              d;delete b.style;delete b["class"];if (d = CKEDITOR.tools.writeCssText(a.styles, !0)) b.style = d;a.classes.length && (b["class"] = a.classes.sort().join(" "));
        }function u(a) {
          switch (a.name) {case "a":
              if (!(a.children.length || a.attributes.name || a.attributes.id)) return !1;break;case "img":
              if (!a.attributes.src) return !1;}return !0;
        }function C(a) {
          if (!a) return !1;if (!0 === a) return !0;var b = r(a);return function (d) {
            return d in a || b && d.match(b);
          };
        }function p() {
          return new CKEDITOR.htmlParser.element("br");
        }function x(a) {
          return a.type == CKEDITOR.NODE_ELEMENT && ("br" == a.name || G.$block[a.name]);
        }function v(a, b, d) {
          var f = a.name;if (G.$empty[f] || !a.children.length) "hr" == f && "br" == b ? a.replaceWith(p()) : (a.parent && d.push({ check: "it", el: a.parent }), a.remove());else if (G.$block[f] || "tr" == f) {
            if ("br" == b) a.previous && !x(a.previous) && (b = p(), b.insertBefore(a)), a.next && !x(a.next) && (b = p(), b.insertAfter(a)), a.replaceWithChildren();else {
              var f = a.children,
                  e;b: {
                e = G[b];for (var c = 0, g = f.length, l; c < g; ++c) if (l = f[c], l.type == CKEDITOR.NODE_ELEMENT && !e[l.name]) {
                  e = !1;break b;
                }e = !0;
              }if (e) a.name = b, a.attributes = {}, d.push({ check: "parent-down", el: a });else {
                e = a.parent;for (var c = e.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || "body" == e.name, k, h, g = f.length; 0 < g;) l = f[--g], c && (l.type == CKEDITOR.NODE_TEXT || l.type == CKEDITOR.NODE_ELEMENT && G.$inline[l.name]) ? (k || (k = new CKEDITOR.htmlParser.element(b), k.insertAfter(a), d.push({ check: "parent-down",
                  el: k })), k.add(l, 0)) : (k = null, h = G[e.name] || G.span, l.insertAfter(a), e.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || l.type != CKEDITOR.NODE_ELEMENT || h[l.name] || d.push({ check: "el-up", el: l }));a.remove();
              }
            }
          } else f in { style: 1, script: 1 } ? a.remove() : (a.parent && d.push({ check: "it", el: a.parent }), a.replaceWithChildren());
        }function q(a, b, d) {
          var f, e;for (f = 0; f < d.length; ++f) if (e = d[f], !(e.check && !a.check(e.check, !1) || e.left && !e.left(b))) {
            e.right(b, N);break;
          }
        }function y(a, b) {
          var d = b.getDefinition(),
              f = d.attributes,
              e = d.styles,
              c,
              g,
              l,
              k;if (a.name != d.element) return !1;for (c in f) if ("class" == c) for (d = f[c].split(/\s+/), l = a.classes.join("|"); k = d.pop();) {
            if (-1 == l.indexOf(k)) return !1;
          } else if (a.attributes[c] != f[c]) return !1;for (g in e) if (a.styles[g] != e[g]) return !1;return !0;
        }function A(a, b) {
          var d, f;"string" == typeof a ? d = a : a instanceof CKEDITOR.style ? f = a : (d = a[0], f = a[1]);return [{ element: d, left: f, right: function (a, d) {
              d.transform(a, b);
            } }];
        }function F(a) {
          return function (b) {
            return y(b, a);
          };
        }function B(a) {
          return function (b, d) {
            d[a](b);
          };
        }var G = CKEDITOR.dtd,
            E = CKEDITOR.tools.copy,
            K = CKEDITOR.tools.trim,
            H = ["", "p", "br", "div"];CKEDITOR.FILTER_SKIP_TREE = 2;CKEDITOR.filter = function (a, b) {
          this.allowedContent = [];this.disallowedContent = [];this.elementCallbacks = null;this.disabled = !1;this.editor = null;this.id = CKEDITOR.tools.getNextNumber();this._ = { allowedRules: { elements: {}, generic: [] }, disallowedRules: { elements: {}, generic: [] }, transformations: {}, cachedTests: {}, cachedChecks: {} };CKEDITOR.filter.instances[this.id] = this;var d = this.editor = a instanceof CKEDITOR.editor ? a : null;
          if (d && !b) {
            this.customConfig = !0;var f = d.config.allowedContent;!0 === f ? this.disabled = !0 : (f || (this.customConfig = !1), this.allow(f, "config", 1), this.allow(d.config.extraAllowedContent, "extra", 1), this.allow(H[d.enterMode] + " " + H[d.shiftEnterMode], "default", 1), this.disallow(d.config.disallowedContent));
          } else this.customConfig = !1, this.allow(b || a, "default", 1);
        };CKEDITOR.filter.instances = {};CKEDITOR.filter.prototype = { allow: function (a, b, d) {
            if (!l(this, a, d)) return !1;var e, g;if ("string" == typeof a) a = f(a);else if (a instanceof CKEDITOR.style) {
              if (a.toAllowedContentRules) return this.allow(a.toAllowedContentRules(this.editor), b, d);e = a.getDefinition();a = {};d = e.attributes;a[e.element] = e = { styles: e.styles, requiredStyles: e.styles && CKEDITOR.tools.object.keys(e.styles) };d && (d = E(d), e.classes = d["class"] ? d["class"].split(/\s+/) : null, e.requiredClasses = e.classes, delete d["class"], e.attributes = d, e.requiredAttributes = d && CKEDITOR.tools.object.keys(d));
            } else if (CKEDITOR.tools.isArray(a)) {
              for (e = 0; e < a.length; ++e) g = this.allow(a[e], b, d);return g;
            }c(this, a, b, this.allowedContent, this._.allowedRules);return !0;
          }, applyTo: function (a, b, d, f) {
            if (this.disabled) return !1;var e = this,
                c = [],
                g = this.editor && this.editor.config.protectedSource,
                l,
                k = !1,
                h = { doFilter: !d, doTransform: !0, doCallbacks: !0, toHtml: b };a.forEach(function (a) {
              if (a.type == CKEDITOR.NODE_ELEMENT) {
                if ("off" == a.attributes["data-cke-filter"]) return !1;if (!b || "span" != a.name || !~CKEDITOR.tools.object.keys(a.attributes).join("|").indexOf("data-cke-")) if (l = z(e, a, c, h), l & 1) k = !0;else if (l & 2) return !1;
              } else if (a.type == CKEDITOR.NODE_COMMENT && a.value.match(/^\{cke_protected\}(?!\{C\})/)) {
                var d;a: {
                  var f = decodeURIComponent(a.value.replace(/^\{cke_protected\}/, ""));d = [];var m, n, u;if (g) for (n = 0; n < g.length; ++n) if ((u = f.match(g[n])) && u[0].length == f.length) {
                    d = !0;break a;
                  }f = CKEDITOR.htmlParser.fragment.fromHtml(f);1 == f.children.length && (m = f.children[0]).type == CKEDITOR.NODE_ELEMENT && z(e, m, d, h);d = !d.length;
                }d || c.push(a);
              }
            }, null, !0);c.length && (k = !0);var m;a = [];f = H[f || (this.editor ? this.editor.enterMode : CKEDITOR.ENTER_P)];for (var n; d = c.pop();) d.type == CKEDITOR.NODE_ELEMENT ? v(d, f, a) : d.remove();for (; m = a.pop();) if (d = m.el, d.parent) switch (n = G[d.parent.name] || G.span, m.check) {case "it":
                G.$removeEmpty[d.name] && !d.children.length ? v(d, f, a) : u(d) || v(d, f, a);break;case "el-up":
                d.parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || n[d.name] || v(d, f, a);break;case "parent-down":
                d.parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || n[d.name] || v(d.parent, f, a);}return k;
          }, checkFeature: function (a) {
            if (this.disabled || !a) return !0;a.toFeature && (a = a.toFeature(this.editor));
            return !a.requiredContent || this.check(a.requiredContent);
          }, disable: function () {
            this.disabled = !0;
          }, disallow: function (a) {
            if (!l(this, a, !0)) return !1;"string" == typeof a && (a = f(a));c(this, a, null, this.disallowedContent, this._.disallowedRules);return !0;
          }, addContentForms: function (a) {
            if (!this.disabled && a) {
              var b,
                  d,
                  f = [],
                  e;for (b = 0; b < a.length && !e; ++b) d = a[b], ("string" == typeof d || d instanceof CKEDITOR.style) && this.check(d) && (e = d);if (e) {
                for (b = 0; b < a.length; ++b) f.push(A(a[b], e));this.addTransformations(f);
              }
            }
          }, addElementCallback: function (a) {
            this.elementCallbacks || (this.elementCallbacks = []);this.elementCallbacks.push(a);
          }, addFeature: function (a) {
            if (this.disabled || !a) return !0;a.toFeature && (a = a.toFeature(this.editor));this.allow(a.allowedContent, a.name);this.addTransformations(a.contentTransformations);this.addContentForms(a.contentForms);return a.requiredContent && (this.customConfig || this.disallowedContent.length) ? this.check(a.requiredContent) : !0;
          }, addTransformations: function (a) {
            var b, d;if (!this.disabled && a) {
              var f = this._.transformations,
                  e;for (e = 0; e < a.length; ++e) {
                b = a[e];var c = void 0,
                    g = void 0,
                    l = void 0,
                    k = void 0,
                    h = void 0,
                    m = void 0;d = [];for (g = 0; g < b.length; ++g) l = b[g], "string" == typeof l ? (l = l.split(/\s*:\s*/), k = l[0], h = null, m = l[1]) : (k = l.check, h = l.left, m = l.right), c || (c = l, c = c.element ? c.element : k ? k.match(/^([a-z0-9]+)/i)[0] : c.left.getDefinition().element), h instanceof CKEDITOR.style && (h = F(h)), d.push({ check: k == c ? null : k, left: h, right: "string" == typeof m ? B(m) : m });b = c;f[b] || (f[b] = []);f[b].push(d);
              }
            }
          }, check: function (a, b, e) {
            if (this.disabled) return !0;if (CKEDITOR.tools.isArray(a)) {
              for (var c = a.length; c--;) if (this.check(a[c], b, e)) return !0;return !1;
            }var g, l;if ("string" == typeof a) {
              l = a + "\x3c" + (!1 === b ? "0" : "1") + (e ? "1" : "0") + "\x3e";if (l in this._.cachedChecks) return this._.cachedChecks[l];g = f(a).$1;var k = g.styles,
                  c = g.classes;g.name = g.elements;g.classes = c = c ? c.split(/\s*,\s*/) : [];g.styles = d(k);g.attributes = d(g.attributes);g.children = [];c.length && (g.attributes["class"] = c.join(" "));k && (g.attributes.style = CKEDITOR.tools.writeCssText(g.styles));
            } else g = a.getDefinition(), k = g.styles, c = g.attributes || {}, k && !CKEDITOR.tools.isEmpty(k) ? (k = E(k), c.style = CKEDITOR.tools.writeCssText(k, !0)) : k = {}, g = { name: g.element, attributes: c, classes: c["class"] ? c["class"].split(/\s+/) : [], styles: k, children: [] };var k = CKEDITOR.tools.clone(g),
                h = [],
                m;if (!1 !== b && (m = this._.transformations[g.name])) {
              for (c = 0; c < m.length; ++c) q(this, g, m[c]);t(g);
            }z(this, k, h, { doFilter: !0, doTransform: !1 !== b, skipRequired: !e, skipFinalValidation: !e });0 < h.length ? e = !1 : ((b = g.attributes["class"]) && (g.attributes["class"] = g.attributes["class"].split(" ").sort().join(" ")), e = CKEDITOR.tools.objectCompare(g.attributes, k.attributes, !0), b && (g.attributes["class"] = b));"string" == typeof a && (this._.cachedChecks[l] = e);return e;
          }, getAllowedEnterMode: function () {
            var a = ["p", "div", "br"],
                b = { p: CKEDITOR.ENTER_P, div: CKEDITOR.ENTER_DIV, br: CKEDITOR.ENTER_BR };return function (d, f) {
              var e = a.slice(),
                  c;if (this.check(H[d])) return d;for (f || (e = e.reverse()); c = e.pop();) if (this.check(c)) return b[c];return CKEDITOR.ENTER_BR;
            };
          }(), clone: function () {
            var a = new CKEDITOR.filter(),
                b = CKEDITOR.tools.clone;a.allowedContent = b(this.allowedContent);a._.allowedRules = b(this._.allowedRules);a.disallowedContent = b(this.disallowedContent);a._.disallowedRules = b(this._.disallowedRules);a._.transformations = b(this._.transformations);a.disabled = this.disabled;a.editor = this.editor;return a;
          }, destroy: function () {
            delete CKEDITOR.filter.instances[this.id];delete this._;delete this.allowedContent;delete this.disallowedContent;
          } };var M = { styles: 1, attributes: 1, classes: 1 },
            I = { styles: "requiredStyles", attributes: "requiredAttributes", classes: "requiredClasses" },
            D = /^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,
            P = { styles: /{([^}]+)}/, attrs: /\[([^\]]+)\]/, classes: /\(([^\)]+)\)/ },
            L = /^cke:(object|embed|param)$/,
            O = /^(object|embed|param)$/,
            N;N = CKEDITOR.filter.transformationsTools = { sizeToStyle: function (a) {
            this.lengthToStyle(a, "width");this.lengthToStyle(a, "height");
          }, sizeToAttribute: function (a) {
            this.lengthToAttribute(a, "width");this.lengthToAttribute(a, "height");
          }, lengthToStyle: function (a, b, d) {
            d = d || b;if (!(d in a.styles)) {
              var f = a.attributes[b];f && (/^\d+$/.test(f) && (f += "px"), a.styles[d] = f);
            }delete a.attributes[b];
          }, lengthToAttribute: function (a, b, d) {
            d = d || b;if (!(d in a.attributes)) {
              var f = a.styles[b],
                  e = f && f.match(/^(\d+)(?:\.\d*)?px$/);e ? a.attributes[d] = e[1] : "cke-test" == f && (a.attributes[d] = "cke-test");
            }delete a.styles[b];
          }, alignmentToStyle: function (a) {
            if (!("float" in a.styles)) {
              var b = a.attributes.align;if ("left" == b || "right" == b) a.styles["float"] = b;
            }delete a.attributes.align;
          }, alignmentToAttribute: function (a) {
            if (!("align" in a.attributes)) {
              var b = a.styles["float"];if ("left" == b || "right" == b) a.attributes.align = b;
            }delete a.styles["float"];
          }, splitBorderShorthand: function (a) {
            if (a.styles.border) {
              var b = CKEDITOR.tools.style.parse.border(a.styles.border);b.color && (a.styles["border-color"] = b.color);b.style && (a.styles["border-style"] = b.style);b.width && (a.styles["border-width"] = b.width);delete a.styles.border;
            }
          }, listTypeToStyle: function (a) {
            if (a.attributes.type) switch (a.attributes.type) {case "a":
                a.styles["list-style-type"] = "lower-alpha";
                break;case "A":
                a.styles["list-style-type"] = "upper-alpha";break;case "i":
                a.styles["list-style-type"] = "lower-roman";break;case "I":
                a.styles["list-style-type"] = "upper-roman";break;case "1":
                a.styles["list-style-type"] = "decimal";break;default:
                a.styles["list-style-type"] = a.attributes.type;}
          }, splitMarginShorthand: function (a) {
            function b(f) {
              a.styles["margin-top"] = d[f[0]];a.styles["margin-right"] = d[f[1]];a.styles["margin-bottom"] = d[f[2]];a.styles["margin-left"] = d[f[3]];
            }if (a.styles.margin) {
              var d = a.styles.margin.match(/(auto|0|(?:\-?[\.\d]+(?:\w+|%)))/g) || ["0px"];switch (d.length) {case 1:
                  b([0, 0, 0, 0]);break;case 2:
                  b([0, 1, 0, 1]);break;case 3:
                  b([0, 1, 2, 1]);break;case 4:
                  b([0, 1, 2, 3]);}delete a.styles.margin;
            }
          }, matchesStyle: y, transform: function (a, b) {
            if ("string" == typeof b) a.name = b;else {
              var d = b.getDefinition(),
                  f = d.styles,
                  e = d.attributes,
                  c,
                  g,
                  l,
                  k;a.name = d.element;for (c in e) if ("class" == c) for (d = a.classes.join("|"), l = e[c].split(/\s+/); k = l.pop();) -1 == d.indexOf(k) && a.classes.push(k);else a.attributes[c] = e[c];for (g in f) a.styles[g] = f[g];
            }
          } };
      }(), function () {
        CKEDITOR.focusManager = function (c) {
          if (c.focusManager) return c.focusManager;this.hasFocus = !1;this.currentActive = null;this._ = { editor: c };return this;
        };CKEDITOR.focusManager._ = { blurDelay: 200 };CKEDITOR.focusManager.prototype = { focus: function (c) {
            this._.timer && clearTimeout(this._.timer);c && (this.currentActive = c);this.hasFocus || this._.locked || ((c = CKEDITOR.currentInstance) && c.focusManager.blur(1), this.hasFocus = !0, (c = this._.editor.container) && c.addClass("cke_focus"), this._.editor.fire("focus"));
          }, lock: function () {
            this._.locked = 1;
          }, unlock: function () {
            delete this._.locked;
          },
          blur: function (c) {
            function h() {
              if (this.hasFocus) {
                this.hasFocus = !1;var a = this._.editor.container;a && a.removeClass("cke_focus");this._.editor.fire("blur");
              }
            }if (!this._.locked) {
              this._.timer && clearTimeout(this._.timer);var g = CKEDITOR.focusManager._.blurDelay;c || !g ? h.call(this) : this._.timer = CKEDITOR.tools.setTimeout(function () {
                delete this._.timer;h.call(this);
              }, g, this);
            }
          }, add: function (c, h) {
            var g = c.getCustomData("focusmanager");if (!g || g != this) {
              g && g.remove(c);var g = "focus",
                  a = "blur";h && (CKEDITOR.env.ie ? (g = "focusin", a = "focusout") : CKEDITOR.event.useCapture = 1);var e = { blur: function () {
                  c.equals(this.currentActive) && this.blur();
                }, focus: function () {
                  this.focus(c);
                } };c.on(g, e.focus, this);c.on(a, e.blur, this);h && (CKEDITOR.event.useCapture = 0);c.setCustomData("focusmanager", this);c.setCustomData("focusmanager_handlers", e);
            }
          }, remove: function (c) {
            c.removeCustomData("focusmanager");var h = c.removeCustomData("focusmanager_handlers");c.removeListener("blur", h.blur);c.removeListener("focus", h.focus);
          } };
      }(), CKEDITOR.keystrokeHandler = function (c) {
        if (c.keystrokeHandler) return c.keystrokeHandler;
        this.keystrokes = {};this.blockedKeystrokes = {};this._ = { editor: c };return this;
      }, function () {
        var c,
            h = function (a) {
          a = a.data;var e = a.getKeystroke(),
              g = this.keystrokes[e],
              k = this._.editor;c = !1 === k.fire("key", { keyCode: e, domEvent: a });c || (g && (c = !1 !== k.execCommand(g, { from: "keystrokeHandler" })), c || (c = !!this.blockedKeystrokes[e]));c && a.preventDefault(!0);return !c;
        },
            g = function (a) {
          c && (c = !1, a.data.preventDefault(!0));
        };CKEDITOR.keystrokeHandler.prototype = { attach: function (a) {
            a.on("keydown", h, this);if (CKEDITOR.env.gecko && CKEDITOR.env.mac) a.on("keypress", g, this);
          } };
      }(), function () {
        CKEDITOR.lang = { languages: { af: 1, ar: 1, az: 1, bg: 1, bn: 1, bs: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1, "de-ch": 1, el: 1, "en-au": 1, "en-ca": 1, "en-gb": 1, en: 1, eo: 1, es: 1, "es-mx": 1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1, "fr-ca": 1, fr: 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, is: 1, it: 1, ja: 1, ka: 1, km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, ms: 1, nb: 1, nl: 1, no: 1, oc: 1, pl: 1, "pt-br": 1, pt: 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, "sr-latn": 1, sr: 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1, uk: 1, vi: 1, "zh-cn": 1, zh: 1 }, rtl: { ar: 1, fa: 1, he: 1,
            ku: 1, ug: 1 }, load: function (c, h, g) {
            c && CKEDITOR.lang.languages[c] || (c = this.detect(h, c));var a = this;h = function () {
              a[c].dir = a.rtl[c] ? "rtl" : "ltr";g(c, a[c]);
            };this[c] ? h() : CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/" + c + ".js"), h, this);
          }, detect: function (c, h) {
            var g = this.languages;h = h || navigator.userLanguage || navigator.language || c;var a = h.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),
                e = a[1],
                a = a[2];g[e + "-" + a] ? e = e + "-" + a : g[e] || (e = null);CKEDITOR.lang.detect = e ? function () {
              return e;
            } : function (a) {
              return a;
            };return e || c;
          } };
      }(), CKEDITOR.scriptLoader = function () {
        var c = {},
            h = {};return { load: function (g, a, e, l) {
            var k = "string" == typeof g;k && (g = [g]);e || (e = CKEDITOR);var m = g.length,
                b = m,
                d = [],
                f = [],
                n = function (b) {
              a && (k ? a.call(e, b) : a.call(e, d, f));
            };if (0 === b) n(!0);else {
              var w = function (a, e) {
                (e ? d : f).push(a);0 >= --b && (l && CKEDITOR.document.getDocumentElement().removeStyle("cursor"), n(e));
              },
                  z = function (a, b) {
                c[a] = 1;var d = h[a];delete h[a];for (var f = 0; f < d.length; f++) d[f](a, b);
              },
                  r = function (b) {
                if (c[b]) w(b, !0);else {
                  var d = h[b] || (h[b] = []);d.push(w);if (!(1 < d.length)) {
                    var f = new CKEDITOR.dom.element("script");f.setAttributes({ type: "text/javascript", src: b });a && (CKEDITOR.env.ie && (8 >= CKEDITOR.env.version || CKEDITOR.env.ie9Compat) ? f.$.onreadystatechange = function () {
                      if ("loaded" == f.$.readyState || "complete" == f.$.readyState) f.$.onreadystatechange = null, z(b, !0);
                    } : (f.$.onload = function () {
                      setTimeout(function () {
                        f.$.onload = null;f.$.onerror = null;z(b, !0);
                      }, 0);
                    }, f.$.onerror = function () {
                      f.$.onload = null;f.$.onerror = null;z(b, !1);
                    }));f.appendTo(CKEDITOR.document.getHead());
                  }
                }
              };l && CKEDITOR.document.getDocumentElement().setStyle("cursor", "wait");for (var t = 0; t < m; t++) r(g[t]);
            }
          }, queue: function () {
            function c() {
              var e;(e = a[0]) && this.load(e.scriptUrl, e.callback, CKEDITOR, 0);
            }var a = [];return function (e, l) {
              var k = this;a.push({ scriptUrl: e, callback: function () {
                  l && l.apply(this, arguments);a.shift();c.call(k);
                } });1 == a.length && c.call(this);
            };
          }() };
      }(), CKEDITOR.resourceManager = function (c, h) {
        this.basePath = c;this.fileName = h;this.registered = {};this.loaded = {};this.externals = {};this._ = { waitingList: {} };
      }, CKEDITOR.resourceManager.prototype = { add: function (c, h) {
          if (this.registered[c]) throw Error('[CKEDITOR.resourceManager.add] The resource name "' + c + '" is already registered.');var g = this.registered[c] = h || {};g.name = c;g.path = this.getPath(c);CKEDITOR.fire(c + CKEDITOR.tools.capitalize(this.fileName) + "Ready", g);return this.get(c);
        }, get: function (c) {
          return this.registered[c] || null;
        }, getPath: function (c) {
          var h = this.externals[c];return CKEDITOR.getUrl(h && h.dir || this.basePath + c + "/");
        }, getFilePath: function (c) {
          var h = this.externals[c];return CKEDITOR.getUrl(this.getPath(c) + (h ? h.file : this.fileName + ".js"));
        }, addExternal: function (c, h, g) {
          g || (h = h.replace(/[^\/]+$/, function (a) {
            g = a;return "";
          }));g = g || this.fileName + ".js";c = c.split(",");for (var a = 0; a < c.length; a++) this.externals[c[a]] = { dir: h, file: g };
        }, load: function (c, h, g) {
          CKEDITOR.tools.isArray(c) || (c = c ? [c] : []);for (var a = this.loaded, e = this.registered, l = [], k = {}, m = {}, b = 0; b < c.length; b++) {
            var d = c[b];if (d) if (a[d] || e[d]) m[d] = this.get(d);else {
              var f = this.getFilePath(d);l.push(f);f in k || (k[f] = []);k[f].push(d);
            }
          }CKEDITOR.scriptLoader.load(l, function (b, d) {
            if (d.length) throw Error('[CKEDITOR.resourceManager.load] Resource name "' + k[d[0]].join(",") + '" was not found at "' + d[0] + '".');for (var f = 0; f < b.length; f++) for (var e = k[b[f]], c = 0; c < e.length; c++) {
              var l = e[c];m[l] = this.get(l);a[l] = 1;
            }h.call(g, m);
          }, this);
        } }, CKEDITOR.plugins = new CKEDITOR.resourceManager("plugins/", "plugin"), CKEDITOR.plugins.load = CKEDITOR.tools.override(CKEDITOR.plugins.load, function (c) {
        var h = {};return function (g, a, e) {
          var l = {},
              k = function (g) {
            c.call(this, g, function (b) {
              CKEDITOR.tools.extend(l, b);var d = [],
                  f;for (f in b) {
                var c = b[f],
                    g = c && c.requires;if (!h[f]) {
                  if (c.icons) for (var m = c.icons.split(","), r = m.length; r--;) CKEDITOR.skin.addIcon(m[r], c.path + "icons/" + (CKEDITOR.env.hidpi && c.hidpi ? "hidpi/" : "") + m[r] + ".png");c.isSupportedEnvironment = c.isSupportedEnvironment || function () {
                    return !0;
                  };h[f] = 1;
                }if (g) for (g.split && (g = g.split(",")), c = 0; c < g.length; c++) l[g[c]] || d.push(g[c]);
              }if (d.length) k.call(this, d);else {
                for (f in l) c = l[f], c.onLoad && !c.onLoad._called && (!1 === c.onLoad() && delete l[f], c.onLoad._called = 1);
                a && a.call(e || window, l);
              }
            }, this);
          };k.call(this, g);
        };
      }), CKEDITOR.plugins.setLang = function (c, h, g) {
        var a = this.get(c);c = a.langEntries || (a.langEntries = {});a = a.lang || (a.lang = []);a.split && (a = a.split(","));-1 == CKEDITOR.tools.indexOf(a, h) && a.push(h);c[h] = g;
      }, CKEDITOR.ui = function (c) {
        if (c.ui) return c.ui;this.items = {};this.instances = {};this.editor = c;this._ = { handlers: {} };return this;
      }, CKEDITOR.ui.prototype = { add: function (c, h, g) {
          g.name = c.toLowerCase();var a = this.items[c] = { type: h, command: g.command || null, args: Array.prototype.slice.call(arguments, 2) };CKEDITOR.tools.extend(a, g);
        }, get: function (c) {
          return this.instances[c];
        }, create: function (c) {
          var h = this.items[c],
              g = h && this._.handlers[h.type],
              a = h && h.command && this.editor.getCommand(h.command),
              g = g && g.create.apply(this, h.args);this.instances[c] = g;a && a.uiItems.push(g);g && !g.type && (g.type = h.type);return g;
        }, addHandler: function (c, h) {
          this._.handlers[c] = h;
        }, space: function (c) {
          return CKEDITOR.document.getById(this.spaceId(c));
        }, spaceId: function (c) {
          return this.editor.id + "_" + c;
        } }, CKEDITOR.event.implementOn(CKEDITOR.ui), function () {
        function c(b, d, f) {
          CKEDITOR.event.call(this);b = b && CKEDITOR.tools.clone(b);if (void 0 !== d) {
            if (!(d instanceof CKEDITOR.dom.element)) throw Error("Expect element of type CKEDITOR.dom.element.");if (!f) throw Error("One of the element modes must be specified.");if (CKEDITOR.env.ie && CKEDITOR.env.quirks && f == CKEDITOR.ELEMENT_MODE_INLINE) throw Error("Inline element mode is not supported on IE quirks.");if (!g(d, f)) throw Error('The specified element mode is not supported on element: "' + d.getName() + '".');
            this.element = d;this.elementMode = f;this.name = this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO && (d.getId() || d.getNameAtt());
          } else this.elementMode = CKEDITOR.ELEMENT_MODE_NONE;this._ = {};this.commands = {};this.templates = {};this.name = this.name || h();this.id = CKEDITOR.tools.getNextId();this.status = "unloaded";this.config = CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui = new CKEDITOR.ui(this);this.focusManager = new CKEDITOR.focusManager(this);this.keystrokeHandler = new CKEDITOR.keystrokeHandler(this);this.on("readOnly", a);this.on("selectionChange", function (a) {
            l(this, a.data.path);
          });this.on("activeFilterChange", function () {
            l(this, this.elementPath(), !0);
          });this.on("mode", a);CKEDITOR.dom.selection.setupEditorOptimization(this);this.on("instanceReady", function () {
            if (this.config.startupFocus) {
              if ("end" === this.config.startupFocus) {
                var a = this.createRange();a.selectNodeContents(this.editable());a.shrink(CKEDITOR.SHRINK_ELEMENT, !0);a.collapse();this.getSelection().selectRanges([a]);
              }this.focus();
            }
          });CKEDITOR.fire("instanceCreated", null, this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function () {
            this.isDestroyed() || this.isDetached() || m(this, b);
          }, 0, this);
        }function h() {
          do var a = "editor" + ++r; while (CKEDITOR.instances[a]);return a;
        }function g(a, b) {
          return b == CKEDITOR.ELEMENT_MODE_INLINE ? a.is(CKEDITOR.dtd.$editable) || a.is("textarea") : b == CKEDITOR.ELEMENT_MODE_REPLACE ? !a.is(CKEDITOR.dtd.$nonBodyContent) : 1;
        }function a() {
          var a = this.commands,
              b;for (b in a) e(this, a[b]);
        }function e(a, b) {
          b[b.startDisabled ? "disable" : a.readOnly && !b.readOnly ? "disable" : b.modes[a.mode] ? "enable" : "disable"]();
        }function l(a, b, d) {
          if (b) {
            var f,
                e,
                c = a.commands;for (e in c) f = c[e], (d || f.contextSensitive) && f.refresh(a, b);
          }
        }function k(a) {
          var b = a.config.customConfig;if (!b) return !1;var b = CKEDITOR.getUrl(b),
              d = t[b] || (t[b] = {});d.fn ? (d.fn.call(a, a.config), CKEDITOR.getUrl(a.config.customConfig) != b && k(a) || a.fireOnce("customConfigLoaded")) : CKEDITOR.scriptLoader.queue(b, function () {
            d.fn = d.fn || CKEDITOR.editorConfig || function () {};k(a);
          });return !0;
        }function m(a, d) {
          a.on("customConfigLoaded", function () {
            if (d) {
              if (d.on) for (var f in d.on) a.on(f, d.on[f]);CKEDITOR.tools.extend(a.config, d, !0);delete a.config.on;
            }f = a.config;a.readOnly = f.readOnly ? !0 : a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.is("textarea") ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : a.element.isReadOnly() : a.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : !1;a.blockless = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? !(a.element.is("textarea") || CKEDITOR.dtd[a.element.getName()].p) : !1;a.tabIndex = f.tabIndex || a.element && a.element.getAttribute("tabindex") || 0;a.activeEnterMode = a.enterMode = a.blockless ? CKEDITOR.ENTER_BR : f.enterMode;a.activeShiftEnterMode = a.shiftEnterMode = a.blockless ? CKEDITOR.ENTER_BR : f.shiftEnterMode;f.skin && (CKEDITOR.skinName = f.skin);a.fireOnce("configLoaded");a.dataProcessor = new CKEDITOR.htmlDataProcessor(a);a.filter = a.activeFilter = new CKEDITOR.filter(a);b(a);
          });d && null != d.customConfig && (a.config.customConfig = d.customConfig);k(a) || a.fireOnce("customConfigLoaded");
        }
        function b(a) {
          CKEDITOR.skin.loadPart("editor", function () {
            d(a);
          });
        }function d(a) {
          CKEDITOR.lang.load(a.config.language, a.config.defaultLanguage, function (b, d) {
            var e = a.config.title,
                c = a.config.applicationTitle;a.langCode = b;a.lang = CKEDITOR.tools.prototypedCopy(d);a.title = "string" == typeof e || !1 === e ? e : [a.lang.editor, a.name].join(", ");a.applicationTitle = "string" == typeof c || !1 === c ? c : [a.lang.application, a.name].join(", ");a.config.contentsLangDirection || (a.config.contentsLangDirection = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.getDirection(1) : a.lang.dir);a.fire("langLoaded");f(a);
          });
        }function f(a) {
          a.getStylesSet(function (b) {
            a.once("loaded", function () {
              a.fire("stylesSet", { styles: b });
            }, null, null, 1);n(a);
          });
        }function n(a) {
          function b(a) {
            if (!a) return "";CKEDITOR.tools.isArray(a) && (a = a.join(","));return a.replace(/\s/g, "");
          }var d = a.config,
              f = b(d.plugins),
              e = b(d.extraPlugins),
              c = b(d.removePlugins);if (e) var g = new RegExp("(?:^|,)(?:" + e.replace(/,/g, "|") + ")(?\x3d,|$)", "g"),
              f = f.replace(g, ""),
              f = f + ("," + e);if (c) var l = new RegExp("(?:^|,)(?:" + c.replace(/,/g, "|") + ")(?\x3d,|$)", "g"),
              f = f.replace(l, "");CKEDITOR.env.air && (f += ",adobeair");CKEDITOR.plugins.load(f.split(","), function (b) {
            var f = [],
                e = [],
                c = [];a.plugins = CKEDITOR.tools.extend({}, a.plugins, b);for (var g in b) {
              var k = b[g],
                  h = k.lang,
                  m = null,
                  n = k.requires,
                  q;CKEDITOR.tools.isArray(n) && (n = n.join(","));if (n && (q = n.match(l))) for (; n = q.pop();) CKEDITOR.error("editor-plugin-required", { plugin: n.replace(",", ""), requiredBy: g });h && !a.lang[g] && (h.split && (h = h.split(",")), 0 <= CKEDITOR.tools.indexOf(h, a.langCode) ? m = a.langCode : (m = a.langCode.replace(/-.*/, ""), m = m != a.langCode && 0 <= CKEDITOR.tools.indexOf(h, m) ? m : 0 <= CKEDITOR.tools.indexOf(h, "en") ? "en" : h[0]), k.langEntries && k.langEntries[m] ? (a.lang[g] = k.langEntries[m], m = null) : c.push(CKEDITOR.getUrl(k.path + "lang/" + m + ".js")));e.push(m);f.push(k);
            }CKEDITOR.scriptLoader.load(c, function () {
              if (!a.isDestroyed() && !a.isDetached()) {
                for (var b = ["beforeInit", "init", "afterInit"], c = 0; c < b.length; c++) for (var g = 0; g < f.length; g++) {
                  var l = f[g];0 === c && e[g] && l.lang && l.langEntries && (a.lang[l.name] = l.langEntries[e[g]]);if (l[b[c]]) l[b[c]](a);
                }a.fireOnce("pluginsLoaded");d.keystrokes && a.setKeystroke(a.config.keystrokes);for (g = 0; g < a.config.blockedKeystrokes.length; g++) a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[g]] = 1;a.status = "loaded";a.fireOnce("loaded");CKEDITOR.fire("instanceLoaded", null, a);
              }
            });
          });
        }function w() {
          var a = this.element;if (a && this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO) {
            var b = this.getData();this.config.htmlEncodeOutput && (b = CKEDITOR.tools.htmlEncode(b));a.is("textarea") ? a.setValue(b) : a.setHtml(b);return !0;
          }return !1;
        }function z(a, b) {
          function d(a) {
            var b = a.startContainer,
                f = a.endContainer,
                e = b.is && b.is("tr"),
                c = b.is && b.is("td");a = c && b.equals(f) && a.endOffset === b.getChildCount();b = c && 1 === b.getChildCount() && "img" === b.getChildren().getItem(0).getName();return e || a && !b ? !0 : !1;
          }function f(a) {
            var b = a.startContainer;return b.is("tr") ? a.cloneContents() : b.clone(!0);
          }for (var e = new CKEDITOR.dom.documentFragment(), c, g, l, k = 0; k < a.length; k++) {
            var h = a[k],
                m = h.startContainer.getAscendant("tr", !0);d(h) ? (c || (c = m.getAscendant("table").clone(), c.append(m.getAscendant({ thead: 1, tbody: 1, tfoot: 1 }).clone()), e.append(c), c = c.findOne("thead, tbody, tfoot")), g && g.equals(m) || (g = m, l = m.clone(), c.append(l)), l.append(f(h))) : e.append(h.cloneContents());
          }return c ? e : b.getHtmlFromRange(a[0]);
        }c.prototype = CKEDITOR.editor.prototype;CKEDITOR.editor = c;var r = 0,
            t = {};CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { plugins: { detectConflict: function (a, b) {
              for (var d = 0; d < b.length; d++) {
                var f = b[d];if (this[f]) return CKEDITOR.warn("editor-plugin-conflict", { plugin: a, replacedWith: f }), !0;
              }return !1;
            } }, addCommand: function (a, b) {
            b.name = a.toLowerCase();var d = b instanceof CKEDITOR.command ? b : new CKEDITOR.command(this, b);this.mode && e(this, d);return this.commands[a] = d;
          }, _attachToForm: function () {
            function a(b) {
              d.updateElement();d._.required && !f.getValue() && !1 === d.fire("required") && b.data.preventDefault();
            }var d = this,
                f = d.element,
                e = new CKEDITOR.dom.element(f.$.form);f.is("textarea") && e && (e.on("submit", a), function b(a) {
              return !!(a && a.call && a.apply);
            }(e.$.submit) && (e.$.submit = CKEDITOR.tools.override(e.$.submit, function (b) {
              return function () {
                a();b.apply ? b.apply(this) : b();
              };
            })), d.on("destroy", function () {
              e.removeListener("submit", a);
            }));
          }, destroy: function (a) {
            var b = CKEDITOR.filter.instances,
                d = this;this.fire("beforeDestroy");!a && w.call(this);this.editable(null);this.filter && delete this.filter;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(b), function (a) {
              a = b[a];d === a.editor && a.destroy();
            });delete this.activeFilter;this.status = "destroyed";this.fire("destroy");this.removeAllListeners();
            CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed", null, this);
          }, elementPath: function (a) {
            if (!a) {
              a = this.getSelection();if (!a) return null;a = a.getStartElement();
            }return a ? new CKEDITOR.dom.elementPath(a, this.editable()) : null;
          }, createRange: function () {
            var a = this.editable();return a ? new CKEDITOR.dom.range(a) : null;
          }, execCommand: function (a, b) {
            var d = this.getCommand(a),
                f = { name: a, commandData: b || {}, command: d };return d && d.state != CKEDITOR.TRISTATE_DISABLED && !1 !== this.fire("beforeCommandExec", f) && (f.returnValue = d.exec(f.commandData), !d.async && !1 !== this.fire("afterCommandExec", f)) ? f.returnValue : !1;
          }, getCommand: function (a) {
            return this.commands[a];
          }, getData: function (a) {
            !a && this.fire("beforeGetData");var b = this._.data;"string" != typeof b && (b = (b = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? b.is("textarea") ? b.getValue() : b.getHtml() : "");b = { dataValue: b };!a && this.fire("getData", b);return b.dataValue;
          }, getSnapshot: function () {
            var a = this.fire("getSnapshot");"string" != typeof a && (a = (a = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.is("textarea") ? a.getValue() : a.getHtml() : "");return a;
          }, loadSnapshot: function (a) {
            this.fire("loadSnapshot", a);
          }, setData: function (a, b, d) {
            var f = !0,
                e = b;b && "object" == typeof b && (d = b.internal, e = b.callback, f = !b.noSnapshot);!d && f && this.fire("saveSnapshot");if (e || !d) this.once("dataReady", function (a) {
              !d && f && this.fire("saveSnapshot");e && e.call(a.editor);
            });a = { dataValue: a };!d && this.fire("setData", a);this._.data = a.dataValue;!d && this.fire("afterSetData", a);
          }, setReadOnly: function (a) {
            a = null == a || a;this.readOnly != a && (this.readOnly = a, this.keystrokeHandler.blockedKeystrokes[8] = +a, this.editable().setReadOnly(a), this.fire("readOnly"));
          }, insertHtml: function (a, b, d) {
            this.fire("insertHtml", { dataValue: a, mode: b, range: d });
          }, insertText: function (a) {
            this.fire("insertText", a);
          }, insertElement: function (a) {
            this.fire("insertElement", a);
          }, getSelectedHtml: function (a) {
            var b = this.editable(),
                d = this.getSelection(),
                d = d && d.getRanges();if (!b || !d || 0 === d.length) return null;b = z(d, b);return a ? b.getHtml() : b;
          }, extractSelectedHtml: function (a, b) {
            var d = this.editable(),
                f = this.getSelection().getRanges(),
                e = new CKEDITOR.dom.documentFragment(),
                c;if (!d || 0 === f.length) return null;for (c = 0; c < f.length; c++) e.append(d.extractHtmlFromRange(f[c], b));b || this.getSelection().selectRanges([f[0]]);return a ? e.getHtml() : e;
          }, focus: function () {
            this.fire("beforeFocus");
          }, checkDirty: function () {
            return "ready" == this.status && this._.previousValue !== this.getSnapshot();
          }, resetDirty: function () {
            this._.previousValue = this.getSnapshot();
          }, updateElement: function () {
            return w.call(this);
          },
          setKeystroke: function () {
            for (var a = this.keystrokeHandler.keystrokes, b = CKEDITOR.tools.isArray(arguments[0]) ? arguments[0] : [[].slice.call(arguments, 0)], d, f, e = b.length; e--;) d = b[e], f = 0, CKEDITOR.tools.isArray(d) && (f = d[1], d = d[0]), f ? a[d] = f : delete a[d];
          }, getCommandKeystroke: function (a, b) {
            var d = "string" === typeof a ? this.getCommand(a) : a,
                f = [];if (d) {
              var e = CKEDITOR.tools.object.findKey(this.commands, d),
                  c = this.keystrokeHandler.keystrokes;if (d.fakeKeystroke) f.push(d.fakeKeystroke);else for (var g in c) c[g] === e && f.push(g);
            }return b ? f : f[0] || null;
          }, addFeature: function (a) {
            return this.filter.addFeature(a);
          }, setActiveFilter: function (a) {
            a || (a = this.filter);this.activeFilter !== a && (this.activeFilter = a, this.fire("activeFilterChange"), a === this.filter ? this.setActiveEnterMode(null, null) : this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode), a.getAllowedEnterMode(this.shiftEnterMode, !0)));
          }, setActiveEnterMode: function (a, b) {
            a = a ? this.blockless ? CKEDITOR.ENTER_BR : a : this.enterMode;b = b ? this.blockless ? CKEDITOR.ENTER_BR : b : this.shiftEnterMode;
            if (this.activeEnterMode != a || this.activeShiftEnterMode != b) this.activeEnterMode = a, this.activeShiftEnterMode = b, this.fire("activeEnterModeChange");
          }, showNotification: function (a) {
            alert(a);
          }, isDetached: function () {
            return !!this.container && this.container.isDetached();
          }, isDestroyed: function () {
            return "destroyed" === this.status;
          } });CKEDITOR.editor._getEditorElement = function (a) {
          if (!CKEDITOR.env.isCompatible) return null;var b = CKEDITOR.dom.element.get(a);return b ? b.getEditor() ? (CKEDITOR.error("editor-element-conflict", { editorName: b.getEditor().name }), null) : b : (CKEDITOR.error("editor-incorrect-element", { element: a }), null);
        };CKEDITOR.editor.initializeDelayedEditorCreation = function (a, b, d) {
          if (b.delayIfDetached_callback) return CKEDITOR.warn("editor-delayed-creation", { method: "callback" }), b.delayIfDetached_callback(function () {
            CKEDITOR[d](a, b);CKEDITOR.warn("editor-delayed-creation-success", { method: "callback" });
          }), null;var f = void 0 === b.delayIfDetached_interval ? CKEDITOR.config.delayIfDetached_interval : b.delayIfDetached_interval;
          CKEDITOR.warn("editor-delayed-creation", { method: "interval - " + f + " ms" });var e = setInterval(function () {
            a.isDetached() || (clearInterval(e), CKEDITOR[d](a, b), CKEDITOR.warn("editor-delayed-creation-success", { method: "interval - " + f + " ms" }));
          }, f);return function () {
            clearInterval(e);
          };
        };CKEDITOR.editor.shouldDelayEditorCreation = function (a, b) {
          CKEDITOR.editor.mergeDelayedCreationConfigs(b);return b && b.delayIfDetached && a.isDetached();
        };CKEDITOR.editor.mergeDelayedCreationConfigs = function (a) {
          a && (a.delayIfDetached = "boolean" === typeof a.delayIfDetached ? a.delayIfDetached : CKEDITOR.config.delayIfDetached, a.delayIfDetached_interval = isNaN(a.delayIfDetached_interval) ? CKEDITOR.config.delayIfDetached_interval : a.delayIfDetached_interval, a.delayIfDetached_callback = a.delayIfDetached_callback || CKEDITOR.config.delayIfDetached_callback);
        };
      }(), CKEDITOR.ELEMENT_MODE_NONE = 0, CKEDITOR.ELEMENT_MODE_REPLACE = 1, CKEDITOR.ELEMENT_MODE_APPENDTO = 2, CKEDITOR.ELEMENT_MODE_INLINE = 3, CKEDITOR.config.delayIfDetached = !1, CKEDITOR.config.delayIfDetached_callback = void 0, CKEDITOR.config.delayIfDetached_interval = 50, CKEDITOR.htmlParser = function () {
        this._ = { htmlPartsRegex: /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--!?>)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g };
      }, function () {
        var c = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,
            h = { checked: 1, compact: 1, declare: 1, defer: 1, disabled: 1, ismap: 1, multiple: 1, nohref: 1, noresize: 1, noshade: 1, nowrap: 1, readonly: 1, selected: 1 };CKEDITOR.htmlParser.prototype = { onTagOpen: function () {}, onTagClose: function () {}, onText: function () {}, onCDATA: function () {}, onComment: function () {}, parse: function (g) {
            for (var a, e, l = 0, k; a = this._.htmlPartsRegex.exec(g);) {
              e = a.index;if (e > l) if (l = g.substring(l, e), k) k.push(l);else this.onText(l);l = this._.htmlPartsRegex.lastIndex;if (e = a[1]) if (e = e.toLowerCase(), k && CKEDITOR.dtd.$cdata[e] && (this.onCDATA(k.join("")), k = null), !k) {
                this.onTagClose(e);continue;
              }if (k) k.push(a[0]);else if (e = a[3]) {
                if (e = e.toLowerCase(), !/="/.test(e)) {
                  var m = {},
                      b,
                      d = a[4];a = !!a[5];if (d) for (; b = c.exec(d);) {
                    var f = b[1].toLowerCase();b = b[2] || b[3] || b[4] || "";m[f] = !b && h[f] ? f : CKEDITOR.tools.htmlDecodeAttr(b);
                  }this.onTagOpen(e, m, a);!k && CKEDITOR.dtd.$cdata[e] && (k = []);
                }
              } else if (e = a[2]) this.onComment(e);
            }if (g.length > l) this.onText(g.substring(l, g.length));
          } };
      }(), CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass({ $: function () {
          this._ = { output: [] };
        }, proto: { openTag: function (c) {
            this._.output.push("\x3c", c);
          }, openTagClose: function (c, h) {
            h ? this._.output.push(" /\x3e") : this._.output.push("\x3e");
          },
          attribute: function (c, h) {
            "string" == typeof h && (h = CKEDITOR.tools.htmlEncodeAttr(h));this._.output.push(" ", c, '\x3d"', h, '"');
          }, closeTag: function (c) {
            this._.output.push("\x3c/", c, "\x3e");
          }, text: function (c) {
            this._.output.push(c);
          }, comment: function (c) {
            this._.output.push("\x3c!--", c, "--\x3e");
          }, write: function (c) {
            this._.output.push(c);
          }, reset: function () {
            this._.output = [];this._.indent = !1;
          }, getHtml: function (c) {
            var h = this._.output.join("");c && this.reset();return h;
          } } }), "use strict", function () {
        CKEDITOR.htmlParser.node = function () {};CKEDITOR.htmlParser.node.prototype = { remove: function () {
            var c = this.parent.children,
                h = CKEDITOR.tools.indexOf(c, this),
                g = this.previous,
                a = this.next;g && (g.next = a);a && (a.previous = g);c.splice(h, 1);this.parent = null;
          }, replaceWith: function (c) {
            var h = this.parent.children,
                g = CKEDITOR.tools.indexOf(h, this),
                a = c.previous = this.previous,
                e = c.next = this.next;a && (a.next = c);e && (e.previous = c);h[g] = c;c.parent = this.parent;this.parent = null;
          }, insertAfter: function (c) {
            var h = c.parent.children,
                g = CKEDITOR.tools.indexOf(h, c),
                a = c.next;h.splice(g + 1, 0, this);this.next = c.next;this.previous = c;c.next = this;a && (a.previous = this);this.parent = c.parent;
          }, insertBefore: function (c) {
            var h = c.parent.children,
                g = CKEDITOR.tools.indexOf(h, c);h.splice(g, 0, this);this.next = c;(this.previous = c.previous) && (c.previous.next = this);c.previous = this;this.parent = c.parent;
          }, getAscendant: function (c) {
            var h = "function" == typeof c ? c : "string" == typeof c ? function (a) {
              return a.name == c;
            } : function (a) {
              return a.name in c;
            },
                g = this.parent;for (; g && g.type == CKEDITOR.NODE_ELEMENT;) {
              if (h(g)) return g;
              g = g.parent;
            }return null;
          }, wrapWith: function (c) {
            this.replaceWith(c);c.add(this);return c;
          }, getIndex: function () {
            return CKEDITOR.tools.indexOf(this.parent.children, this);
          }, getFilterContext: function (c) {
            return c || {};
          } };
      }(), "use strict", CKEDITOR.htmlParser.comment = function (c) {
        this.value = c;this._ = { isBlockLike: !1 };
      }, CKEDITOR.htmlParser.comment.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_COMMENT, filter: function (c, h) {
          var g = this.value;if (!(g = c.onComment(h, g, this))) return this.remove(), !1;if ("string" != typeof g) return this.replaceWith(g), !1;this.value = g;return !0;
        }, writeHtml: function (c, h) {
          h && this.filter(h);c.comment(this.value);
        } }), "use strict", function () {
        CKEDITOR.htmlParser.text = function (c) {
          this.value = c;this._ = { isBlockLike: !1 };
        };CKEDITOR.htmlParser.text.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_TEXT, filter: function (c, h) {
            if (!(this.value = c.onText(h, this.value, this))) return this.remove(), !1;
          }, writeHtml: function (c, h) {
            h && this.filter(h);c.text(this.value);
          } });
      }(), "use strict", function () {
        CKEDITOR.htmlParser.cdata = function (c) {
          this.value = c;
        };CKEDITOR.htmlParser.cdata.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_TEXT, filter: function (c) {
            var h = this.getAscendant("style");if (h && h.getAscendant({ math: 1, svg: 1 })) {
              var h = CKEDITOR.htmlParser.fragment.fromHtml(this.value),
                  g = new CKEDITOR.htmlParser.basicWriter();c.applyTo(h);h.writeHtml(g);this.value = g.getHtml();
            }
          }, writeHtml: function (c) {
            c.write(this.value);
          } });
      }(), "use strict", CKEDITOR.htmlParser.fragment = function () {
        this.children = [];this.parent = null;this._ = { isBlockLike: !0, hasInlineStarted: !1 };
      }, function () {
        function c(a) {
          return a.attributes["data-cke-survive"] ? !1 : "a" == a.name && a.attributes.href || CKEDITOR.dtd.$removeEmpty[a.name];
        }var h = CKEDITOR.tools.extend({ table: 1, ul: 1, ol: 1, dl: 1 }, CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl),
            g = { ol: 1, ul: 1 },
            a = CKEDITOR.tools.extend({}, { html: 1 }, CKEDITOR.dtd.html, CKEDITOR.dtd.body, CKEDITOR.dtd.head, { style: 1, script: 1 }),
            e = { ul: "li", ol: "li", dl: "dd", table: "tbody",
          tbody: "tr", thead: "tr", tfoot: "tr", tr: "td" };CKEDITOR.htmlParser.fragment.fromHtml = function (l, k, m) {
          function b(a) {
            var b;if (0 < u.length) for (var f = 0; f < u.length; f++) {
              var e = u[f],
                  c = e.name,
                  g = CKEDITOR.dtd[c],
                  l = p.name && CKEDITOR.dtd[p.name];l && !l[c] || a && g && !g[a] && CKEDITOR.dtd[a] ? c == p.name && (n(p, p.parent, 1), f--) : (b || (d(), b = 1), e = e.clone(), e.parent = p, p = e, u.splice(f, 1), f--);
            }
          }function d() {
            for (; C.length;) n(C.shift(), p);
          }function f(a) {
            if (a._.isBlockLike && "pre" != a.name && "textarea" != a.name) {
              var b = a.children.length,
                  d = a.children[b - 1],
                  f;d && d.type == CKEDITOR.NODE_TEXT && ((f = CKEDITOR.tools.rtrim(d.value)) ? d.value = f : a.children.length = b - 1);
            }
          }function n(a, b, d) {
            b = b || p || t;var e = p;void 0 === a.previous && (w(b, a) && (p = b, r.onTagOpen(m, {}), a.returnPoint = b = p), f(a), c(a) && !a.children.length || b.add(a), "pre" == a.name && (v = !1), "textarea" == a.name && (x = !1));a.returnPoint ? (p = a.returnPoint, delete a.returnPoint) : p = d ? b : e;
          }function w(a, b) {
            if ((a == t || "body" == a.name) && m && (!a.name || CKEDITOR.dtd[a.name][m])) {
              var d, f;return (d = b.attributes && (f = b.attributes["data-cke-real-element-type"]) ? f : b.name) && d in CKEDITOR.dtd.$inline && !(d in CKEDITOR.dtd.head) && !b.isOrphan || b.type == CKEDITOR.NODE_TEXT;
            }
          }function z(a, b) {
            return a in CKEDITOR.dtd.$listItem || a in CKEDITOR.dtd.$tableContent ? a == b || "dt" == a && "dd" == b || "dd" == a && "dt" == b : !1;
          }var r = new CKEDITOR.htmlParser(),
              t = k instanceof CKEDITOR.htmlParser.element ? k : "string" == typeof k ? new CKEDITOR.htmlParser.element(k) : new CKEDITOR.htmlParser.fragment(),
              u = [],
              C = [],
              p = t,
              x = "textarea" == t.name,
              v = "pre" == t.name;r.onTagOpen = function (f, e, l, k) {
            e = new CKEDITOR.htmlParser.element(f, e);e.isUnknown && l && (e.isEmpty = !0);e.isOptionalClose = k;if (c(e)) u.push(e);else {
              if ("pre" == f) v = !0;else {
                if ("br" == f && v) {
                  p.add(new CKEDITOR.htmlParser.text("\n"));return;
                }"textarea" == f && (x = !0);
              }if ("br" == f) C.push(e);else {
                for (; !(k = (l = p.name) ? CKEDITOR.dtd[l] || (p._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : a, e.isUnknown || p.isUnknown || k[f]);) if (p.isOptionalClose) r.onTagClose(l);else if (f in g && l in g) l = p.children, (l = l[l.length - 1]) && "li" == l.name || n(l = new CKEDITOR.htmlParser.element("li"), p), !e.returnPoint && (e.returnPoint = p), p = l;else if (f in CKEDITOR.dtd.$listItem && !z(f, l)) r.onTagOpen("li" == f ? "ul" : "dl", {}, 0, 1);else if (l in h && !z(f, l)) !e.returnPoint && (e.returnPoint = p), p = p.parent;else if (l in CKEDITOR.dtd.$inline && u.unshift(p), p.parent) n(p, p.parent, 1);else {
                  e.isOrphan = 1;break;
                }b(f);d();e.parent = p;e.isEmpty ? n(e) : p = e;
              }
            }
          };r.onTagClose = function (a) {
            for (var b = u.length - 1; 0 <= b; b--) if (a == u[b].name) {
              u.splice(b, 1);return;
            }for (var f = [], e = [], c = p; c != t && c.name != a;) c._.isBlockLike || e.unshift(c), f.push(c), c = c.returnPoint || c.parent;if (c != t) {
              for (b = 0; b < f.length; b++) {
                var g = f[b];n(g, g.parent);
              }p = c;c._.isBlockLike ? d() : (b = CKEDITOR.config.shiftLineBreaks, !0 !== b && C.length && ("function" !== typeof b ? d() : (b = b(C[C.length - 1]), !0 !== b && (d(), b instanceof CKEDITOR.htmlParser.text && p.add(b), b instanceof CKEDITOR.htmlParser.element && n(b, p)))));n(c, c.parent);c == p && (p = p.parent);u = u.concat(e);
            }"body" == a && (m = !1);
          };r.onText = function (f) {
            if (!(p._.hasInlineStarted && !C.length || v || x) && (f = CKEDITOR.tools.ltrim(f), 0 === f.length)) return;var c = p.name,
                g = c ? CKEDITOR.dtd[c] || (p._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : a;if (!x && !g["#"] && c in h) r.onTagOpen(e[c] || ""), r.onText(f);else {
              d();b();v || x || (f = f.replace(/[\t\r\n ]{2,}|[\t\r\n]/g, " "));f = new CKEDITOR.htmlParser.text(f);if (w(p, f)) this.onTagOpen(m, {}, 0, 1);p.add(f);
            }
          };r.onCDATA = function (a) {
            p.add(new CKEDITOR.htmlParser.cdata(a));
          };r.onComment = function (a) {
            d();b();p.add(new CKEDITOR.htmlParser.comment(a));
          };r.parse(l);for (d(); p != t;) n(p, p.parent, 1);f(t);return t;
        };CKEDITOR.htmlParser.fragment.prototype = { type: CKEDITOR.NODE_DOCUMENT_FRAGMENT, add: function (a, e) {
            isNaN(e) && (e = this.children.length);var c = 0 < e ? this.children[e - 1] : null;if (c) {
              if (a._.isBlockLike && c.type == CKEDITOR.NODE_TEXT && (c.value = CKEDITOR.tools.rtrim(c.value), 0 === c.value.length)) {
                this.children.pop();this.add(a);return;
              }c.next = a;
            }a.previous = c;a.parent = this;this.children.splice(e, 0, a);this._.hasInlineStarted || (this._.hasInlineStarted = a.type == CKEDITOR.NODE_TEXT || a.type == CKEDITOR.NODE_ELEMENT && !a._.isBlockLike);
          }, filter: function (a, e) {
            e = this.getFilterContext(e);
            a.onRoot(e, this);this.filterChildren(a, !1, e);
          }, filterChildren: function (a, e, c) {
            if (this.childrenFilteredBy != a.id) {
              c = this.getFilterContext(c);if (e && !this.parent) a.onRoot(c, this);this.childrenFilteredBy = a.id;for (e = 0; e < this.children.length; e++) !1 === this.children[e].filter(a, c) && e--;
            }
          }, writeHtml: function (a, e) {
            e && this.filter(e);this.writeChildrenHtml(a);
          }, writeChildrenHtml: function (a, e, c) {
            var b = this.getFilterContext();if (c && !this.parent && e) e.onRoot(b, this);e && this.filterChildren(e, !1, b);e = 0;c = this.children;
            for (b = c.length; e < b; e++) c[e].writeHtml(a);
          }, forEach: function (a, e, c) {
            if (!(c || e && this.type != e)) var b = a(this);if (!1 !== b) {
              c = this.children;for (var d = 0; d < c.length; d++) b = c[d], b.type == CKEDITOR.NODE_ELEMENT ? b.forEach(a, e) : e && b.type != e || a(b);
            }
          }, getFilterContext: function (a) {
            return a || {};
          } };CKEDITOR.config.shiftLineBreaks = !0;
      }(), "use strict", function () {
        function c() {
          this.rules = [];
        }function h(g, a, e, l) {
          var k, h;for (k in a) (h = g[k]) || (h = g[k] = new c()), h.add(a[k], e, l);
        }CKEDITOR.htmlParser.filter = CKEDITOR.tools.createClass({ $: function (g) {
            this.id = CKEDITOR.tools.getNextNumber();this.elementNameRules = new c();this.attributeNameRules = new c();this.elementsRules = {};this.attributesRules = {};this.textRules = new c();this.commentRules = new c();this.rootRules = new c();g && this.addRules(g, 10);
          }, proto: { addRules: function (c, a) {
              var e;"number" == typeof a ? e = a : a && "priority" in a && (e = a.priority);"number" != typeof e && (e = 10);"object" != typeof a && (a = {});c.elementNames && this.elementNameRules.addMany(c.elementNames, e, a);c.attributeNames && this.attributeNameRules.addMany(c.attributeNames, e, a);c.elements && h(this.elementsRules, c.elements, e, a);c.attributes && h(this.attributesRules, c.attributes, e, a);c.text && this.textRules.add(c.text, e, a);c.comment && this.commentRules.add(c.comment, e, a);c.root && this.rootRules.add(c.root, e, a);
            }, applyTo: function (c) {
              c.filter(this);
            }, onElementName: function (c, a) {
              return this.elementNameRules.execOnName(c, a);
            }, onAttributeName: function (c, a) {
              return this.attributeNameRules.execOnName(c, a);
            }, onText: function (c, a, e) {
              return this.textRules.exec(c, a, e);
            }, onComment: function (c, a, e) {
              return this.commentRules.exec(c, a, e);
            }, onRoot: function (c, a) {
              return this.rootRules.exec(c, a);
            }, onElement: function (c, a) {
              for (var e = [this.elementsRules["^"], this.elementsRules[a.name], this.elementsRules.$], l, k = 0; 3 > k; k++) if (l = e[k]) {
                l = l.exec(c, a, this);if (!1 === l) return null;if (l && l != a) return this.onNode(c, l);if (a.parent && !a.name) break;
              }return a;
            }, onNode: function (c, a) {
              var e = a.type;return e == CKEDITOR.NODE_ELEMENT ? this.onElement(c, a) : e == CKEDITOR.NODE_TEXT ? new CKEDITOR.htmlParser.text(this.onText(c, a.value, a)) : e == CKEDITOR.NODE_COMMENT ? new CKEDITOR.htmlParser.comment(this.onComment(c, a.value, a)) : null;
            }, onAttribute: function (c, a, e, l) {
              return (e = this.attributesRules[e]) ? e.exec(c, l, a, this) : l;
            } } });CKEDITOR.htmlParser.filterRulesGroup = c;c.prototype = { add: function (c, a, e) {
            this.rules.splice(this.findIndex(a), 0, { value: c, priority: a, options: e });
          }, addMany: function (c, a, e) {
            for (var l = [this.findIndex(a), 0], k = 0, h = c.length; k < h; k++) l.push({ value: c[k], priority: a, options: e });this.rules.splice.apply(this.rules, l);
          }, findIndex: function (c) {
            for (var a = this.rules, e = a.length - 1; 0 <= e && c < a[e].priority;) e--;return e + 1;
          }, exec: function (c, a) {
            var e = a instanceof CKEDITOR.htmlParser.node || a instanceof CKEDITOR.htmlParser.fragment,
                l = Array.prototype.slice.call(arguments, 1),
                k = this.rules,
                h = k.length,
                b,
                d,
                f,
                n;for (n = 0; n < h; n++) if (e && (b = a.type, d = a.name), f = k[n], !(c.nonEditable && !f.options.applyToAll || c.nestedEditable && f.options.excludeNestedEditable)) {
              f = f.value.apply(null, l);if (!1 === f || e && f && (f.name != d || f.type != b)) return f;null != f && (l[0] = a = f);
            }return a;
          }, execOnName: function (c, a) {
            for (var e = 0, l = this.rules, k = l.length, h; a && e < k; e++) h = l[e], c.nonEditable && !h.options.applyToAll || c.nestedEditable && h.options.excludeNestedEditable || (a = a.replace(h.value[0], h.value[1]));return a;
          } };
      }(), function () {
        function c(b, d) {
          function f(a) {
            return a || CKEDITOR.env.needsNbspFiller ? new CKEDITOR.htmlParser.text(" ") : new CKEDITOR.htmlParser.element("br", { "data-cke-bogus": 1 });
          }function c(b, d) {
            return function (e) {
              if (e.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
                var c = [],
                    k = g(e),
                    m,
                    O;if (k) for (h(k, 1) && c.push(k); k;) l(k) && (m = a(k)) && h(m) && ((O = a(m)) && !l(O) ? c.push(m) : (f(n).insertAfter(m), m.remove())), k = k.previous;for (k = 0; k < c.length; k++) c[k].remove();if (c = !b || !1 !== ("function" == typeof d ? d(e) : d)) n || CKEDITOR.env.needsBrFiller || e.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT ? n || CKEDITOR.env.needsBrFiller || !(7 < document.documentMode || e.name in CKEDITOR.dtd.tr || e.name in CKEDITOR.dtd.$listItem) ? (c = g(e), c = !c || "form" == e.name && "input" == c.name) : c = !1 : c = !1;c && e.add(f(b));
              }
            };
          }function h(a, b) {
            if ((!n || CKEDITOR.env.needsBrFiller) && a.type == CKEDITOR.NODE_ELEMENT && "br" == a.name && !a.attributes["data-cke-eol"]) return !0;var d;return a.type == CKEDITOR.NODE_TEXT && (d = a.value.match(C)) && (d.index && (new CKEDITOR.htmlParser.text(a.value.substring(0, d.index)).insertBefore(a), a.value = d[0]), !CKEDITOR.env.needsBrFiller && n && (!b || a.parent.name in w) || !n && ((d = a.previous) && "br" == d.name || !d || l(d))) ? !0 : !1;
          }var m = { elements: {} },
              n = "html" == d,
              w = CKEDITOR.tools.extend({}, q),
              L;for (L in w) "#" in x[L] || delete w[L];for (L in w) m.elements[L] = c(n, b.config.fillEmptyBlocks);m.root = c(n, !1);m.elements.br = function (b) {
            return function (d) {
              if (d.parent.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
                var c = d.attributes;if ("data-cke-bogus" in c || "data-cke-eol" in c) delete c["data-cke-bogus"];else {
                  for (c = d.next; c && e(c);) c = c.next;var g = a(d);!c && l(d.parent) ? k(d.parent, f(b)) : l(c) && g && !l(g) && f(b).insertBefore(c);
                }
              }
            };
          }(n);return m;
        }function h(a, b) {
          return a != CKEDITOR.ENTER_BR && !1 !== b ? a == CKEDITOR.ENTER_DIV ? "div" : "p" : !1;
        }function g(a) {
          for (a = a.children[a.children.length - 1]; a && e(a);) a = a.previous;return a;
        }function a(a) {
          for (a = a.previous; a && e(a);) a = a.previous;return a;
        }function e(a) {
          return a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(a.value) || a.type == CKEDITOR.NODE_ELEMENT && a.attributes["data-cke-bookmark"];
        }function l(a) {
          return a && (a.type == CKEDITOR.NODE_ELEMENT && a.name in q || a.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT);
        }function k(a, b) {
          var d = a.children[a.children.length - 1];a.children.push(b);b.parent = a;d && (d.next = b, b.previous = d);
        }function m(a) {
          a = a.attributes;"false" != a.contenteditable && (a["data-cke-editable"] = a.contenteditable ? "true" : 1);
          a.contenteditable = "false";
        }function b(a) {
          a = a.attributes;switch (a["data-cke-editable"]) {case "true":
              a.contenteditable = "true";break;case "1":
              delete a.contenteditable;}
        }function d(a, b) {
          return a.replace(G, function (a, d, f) {
            return "\x3c" + d + f.replace(E, function (a, d) {
              return K.test(d) && -1 == f.indexOf("data-cke-saved-" + d) ? " data-cke-saved-" + a + " data-cke-" + b + "-" + a : a;
            }) + "\x3e";
          });
        }function f(a, b) {
          return a.replace(b, function (a, b, d) {
            0 === a.indexOf("\x3ctextarea") && (a = b + z(d).replace(/</g, "\x26lt;").replace(/>/g, "\x26gt;") + "\x3c/textarea\x3e");return "\x3ccke:encoded\x3e" + encodeURIComponent(a) + "\x3c/cke:encoded\x3e";
          });
        }function n(a) {
          return a.replace(I, function (a, b) {
            return decodeURIComponent(b);
          });
        }function w(a) {
          return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, function (a) {
            return "\x3c!--" + p + "{C}" + encodeURIComponent(a).replace(/--/g, "%2D%2D") + "--\x3e";
          });
        }function z(a) {
          return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g, function (a, b) {
            return decodeURIComponent(b);
          });
        }function r(a, b) {
          var d = b._.dataStore;
          return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g, function (a, b) {
            return decodeURIComponent(b);
          }).replace(/\{cke_protected_(\d+)\}/g, function (a, b) {
            return d && d[b] || "";
          });
        }function t(a, b, d) {
          var f = [],
              e = b.config.protectedSource,
              c = b._.dataStore || (b._.dataStore = { id: 1 }),
              g = new RegExp("\x3c\\!--\\{cke_temp_" + d + "(comment)?\\}(\\d*?)--\x3e", "g"),
              e = [/<script[\s\S]*?(<\/script>|$)/gi, /<noscript[\s\S]*?<\/noscript>/gi, /<meta[\s\S]*?\/?>/gi].concat(e);a = a.replace(/\x3c!--[\s\S]*?--\x3e/g, function (a) {
            return "\x3c!--{cke_temp_" + d + "comment}" + (f.push(a) - 1) + "--\x3e";
          });for (var l = 0; l < e.length; l++) a = a.replace(e[l], function (a) {
            a = a.replace(g, function (a, b, d) {
              return f[d];
            });return g.test(a) ? a : "\x3c!--{cke_temp_" + d + "}" + (f.push(a) - 1) + "--\x3e";
          });a = a.replace(g, function (a, b, d) {
            return "\x3c!--" + p + (b ? "{C}" : "") + encodeURIComponent(f[d]).replace(/--/g, "%2D%2D") + "--\x3e";
          });a = a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g, function (a) {
            return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g, function (a, b) {
              c[c.id] = decodeURIComponent(b);return "{cke_protected_" + c.id++ + "}";
            });
          });return a = a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g, function (a, d, f, e) {
            return "\x3c" + d + f + "\x3e" + r(z(e), b) + "\x3c/" + d + "\x3e";
          });
        }var u;CKEDITOR.htmlDataProcessor = function (a) {
          var b,
              e,
              g = this;this.editor = a;this.dataFilter = b = new CKEDITOR.htmlParser.filter();this.htmlFilter = e = new CKEDITOR.htmlParser.filter();this.writer = new CKEDITOR.htmlParser.basicWriter();b.addRules(y);b.addRules(A, { applyToAll: !0 });b.addRules(c(a, "data"), { applyToAll: !0 });e.addRules(F);e.addRules(B, { applyToAll: !0 });e.addRules(c(a, "html"), { applyToAll: !0 });a.on("toHtml", function (b) {
            var e;var c = window.crypto || window.msCrypto;e = c ? c.getRandomValues(new Uint32Array(1))[0] : Math.floor(9E9 * Math.random() + 1E9);b = b.data;var c = b.dataValue,
                c = u(c),
                c = t(c, a, e),
                c = f(c, M),
                c = d(c, e),
                c = f(c, H),
                c = c.replace(D, "$1cke:$2"),
                c = c.replace(L, "\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"),
                c = c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g, "$1$2$2"),
                c = c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi, "$1data-cke-" + e + "-$2"),
                g = b.context || a.editable().getName(),
                l;CKEDITOR.env.ie && 9 > CKEDITOR.env.version && "pre" == g && (g = "div", c = "\x3cpre\x3e" + c + "\x3c/pre\x3e", l = 1);g = a.document.createElement(g);g.setHtml("a" + c);c = g.getHtml().substr(1);c = c.replace(new RegExp("data-cke-" + e + "-", "ig"), "");l && (c = c.replace(/^<pre>|<\/pre>$/gi, ""));c = c.replace(P, "$1$2");c = n(c);c = z(c);e = !1 === b.fixForBody ? !1 : h(b.enterMode, a.config.autoParagraph);c = CKEDITOR.htmlParser.fragment.fromHtml(c, b.context, e);e && (l = c, !l.children.length && CKEDITOR.dtd[l.name][e] && (e = new CKEDITOR.htmlParser.element(e), l.add(e)));b.dataValue = c;
          }, null, null, 5);a.on("toHtml", function (b) {
            b.data.filter.applyTo(b.data.dataValue, !0, b.data.dontFilter, b.data.enterMode) && a.fire("dataFiltered");
          }, null, null, 6);a.on("toHtml", function (a) {
            a.data.dataValue.filterChildren(g.dataFilter, !0);
          }, null, null, 10);a.on("toHtml", function (a) {
            a = a.data;var b = a.dataValue,
                d = new CKEDITOR.htmlParser.basicWriter();b.writeChildrenHtml(d);b = d.getHtml(!0);a.dataValue = w(b);
          }, null, null, 15);a.on("toDataFormat", function (b) {
            var d = b.data.dataValue;b.data.enterMode != CKEDITOR.ENTER_BR && (d = d.replace(/^<br *\/?>/i, ""));b.data.dataValue = CKEDITOR.htmlParser.fragment.fromHtml(d, b.data.context, h(b.data.enterMode, a.config.autoParagraph));
          }, null, null, 5);a.on("toDataFormat", function (a) {
            a.data.dataValue.filterChildren(g.htmlFilter, !0);
          }, null, null, 10);a.on("toDataFormat", function (a) {
            a.data.filter.applyTo(a.data.dataValue, !1, !0);
          }, null, null, 11);a.on("toDataFormat", function (b) {
            var d = b.data.dataValue,
                f = g.writer;f.reset();d.writeChildrenHtml(f);
            d = f.getHtml(!0);d = z(d);d = r(d, a);b.data.dataValue = d;
          }, null, null, 15);
        };CKEDITOR.htmlDataProcessor.prototype = { toHtml: function (a, b, d, f) {
            var e = this.editor,
                c,
                g,
                l,
                k;b && "object" == typeof b ? (c = b.context, d = b.fixForBody, f = b.dontFilter, g = b.filter, l = b.enterMode, k = b.protectedWhitespaces) : c = b;c || null === c || (c = e.editable().getName());return e.fire("toHtml", { dataValue: a, context: c, fixForBody: d, dontFilter: f, filter: g || e.filter, enterMode: l || e.enterMode, protectedWhitespaces: k }).dataValue;
          }, toDataFormat: function (a, b) {
            var d, f, e;b && (d = b.context, f = b.filter, e = b.enterMode);d || null === d || (d = this.editor.editable().getName());return this.editor.fire("toDataFormat", { dataValue: a, filter: f || this.editor.filter, context: d, enterMode: e || this.editor.enterMode }).dataValue;
          }, protectSource: function (a) {
            return t(a, this.editor);
          }, unprotectSource: function (a) {
            return r(a, this.editor);
          }, unprotectRealComments: function (a) {
            return z(a);
          } };var C = /(?:&nbsp;|\xa0)$/,
            p = "{cke_protected}",
            x = CKEDITOR.dtd,
            v = "caption colgroup col thead tfoot tbody".split(" "),
            q = CKEDITOR.tools.extend({}, x.$blockLimit, x.$block),
            y = { elements: { input: m, textarea: m } },
            A = { attributeNames: [[/^on/, "data-cke-pa-on"], [/^srcdoc/, "data-cke-pa-srcdoc"], [/^data-cke-expando$/, ""]], elements: { iframe: function (a) {
              if (a.attributes && a.attributes.src) {
                var b = a.attributes.src.toLowerCase().replace(/[^a-z]/gi, "");if (0 === b.indexOf("javascript") || 0 === b.indexOf("data")) a.attributes["data-cke-pa-src"] = a.attributes.src, delete a.attributes.src;
              }
            } } },
            F = { elements: { embed: function (a) {
              var b = a.parent;if (b && "object" == b.name) {
                var d = b.attributes.width,
                    b = b.attributes.height;d && (a.attributes.width = d);b && (a.attributes.height = b);
              }
            }, a: function (a) {
              var b = a.attributes;if (!(a.children.length || b.name || b.id || a.attributes["data-cke-saved-name"])) return !1;
            } } },
            B = { elementNames: [[/^cke:/, ""], [/^\?xml:namespace$/, ""]], attributeNames: [[/^data-cke-(saved|pa)-/, ""], [/^data-cke-.*/, ""], ["hidefocus", ""]], elements: { $: function (a) {
              var b = a.attributes;if (b) {
                if (b["data-cke-temp"]) return !1;for (var d = ["name", "href", "src"], f, e = 0; e < d.length; e++) f = "data-cke-saved-" + d[e], f in b && delete b[d[e]];
              }return a;
            }, table: function (a) {
              a.children.slice(0).sort(function (a, b) {
                var d, f;a.type == CKEDITOR.NODE_ELEMENT && b.type == a.type && (d = CKEDITOR.tools.indexOf(v, a.name), f = CKEDITOR.tools.indexOf(v, b.name));-1 < d && -1 < f && d != f || (d = a.parent ? a.getIndex() : -1, f = b.parent ? b.getIndex() : -1);return d > f ? 1 : -1;
              });
            }, param: function (a) {
              a.children = [];a.isEmpty = !0;return a;
            }, span: function (a) {
              "Apple-style-span" == a.attributes["class"] && delete a.name;
            }, html: function (a) {
              delete a.attributes.contenteditable;
              delete a.attributes["class"];
            }, body: function (a) {
              delete a.attributes.spellcheck;delete a.attributes.contenteditable;
            }, style: function (a) {
              var b = a.children[0];b && b.value && (b.value = CKEDITOR.tools.trim(b.value));a.attributes.type || (a.attributes.type = "text/css");
            }, title: function (a) {
              var b = a.children[0];!b && k(a, b = new CKEDITOR.htmlParser.text());b.value = a.attributes["data-cke-title"] || "";
            }, input: b, textarea: b }, attributes: { "class": function (a) {
              return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g, "")) || !1;
            } } };
        CKEDITOR.env.ie && (B.attributes.style = function (a) {
          return a.replace(/(^|;)([^\:]+)/g, function (a) {
            return a.toLowerCase();
          });
        });var G = /<(a|area|img|input|source)\b([^>]*)>/gi,
            E = /([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,
            K = /^(href|src|name)$/i,
            H = /(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,
            M = /(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,
            I = /<cke:encoded>([^<]*)<\/cke:encoded>/gi,
            D = /(<\/?)((?:object|embed|param|html|body|head|title)([\s][^>]*)?>)/gi,
            P = /(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,
            L = /<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;u = function () {
          function a(b, d) {
            for (var f = 0; f < b.length; f++) {
              var e = b[f];e.lastIndex = 0;if (e.test(d)) return !0;
            }return !1;
          }function b(a) {
            return CKEDITOR.tools.array.reduce(a.split(""), function (a, b) {
              var f = b.toLowerCase(),
                  e = b.toUpperCase(),
                  c = d(f);f !== e && (c += "|" + d(e));return a + ("(" + c + ")");
            }, "");
          }function d(a) {
            var b = a.charCodeAt(0);var f = b.toString(16);b = { htmlCode: "\x26#" + b + ";?", hex: "\x26#x0*" + f + ";?", entity: { "\x3c": "\x26lt;",
                "\x3e": "\x26gt;", ":": "\x26colon;" }[a] };for (var e in b) b[e] && (a += "|" + b[e]);return a;
          }var f = [new RegExp("(" + b("\x3ccke:encoded\x3e") + "(.*?)" + b("\x3c/cke:encoded\x3e") + ")|(" + b("\x3c") + b("/") + "?" + b("cke:encoded\x3e") + ")", "gi"), new RegExp("((" + b("{cke_protected") + ")(_[0-9]*)?" + b("}") + ")", "gi"), /<!(?:\s*-\s*){2,3}!?\s*>/g];return function (b) {
            for (; a(f, b);) for (var d = f, e = 0; e < d.length; e++) b = b.replace(d[e], "");return b;
          };
        }();
      }(), "use strict", CKEDITOR.htmlParser.element = function (c, h) {
        this.name = c;this.attributes = h || {};this.children = [];var g = c || "",
            a = g.match(/^cke:(.*)/);a && (g = a[1]);g = !!(CKEDITOR.dtd.$nonBodyContent[g] || CKEDITOR.dtd.$block[g] || CKEDITOR.dtd.$listItem[g] || CKEDITOR.dtd.$tableContent[g] || CKEDITOR.dtd.$nonEditable[g] || "br" == g);this.isEmpty = !!CKEDITOR.dtd.$empty[c];this.isUnknown = !CKEDITOR.dtd[c];this._ = { isBlockLike: g, hasInlineStarted: this.isEmpty || !g };
      }, CKEDITOR.htmlParser.cssStyle = function (c) {
        var h = {};((c instanceof CKEDITOR.htmlParser.element ? c.attributes.style : c) || "").replace(/&quot;/g, '"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function (c, a, e) {
          "font-family" == a && (e = e.replace(/["']/g, ""));h[a.toLowerCase()] = e;
        });return { rules: h, populate: function (c) {
            var a = this.toString();a && (c instanceof CKEDITOR.dom.element ? c.setAttribute("style", a) : c instanceof CKEDITOR.htmlParser.element ? c.attributes.style = a : c.style = a);
          }, toString: function () {
            var c = [],
                a;for (a in h) h[a] && c.push(a, ":", h[a], ";");return c.join("");
          } };
      }, function () {
        function c(a) {
          return function (e) {
            return e.type == CKEDITOR.NODE_ELEMENT && ("string" == typeof a ? e.name == a : e.name in a);
          };
        }var h = function (a, e) {
          a = a[0];e = e[0];return a < e ? -1 : a > e ? 1 : 0;
        },
            g = CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_ELEMENT, add: g.add, clone: function () {
            return new CKEDITOR.htmlParser.element(this.name, this.attributes);
          }, filter: function (a, e) {
            var c = this,
                g,
                h;e = c.getFilterContext(e);if (!c.parent) a.onRoot(e, c);for (;;) {
              g = c.name;if (!(h = a.onElementName(e, g))) return this.remove(), !1;c.name = h;if (!(c = a.onElement(e, c))) return this.remove(), !1;if (c !== this) return this.replaceWith(c), !1;if (c.name == g) break;if (c.type != CKEDITOR.NODE_ELEMENT) return this.replaceWith(c), !1;if (!c.name) return this.replaceWithChildren(), !1;
            }g = c.attributes;var b, d;for (b in g) {
              for (h = g[b];;) if (d = a.onAttributeName(e, b)) {
                if (d != b) delete g[b], b = d;else break;
              } else {
                delete g[b];break;
              }d && (!1 === (h = a.onAttribute(e, c, d, h)) ? delete g[d] : g[d] = h);
            }c.isEmpty || this.filterChildren(a, !1, e);return !0;
          }, filterChildren: g.filterChildren, writeHtml: function (a, e) {
            e && this.filter(e);var c = this.name,
                g = [],
                m = this.attributes,
                b,
                d;a.openTag(c, m);for (b in m) g.push([b, m[b]]);a.sortAttributes && g.sort(h);b = 0;for (d = g.length; b < d; b++) m = g[b], a.attribute(m[0], m[1]);a.openTagClose(c, this.isEmpty);this.writeChildrenHtml(a);this.isEmpty || a.closeTag(c);
          }, writeChildrenHtml: g.writeChildrenHtml, replaceWithChildren: function () {
            for (var a = this.children, c = a.length; c;) a[--c].insertAfter(this);this.remove();
          }, forEach: g.forEach, getFirst: function (a) {
            if (!a) return this.children.length ? this.children[0] : null;"function" != typeof a && (a = c(a));for (var e = 0, g = this.children.length; e < g; ++e) if (a(this.children[e])) return this.children[e];return null;
          }, getHtml: function () {
            var a = new CKEDITOR.htmlParser.basicWriter();this.writeChildrenHtml(a);return a.getHtml();
          }, setHtml: function (a) {
            a = this.children = CKEDITOR.htmlParser.fragment.fromHtml(a).children;for (var c = 0, g = a.length; c < g; ++c) a[c].parent = this;
          }, getOuterHtml: function () {
            var a = new CKEDITOR.htmlParser.basicWriter();this.writeHtml(a);return a.getHtml();
          }, split: function (a) {
            for (var c = this.children.splice(a, this.children.length - a), g = this.clone(), k = 0; k < c.length; ++k) c[k].parent = g;g.children = c;c[0] && (c[0].previous = null);0 < a && (this.children[a - 1].next = null);this.parent.add(g, this.getIndex() + 1);return g;
          }, find: function (a, c) {
            void 0 === c && (c = !1);var g = [],
                k;for (k = 0; k < this.children.length; k++) {
              var h = this.children[k];"function" == typeof a && a(h) ? g.push(h) : "string" == typeof a && h.name === a && g.push(h);c && h.find && (g = g.concat(h.find(a, c)));
            }return g;
          }, findOne: function (a, c) {
            var g = null,
                k = CKEDITOR.tools.array.find(this.children, function (k) {
              var b = "function" === typeof a ? a(k) : k.name === a;if (b || !c) return b;k.children && k.findOne && (g = k.findOne(a, !0));return !!g;
            });return g || k || null;
          }, addClass: function (a) {
            if (!this.hasClass(a)) {
              var c = this.attributes["class"] || "";this.attributes["class"] = c + (c ? " " : "") + a;
            }
          }, removeClass: function (a) {
            var c = this.attributes["class"];c && ((c = CKEDITOR.tools.trim(c.replace(new RegExp("(?:\\s+|^)" + a + "(?:\\s+|$)"), " "))) ? this.attributes["class"] = c : delete this.attributes["class"]);
          }, hasClass: function (a) {
            var c = this.attributes["class"];
            return c ? new RegExp("(?:^|\\s)" + a + "(?\x3d\\s|$)").test(c) : !1;
          }, getFilterContext: function (a) {
            var c = [];a || (a = { nonEditable: !1, nestedEditable: !1 });a.nonEditable || "false" != this.attributes.contenteditable ? a.nonEditable && !a.nestedEditable && "true" == this.attributes.contenteditable && c.push("nestedEditable", !0) : c.push("nonEditable", !0);if (c.length) {
              a = CKEDITOR.tools.copy(a);for (var g = 0; g < c.length; g += 2) a[c[g]] = c[g + 1];
            }return a;
          } }, !0);
      }(), function () {
        var c = /{([^}]+)}/g;CKEDITOR.template = function (c) {
          this.source = "function" === typeof c ? c : String(c);
        };CKEDITOR.template.prototype.output = function (h, g) {
          var a = ("function" === typeof this.source ? this.source(h) : this.source).replace(c, function (a, c) {
            return void 0 !== h[c] ? h[c] : a;
          });return g ? g.push(a) : a;
        };
      }(), delete CKEDITOR.loadFullCore, CKEDITOR.instances = {}, CKEDITOR.document = new CKEDITOR.dom.document(document), CKEDITOR.add = function (c) {
        function h() {
          CKEDITOR.currentInstance == c && (CKEDITOR.currentInstance = null, CKEDITOR.fire("currentInstance"));
        }CKEDITOR.instances[c.name] = c;c.on("focus", function () {
          CKEDITOR.currentInstance != c && (CKEDITOR.currentInstance = c, CKEDITOR.fire("currentInstance"));
        });c.on("blur", h);c.on("destroy", h);CKEDITOR.fire("instance", null, c);
      }, CKEDITOR.remove = function (c) {
        delete CKEDITOR.instances[c.name];
      }, function () {
        var c = {};CKEDITOR.addTemplate = function (h, g) {
          var a = c[h];if (a) return a;a = { name: h, source: g };CKEDITOR.fire("template", a);return c[h] = new CKEDITOR.template(a.source);
        };CKEDITOR.getTemplate = function (h) {
          return c[h];
        };
      }(), function () {
        var c = [];CKEDITOR.addCss = function (h) {
          c.push(h);
        };CKEDITOR.getCss = function () {
          return c.join("\n");
        };
      }(), CKEDITOR.on("instanceDestroyed", function () {
        CKEDITOR.tools.isEmpty(this.instances) && CKEDITOR.fire("reset");
      }), CKEDITOR.TRISTATE_ON = 1, CKEDITOR.TRISTATE_OFF = 2, CKEDITOR.TRISTATE_DISABLED = 0, function () {
        CKEDITOR.inline = function (c, h) {
          c = CKEDITOR.editor._getEditorElement(c);if (!c) return null;if (CKEDITOR.editor.shouldDelayEditorCreation(c, h)) return CKEDITOR.editor.initializeDelayedEditorCreation(c, h, "inline");var g = c.is("textarea") ? c : null,
              a = g ? g.getValue() : c.getHtml(),
              e = new CKEDITOR.editor(h, c, CKEDITOR.ELEMENT_MODE_INLINE);
          g ? (e.setData(a, null, !0), c = CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"' + !!e.readOnly + '" class\x3d"cke_textarea_inline"\x3e' + g.getValue() + "\x3c/div\x3e", CKEDITOR.document), c.insertAfter(g), g.hide(), g.$.form && e._attachToForm()) : (h && "undefined" !== typeof h.readOnly && !h.readOnly && c.setAttribute("contenteditable", "true"), e.setData(a, null, !0));e.on("loaded", function () {
            e.fire("uiReady");e.editable(c);e.container = c;e.ui.contentsElement = c;e.setData(e.getData(1));e.resetDirty();e.fire("contentDom");
            e.mode = "wysiwyg";e.fire("mode");e.status = "ready";e.fireOnce("instanceReady");CKEDITOR.fire("instanceReady", null, e);
          }, null, null, 1E4);e.on("destroy", function () {
            var a = e.container;g && a && (a.clearCustomData(), a.remove());g && g.show();e.element.clearCustomData();delete e.element;
          });return e;
        };CKEDITOR.inlineAll = function () {
          var c, h, g;for (g in CKEDITOR.dtd.$editable) for (var a = CKEDITOR.document.getElementsByTag(g), e = 0, l = a.count(); e < l; e++) c = a.getItem(e), "true" != c.getAttribute("contenteditable") || c.getEditor() || (h = { element: c, config: {} }, !1 !== CKEDITOR.fire("inline", h) && CKEDITOR.inline(c, h.config));
        };CKEDITOR.domReady(function () {
          !CKEDITOR.disableAutoInline && CKEDITOR.inlineAll();
        });
      }(), CKEDITOR.replaceClass = "ckeditor", function () {
        function c(a, c, l, k) {
          a = CKEDITOR.editor._getEditorElement(a);if (!a) return null;if (CKEDITOR.editor.shouldDelayEditorCreation(a, c)) return CKEDITOR.editor.initializeDelayedEditorCreation(a, c, "replace");var m = new CKEDITOR.editor(c, a, k);k == CKEDITOR.ELEMENT_MODE_REPLACE && (a.setStyle("visibility", "hidden"), m._.required = a.hasAttribute("required"), a.removeAttribute("required"));l && m.setData(l, null, !0);m.on("loaded", function () {
            m.isDestroyed() || m.isDetached() || (g(m), k == CKEDITOR.ELEMENT_MODE_REPLACE && m.config.autoUpdateElement && a.$.form && m._attachToForm(), m.setMode(m.config.startupMode, function () {
              m.resetDirty();m.status = "ready";m.fireOnce("instanceReady");CKEDITOR.fire("instanceReady", null, m);
            }));
          });m.on("destroy", h);return m;
        }function h() {
          var a = this.container,
              c = this.element;a && (a.clearCustomData(), a.remove());c && (c.clearCustomData(), this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && (c.show(), this._.required && c.setAttribute("required", "required")), delete this.element);
        }function g(a) {
          var c = a.name,
              g = a.element,
              k = a.elementMode,
              h = a.fire("uiSpace", { space: "top", html: "" }).html,
              b = a.fire("uiSpace", { space: "bottom", html: "" }).html,
              d = new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} ' + CKEDITOR.env.cssClass + '"  dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"' + (a.applicationTitle ? ' aria-labelledby\x3d"cke_{name}_arialbl"' : "") + "\x3e" + (a.applicationTitle ? '\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e' : "") + '\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'),
              c = CKEDITOR.dom.element.createFromHtml(d.output({ id: a.id, name: c, langDir: a.lang.dir,
            langCode: a.langCode, voiceLabel: a.applicationTitle, topHtml: h ? '\x3cspan id\x3d"' + a.ui.spaceId("top") + '" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e' + h + "\x3c/span\x3e" : "", contentId: a.ui.spaceId("contents"), bottomHtml: b ? '\x3cspan id\x3d"' + a.ui.spaceId("bottom") + '" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e' + b + "\x3c/span\x3e" : "", outerEl: CKEDITOR.env.ie ? "span" : "div" }));k == CKEDITOR.ELEMENT_MODE_REPLACE ? (g.hide(), c.insertAfter(g)) : g.append(c);a.container = c;a.ui.contentsElement = a.ui.space("contents");h && a.ui.space("top").unselectable();b && a.ui.space("bottom").unselectable();g = a.config.width;k = a.config.height;g && c.setStyle("width", CKEDITOR.tools.cssLength(g));k && a.ui.space("contents").setStyle("height", CKEDITOR.tools.cssLength(k));c.disableContextMenu();CKEDITOR.env.webkit && c.on("focus", function () {
            a.focus();
          });a.fireOnce("uiReady");
        }CKEDITOR.replace = function (a, e) {
          return c(a, e, null, CKEDITOR.ELEMENT_MODE_REPLACE);
        };CKEDITOR.appendTo = function (a, e, g) {
          return c(a, e, g, CKEDITOR.ELEMENT_MODE_APPENDTO);
        };CKEDITOR.replaceAll = function () {
          for (var a = document.getElementsByTagName("textarea"), c = 0; c < a.length; c++) {
            var g = null,
                k = a[c];if (k.name || k.id) {
              if ("string" == typeof arguments[0]) {
                if (!new RegExp("(?:^|\\s)" + arguments[0] + "(?:$|\\s)").test(k.className)) continue;
              } else if ("function" == typeof arguments[0] && (g = {}, !1 === arguments[0](k, g))) continue;this.replace(k, g);
            }
          }
        };CKEDITOR.editor.prototype.addMode = function (a, c) {
          (this._.modes || (this._.modes = {}))[a] = c;
        };CKEDITOR.editor.prototype.setMode = function (a, c) {
          var g = this,
              k = this._.modes;if (a != g.mode && k && k[a]) {
            g.fire("beforeSetMode", a);if (g.mode) {
              var h = g.checkDirty(),
                  k = g._.previousModeData,
                  b,
                  d = 0;g.fire("beforeModeUnload");g.editable(0);g._.previousMode = g.mode;g._.previousModeData = b = g.getData(1);"source" == g.mode && k == b && (g.fire("lockSnapshot", { forceUpdate: !0 }), d = 1);(g.ui.space("contents") || g.ui.contentsElement).setHtml("");g.mode = "";
            } else g._.previousModeData = g.getData(1);this._.modes[a](function () {
              g.mode = a;void 0 !== h && !h && g.resetDirty();d ? g.fire("unlockSnapshot") : "wysiwyg" == a && g.fire("saveSnapshot");setTimeout(function () {
                g.isDestroyed() || g.isDetached() || (g.fire("mode"), c && c.call(g));
              }, 0);
            });
          }
        };CKEDITOR.editor.prototype.resize = function (a, c, g, k) {
          var h = this.container,
              b = this.ui.space("contents"),
              d = CKEDITOR.env.webkit && this.document && this.document.getWindow().$.frameElement;k = k ? this.container.getFirst(function (a) {
            return a.type == CKEDITOR.NODE_ELEMENT && a.hasClass("cke_inner");
          }) : h;if (a || 0 === a) a = CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(a));k.setSize("width", a, !0);d && (d.style.width = "1%");c = CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(c));var f = (k.$.offsetHeight || 0) - (b.$.clientHeight || 0),
              h = Math.max(c - (g ? 0 : f), 0);c = g ? c + f : c;b.setStyle("height", CKEDITOR.tools.cssLength(h));d && (d.style.width = "100%");this.fire("resize", { outerHeight: c, contentsHeight: h, outerWidth: a || k.getSize("width") });
        };CKEDITOR.editor.prototype.getResizable = function (a) {
          return a ? this.ui.space("contents") : this.container;
        };CKEDITOR.domReady(function () {
          CKEDITOR.replaceClass && CKEDITOR.replaceAll(CKEDITOR.replaceClass);
        });
      }(), CKEDITOR.config.startupMode = "wysiwyg", function () {
        function c(d) {
          var f = d.editor,
              c = d.data.path,
              e = c.blockLimit,
              g = d.data.selection,
              l = g.getRanges()[0],
              k;if (CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller) if (g = h(g, c)) g.appendBogus(), k = CKEDITOR.env.ie && !CKEDITOR.env.edge || CKEDITOR.env.edge && f._.previousActive;b(f, c.block, e) && l.collapsed && !l.getCommonAncestor().isReadOnly() && (c = l.clone(), c.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS), e = new CKEDITOR.dom.walker(c), e.guard = function (b) {
            return !a(b) || b.type == CKEDITOR.NODE_COMMENT || b.isReadOnly();
          }, !e.checkForward() || c.checkStartOfBlock() && c.checkEndOfBlock()) && (f = l.fixBlock(!0, f.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p"), CKEDITOR.env.needsBrFiller || (f = f.getFirst(a)) && f.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(f.getText()).match(/^(?:&nbsp;|\xa0)$/) && f.remove(), k = 1, d.cancel());k && l.select();
        }function h(b, d) {
          if (b.isFake) return 0;var f = d.block || d.blockLimit,
              c = f && f.getLast(a);if (!(!f || !f.isBlockBoundary() || c && c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary() || f.is("pre") || f.getBogus())) return f;
        }function g(a) {
          var b = a.data.getTarget();b.is("input") && (b = b.getAttribute("type"), "submit" != b && "reset" != b || a.data.preventDefault());
        }function a(a) {
          return z(a) && r(a);
        }function e(a, b) {
          return function (d) {
            var f = d.data.$.toElement || d.data.$.fromElement || d.data.$.relatedTarget;(f = f && f.nodeType == CKEDITOR.NODE_ELEMENT ? new CKEDITOR.dom.element(f) : null) && (b.equals(f) || b.contains(f)) || a.call(this, d);
          };
        }function l(a) {
          return !!a.getRanges()[0].startPath().contains({ table: 1,
            ul: 1, ol: 1, dl: 1 });
        }function k(b) {
          function d(b) {
            var c = { table: 1, ul: 1, ol: 1, dl: 1 };return function (d, e) {
              e && d.type == CKEDITOR.NODE_ELEMENT && d.is(c) && (f = d);if (!(e || !a(d) || b && u(d))) return !1;
            };
          }var f,
              c = b.getRanges()[0],
              e = b.root;return l(b) && (b = c.clone(), b.collapse(1), b.setStartAt(e, CKEDITOR.POSITION_AFTER_START), e = new CKEDITOR.dom.walker(b), e.guard = d(), e.checkBackward(), f) ? (b = c.clone(), b.collapse(), b.setEndAt(f, CKEDITOR.POSITION_AFTER_END), e = new CKEDITOR.dom.walker(b), e.guard = d(!0), f = !1, e.checkForward(), f) : null;
        }
        function m(a) {
          return a.block.getParent().getChildCount();
        }function b(a, b, d) {
          return !1 !== a.config.autoParagraph && a.activeEnterMode != CKEDITOR.ENTER_BR && (a.editable().equals(d) && !b || b && "true" == b.getAttribute("contenteditable"));
        }function d(a) {
          return a.activeEnterMode != CKEDITOR.ENTER_BR && !1 !== a.config.autoParagraph ? a.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p" : !1;
        }function f(a) {
          a && a.isEmptyInlineRemoveable() && a.remove();
        }function n(a) {
          var b = a.editor;b.getSelection().scrollIntoView();setTimeout(function () {
            b.fire("saveSnapshot");
          }, 0);
        }function w(a, b, d) {
          var f = a.getCommonAncestor(b);for (b = a = d ? b : a; (a = a.getParent()) && !f.equals(a) && 1 == a.getChildCount();) b = a;b.remove();
        }var z,
            r,
            t,
            u,
            C,
            p,
            x,
            v,
            q,
            y,
            A = { ul: 1, ol: 1, dl: 1 };CKEDITOR.editable = CKEDITOR.tools.createClass({ base: CKEDITOR.dom.element, $: function (a, b) {
            this.base(b.$ || b);this.editor = a;this.status = "unloaded";this.hasFocus = !1;this.setup();
          }, proto: { focus: function () {
              var a;if (CKEDITOR.env.webkit && !this.hasFocus && (a = this.editor._.previousActive || this.getDocument().getActive(), this.contains(a))) {
                a.focus();
                return;
              }CKEDITOR.env.edge && 14 < CKEDITOR.env.version && !this.hasFocus && this.getDocument().equals(CKEDITOR.document) && (this.editor._.previousScrollTop = this.$.scrollTop);try {
                if (!CKEDITOR.env.ie || CKEDITOR.env.edge && 14 < CKEDITOR.env.version || !this.getDocument().equals(CKEDITOR.document)) {
                  if (CKEDITOR.env.chrome) {
                    var b = this.$.scrollTop;this.$.focus();this.$.scrollTop = b;
                  } else this.$.focus();
                } else this.$.setActive();
              } catch (d) {
                if (!CKEDITOR.env.ie) throw d;
              }CKEDITOR.env.safari && !this.isInline() && (a = CKEDITOR.document.getActive(), a.equals(this.getWindow().getFrame()) || this.getWindow().focus());
            }, on: function (a, b) {
              var d = Array.prototype.slice.call(arguments, 0);CKEDITOR.env.ie && /^focus|blur$/.exec(a) && (a = "focus" == a ? "focusin" : "focusout", b = e(b, this), d[0] = a, d[1] = b);return CKEDITOR.dom.element.prototype.on.apply(this, d);
            }, attachListener: function (a) {
              !this._.listeners && (this._.listeners = []);var b = Array.prototype.slice.call(arguments, 1),
                  b = a.on.apply(a, b);this._.listeners.push(b);return b;
            }, clearListeners: function () {
              var a = this._.listeners;
              try {
                for (; a.length;) a.pop().removeListener();
              } catch (b) {}
            }, restoreAttrs: function () {
              var a = this._.attrChanges,
                  b,
                  d;for (d in a) a.hasOwnProperty(d) && (b = a[d], null !== b ? this.setAttribute(d, b) : this.removeAttribute(d));
            }, attachClass: function (a) {
              var b = this.getCustomData("classes");this.hasClass(a) || (!b && (b = []), b.push(a), this.setCustomData("classes", b), this.addClass(a));
            }, changeAttr: function (a, b) {
              var d = this.getAttribute(a);b !== d && (!this._.attrChanges && (this._.attrChanges = {}), a in this._.attrChanges || (this._.attrChanges[a] = d), this.setAttribute(a, b));
            }, insertText: function (a) {
              this.editor.focus();this.insertHtml(this.transformPlainTextToHtml(a), "text");
            }, transformPlainTextToHtml: function (a) {
              var b = this.editor.getSelection().getStartElement().hasAscendant("pre", !0) ? CKEDITOR.ENTER_BR : this.editor.activeEnterMode;return CKEDITOR.tools.transformPlainTextToHtml(a, b);
            }, insertHtml: function (a, b, d) {
              var f = this.editor;f.focus();f.fire("saveSnapshot");d || (d = f.getSelection().getRanges()[0]);p(this, b || "html", a, d);d.select();n(this);this.editor.fire("afterInsertHtml", {});
            }, insertHtmlIntoRange: function (a, b, d) {
              p(this, d || "html", a, b);this.editor.fire("afterInsertHtml", { intoRange: b });
            }, insertElement: function (b, d) {
              var f = this.editor;f.focus();f.fire("saveSnapshot");var c = f.activeEnterMode,
                  f = f.getSelection(),
                  e = b.getName(),
                  e = CKEDITOR.dtd.$block[e];d || (d = f.getRanges()[0]);this.insertElementIntoRange(b, d) && (d.moveToPosition(b, CKEDITOR.POSITION_AFTER_END), e && ((e = b.getNext(function (b) {
                return a(b) && !u(b);
              })) && e.type == CKEDITOR.NODE_ELEMENT && e.is(CKEDITOR.dtd.$block) ? e.getDtd()["#"] ? d.moveToElementEditStart(e) : d.moveToElementEditEnd(b) : e || c == CKEDITOR.ENTER_BR || (e = d.fixBlock(!0, c == CKEDITOR.ENTER_DIV ? "div" : "p"), d.moveToElementEditStart(e))));f.selectRanges([d]);n(this);
            }, insertElementIntoSelection: function (a) {
              this.insertElement(a);
            }, insertElementIntoRange: function (a, b) {
              var d = this.editor,
                  c = d.config.enterMode,
                  e = a.getName(),
                  g = CKEDITOR.dtd.$block[e];if (b.checkReadOnly()) return !1;b.deleteContents(1);b.startContainer.type == CKEDITOR.NODE_ELEMENT && (b.startContainer.is({ tr: 1, table: 1, tbody: 1,
                thead: 1, tfoot: 1 }) ? x(b) : b.startContainer.is(CKEDITOR.dtd.$list) && v(b));var l, k;if (g) for (; (l = b.getCommonAncestor(0, 1)) && (k = CKEDITOR.dtd[l.getName()]) && (!k || !k[e]);) if (l.getName() in CKEDITOR.dtd.span) {
                var g = b.splitElement(l),
                    h = b.createBookmark();f(l);f(g);b.moveToBookmark(h);
              } else b.checkStartOfBlock() && b.checkEndOfBlock() ? (b.setStartBefore(l), b.collapse(!0), l.remove()) : b.splitBlock(c == CKEDITOR.ENTER_DIV ? "div" : "p", d.editable());b.insertNode(a);return !0;
            }, setData: function (a, b) {
              b || (a = this.editor.dataProcessor.toHtml(a));
              this.setHtml(a);this.fixInitialSelection();"unloaded" == this.status && (this.status = "ready");this.editor.fire("dataReady");
            }, getData: function (a) {
              var b = this.getHtml();a || (b = this.editor.dataProcessor.toDataFormat(b));return b;
            }, setReadOnly: function (a) {
              this.setAttribute("contenteditable", String(!a));this.setAttribute("aria-readonly", String(a));
            }, detach: function () {
              this.status = "detached";this.editor.setData(this.editor.getData(), { internal: !0 });this.clearListeners();try {
                this._.cleanCustomData();
              } catch (a) {
                if (!CKEDITOR.env.ie || -2146828218 !== a.number) throw a;
              }this.editor.fire("contentDomUnload");delete this.editor.document;delete this.editor.window;delete this.editor;
            }, isInline: function () {
              return this.getDocument().equals(CKEDITOR.document);
            }, fixInitialSelection: function () {
              function a() {
                var b = d.getDocument().$,
                    f = b.getSelection(),
                    c;a: if (f.anchorNode && f.anchorNode == d.$) c = !0;else {
                  if (CKEDITOR.env.webkit && (c = d.getDocument().getActive()) && c.equals(d) && !f.anchorNode) {
                    c = !0;break a;
                  }c = void 0;
                }c && (c = new CKEDITOR.dom.range(d), c.moveToElementEditStart(d), b = b.createRange(), b.setStart(c.startContainer.$, c.startOffset), b.collapse(!0), f.removeAllRanges(), f.addRange(b));
              }var d = this;if (CKEDITOR.env.ie && (9 > CKEDITOR.env.version || CKEDITOR.env.quirks)) this.hasFocus && (this.focus(), function b() {
                var a = d.getDocument().$,
                    f = a.selection,
                    c = d.getDocument().getActive();"None" == f.type && c.equals(d) && (f = new CKEDITOR.dom.range(d), a = a.body.createTextRange(), f.moveToElementEditStart(d), f = f.startContainer, f.type != CKEDITOR.NODE_ELEMENT && (f = f.getParent()), a.moveToElementText(f.$), a.collapse(!0), a.select());
              }());else if (this.hasFocus) this.focus(), a();else this.once("focus", function () {
                a();
              }, null, null, -999);
            }, getHtmlFromRange: function (a) {
              if (a.collapsed) return new CKEDITOR.dom.documentFragment(a.document);a = { doc: this.getDocument(), range: a.clone() };q.eol.detect(a, this);q.bogus.exclude(a);q.cell.shrink(a);a.fragment = a.range.cloneContents();q.tree.rebuild(a, this);q.eol.fix(a, this);return new CKEDITOR.dom.documentFragment(a.fragment.$);
            }, extractHtmlFromRange: function (a, b) {
              var d = y,
                  f = { range: a, doc: a.document },
                  c = this.getHtmlFromRange(a);if (a.collapsed) return a.optimize(), c;a.enlarge(CKEDITOR.ENLARGE_INLINE, 1);d.table.detectPurge(f);f.bookmark = a.createBookmark();delete f.range;var e = this.editor.createRange();e.moveToPosition(f.bookmark.startNode, CKEDITOR.POSITION_BEFORE_START);f.targetBookmark = e.createBookmark();d.list.detectMerge(f, this);d.table.detectRanges(f, this);d.block.detectMerge(f, this);f.tableContentsRanges ? (d.table.deleteRanges(f), a.moveToBookmark(f.bookmark), f.range = a) : (a.moveToBookmark(f.bookmark), f.range = a, a.extractContents(d.detectExtractMerge(f)));a.moveToBookmark(f.targetBookmark);a.optimize();d.fixUneditableRangePosition(a);d.list.merge(f, this);d.table.purge(f, this);d.block.merge(f, this);if (b) {
                d = a.startPath();if (f = a.checkStartOfBlock() && a.checkEndOfBlock() && d.block && !a.root.equals(d.block)) {
                  a: {
                    var f = d.block.getElementsByTag("span"),
                        e = 0,
                        g;if (f) for (; g = f.getItem(e++);) if (!r(g)) {
                      f = !0;break a;
                    }f = !1;
                  }f = !f;
                }f && (a.moveToPosition(d.block, CKEDITOR.POSITION_BEFORE_START), d.block.remove());
              } else d.autoParagraph(this.editor, a), t(a.startContainer) && a.startContainer.appendBogus();a.startContainer.mergeSiblings();return c;
            }, setup: function () {
              var b = this.editor;this.attachListener(b, "beforeGetData", function () {
                var a = this.getData();this.is("textarea") || !1 !== b.config.ignoreEmptyParagraph && (a = a.replace(C, function (a, b) {
                  return b;
                }));b.setData(a, null, 1);
              }, this);this.attachListener(b, "getSnapshot", function (a) {
                a.data = this.getData(1);
              }, this);this.attachListener(b, "afterSetData", function () {
                this.setData(b.getData(1));
              }, this);this.attachListener(b, "loadSnapshot", function (a) {
                this.setData(a.data, 1);
              }, this);this.attachListener(b, "beforeFocus", function () {
                var a = b.getSelection();(a = a && a.getNative()) && "Control" == a.type || this.focus();
              }, this);this.attachListener(b, "insertHtml", function (a) {
                this.insertHtml(a.data.dataValue, a.data.mode, a.data.range);
              }, this);this.attachListener(b, "insertElement", function (a) {
                this.insertElement(a.data);
              }, this);this.attachListener(b, "insertText", function (a) {
                this.insertText(a.data);
              }, this);this.setReadOnly(b.readOnly);this.attachClass("cke_editable");
              b.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? this.attachClass("cke_editable_inline") : b.elementMode != CKEDITOR.ELEMENT_MODE_REPLACE && b.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO || this.attachClass("cke_editable_themed");this.attachClass("cke_contents_" + b.config.contentsLangDirection);b.keystrokeHandler.blockedKeystrokes[8] = +b.readOnly;b.keystrokeHandler.attach(this);this.on("blur", function () {
                this.hasFocus = !1;
              }, null, null, -1);this.on("focus", function () {
                this.hasFocus = !0;
              }, null, null, -1);if (CKEDITOR.env.webkit) this.on("scroll", function () {
                b._.previousScrollTop = b.editable().$.scrollTop;
              }, null, null, -1);if (CKEDITOR.env.edge && 14 < CKEDITOR.env.version) {
                var d = function () {
                  var a = b.editable();null != b._.previousScrollTop && a.getDocument().equals(CKEDITOR.document) && (a.$.scrollTop = b._.previousScrollTop, b._.previousScrollTop = null, this.removeListener("scroll", d));
                };this.on("scroll", d);
              }b.focusManager.add(this);this.equals(CKEDITOR.document.getActive()) && (this.hasFocus = !0, b.once("contentDom", function () {
                b.focusManager.focus(this);
              }, this));this.isInline() && this.changeAttr("tabindex", b.tabIndex);if (!this.is("textarea")) {
                b.document = this.getDocument();b.window = this.getWindow();var f = b.document;this.changeAttr("spellcheck", !b.config.disableNativeSpellChecker);var c = b.config.contentsLangDirection;this.getDirection(1) != c && this.changeAttr("dir", c);var e = CKEDITOR.getCss();if (e) {
                  var c = f.getHead(),
                      h = c.getCustomData("stylesheet");h ? e != h.getText() && (CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? h.$.styleSheet.cssText = e : h.setText(e)) : (e = f.appendStyleText(e), e = new CKEDITOR.dom.element(e.ownerNode || e.owningElement), c.setCustomData("stylesheet", e), e.data("cke-temp", 1));
                }c = f.getCustomData("stylesheet_ref") || 0;f.setCustomData("stylesheet_ref", c + 1);this.setCustomData("cke_includeReadonly", !b.config.disableReadonlyStyling);this.attachListener(this, "click", function (a) {
                  a = a.data;var b = new CKEDITOR.dom.elementPath(a.getTarget(), this).contains("a");b && 2 != a.$.button && b.isReadOnly() && a.preventDefault();
                });var n = { 8: 1, 46: 1 };this.attachListener(b, "key", function (a) {
                  if (b.readOnly) return !0;var d = a.data.domEvent.getKey(),
                      f,
                      c = b.getSelection();if (0 !== c.getRanges().length) {
                    if (d in n) {
                      var e;a = c.getRanges()[0];var g = a.startPath(),
                          h,
                          w,
                          q,
                          d = 8 == d,
                          p = !1;if (CKEDITOR.env.ie && 11 > CKEDITOR.env.version && c.getSelectedElement()) e = c.getSelectedElement();else if (l(c)) {
                        var v = new CKEDITOR.dom.walker(a),
                            t = a.collapsed ? a.startContainer : v.next(),
                            p = !1,
                            u;if (a.checkStartOfBlock()) {
                          u = a.startPath().block || a.startPath().blockLimit;var E = u.getName();u = -1 !== CKEDITOR.tools.array.indexOf(["dd", "dt", "li"], E) && null === u.getPrevious();
                        } else u = !1;if (u) {
                          for (; t && !p;) p = t.$.nodeName.toLowerCase(), p = !!A[p], t = v.next();v = m(a.startPath());t = m(a.endPath());p = p || v !== t;
                        } else p = void 0;p || (e = k(c));
                      }e || p ? (b.fire("saveSnapshot"), p ? ((f = a.startContainer.getAscendant(A, !0)) ? (a.setStart(f, 0), a.enlarge(CKEDITOR.ENLARGE_ELEMENT), e = a) : e = null, e.deleteContents()) : (a.moveToPosition(e, CKEDITOR.POSITION_BEFORE_START), e.remove()), a.select(), b.fire("saveSnapshot"), f = 1) : a.collapsed && ((h = g.block) && (q = h[d ? "getPrevious" : "getNext"](z)) && q.type == CKEDITOR.NODE_ELEMENT && q.is("table") && a[d ? "checkStartOfBlock" : "checkEndOfBlock"]() ? (b.fire("saveSnapshot"), a[d ? "checkEndOfBlock" : "checkStartOfBlock"]() && h.remove(), a["moveToElementEdit" + (d ? "End" : "Start")](q), a.select(), b.fire("saveSnapshot"), f = 1) : g.blockLimit && g.blockLimit.is("td") && (w = g.blockLimit.getAscendant("table")) && a.checkBoundaryOfElement(w, d ? CKEDITOR.START : CKEDITOR.END) && (q = w[d ? "getPrevious" : "getNext"](z)) ? (b.fire("saveSnapshot"), a["moveToElementEdit" + (d ? "End" : "Start")](q), a.checkStartOfBlock() && a.checkEndOfBlock() ? q.remove() : a.select(), b.fire("saveSnapshot"), f = 1) : (w = g.contains(["td", "th", "caption"])) && a.checkBoundaryOfElement(w, d ? CKEDITOR.START : CKEDITOR.END) && (f = 1));
                    }return !f;
                  }
                });b.blockless && CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller && this.attachListener(this, "keyup", function (d) {
                  d.data.getKeystroke() in n && !this.getFirst(a) && (this.appendBogus(), d = b.createRange(), d.moveToPosition(this, CKEDITOR.POSITION_AFTER_START), d.select());
                });this.attachListener(this, "dblclick", function (a) {
                  if (b.readOnly) return !1;a = { element: a.data.getTarget() };b.fire("doubleclick", a);
                });
                CKEDITOR.env.ie && this.attachListener(this, "click", g);CKEDITOR.env.ie && !CKEDITOR.env.edge || this.attachListener(this, "mousedown", function (a) {
                  var d = a.data.getTarget();d.is("img", "hr", "input", "textarea", "select") && !d.isReadOnly() && (b.getSelection().selectElement(d), d.is("input", "textarea", "select") && a.data.preventDefault());
                });CKEDITOR.env.edge && this.attachListener(this, "mouseup", function (a) {
                  (a = a.data.getTarget()) && a.is("img") && !a.isReadOnly() && b.getSelection().selectElement(a);
                });CKEDITOR.env.gecko && this.attachListener(this, "mouseup", function (a) {
                  if (2 == a.data.$.button && (a = a.data.getTarget(), !a.getAscendant("table") && !a.getOuterHtml().replace(C, ""))) {
                    var d = b.createRange();d.moveToElementEditStart(a);d.select(!0);
                  }
                });CKEDITOR.env.webkit && (this.attachListener(this, "click", function (a) {
                  a.data.getTarget().is("input", "select") && a.data.preventDefault();
                }), this.attachListener(this, "mouseup", function (a) {
                  a.data.getTarget().is("input", "textarea") && a.data.preventDefault();
                }));CKEDITOR.env.webkit && this.attachListener(b, "key", function (a) {
                  if (b.readOnly) return !0;
                  var d = a.data.domEvent.getKey();if (d in n && (a = b.getSelection(), 0 !== a.getRanges().length)) {
                    var d = 8 == d,
                        f = a.getRanges()[0];a = f.startPath();if (f.collapsed) a: {
                      var c = a.block;if (c && f[d ? "checkStartOfBlock" : "checkEndOfBlock"](!0) && f.moveToClosestEditablePosition(c, !d) && f.collapsed) {
                        if (f.startContainer.type == CKEDITOR.NODE_ELEMENT) {
                          var e = f.startContainer.getChild(f.startOffset - (d ? 1 : 0));if (e && e.type == CKEDITOR.NODE_ELEMENT && e.is("hr")) {
                            b.fire("saveSnapshot");e.remove();a = !0;break a;
                          }
                        }f = f.startPath().block;if (!f || f && f.contains(c)) a = void 0;else {
                          b.fire("saveSnapshot");var g;(g = (d ? f : c).getBogus()) && g.remove();g = b.getSelection();e = g.createBookmarks();(d ? c : f).moveChildren(d ? f : c, !1);a.lastElement.mergeSiblings();w(c, f, !d);g.selectBookmarks(e);a = !0;
                        }
                      } else a = !1;
                    } else d = f, g = a.block, f = d.endPath().block, g && f && !g.equals(f) ? (b.fire("saveSnapshot"), (c = g.getBogus()) && c.remove(), d.enlarge(CKEDITOR.ENLARGE_INLINE), d.deleteContents(), f.getParent() && (f.moveChildren(g, !1), a.lastElement.mergeSiblings(), w(g, f, !0)), d = b.getSelection().getRanges()[0], d.collapse(1), d.optimize(), "" === d.startContainer.getHtml() && d.startContainer.appendBogus(), d.select(), a = !0) : a = !1;if (!a) return;b.getSelection().scrollIntoView();b.fire("saveSnapshot");return !1;
                  }
                }, this, null, 100);
              }
            }, getUniqueId: function () {
              var a;try {
                this._.expandoNumber = a = CKEDITOR.dom.domObject.prototype.getUniqueId.call(this);
              } catch (b) {
                a = this._ && this._.expandoNumber;
              }return a;
            } }, _: { cleanCustomData: function () {
              this.removeClass("cke_editable");this.restoreAttrs();for (var a = this.removeCustomData("classes"); a && a.length;) this.removeClass(a.pop());if (!this.is("textarea")) {
                var a = this.getDocument(),
                    b = a.getHead();if (b.getCustomData("stylesheet")) {
                  var d = a.getCustomData("stylesheet_ref");--d ? a.setCustomData("stylesheet_ref", d) : (a.removeCustomData("stylesheet_ref"), b.removeCustomData("stylesheet").remove());
                }
              }
            } } });CKEDITOR.editor.prototype.editable = function (a) {
          var b = this._.editable;if (b && a) return 0;if (!arguments.length) return b;a ? b = a instanceof CKEDITOR.editable ? a : new CKEDITOR.editable(this, a) : (b && b.detach(), b = null);return this._.editable = b;
        };CKEDITOR.on("instanceLoaded", function (a) {
          var b = a.editor;b.on("insertElement", function (a) {
            a = a.data;a.type == CKEDITOR.NODE_ELEMENT && (a.is("input") || a.is("textarea")) && ("false" != a.getAttribute("contentEditable") && a.data("cke-editable", a.hasAttribute("contenteditable") ? "true" : "1"), a.setAttribute("contentEditable", !1));
          });b.on("selectionChange", function (a) {
            if (!b.readOnly) {
              var d = b.getSelection();d && !d.isLocked && (d = b.checkDirty(), b.fire("lockSnapshot"), c(a), b.fire("unlockSnapshot"), !d && b.resetDirty());
            }
          });
        });CKEDITOR.on("instanceCreated", function (a) {
          var b = a.editor;b.on("mode", function () {
            var a = b.editable();if (a && a.isInline()) {
              var d = b.title;a.changeAttr("role", "textbox");a.changeAttr("aria-multiline", "true");d && a.changeAttr("aria-label", d);d && a.changeAttr("title", d);var f = b.fire("ariaEditorHelpLabel", {}).label;if (f && (d = this.ui.space(this.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? "top" : "contents"))) {
                var c = CKEDITOR.tools.getNextId(),
                    f = CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"' + c + '" class\x3d"cke_voice_label"\x3e' + f + "\x3c/span\x3e");d.append(f);a.changeAttr("aria-describedby", c);
              }
            }
          });
        });CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");z = CKEDITOR.dom.walker.whitespaces(!0);r = CKEDITOR.dom.walker.bookmark(!1, !0);t = CKEDITOR.dom.walker.empty();u = CKEDITOR.dom.walker.bogus();C = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;p = function () {
          function c(a) {
            return a.type == CKEDITOR.NODE_ELEMENT;
          }function e(a, b) {
            var d,
                f,
                g,
                l,
                k = [],
                h = b.range.startContainer;d = b.range.startPath();for (var h = n[h.getName()], m = 0, w = a.getChildren(), L = w.count(), p = -1, q = -1, v = 0, t = d.contains(n.$list); m < L; ++m) d = w.getItem(m), c(d) ? (g = d.getName(), t && g in CKEDITOR.dtd.$list ? k = k.concat(e(d, b)) : (l = !!h[g], "br" != g || !d.data("cke-eol") || m && m != L - 1 || (v = (f = m ? k[m - 1].node : w.getItem(m + 1)) && (!c(f) || !f.is("br")), f = f && c(f) && n.$block[f.getName()]), -1 != p || l || (p = m), l || (q = m), k.push({ isElement: 1,
              isLineBreak: v, isBlock: d.isBlockBoundary(), hasBlockSibling: f, node: d, name: g, allowed: l }), f = v = 0)) : k.push({ isElement: 0, node: d, allowed: 1 });-1 < p && (k[p].firstNotAllowed = 1);-1 < q && (k[q].lastNotAllowed = 1);return k;
          }function g(a, b) {
            var d = [],
                f = a.getChildren(),
                e = f.count(),
                l,
                k = 0,
                h = n[b],
                m = !a.is(n.$inline) || a.is("br");for (m && d.push(" "); k < e; k++) l = f.getItem(k), c(l) && !l.is(h) ? d = d.concat(g(l, b)) : d.push(l);m && d.push(" ");return d;
          }function l(a) {
            return c(a.startContainer) && a.startContainer.getChild(a.startOffset - 1);
          }function k(a) {
            return a && c(a) && (a.is(n.$removeEmpty) || a.is("a") && !a.isBlockBoundary());
          }function h(a, b, d, f) {
            var e = a.clone(),
                g,
                l;e.setEndAt(b, CKEDITOR.POSITION_BEFORE_END);(g = new CKEDITOR.dom.walker(e).next()) && c(g) && w[g.getName()] && (l = g.getPrevious()) && c(l) && !l.getParent().equals(a.startContainer) && d.contains(l) && f.contains(g) && g.isIdentical(l) && (g.moveChildren(l), g.remove(), h(a, b, d, f));
          }function m(a, b) {
            function d(a, b) {
              if (b.isBlock && b.isElement && !b.node.is("br") && c(a) && a.is("br")) return a.remove(), 1;
            }var f = b.endContainer.getChild(b.endOffset),
                e = b.endContainer.getChild(b.endOffset - 1);f && d(f, a[a.length - 1]);e && d(e, a[0]) && (b.setEnd(b.endContainer, b.endOffset - 1), b.collapse());
          }var n = CKEDITOR.dtd,
              w = { p: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, ul: 1, ol: 1, li: 1, pre: 1, dl: 1, blockquote: 1 },
              p = { p: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 },
              L = CKEDITOR.tools.extend({}, n.$inline);delete L.br;return function (w, q, v, t) {
            var u = w.editor,
                x = !1,
                y;"unfiltered_html" == q && (q = "html", x = !0);if (!t.checkReadOnly()) {
              var z = new CKEDITOR.dom.elementPath(t.startContainer, t.root).blockLimit || t.root;q = { type: q, dontFilter: x, editable: w, editor: u, range: t, blockLimit: z, mergeCandidates: [], zombies: [] };var x = q.range,
                  z = q.mergeCandidates,
                  D = "html" === q.type,
                  r,
                  A,
                  W,
                  Z,
                  aa;"text" == q.type && x.shrink(CKEDITOR.SHRINK_ELEMENT, !0, !1) && (A = CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e", x.document), x.insertNode(A), x.setStartAfter(A));W = new CKEDITOR.dom.elementPath(x.startContainer);q.endPath = Z = new CKEDITOR.dom.elementPath(x.endContainer);if (!x.collapsed) {
                r = Z.block || Z.blockLimit;var ca = x.getCommonAncestor();
                r && !r.equals(ca) && !r.contains(ca) && x.checkEndOfBlock() && q.zombies.push(r);x.deleteContents();
              }for (; (aa = l(x)) && c(aa) && aa.isBlockBoundary() && W.contains(aa);) x.moveToPosition(aa, CKEDITOR.POSITION_BEFORE_END);h(x, q.blockLimit, W, Z);A && (x.setEndBefore(A), x.collapse(), A.remove());A = x.startPath();if (r = A.contains(k, !1, 1)) y = x.splitElement(r), q.inlineStylesRoot = r, q.inlineStylesPeak = A.lastElement;A = x.createBookmark();D && (f(r), f(y));(r = A.startNode.getPrevious(a)) && c(r) && k(r) && z.push(r);(r = A.startNode.getNext(a)) && c(r) && k(r) && z.push(r);for (r = A.startNode; (r = r.getParent()) && k(r);) z.push(r);x.moveToBookmark(A);y = w.getHtml();y = "" === y || y.match(C);u.enterMode === CKEDITOR.ENTER_DIV && y && ((u = w.getFirst()) && u.remove(), t.setStartAt(w, CKEDITOR.POSITION_AFTER_START), t.collapse(!0));if (w = v) {
                w = q.range;if ("text" == q.type && q.inlineStylesRoot) {
                  t = q.inlineStylesPeak;u = t.getDocument().createText("{cke-peak}");for (y = q.inlineStylesRoot.getParent(); !t.equals(y);) u = u.appendTo(t.clone()), t = t.getParent();v = u.getOuterHtml().split("{cke-peak}").join(v);
                }t = q.blockLimit.getName();if (/^\s+|\s+$/.test(v) && "span" in CKEDITOR.dtd[t]) {
                  var X = '\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e';v = X + v + X;
                }v = q.editor.dataProcessor.toHtml(v, { context: null, fixForBody: !1, protectedWhitespaces: !!X, dontFilter: q.dontFilter, filter: q.editor.activeFilter, enterMode: q.editor.activeEnterMode });t = w.document.createElement("body");t.setHtml(v);X && (t.getFirst().remove(), t.getLast().remove());if ((X = w.startPath().block) && (1 != X.getChildCount() || !X.getBogus())) a: {
                  var Q;if (1 == t.getChildCount() && c(Q = t.getFirst()) && Q.is(p) && !Q.hasAttribute("contenteditable")) {
                    X = Q.getElementsByTag("*");w = 0;for (y = X.count(); w < y; w++) if (u = X.getItem(w), !u.is(L)) break a;Q.moveChildren(Q.getParent(1));Q.remove();
                  }
                }q.dataWrapper = t;w = v;
              }if (w) {
                Q = q.range;w = Q.document;t = q.blockLimit;y = 0;var J,
                    X = [],
                    ha,
                    R;v = A = 0;var ba,
                    u = Q.startContainer;aa = q.endPath.elements[0];var Y,
                    x = aa.getPosition(u),
                    z = !!aa.getCommonAncestor(u) && x != CKEDITOR.POSITION_IDENTICAL && !(x & CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_IS_CONTAINED),
                    u = e(q.dataWrapper, q);for (q.editor.enterMode !== CKEDITOR.ENTER_BR && m(u, Q); y < u.length; y++) {
                  x = u[y];if (D = x.isLineBreak) D = Q, r = t, Z = W = void 0, x.hasBlockSibling ? D = 1 : (W = D.startContainer.getAscendant(n.$block, 1)) && W.is({ div: 1, p: 1 }) ? (Z = W.getPosition(r), Z == CKEDITOR.POSITION_IDENTICAL || Z == CKEDITOR.POSITION_CONTAINS ? D = 0 : (r = D.splitElement(W), D.moveToPosition(r, CKEDITOR.POSITION_AFTER_START), D = 1)) : D = 0;if (D) v = 0 < y;else {
                    D = Q.startPath();!x.isBlock && b(q.editor, D.block, D.blockLimit) && (R = d(q.editor)) && (R = w.createElement(R), R.appendBogus(), Q.insertNode(R), CKEDITOR.env.needsBrFiller && (J = R.getBogus()) && J.remove(), Q.moveToPosition(R, CKEDITOR.POSITION_BEFORE_END));if ((D = Q.startPath().block) && !D.equals(ha)) {
                      if (J = D.getBogus()) J.remove(), X.push(D);ha = D;
                    }x.firstNotAllowed && (A = 1);if (A && x.isElement) {
                      D = Q.startContainer;for (r = null; D && !n[D.getName()][x.name];) {
                        if (D.equals(t)) {
                          D = null;break;
                        }r = D;D = D.getParent();
                      }if (D) r && (ba = Q.splitElement(r), q.zombies.push(ba), q.zombies.push(r));else {
                        r = t.getName();Y = !y;D = y == u.length - 1;r = g(x.node, r);W = [];Z = r.length;for (var ca = 0, ga = void 0, la = 0, ma = -1; ca < Z; ca++) ga = r[ca], " " == ga ? (la || Y && !ca || (W.push(new CKEDITOR.dom.text(" ")), ma = W.length), la = 1) : (W.push(ga), la = 0);D && ma == W.length && W.pop();Y = W;
                      }
                    }if (Y) {
                      for (; D = Y.pop();) Q.insertNode(D);Y = 0;
                    } else Q.insertNode(x.node);x.lastNotAllowed && y < u.length - 1 && ((ba = z ? aa : ba) && Q.setEndAt(ba, CKEDITOR.POSITION_AFTER_START), A = 0);Q.collapse();
                  }
                }1 != u.length ? J = !1 : (J = u[0], J = J.isElement && "false" == J.node.getAttribute("contenteditable"));J && (v = !0, D = u[0].node, Q.setStartAt(D, CKEDITOR.POSITION_BEFORE_START), Q.setEndAt(D, CKEDITOR.POSITION_AFTER_END));q.dontMoveCaret = v;q.bogusNeededBlocks = X;
              }J = q.range;var ja;Y = q.bogusNeededBlocks;for (ha = J.createBookmark(); R = q.zombies.pop();) R.getParent() && (ba = J.clone(), ba.moveToElementEditStart(R), ba.removeEmptyBlocksAtEnd());if (Y) for (; R = Y.pop();) CKEDITOR.env.needsBrFiller ? R.appendBogus() : R.append(J.document.createText(" "));for (; R = q.mergeCandidates.pop();) R.mergeSiblings();CKEDITOR.env.webkit && J.startPath() && (R = J.startPath(), R.block ? R.block.$.normalize() : R.blockLimit && R.blockLimit.$.normalize());J.moveToBookmark(ha);if (!q.dontMoveCaret) {
                for (R = l(J); R && c(R) && !R.is(n.$empty);) {
                  if (R.isBlockBoundary()) J.moveToPosition(R, CKEDITOR.POSITION_BEFORE_END);else {
                    if (k(R) && R.getHtml().match(/(\s|&nbsp;)$/g)) {
                      ja = null;break;
                    }ja = J.clone();ja.moveToPosition(R, CKEDITOR.POSITION_BEFORE_END);
                  }R = R.getLast(a);
                }ja && J.moveToRange(ja);
              }
            }
          };
        }();x = function () {
          function a(b) {
            b = new CKEDITOR.dom.walker(b);b.guard = function (a, b) {
              if (b) return !1;if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$tableContent);
            };
            b.evaluator = function (a) {
              return a.type == CKEDITOR.NODE_ELEMENT;
            };return b;
          }function b(a, d, f) {
            d = a.getDocument().createElement(d);a.append(d, f);return d;
          }function d(a) {
            var b = a.count(),
                f;for (b; 0 < b--;) f = a.getItem(b), CKEDITOR.tools.trim(f.getHtml()) || (f.appendBogus(), CKEDITOR.env.ie && 9 > CKEDITOR.env.version && f.getChildCount() && f.getFirst().remove());
          }return function (f) {
            var c = f.startContainer,
                e = c.getAscendant("table", 1),
                g = !1;d(e.getElementsByTag("td"));d(e.getElementsByTag("th"));e = f.clone();e.setStart(c, 0);e = a(e).lastBackward();e || (e = f.clone(), e.setEndAt(c, CKEDITOR.POSITION_BEFORE_END), e = a(e).lastForward(), g = !0);e || (e = c);e.is("table") ? (f.setStartAt(e, CKEDITOR.POSITION_BEFORE_START), f.collapse(!0), e.remove()) : (e.is({ tbody: 1, thead: 1, tfoot: 1 }) && (e = b(e, "tr", g)), e.is("tr") && (e = b(e, e.getParent().is("thead") ? "th" : "td", g)), (c = e.getBogus()) && c.remove(), f.moveToPosition(e, g ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END));
          };
        }();v = function () {
          function a(b) {
            b = new CKEDITOR.dom.walker(b);b.guard = function (a, b) {
              if (b) return !1;if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$list) || a.is(CKEDITOR.dtd.$listItem);
            };b.evaluator = function (a) {
              return a.type == CKEDITOR.NODE_ELEMENT && a.is(CKEDITOR.dtd.$listItem);
            };return b;
          }return function (b) {
            var d = b.startContainer,
                f = !1,
                c;c = b.clone();c.setStart(d, 0);c = a(c).lastBackward();c || (c = b.clone(), c.setEndAt(d, CKEDITOR.POSITION_BEFORE_END), c = a(c).lastForward(), f = !0);c || (c = d);c.is(CKEDITOR.dtd.$list) ? (b.setStartAt(c, CKEDITOR.POSITION_BEFORE_START), b.collapse(!0), c.remove()) : ((d = c.getBogus()) && d.remove(), b.moveToPosition(c, f ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END), b.select());
          };
        }();q = { eol: { detect: function (a, b) {
              var d = a.range,
                  f = d.clone(),
                  c = d.clone(),
                  e = new CKEDITOR.dom.elementPath(d.startContainer, b),
                  g = new CKEDITOR.dom.elementPath(d.endContainer, b);f.collapse(1);c.collapse();e.block && f.checkBoundaryOfElement(e.block, CKEDITOR.END) && (d.setStartAfter(e.block), a.prependEolBr = 1);g.block && c.checkBoundaryOfElement(g.block, CKEDITOR.START) && (d.setEndBefore(g.block), a.appendEolBr = 1);
            }, fix: function (a, b) {
              var d = b.getDocument(),
                  f;a.appendEolBr && (f = this.createEolBr(d), a.fragment.append(f));!a.prependEolBr || f && !f.getPrevious() || a.fragment.append(this.createEolBr(d), 1);
            }, createEolBr: function (a) {
              return a.createElement("br", { attributes: { "data-cke-eol": 1 } });
            } }, bogus: { exclude: function (a) {
              var b = a.range.getBoundaryNodes(),
                  d = b.startNode,
                  b = b.endNode;!b || !u(b) || d && d.equals(b) || a.range.setEndBefore(b);
            } }, tree: { rebuild: function (a, b) {
              var d = a.range,
                  f = d.getCommonAncestor(),
                  c = new CKEDITOR.dom.elementPath(f, b),
                  e = new CKEDITOR.dom.elementPath(d.startContainer, b),
                  d = new CKEDITOR.dom.elementPath(d.endContainer, b),
                  g;f.type == CKEDITOR.NODE_TEXT && (f = f.getParent());if (c.blockLimit.is({ tr: 1, table: 1 })) {
                var l = c.contains("table").getParent();g = function (a) {
                  return !a.equals(l);
                };
              } else if (c.block && c.block.is(CKEDITOR.dtd.$listItem) && (e = e.contains(CKEDITOR.dtd.$list), d = d.contains(CKEDITOR.dtd.$list), !e.equals(d))) {
                var k = c.contains(CKEDITOR.dtd.$list).getParent();g = function (a) {
                  return !a.equals(k);
                };
              }g || (g = function (a) {
                return !a.equals(c.block) && !a.equals(c.blockLimit);
              });this.rebuildFragment(a, b, f, g);
            }, rebuildFragment: function (a, b, d, f) {
              for (var c; d && !d.equals(b) && f(d);) c = d.clone(0, 1), a.fragment.appendTo(c), a.fragment = c, d = d.getParent();
            } }, cell: { shrink: function (a) {
              a = a.range;var b = a.startContainer,
                  d = a.endContainer,
                  f = a.startOffset,
                  c = a.endOffset;b.type == CKEDITOR.NODE_ELEMENT && b.equals(d) && b.is("tr") && ++f == c && a.shrink(CKEDITOR.SHRINK_TEXT);
            } } };y = function () {
          function a(b, d) {
            var f = b.getParent();if (f.is(CKEDITOR.dtd.$inline)) b[d ? "insertBefore" : "insertAfter"](f);
          }
          function f(b, d, c) {
            a(d);a(c, 1);for (var e; e = c.getNext();) e.insertAfter(d), d = e;t(b) && b.remove();
          }function c(a, b) {
            var d = new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);d.setEndBefore(b.endNode);return d;
          }return { list: { detectMerge: function (a, b) {
                var d = c(b, a.bookmark),
                    f = d.startPath(),
                    e = d.endPath(),
                    g = f.contains(CKEDITOR.dtd.$list),
                    l = e.contains(CKEDITOR.dtd.$list);a.mergeList = g && l && g.getParent().equals(l.getParent()) && !g.equals(l);a.mergeListItems = f.block && e.block && f.block.is(CKEDITOR.dtd.$listItem) && e.block.is(CKEDITOR.dtd.$listItem);if (a.mergeList || a.mergeListItems) d = d.clone(), d.setStartBefore(a.bookmark.startNode), d.setEndAfter(a.bookmark.endNode), a.mergeListBookmark = d.createBookmark();
              }, merge: function (a, b) {
                if (a.mergeListBookmark) {
                  var d = a.mergeListBookmark.startNode,
                      c = a.mergeListBookmark.endNode,
                      e = new CKEDITOR.dom.elementPath(d, b),
                      g = new CKEDITOR.dom.elementPath(c, b);if (a.mergeList) {
                    var l = e.contains(CKEDITOR.dtd.$list),
                        k = g.contains(CKEDITOR.dtd.$list);l.equals(k) || (k.moveChildren(l), k.remove());
                  }a.mergeListItems && (e = e.contains(CKEDITOR.dtd.$listItem), g = g.contains(CKEDITOR.dtd.$listItem), e.equals(g) || f(g, d, c));d.remove();c.remove();
                }
              } }, block: { detectMerge: function (a, b) {
                if (!a.tableContentsRanges && !a.mergeListBookmark) {
                  var d = new CKEDITOR.dom.range(b);d.setStartBefore(a.bookmark.startNode);d.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark = d.createBookmark();
                }
              }, merge: function (a, b) {
                if (a.mergeBlockBookmark && !a.purgeTableBookmark) {
                  var d = a.mergeBlockBookmark.startNode,
                      c = a.mergeBlockBookmark.endNode,
                      e = new CKEDITOR.dom.elementPath(d, b),
                      g = new CKEDITOR.dom.elementPath(c, b),
                      e = e.block,
                      g = g.block;e && g && !e.equals(g) && f(g, d, c);d.remove();c.remove();
                }
              } }, table: function () {
              function a(f) {
                var c = [],
                    e,
                    g = new CKEDITOR.dom.walker(f),
                    l = f.startPath().contains(d),
                    k = f.endPath().contains(d),
                    h = {};g.guard = function (a, g) {
                  if (a.type == CKEDITOR.NODE_ELEMENT) {
                    var m = "visited_" + (g ? "out" : "in");if (a.getCustomData(m)) return;CKEDITOR.dom.element.setMarker(h, a, m, 1);
                  }if (g && l && a.equals(l)) e = f.clone(), e.setEndAt(l, CKEDITOR.POSITION_BEFORE_END), c.push(e);else if (!g && k && a.equals(k)) e = f.clone(), e.setStartAt(k, CKEDITOR.POSITION_AFTER_START), c.push(e);else {
                    if (m = !g) m = a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && (!l || b(a, l)) && (!k || b(a, k));if (!m && (m = g)) if (a.is(d)) var m = l && l.getAscendant("table", !0),
                        n = k && k.getAscendant("table", !0),
                        w = a.getAscendant("table", !0),
                        m = m && m.contains(w) || n && n.contains(w);else m = void 0;m && (e = f.clone(), e.selectNodeContents(a), c.push(e));
                  }
                };g.lastForward();CKEDITOR.dom.element.clearAllMarkers(h);return c;
              }function b(a, d) {
                var f = CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_IS_CONTAINED,
                    c = a.getPosition(d);return c === CKEDITOR.POSITION_IDENTICAL ? !1 : 0 === (c & f);
              }var d = { td: 1, th: 1, caption: 1 };return { detectPurge: function (a) {
                  var b = a.range,
                      f = b.clone();f.enlarge(CKEDITOR.ENLARGE_ELEMENT);var f = new CKEDITOR.dom.walker(f),
                      c = 0;f.evaluator = function (a) {
                    a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && ++c;
                  };f.checkForward();if (1 < c) {
                    var f = b.startPath().contains("table"),
                        e = b.endPath().contains("table");f && e && b.checkBoundaryOfElement(f, CKEDITOR.START) && b.checkBoundaryOfElement(e, CKEDITOR.END) && (b = a.range.clone(), b.setStartBefore(f), b.setEndAfter(e), a.purgeTableBookmark = b.createBookmark());
                  }
                }, detectRanges: function (f, e) {
                  var g = c(e, f.bookmark),
                      l = g.clone(),
                      k,
                      h,
                      m = g.getCommonAncestor();m.is(CKEDITOR.dtd.$tableContent) && !m.is(d) && (m = m.getAscendant("table", !0));h = m;m = new CKEDITOR.dom.elementPath(g.startContainer, h);h = new CKEDITOR.dom.elementPath(g.endContainer, h);m = m.contains("table");h = h.contains("table");if (m || h) m && h && b(m, h) ? (f.tableSurroundingRange = l, l.setStartAt(m, CKEDITOR.POSITION_AFTER_END), l.setEndAt(h, CKEDITOR.POSITION_BEFORE_START), l = g.clone(), l.setEndAt(m, CKEDITOR.POSITION_AFTER_END), k = g.clone(), k.setStartAt(h, CKEDITOR.POSITION_BEFORE_START), k = a(l).concat(a(k))) : m ? h || (f.tableSurroundingRange = l, l.setStartAt(m, CKEDITOR.POSITION_AFTER_END), g.setEndAt(m, CKEDITOR.POSITION_AFTER_END)) : (f.tableSurroundingRange = l, l.setEndAt(h, CKEDITOR.POSITION_BEFORE_START), g.setStartAt(h, CKEDITOR.POSITION_AFTER_START)), f.tableContentsRanges = k ? k : a(g);
                }, deleteRanges: function (a) {
                  for (var b; b = a.tableContentsRanges.pop();) b.extractContents(), t(b.startContainer) && b.startContainer.appendBogus();a.tableSurroundingRange && a.tableSurroundingRange.extractContents();
                }, purge: function (a) {
                  if (a.purgeTableBookmark) {
                    var b = a.doc,
                        d = a.range.clone(),
                        b = b.createElement("p");b.insertBefore(a.purgeTableBookmark.startNode);d.moveToBookmark(a.purgeTableBookmark);d.deleteContents();a.range.moveToPosition(b, CKEDITOR.POSITION_AFTER_START);
                  }
                } };
            }(), detectExtractMerge: function (a) {
              return !(a.range.startPath().contains(CKEDITOR.dtd.$listItem) && a.range.endPath().contains(CKEDITOR.dtd.$listItem));
            },
            fixUneditableRangePosition: function (a) {
              a.startContainer.getDtd()["#"] || a.moveToClosestEditablePosition(null, !0);
            }, autoParagraph: function (a, f) {
              var c = f.startPath(),
                  e;b(a, c.block, c.blockLimit) && (e = d(a)) && (e = f.document.createElement(e), e.appendBogus(), f.insertNode(e), f.moveToPosition(e, CKEDITOR.POSITION_AFTER_START));
            } };
        }();
      }(), function () {
        function c(a) {
          return CKEDITOR.plugins.widget && CKEDITOR.plugins.widget.isDomWidget(a);
        }function h(a, b) {
          if (0 === a.length || c(a[0].getEnclosedNode())) return !1;var d, f;if ((d = !b && 1 === a.length) && !(d = a[0].collapsed)) {
            var e = a[0];d = e.startContainer.getAscendant({ td: 1, th: 1 }, !0);var g = e.endContainer.getAscendant({ td: 1, th: 1 }, !0);f = CKEDITOR.tools.trim;d && d.equals(g) && !d.findOne("td, th, tr, tbody, table") ? (e = e.cloneContents(), d = e.getFirst() ? f(e.getFirst().getText()) !== f(d.getText()) : !0) : d = !1;
          }if (d) return !1;for (f = 0; f < a.length; f++) if (d = a[f]._getTableElement(), !d) return !1;return !0;
        }function g(a) {
          function b(a) {
            a = a.find("td, th");var d = [],
                f;for (f = 0; f < a.count(); f++) d.push(a.getItem(f));return d;
          }
          var d = [],
              f,
              c;for (c = 0; c < a.length; c++) f = a[c]._getTableElement(), f.is && f.is({ td: 1, th: 1 }) ? d.push(f) : d = d.concat(b(f));return d;
        }function a(a) {
          a = g(a);var b = "",
              d = [],
              f,
              c;for (c = 0; c < a.length; c++) f && !f.equals(a[c].getAscendant("tr")) ? (b += d.join("\t") + "\n", f = a[c].getAscendant("tr"), d = []) : 0 === c && (f = a[c].getAscendant("tr")), d.push(a[c].getText());return b += d.join("\t");
        }function e(b) {
          var d = this.root.editor,
              f = d.getSelection(1);this.reset();v = !0;f.root.once("selectionchange", function (a) {
            a.cancel();
          }, null, null, 0);f.selectRanges([b[0]]);
          f = this._.cache;f.ranges = new CKEDITOR.dom.rangeList(b);f.type = CKEDITOR.SELECTION_TEXT;f.selectedElement = b[0]._getTableElement();f.selectedText = a(b);f.nativeSel = null;this.isFake = 1;this.rev = C++;d._.fakeSelection = this;v = !1;this.root.fire("selectionchange");
        }function l() {
          var a = this._.fakeSelection,
              b;if (a) {
            b = this.getSelection(1);var d;if (!(d = !b) && (d = !b.isHidden())) {
              d = a;var f = b.getRanges(),
                  e = d.getRanges(),
                  g = f.length && f[0]._getTableElement() && f[0]._getTableElement().getAscendant("table", !0),
                  l = e.length && e[0]._getTableElement() && e[0]._getTableElement().getAscendant("table", !0),
                  k = 1 === f.length && f[0]._getTableElement() && f[0]._getTableElement().is("table"),
                  m = 1 === e.length && e[0]._getTableElement() && e[0]._getTableElement().is("table");if (c(d.getSelectedElement())) d = !1;else {
                var n = 1 === f.length && f[0].collapsed,
                    e = h(f, !!CKEDITOR.env.webkit) && h(e);g = g && l ? g.equals(l) || l.contains(g) : !1;g && (n || e) ? (k && !m && d.selectRanges(f), d = !0) : d = !1;
              }d = !d;
            }d && (a.reset(), a = 0);
          }if (!a && (a = b || this.getSelection(1), !a || a.getType() == CKEDITOR.SELECTION_NONE)) return;
          this.fire("selectionCheck", a);b = this.elementPath();b.compare(this._.selectionPreviousPath) || (d = this._.selectionPreviousPath && this._.selectionPreviousPath.blockLimit.equals(b.blockLimit), !CKEDITOR.env.webkit && !CKEDITOR.env.gecko || d || (this._.previousActive = this.document.getActive()), this._.selectionPreviousPath = b, this.fire("selectionChange", { selection: a, path: b }));
        }function k() {
          y = !0;q || (m.call(this), q = CKEDITOR.tools.setTimeout(m, 200, this));
        }function m() {
          q = null;y && (CKEDITOR.tools.setTimeout(l, 0, this), y = !1);
        }function b(a) {
          return A(a) || a.type == CKEDITOR.NODE_ELEMENT && !a.is(CKEDITOR.dtd.$empty) ? !0 : !1;
        }function d(a) {
          function d(b, f) {
            return b && b.type != CKEDITOR.NODE_TEXT ? a.clone()["moveToElementEdit" + (f ? "End" : "Start")](b) : !1;
          }if (!(a.root instanceof CKEDITOR.editable)) return !1;var f = a.startContainer,
              c = a.getPreviousNode(b, null, f),
              e = a.getNextNode(b, null, f);return d(c) || d(e, 1) || !(c || e || f.type == CKEDITOR.NODE_ELEMENT && f.isBlockBoundary() && f.getBogus()) ? !0 : !1;
        }function f(a) {
          n(a, !1);var b = a.getDocument().createText(p);
          a.setCustomData("cke-fillingChar", b);return b;
        }function n(a, b) {
          var d = a && a.removeCustomData("cke-fillingChar");if (d) {
            if (!1 !== b) {
              var f = a.getDocument().getSelection().getNative(),
                  c = f && "None" != f.type && f.getRangeAt(0),
                  e = p.length;if (d.getLength() > e && c && c.intersectsNode(d.$)) {
                var g = [{ node: f.anchorNode, offset: f.anchorOffset }, { node: f.focusNode, offset: f.focusOffset }];f.anchorNode == d.$ && f.anchorOffset > e && (g[0].offset -= e);f.focusNode == d.$ && f.focusOffset > e && (g[1].offset -= e);
              }
            }d.setText(w(d.getText(), 1));g && (d = a.getDocument().$, f = d.getSelection(), d = d.createRange(), d.setStart(g[0].node, g[0].offset), d.collapse(!0), f.removeAllRanges(), f.addRange(d), f.extend(g[1].node, g[1].offset));
          }
        }function w(a, b) {
          return b ? a.replace(x, function (a, b) {
            return b ? " " : "";
          }) : a.replace(p, "");
        }function z(a, b) {
          var d = b && CKEDITOR.tools.htmlEncode(b) || "\x26nbsp;",
              d = CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"' + (CKEDITOR.env.ie && 14 > CKEDITOR.env.version ? "display:none" : "position:fixed;top:0;left:-1000px;width:0;height:0;overflow:hidden;") + '"\x3e' + d + "\x3c/div\x3e", a.document);a.fire("lockSnapshot");a.editable().append(d);var f = a.getSelection(1),
              c = a.createRange(),
              e = f.root.on("selectionchange", function (a) {
            a.cancel();
          }, null, null, 0);c.setStartAt(d, CKEDITOR.POSITION_AFTER_START);c.setEndAt(d, CKEDITOR.POSITION_BEFORE_END);f.selectRanges([c]);e.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer = d;
        }function r(a) {
          var b = { 37: 1, 39: 1, 8: 1, 46: 1 };return function (d) {
            var f = d.data.getKeystroke();if (b[f]) {
              var e = a.getSelection(),
                  g = e.getRanges()[0];
              e.isCollapsed() && (g = g[38 > f ? "getPreviousEditableNode" : "getNextEditableNode"]()) && g.type == CKEDITOR.NODE_ELEMENT && "false" == g.getAttribute("contenteditable") && (e = e.getStartElement(), !e.isBlockBoundary() || "" !== (void 0 === e.$.textContent ? e.$.innerText : e.$.textContent) || c(e.getFirst()) || 8 !== f && 46 !== f || (e.remove(), a.fire("saveSnapshot")), a.getSelection().fake(g), d.data.preventDefault(), d.cancel());
            }
          };
        }function t(a) {
          for (var b = 0; b < a.length; b++) {
            var d = a[b];d.getCommonAncestor().isReadOnly() && a.splice(b, 1);if (!d.collapsed) {
              if (d.startContainer.isReadOnly()) for (var f = d.startContainer, c; f && !((c = f.type == CKEDITOR.NODE_ELEMENT) && f.is("body") || !f.isReadOnly());) c && "false" == f.getAttribute("contentEditable") && d.setStartAfter(f), f = f.getParent();f = d.startContainer;c = d.endContainer;var e = d.startOffset,
                  g = d.endOffset,
                  l = d.clone();f && f.type == CKEDITOR.NODE_TEXT && (e >= f.getLength() ? l.setStartAfter(f) : l.setStartBefore(f));c && c.type == CKEDITOR.NODE_TEXT && (g ? l.setEndAfter(c) : l.setEndBefore(c));f = new CKEDITOR.dom.walker(l);f.evaluator = function (f) {
                if (f.type == CKEDITOR.NODE_ELEMENT && f.isReadOnly()) {
                  var c = d.clone();d.setEndBefore(f);d.collapsed && a.splice(b--, 1);f.getPosition(l.endContainer) & CKEDITOR.POSITION_CONTAINS || (c.setStartAfter(f), c.collapsed || a.splice(b + 1, 0, c));return !0;
                }return !1;
              };f.next();
            }
          }return a;
        }var u = "function" != typeof window.getSelection,
            C = 1,
            p = CKEDITOR.tools.repeat("​", 7),
            x = new RegExp(p + "( )?", "g"),
            v,
            q,
            y,
            A = CKEDITOR.dom.walker.invisible(1),
            F = function () {
          function a(b) {
            return function (a) {
              var d = a.editor.createRange();d.moveToClosestEditablePosition(a.selected, b) && a.editor.getSelection().selectRanges([d]);
              return !1;
            };
          }function b(a) {
            return function (b) {
              var d = b.editor,
                  f = d.createRange(),
                  c;if (!d.readOnly) return (c = f.moveToClosestEditablePosition(b.selected, a)) || (c = f.moveToClosestEditablePosition(b.selected, !a)), c && d.getSelection().selectRanges([f]), d.fire("saveSnapshot"), b.selected.remove(), c || (f.moveToElementEditablePosition(d.editable()), d.getSelection().selectRanges([f])), d.fire("saveSnapshot"), !1;
            };
          }var d = a(),
              f = a(1);return { 37: d, 38: d, 39: f, 40: f, 8: b(), 46: b(1) };
        }();CKEDITOR.on("instanceCreated", function (a) {
          function b() {
            var a = d.getSelection();a && a.removeAllRanges();
          }var d = a.editor;d.on("contentDom", function () {
            function a() {
              t = new CKEDITOR.dom.selection(d.getSelection());t.lock();
            }function b() {
              g.removeListener("mouseup", b);w.removeListener("mouseup", b);var a = CKEDITOR.document.$.selection,
                  d = a.createRange();"None" != a.type && d.parentElement() && d.parentElement().ownerDocument == e.$ && d.select();
            }function c(a) {
              a = a.getRanges()[0];return a ? (a = a.startContainer.getAscendant(function (a) {
                return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable");
              }, !0)) && "false" === a.getAttribute("contenteditable") ? a : null : null;
            }var e = d.document,
                g = CKEDITOR.document,
                h = d.editable(),
                m = e.getBody(),
                w = e.getDocumentElement(),
                q = h.isInline(),
                p,
                t;CKEDITOR.env.gecko && h.attachListener(h, "focus", function (a) {
              a.removeListener();0 !== p && (a = d.getSelection().getNative()) && a.isCollapsed && a.anchorNode == h.$ && (a = d.createRange(), a.moveToElementEditStart(h), a.select());
            }, null, null, -2);h.attachListener(h, CKEDITOR.env.webkit || CKEDITOR.env.gecko ? "focusin" : "focus", function () {
              if (p && (CKEDITOR.env.webkit || CKEDITOR.env.gecko)) {
                p = d._.previousActive && d._.previousActive.equals(e.getActive());var a = null != d._.previousScrollTop && d._.previousScrollTop != h.$.scrollTop;CKEDITOR.env.webkit && p && a && (h.$.scrollTop = d._.previousScrollTop);
              }d.unlockSelection(p);p = 0;
            }, null, null, -1);h.attachListener(h, "mousedown", function () {
              p = 0;
            });if (CKEDITOR.env.ie || CKEDITOR.env.gecko || q) u ? h.attachListener(h, "beforedeactivate", a, null, null, -1) : h.attachListener(d, "selectionCheck", a, null, null, -1), h.attachListener(h, CKEDITOR.env.webkit || CKEDITOR.env.gecko ? "focusout" : "blur", function () {
              var a = t && (t.isFake || 2 > t.getRanges().length);CKEDITOR.env.gecko && !q && a || (d.lockSelection(t), p = 1);
            }, null, null, -1), h.attachListener(h, "mousedown", function () {
              p = 0;
            });if (CKEDITOR.env.ie && !q) {
              var v;h.attachListener(h, "mousedown", function (a) {
                2 == a.data.$.button && ((a = d.document.getSelection()) && a.getType() != CKEDITOR.SELECTION_NONE || (v = d.window.getScrollPosition()));
              });h.attachListener(h, "mouseup", function (a) {
                2 == a.data.$.button && v && (d.document.$.documentElement.scrollLeft = v.x, d.document.$.documentElement.scrollTop = v.y);v = null;
              });if ("BackCompat" != e.$.compatMode) {
                if (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) {
                  var x, C;w.on("mousedown", function (a) {
                    function b(a) {
                      a = a.data.$;if (x) {
                        var d = m.$.createTextRange();try {
                          d.moveToPoint(a.clientX, a.clientY);
                        } catch (f) {}x.setEndPoint(0 > C.compareEndPoints("StartToStart", d) ? "EndToEnd" : "StartToStart", d);x.select();
                      }
                    }function d() {
                      w.removeListener("mousemove", b);g.removeListener("mouseup", d);w.removeListener("mouseup", d);x.select();
                    }a = a.data;if (a.getTarget().is("html") && a.$.y < w.$.clientHeight && a.$.x < w.$.clientWidth) {
                      x = m.$.createTextRange();try {
                        x.moveToPoint(a.$.clientX, a.$.clientY);
                      } catch (f) {}C = x.duplicate();w.on("mousemove", b);g.on("mouseup", d);w.on("mouseup", d);
                    }
                  });
                }if (7 < CKEDITOR.env.version && 11 > CKEDITOR.env.version) w.on("mousedown", function (a) {
                  a.data.getTarget().is("html") && (g.on("mouseup", b), w.on("mouseup", b));
                });
              }
            }h.attachListener(h, "selectionchange", l, d);h.attachListener(h, "keyup", k, d);h.attachListener(h, "touchstart", k, d);h.attachListener(h, "touchend", k, d);CKEDITOR.env.ie && h.attachListener(h, "keydown", function f(a) {
              var b, d;b = (b = this.document.getActive()) ? "input" === b.getName() || "textarea" === b.getName() : !1;b || (b = this.getSelection(1), (d = c(b)) && !d.equals(h) && (b.selectElement(d), a.data.preventDefault()));
            }, d);if (q && (CKEDITOR.env.webkit || CKEDITOR.env.gecko)) {
              var y;h.attachListener(h, "mousedown", function () {
                y = 1;
              });h.attachListener(e.getDocumentElement(), "mouseup", function () {
                y && k.call(d);y = 0;
              });
            } else h.attachListener(CKEDITOR.env.ie ? h : e.getDocumentElement(), "mouseup", k, d);CKEDITOR.env.webkit && h.attachListener(e, "keydown", function (a) {
              switch (a.data.getKey()) {case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:
                  h.hasFocus && n(h);}
            }, null, null, -1);h.attachListener(h, "keydown", r(d), null, null, -1);
          });d.on("setData", function () {
            d.unlockSelection();CKEDITOR.env.webkit && b();
          });d.on("contentDomUnload", function () {
            d.unlockSelection();
          });if (CKEDITOR.env.ie9Compat) d.on("beforeDestroy", b, null, null, 9);d.on("dataReady", function () {
            delete d._.fakeSelection;delete d._.hiddenSelectionContainer;
            d.selectionChange(1);
          });d.on("loadSnapshot", function () {
            var a = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),
                b = d.editable().getLast(a);b && b.hasAttribute("data-cke-hidden-sel") && (b.remove(), CKEDITOR.env.gecko && (a = d.editable().getFirst(a)) && a.is("br") && a.getAttribute("_moz_editor_bogus_node") && a.remove());
          }, null, null, 100);d.on("key", function (a) {
            if ("wysiwyg" == d.mode) {
              var b = d.getSelection();if (b.isFake) {
                var f = F[a.data.keyCode];if (f) return f({ editor: d, selected: b.getSelectedElement(), selection: b, keyEvent: a });
              }
            }
          });
        });
        if (CKEDITOR.env.webkit) CKEDITOR.on("instanceReady", function (a) {
          var b = a.editor;b.on("selectionChange", function () {
            var a = b.editable(),
                d = a.getCustomData("cke-fillingChar");d && (d.getCustomData("ready") ? (n(a), a.editor.fire("selectionCheck")) : d.setCustomData("ready", 1));
          }, null, null, -1);b.on("beforeSetMode", function () {
            n(b.editable());
          }, null, null, -1);b.on("getSnapshot", function (a) {
            a.data && (a.data = w(a.data));
          }, b, null, 20);b.on("toDataFormat", function (a) {
            a.data.dataValue = w(a.data.dataValue);
          }, null, null, 0);
        });CKEDITOR.editor.prototype.selectionChange = function (a) {
          (a ? l : k).call(this);
        };CKEDITOR.editor.prototype.getSelection = function (a) {
          return !this._.savedSelection && !this._.fakeSelection || a ? (a = this.editable()) && "wysiwyg" == this.mode && "recreating" !== this.status ? new CKEDITOR.dom.selection(a) : null : this._.savedSelection || this._.fakeSelection;
        };CKEDITOR.editor.prototype.getSelectedRanges = function (a) {
          var b = this.getSelection();return b && b.getRanges(a) || [];
        };CKEDITOR.editor.prototype.lockSelection = function (a) {
          a = a || this.getSelection(1);return a.getType() != CKEDITOR.SELECTION_NONE ? (!a.isLocked && a.lock(), this._.savedSelection = a, !0) : !1;
        };CKEDITOR.editor.prototype.unlockSelection = function (a) {
          var b = this._.savedSelection;return b ? (b.unlock(a), delete this._.savedSelection, !0) : !1;
        };CKEDITOR.editor.prototype.forceNextSelectionCheck = function () {
          delete this._.selectionPreviousPath;
        };CKEDITOR.dom.document.prototype.getSelection = function () {
          return new CKEDITOR.dom.selection(this);
        };CKEDITOR.dom.range.prototype.select = function () {
          var a = this.root instanceof CKEDITOR.editable ? this.root.editor.getSelection() : new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a;
        };CKEDITOR.SELECTION_NONE = 1;CKEDITOR.SELECTION_TEXT = 2;CKEDITOR.SELECTION_ELEMENT = 3;CKEDITOR.dom.selection = function (a) {
          if (a instanceof CKEDITOR.dom.selection) {
            var b = a;a = a.root;
          }var d = a instanceof CKEDITOR.dom.element;this.rev = b ? b.rev : C++;this.document = a instanceof CKEDITOR.dom.document ? a : a.getDocument();this.root = d ? a : this.document.getBody();this.isLocked = 0;this._ = { cache: {} };if (b) return CKEDITOR.tools.extend(this._.cache, b._.cache), this.isFake = b.isFake, this.isLocked = b.isLocked, this;a = this.getNative();var f, c;if (a) if (a.getRangeAt) f = (c = a.rangeCount && a.getRangeAt(0)) && new CKEDITOR.dom.node(c.commonAncestorContainer);else {
            try {
              c = a.createRange();
            } catch (e) {}f = c && CKEDITOR.dom.element.get(c.item && c.item(0) || c.parentElement());
          }if (!f || f.type != CKEDITOR.NODE_ELEMENT && f.type != CKEDITOR.NODE_TEXT || !this.root.equals(f) && !this.root.contains(f)) this._.cache.type = CKEDITOR.SELECTION_NONE, this._.cache.startElement = null, this._.cache.selectedElement = null, this._.cache.selectedText = "", this._.cache.ranges = new CKEDITOR.dom.rangeList();return this;
        };var B = { img: 1, hr: 1, li: 1, table: 1, tr: 1, td: 1, th: 1, embed: 1, object: 1, ol: 1, ul: 1, a: 1, input: 1, form: 1, select: 1, textarea: 1, button: 1, fieldset: 1, thead: 1, tfoot: 1 };CKEDITOR.tools.extend(CKEDITOR.dom.selection, { _removeFillingCharSequenceString: w, _createFillingCharSequenceNode: f, FILLING_CHAR_SEQUENCE: p });CKEDITOR.dom.selection.prototype = { getNative: function () {
            return void 0 !== this._.cache.nativeSel ? this._.cache.nativeSel : this._.cache.nativeSel = u ? this.document.$.selection : this.document.getWindow().$.getSelection();
          }, getType: u ? function () {
            var a = this._.cache;if (a.type) return a.type;var b = CKEDITOR.SELECTION_NONE;try {
              var d = this.getNative(),
                  f = d.type;"Text" == f && (b = CKEDITOR.SELECTION_TEXT);"Control" == f && (b = CKEDITOR.SELECTION_ELEMENT);d.createRange().parentElement() && (b = CKEDITOR.SELECTION_TEXT);
            } catch (c) {}return a.type = b;
          } : function () {
            var a = this._.cache;if (a.type) return a.type;var b = CKEDITOR.SELECTION_TEXT,
                d = this.getNative();if (!d || !d.rangeCount) b = CKEDITOR.SELECTION_NONE;else if (1 == d.rangeCount) {
              var d = d.getRangeAt(0),
                  f = d.startContainer;f == d.endContainer && 1 == f.nodeType && 1 == d.endOffset - d.startOffset && B[f.childNodes[d.startOffset].nodeName.toLowerCase()] && (b = CKEDITOR.SELECTION_ELEMENT);
            }return a.type = b;
          }, getRanges: function () {
            var a = u ? function () {
              function a(b) {
                return new CKEDITOR.dom.node(b).getIndex();
              }var b = function (b, d) {
                b = b.duplicate();b.collapse(d);var f = b.parentElement();if (!f.hasChildNodes()) return { container: f, offset: 0 };for (var c = f.children, e, g, l = b.duplicate(), h = 0, k = c.length - 1, m = -1, n, w; h <= k;) if (m = Math.floor((h + k) / 2), e = c[m], l.moveToElementText(e), n = l.compareEndPoints("StartToStart", b), 0 < n) k = m - 1;else if (0 > n) h = m + 1;else return { container: f, offset: a(e) };if (-1 == m || m == c.length - 1 && 0 > n) {
                  l.moveToElementText(f);l.setEndPoint("StartToStart", b);l = l.text.replace(/(\r\n|\r)/g, "\n").length;c = f.childNodes;if (!l) return e = c[c.length - 1], e.nodeType != CKEDITOR.NODE_TEXT ? { container: f, offset: c.length } : { container: e, offset: e.nodeValue.length };for (f = c.length; 0 < l && 0 < f;) g = c[--f], g.nodeType == CKEDITOR.NODE_TEXT && (w = g, l -= g.nodeValue.length);return { container: w, offset: -l };
                }l.collapse(0 < n ? !0 : !1);l.setEndPoint(0 < n ? "StartToStart" : "EndToStart", b);l = l.text.replace(/(\r\n|\r)/g, "\n").length;if (!l) return { container: f, offset: a(e) + (0 < n ? 0 : 1) };for (; 0 < l;) try {
                  g = e[0 < n ? "previousSibling" : "nextSibling"], g.nodeType == CKEDITOR.NODE_TEXT && (l -= g.nodeValue.length, w = g), e = g;
                } catch (q) {
                  return { container: f, offset: a(e) };
                }return { container: w, offset: 0 < n ? -l : w.nodeValue.length + l };
              };return function () {
                var a = this.getNative(),
                    d = a && a.createRange(),
                    f = this.getType();if (!a) return [];if (f == CKEDITOR.SELECTION_TEXT) return a = new CKEDITOR.dom.range(this.root), f = b(d, !0), a.setStart(new CKEDITOR.dom.node(f.container), f.offset), f = b(d), a.setEnd(new CKEDITOR.dom.node(f.container), f.offset), a.endContainer.getPosition(a.startContainer) & CKEDITOR.POSITION_PRECEDING && a.endOffset <= a.startContainer.getIndex() && a.collapse(), [a];if (f == CKEDITOR.SELECTION_ELEMENT) {
                  for (var f = [], c = 0; c < d.length; c++) {
                    for (var e = d.item(c), g = e.parentNode, l = 0, a = new CKEDITOR.dom.range(this.root); l < g.childNodes.length && g.childNodes[l] != e; l++);a.setStart(new CKEDITOR.dom.node(g), l);a.setEnd(new CKEDITOR.dom.node(g), l + 1);f.push(a);
                  }return f;
                }return [];
              };
            }() : function () {
              var a = [],
                  b,
                  d = this.getNative();if (!d) return a;for (var f = 0; f < d.rangeCount; f++) {
                var c = d.getRangeAt(f);b = new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(c.startContainer), c.startOffset);b.setEnd(new CKEDITOR.dom.node(c.endContainer), c.endOffset);a.push(b);
              }return a;
            };return function (b) {
              var d = this._.cache,
                  f = d.ranges;f || (d.ranges = f = new CKEDITOR.dom.rangeList(a.call(this)));return b ? t(new CKEDITOR.dom.rangeList(f.slice())) : f;
            };
          }(), getStartElement: function () {
            var a = this._.cache;if (void 0 !== a.startElement) return a.startElement;var b;switch (this.getType()) {case CKEDITOR.SELECTION_ELEMENT:
                return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:
                var d = this.getRanges()[0];if (d) {
                  if (d.collapsed) b = d.startContainer, b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent());else {
                    for (d.optimize(); b = d.startContainer, d.startOffset == (b.getChildCount ? b.getChildCount() : b.getLength()) && !b.isBlockBoundary();) d.setStartAfter(b);b = d.startContainer;if (b.type != CKEDITOR.NODE_ELEMENT) return b.getParent();if ((b = b.getChild(d.startOffset)) && b.type == CKEDITOR.NODE_ELEMENT) for (d = b.getFirst(); d && d.type == CKEDITOR.NODE_ELEMENT;) b = d, d = d.getFirst();else b = d.startContainer;
                  }b = b.$;
                }}return a.startElement = b ? new CKEDITOR.dom.element(b) : null;
          }, getSelectedElement: function () {
            var a = this._.cache;if (void 0 !== a.selectedElement) return a.selectedElement;var b = this,
                d = CKEDITOR.tools.tryThese(function () {
              return b.getNative().createRange().item(0);
            }, function () {
              for (var a = b.getRanges()[0].clone(), d, f, c = 2; c && !((d = a.getEnclosedNode()) && d.type == CKEDITOR.NODE_ELEMENT && B[d.getName()] && (f = d)); c--) a.shrink(CKEDITOR.SHRINK_ELEMENT);return f && f.$;
            });return a.selectedElement = d ? new CKEDITOR.dom.element(d) : null;
          }, getSelectedText: function () {
            var a = this._.cache;if (void 0 !== a.selectedText) return a.selectedText;var b = this.getNative(),
                b = u ? "Control" == b.type ? "" : b.createRange().text : b.toString();return a.selectedText = b;
          }, lock: function () {
            this.getRanges();this.getStartElement();
            this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel = null;this.isLocked = 1;
          }, unlock: function (a) {
            if (this.isLocked) {
              if (a) var b = this.getSelectedElement(),
                  d = this.getRanges(),
                  f = this.isFake;this.isLocked = 0;this.reset();a && (a = b || d[0] && d[0].getCommonAncestor()) && a.getAscendant("body", 1) && ((a = this.root.editor) && a.plugins.tableselection && a.plugins.tableselection.isSupportedEnvironment(a) && h(d) ? e.call(this, d) : f ? this.fake(b) : b && 2 > d.length ? this.selectElement(b) : this.selectRanges(d));
            }
          }, reset: function () {
            this._.cache = {};this.isFake = 0;var a = this.root.editor;if (a && a._.fakeSelection) if (this.rev == a._.fakeSelection.rev) {
              delete a._.fakeSelection;var b = a._.hiddenSelectionContainer;if (b) {
                var d = a.checkDirty();a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot");!d && a.resetDirty();
              }delete a._.hiddenSelectionContainer;
            } else CKEDITOR.warn("selection-fake-reset");this.rev = C++;
          }, selectElement: function (a) {
            var b = new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b]);
          }, selectRanges: function (a) {
            var b = this.root.editor,
                c = b && b._.hiddenSelectionContainer;this.reset();if (c) for (var c = this.root, g, l = 0; l < a.length; ++l) g = a[l], g.endContainer.equals(c) && (g.endOffset = Math.min(g.endOffset, c.getChildCount()));if (a.length) if (this.isLocked) {
              var k = CKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();k && !k.equals(this.root) && k.focus();
            } else {
              var m;a: {
                var w, q;if (1 == a.length && !(q = a[0]).collapsed && (m = q.getEnclosedNode()) && m.type == CKEDITOR.NODE_ELEMENT && (q = q.clone(), q.shrink(CKEDITOR.SHRINK_ELEMENT, !0), (w = q.getEnclosedNode()) && w.type == CKEDITOR.NODE_ELEMENT && (m = w), "false" == m.getAttribute("contenteditable"))) break a;m = void 0;
              }if (m) this.fake(m);else if (b && b.plugins.tableselection && b.plugins.tableselection.isSupportedEnvironment(b) && h(a) && !v && !a[0]._getTableElement({ table: 1 }).hasAttribute("data-cke-tableselection-ignored")) e.call(this, a);else {
                if (u) {
                  w = CKEDITOR.dom.walker.whitespaces(!0);m = /\ufeff|\u00a0/;q = { table: 1, tbody: 1, tr: 1 };1 < a.length && (b = a[a.length - 1], a[0].setEnd(b.endContainer, b.endOffset));
                  b = a[0];a = b.collapsed;var p, t, x;if ((c = b.getEnclosedNode()) && c.type == CKEDITOR.NODE_ELEMENT && c.getName() in B && (!c.is("a") || !c.getText())) try {
                    x = c.$.createControlRange();x.addElement(c.$);x.select();return;
                  } catch (C) {}if (b.startContainer.type == CKEDITOR.NODE_ELEMENT && b.startContainer.getName() in q || b.endContainer.type == CKEDITOR.NODE_ELEMENT && b.endContainer.getName() in q) b.shrink(CKEDITOR.NODE_ELEMENT, !0), a = b.collapsed;x = b.createBookmark();q = x.startNode;a || (k = x.endNode);x = b.document.$.body.createTextRange();
                  x.moveToElementText(q.$);x.moveStart("character", 1);k ? (m = b.document.$.body.createTextRange(), m.moveToElementText(k.$), x.setEndPoint("EndToEnd", m), x.moveEnd("character", -1)) : (p = q.getNext(w), t = q.hasAscendant("pre"), p = !(p && p.getText && p.getText().match(m)) && (t || !q.hasPrevious() || q.getPrevious().is && q.getPrevious().is("br")), t = b.document.createElement("span"), t.setHtml("\x26#65279;"), t.insertBefore(q), p && b.document.createText("﻿").insertBefore(q));b.setStartBefore(q);q.remove();a ? (p ? (x.moveStart("character", -1), x.select(), b.document.$.selection.clear()) : x.select(), b.moveToPosition(t, CKEDITOR.POSITION_BEFORE_START), t.remove()) : (b.setEndBefore(k), k.remove(), x.select());
                } else {
                  k = this.getNative();if (!k) return;this.removeAllRanges();for (x = 0; x < a.length; x++) {
                    if (x < a.length - 1 && (p = a[x], t = a[x + 1], m = p.clone(), m.setStart(p.endContainer, p.endOffset), m.setEnd(t.startContainer, t.startOffset), !m.collapsed && (m.shrink(CKEDITOR.NODE_ELEMENT, !0), b = m.getCommonAncestor(), m = m.getEnclosedNode(), b.isReadOnly() || m && m.isReadOnly()))) {
                      t.setStart(p.startContainer, p.startOffset);a.splice(x--, 1);continue;
                    }b = a[x];t = this.document.$.createRange();b.collapsed && d(b) && (m = f(this.root), b.insertNode(m), (p = m.getNext()) && !m.getPrevious() && p.type == CKEDITOR.NODE_ELEMENT && "br" == p.getName() ? (n(this.root), b.moveToPosition(p, CKEDITOR.POSITION_BEFORE_START)) : b.moveToPosition(m, CKEDITOR.POSITION_AFTER_END));t.setStart(b.startContainer.$, b.startOffset);try {
                      t.setEnd(b.endContainer.$, b.endOffset);
                    } catch (y) {
                      if (0 <= y.toString().indexOf("NS_ERROR_ILLEGAL_VALUE")) b.collapse(1), t.setEnd(b.endContainer.$, b.endOffset);else throw y;
                    }k.addRange(t);
                  }
                }this.reset();this.root.fire("selectionchange");
              }
            }
          }, fake: function (a, b) {
            var d = this.root.editor;void 0 === b && a.hasAttribute("aria-label") && (b = a.getAttribute("aria-label"));this.reset();z(d, b);var f = this._.cache,
                c = new CKEDITOR.dom.range(this.root);c.setStartBefore(a);c.setEndAfter(a);f.ranges = new CKEDITOR.dom.rangeList(c);f.selectedElement = f.startElement = a;f.type = CKEDITOR.SELECTION_ELEMENT;f.selectedText = f.nativeSel = null;this.isFake = 1;this.rev = C++;d._.fakeSelection = this;this.root.fire("selectionchange");
          }, isHidden: function () {
            var a = this.getCommonAncestor();a && a.type == CKEDITOR.NODE_TEXT && (a = a.getParent());return !(!a || !a.data("cke-hidden-sel"));
          }, isInTable: function (a) {
            return h(this.getRanges(), a);
          }, isCollapsed: function () {
            var a = this.getRanges();return 1 === a.length && a[0].collapsed;
          }, createBookmarks: function (a) {
            a = this.getRanges().createBookmarks(a);this.isFake && (a.isFake = 1);return a;
          }, createBookmarks2: function (a) {
            a = this.getRanges().createBookmarks2(a);this.isFake && (a.isFake = 1);return a;
          }, selectBookmarks: function (a) {
            for (var b = [], d, f = 0; f < a.length; f++) {
              var c = new CKEDITOR.dom.range(this.root);c.moveToBookmark(a[f]);b.push(c);
            }a.isFake && (d = h(b) ? b[0]._getTableElement() : b[0].getEnclosedNode(), d && d.type == CKEDITOR.NODE_ELEMENT || (CKEDITOR.warn("selection-not-fake"), a.isFake = 0));a.isFake && !h(b) ? this.fake(d) : this.selectRanges(b);return this;
          }, getCommonAncestor: function () {
            var a = this.getRanges();return a.length ? a[0].startContainer.getCommonAncestor(a[a.length - 1].endContainer) : null;
          },
          scrollIntoView: function () {
            this.getType() != CKEDITOR.SELECTION_NONE && this.getRanges()[0].scrollIntoView();
          }, removeAllRanges: function () {
            if (this.getType() != CKEDITOR.SELECTION_NONE) {
              var a = this.getNative();try {
                a && a[u ? "empty" : "removeAllRanges"]();
              } catch (b) {}this.reset();
            }
          } };
      }(), "use strict", CKEDITOR.STYLE_BLOCK = 1, CKEDITOR.STYLE_INLINE = 2, CKEDITOR.STYLE_OBJECT = 3, function () {
        function c(a, b) {
          for (var d, f; (a = a.getParent()) && !a.equals(b);) if (a.getAttribute("data-nostyle")) d = a;else if (!f) {
            var c = a.getAttribute("contentEditable");
            "false" == c ? d = a : "true" == c && (f = 1);
          }return d;
        }function h(a, b, d, f) {
          return (a.getPosition(b) | f) == f && (!d.childRule || d.childRule(a));
        }function g(a) {
          var b = a.document;if (a.collapsed) b = C(this, b), a.insertNode(b), a.moveToPosition(b, CKEDITOR.POSITION_BEFORE_END);else {
            var d = this.element,
                f = this._.definition,
                l,
                k = f.ignoreReadonly,
                m = k || f.includeReadonly;null == m && (m = a.root.getCustomData("cke_includeReadonly"));var n = CKEDITOR.dtd[d];n || (l = !0, n = CKEDITOR.dtd.span);a.enlarge(CKEDITOR.ENLARGE_INLINE, 1);a.trim();var w = a.createBookmark(),
                q = w.startNode,
                p = w.endNode,
                t = q,
                v;if (!k) {
              var u = a.getCommonAncestor(),
                  k = c(q, u),
                  u = c(p, u);k && (t = k.getNextSourceNode(!0));u && (p = u);
            }for (t.getPosition(p) == CKEDITOR.POSITION_FOLLOWING && (t = 0); t;) {
              k = !1;if (t.equals(p)) t = null, k = !0;else {
                var x = t.type == CKEDITOR.NODE_ELEMENT ? t.getName() : null,
                    u = x && "false" == t.getAttribute("contentEditable"),
                    y = x && -1 !== CKEDITOR.tools.array.indexOf(CKEDITOR.style.unstylableElements, x),
                    y = x && (t.getAttribute("data-nostyle") || y);if (x && t.data("cke-bookmark") || t.type === CKEDITOR.NODE_COMMENT) {
                  t = t.getNextSourceNode(!0);continue;
                }if (u && m && CKEDITOR.dtd.$block[x]) for (var z = t, A = e(z), B = void 0, E = A.length, J = 0, z = E && new CKEDITOR.dom.range(z.getDocument()); J < E; ++J) {
                  var B = A[J],
                      ha = CKEDITOR.filter.instances[B.data("cke-filter")];if (ha ? ha.check(this) : 1) z.selectNodeContents(B), g.call(this, z);
                }A = x ? !n[x] || y ? 0 : u && !m ? 0 : h(t, p, f, M) : 1;if (A) {
                  if (B = t.getParent(), A = f, E = d, J = l, !B || !(B.getDtd() || CKEDITOR.dtd.span)[E] && !J || A.parentRule && !A.parentRule(B)) k = !0;else {
                    if (v || x && CKEDITOR.dtd.$removeEmpty[x] && (t.getPosition(p) | M) != M || (v = a.clone(), v.setStartBefore(t)), x = t.type, x == CKEDITOR.NODE_TEXT || u || x == CKEDITOR.NODE_ELEMENT && !t.getChildCount()) {
                      for (var x = t, R; (k = !x.getNext(K)) && (R = x.getParent(), n[R.getName()]) && h(R, q, f, I);) x = R;v.setEndAfter(x);
                    }
                  }
                } else k = !0;t = t.getNextSourceNode(y || u);
              }if (k && v && !v.collapsed) {
                for (var k = C(this, b), u = k.hasAttributes(), y = v.getCommonAncestor(), x = {}, A = {}, B = {}, E = {}, ba, Y, ga; k && y;) {
                  if (y.getName() == d) {
                    for (ba in f.attributes) !E[ba] && (ga = y.getAttribute(Y)) && (k.getAttribute(ba) == ga ? A[ba] = 1 : E[ba] = 1);for (Y in f.styles) !B[Y] && (ga = y.getStyle(Y)) && (k.getStyle(Y) == ga ? x[Y] = 1 : B[Y] = 1);
                  }y = y.getParent();
                }for (ba in A) k.removeAttribute(ba);for (Y in x) k.removeStyle(Y);u && !k.hasAttributes() && (k = null);k ? (v.extractContents().appendTo(k), v.insertNode(k), r.call(this, k), k.mergeSiblings(), CKEDITOR.env.ie || k.$.normalize()) : (k = new CKEDITOR.dom.element("span"), v.extractContents().appendTo(k), v.insertNode(k), r.call(this, k), k.remove(!0));v = null;
              }
            }a.moveToBookmark(w);a.shrink(CKEDITOR.SHRINK_TEXT);a.shrink(CKEDITOR.NODE_ELEMENT, !0);
          }
        }function a(a) {
          function b() {
            for (var a = new CKEDITOR.dom.elementPath(f.getParent()), d = new CKEDITOR.dom.elementPath(m.getParent()), c = null, e = null, g = 0; g < a.elements.length; g++) {
              var l = a.elements[g];if (l == a.block || l == a.blockLimit) break;n.checkElementRemovable(l, !0) && (c = l);
            }for (g = 0; g < d.elements.length; g++) {
              l = d.elements[g];if (l == d.block || l == d.blockLimit) break;n.checkElementRemovable(l, !0) && (e = l);
            }e && m.breakParent(e);c && f.breakParent(c);
          }a.enlarge(CKEDITOR.ENLARGE_INLINE, 1);var d = a.createBookmark(),
              f = d.startNode,
              c = this._.definition.alwaysRemoveElement;
          if (a.collapsed) {
            for (var e = new CKEDITOR.dom.elementPath(f.getParent(), a.root), g, l = 0, k; l < e.elements.length && (k = e.elements[l]) && k != e.block && k != e.blockLimit; l++) if (this.checkElementRemovable(k)) {
              var h;!c && a.collapsed && (a.checkBoundaryOfElement(k, CKEDITOR.END) || (h = a.checkBoundaryOfElement(k, CKEDITOR.START))) ? (g = k, g.match = h ? "start" : "end") : (k.mergeSiblings(), k.is(this.element) ? z.call(this, k) : t(k, v(this)[k.getName()]));
            }if (g) {
              c = f;for (l = 0;; l++) {
                k = e.elements[l];if (k.equals(g)) break;else if (k.match) continue;else k = k.clone();k.append(c);c = k;
              }c["start" == g.match ? "insertBefore" : "insertAfter"](g);
            }
          } else {
            var m = d.endNode,
                n = this;b();for (e = f; !e.equals(m);) g = e.getNextSourceNode(), e.type == CKEDITOR.NODE_ELEMENT && this.checkElementRemovable(e) && (e.getName() == this.element ? z.call(this, e) : t(e, v(this)[e.getName()]), g.type == CKEDITOR.NODE_ELEMENT && g.contains(f) && (b(), g = f.getNext())), e = g;
          }a.moveToBookmark(d);a.shrink(CKEDITOR.NODE_ELEMENT, !0);
        }function e(a) {
          var b = [];a.forEach(function (a) {
            if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1;
          }, CKEDITOR.NODE_ELEMENT, !0);return b;
        }function l(a) {
          var b = a.getEnclosedNode() || a.getCommonAncestor(!1, !0);(a = new CKEDITOR.dom.elementPath(b, a.root).contains(this.element, 1)) && !a.isReadOnly() && p(a, this);
        }function k(a) {
          var b = a.getCommonAncestor(!0, !0);if (a = new CKEDITOR.dom.elementPath(b, a.root).contains(this.element, 1)) {
            var b = this._.definition,
                d = b.attributes;if (d) for (var f in d) a.removeAttribute(f, d[f]);if (b.styles) for (var c in b.styles) b.styles.hasOwnProperty(c) && a.removeStyle(c);
          }
        }function m(a) {
          var b = a.createBookmark(!0),
              f = a.createIterator();f.enforceRealBlocks = !0;this._.enterMode && (f.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR);for (var c, e = a.document, g; c = f.getNextParagraph();) !c.isReadOnly() && (f.activeFilter ? f.activeFilter.check(this) : 1) && (g = C(this, e, c), d(c, g));a.moveToBookmark(b);
        }function b(a) {
          var b = a.createBookmark(1),
              f = a.createIterator();f.enforceRealBlocks = !0;f.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR;for (var c, e; c = f.getNextParagraph();) this.checkElementRemovable(c) && (c.is("pre") ? ((e = this._.enterMode == CKEDITOR.ENTER_BR ? null : a.document.createElement(this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div")) && c.copyAttributes(e), d(c, e)) : z.call(this, c));a.moveToBookmark(b);
        }function d(a, b) {
          var d = !b;d && (b = a.getDocument().createElement("div"), a.copyAttributes(b));var c = b && b.is("pre"),
              e = a.is("pre"),
              g = !c && e;if (c && !e) {
            e = b;(g = a.getBogus()) && g.remove();g = a.getHtml();g = n(g, /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, "");g = g.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi, "$1");g = g.replace(/([ \t\n\r]+|&nbsp;)/g, " ");g = g.replace(/<br\b[^>]*>/gi, "\n");if (CKEDITOR.env.ie) {
              var l = a.getDocument().createElement("div");l.append(e);e.$.outerHTML = "\x3cpre\x3e" + g + "\x3c/pre\x3e";e.copyAttributes(l.getFirst());e = l.getFirst().remove();
            } else e.setHtml(g);b = e;
          } else g ? b = w(d ? [a.getHtml()] : f(a), b) : a.moveChildren(b);b.replace(a);if (c) {
            var d = b,
                k;(k = d.getPrevious(H)) && k.type == CKEDITOR.NODE_ELEMENT && k.is("pre") && (c = n(k.getHtml(), /\n$/, "") + "\n\n" + n(d.getHtml(), /^\n/, ""), CKEDITOR.env.ie ? d.$.outerHTML = "\x3cpre\x3e" + c + "\x3c/pre\x3e" : d.setHtml(c), k.remove());
          } else d && u(b);
        }function f(a) {
          var b = [];n(a.getOuterHtml(), /(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi, function (a, b, d) {
            return b + "\x3c/pre\x3e" + d + "\x3cpre\x3e";
          }).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi, function (a, d) {
            b.push(d);
          });return b;
        }function n(a, b, d) {
          var f = "",
              c = "";a = a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi, function (a, b, d) {
            b && (f = b);d && (c = d);return "";
          });return f + a.replace(b, d) + c;
        }function w(a, b) {
          var d;
          1 < a.length && (d = new CKEDITOR.dom.documentFragment(b.getDocument()));for (var f = 0; f < a.length; f++) {
            var c = a[f],
                c = c.replace(/(\r\n|\r)/g, "\n"),
                c = n(c, /^[ \t]*\n/, ""),
                c = n(c, /\n$/, ""),
                c = n(c, /^[ \t]+|[ \t]+$/g, function (a, b) {
              return 1 == a.length ? "\x26nbsp;" : b ? " " + CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) : CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " ";
            }),
                c = c.replace(/\n/g, "\x3cbr\x3e"),
                c = c.replace(/[ \t]{2,}/g, function (a) {
              return CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " ";
            });if (d) {
              var e = b.clone();e.setHtml(c);
              d.append(e);
            } else b.setHtml(c);
          }return d || b;
        }function z(a, b) {
          var d = this._.definition,
              f = d.attributes,
              d = d.styles,
              c = v(this)[a.getName()],
              e = CKEDITOR.tools.isEmpty(f) && CKEDITOR.tools.isEmpty(d),
              g;for (g in f) if ("class" != g && !this._.definition.fullMatch || a.getAttribute(g) == q(g, f[g])) b && "data-" == g.slice(0, 5) || (e = a.hasAttribute(g), a.removeAttribute(g));for (var l in d) this._.definition.fullMatch && a.getStyle(l) != q(l, d[l], !0) || (e = e || !!a.getStyle(l), a.removeStyle(l));t(a, c, F[a.getName()]);e && (this._.definition.alwaysRemoveElement ? u(a, 1) : !CKEDITOR.dtd.$block[a.getName()] || this._.enterMode == CKEDITOR.ENTER_BR && !a.hasAttributes() ? u(a) : a.renameNode(this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div"));
        }function r(a) {
          for (var b = v(this), d = a.getElementsByTag(this.element), f, c = d.count(); 0 <= --c;) f = d.getItem(c), f.isReadOnly() || z.call(this, f, !0);for (var e in b) if (e != this.element) for (d = a.getElementsByTag(e), c = d.count() - 1; 0 <= c; c--) f = d.getItem(c), f.isReadOnly() || t(f, b[e]);
        }function t(a, b, d) {
          if (b = b && b.attributes) for (var f = 0; f < b.length; f++) {
            var c = b[f][0],
                e;if (e = a.getAttribute(c)) {
              var g = b[f][1];(null === g || g.test && g.test(e) || "string" == typeof g && e == g) && a.removeAttribute(c);
            }
          }d || u(a);
        }function u(a, b) {
          if (!a.hasAttributes() || b) if (CKEDITOR.dtd.$block[a.getName()]) {
            var d = a.getPrevious(H),
                f = a.getNext(H);!d || d.type != CKEDITOR.NODE_TEXT && d.isBlockBoundary({ br: 1 }) || a.append("br", 1);!f || f.type != CKEDITOR.NODE_TEXT && f.isBlockBoundary({ br: 1 }) || a.append("br");a.remove(!0);
          } else d = a.getFirst(), f = a.getLast(), a.remove(!0), d && (d.type == CKEDITOR.NODE_ELEMENT && d.mergeSiblings(), f && !d.equals(f) && f.type == CKEDITOR.NODE_ELEMENT && f.mergeSiblings());
        }function C(a, b, d) {
          var f = a.element;"*" == f && (f = "span");f = new CKEDITOR.dom.element(f, b);d && d.copyAttributes(f);f = p(f, a);b.getCustomData("doc_processing_style") && f.hasAttribute("id") ? f.removeAttribute("id") : b.setCustomData("doc_processing_style", 1);return f;
        }function p(a, b) {
          var d = b._.definition,
              f = d.attributes,
              d = CKEDITOR.style.getStyleText(d);if (f) for (var c in f) a.setAttribute(c, f[c]);d && a.setAttribute("style", d);a.getDocument().removeCustomData("doc_processing_style");
          return a;
        }function x(a, b) {
          for (var d in a) a[d] = a[d].replace(E, function (a, d) {
            return b[d];
          });
        }function v(a) {
          if (a._.overrides) return a._.overrides;var b = a._.overrides = {},
              d = a._.definition.overrides;if (d) {
            CKEDITOR.tools.isArray(d) || (d = [d]);for (var f = 0; f < d.length; f++) {
              var c = d[f],
                  e,
                  g;"string" == typeof c ? e = c.toLowerCase() : (e = c.element ? c.element.toLowerCase() : a.element, g = c.attributes);c = b[e] || (b[e] = {});if (g) {
                var c = c.attributes = c.attributes || [],
                    l;for (l in g) c.push([l.toLowerCase(), g[l]]);
              }
            }
          }return b;
        }function q(a, b, d) {
          var f = new CKEDITOR.dom.element("span");f[d ? "setStyle" : "setAttribute"](a, b);return f[d ? "getStyle" : "getAttribute"](a);
        }function y(a, b) {
          function d(a, b) {
            return "font-family" == b.toLowerCase() ? a.replace(/["']/g, "") : a;
          }"string" == typeof a && (a = CKEDITOR.tools.parseCssText(a));"string" == typeof b && (b = CKEDITOR.tools.parseCssText(b, !0));for (var f in a) if (!(f in b) || d(b[f], f) != d(a[f], f) && "inherit" != a[f] && "inherit" != b[f]) return !1;return !0;
        }function A(a, b, d) {
          var f = a.getRanges();b = b ? this.removeFromRange : this.applyToRange;
          for (var c, e = f.createIterator(); c = e.getNextRange();) b.call(this, c, d);a.selectRanges(f);
        }var F = { address: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, p: 1, pre: 1, section: 1, header: 1, footer: 1, nav: 1, article: 1, aside: 1, figure: 1, dialog: 1, hgroup: 1, time: 1, meter: 1, menu: 1, command: 1, keygen: 1, output: 1, progress: 1, details: 1, datagrid: 1, datalist: 1 },
            B = { a: 1, blockquote: 1, embed: 1, hr: 1, img: 1, li: 1, object: 1, ol: 1, table: 1, td: 1, tr: 1, th: 1, ul: 1, dl: 1, dt: 1, dd: 1, form: 1, audio: 1, video: 1 },
            G = /\s*(?:;\s*|$)/,
            E = /#\((.+?)\)/g,
            K = CKEDITOR.dom.walker.bookmark(0, 1),
            H = CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style = function (a, b) {
          if ("string" == typeof a.type) return new CKEDITOR.style.customHandlers[a.type](a);var d = a.attributes;d && d.style && (a.styles = CKEDITOR.tools.extend({}, a.styles, CKEDITOR.tools.parseCssText(d.style)), delete d.style);b && (a = CKEDITOR.tools.clone(a), x(a.attributes, b), x(a.styles, b));d = this.element = a.element ? "string" == typeof a.element ? a.element.toLowerCase() : a.element : "*";this.type = a.type || (F[d] ? CKEDITOR.STYLE_BLOCK : B[d] ? CKEDITOR.STYLE_OBJECT : CKEDITOR.STYLE_INLINE);"object" == typeof this.element && (this.type = CKEDITOR.STYLE_OBJECT);this._ = { definition: a };
        };CKEDITOR.style.prototype = { apply: function (a) {
            if (a instanceof CKEDITOR.dom.document) return A.call(this, a.getSelection());if (this.checkApplicable(a.elementPath(), a)) {
              var b = this._.enterMode;b || (this._.enterMode = a.activeEnterMode);A.call(this, a.getSelection(), 0, a);this._.enterMode = b;
            }
          }, remove: function (a) {
            if (a instanceof CKEDITOR.dom.document) return A.call(this, a.getSelection(), 1);if (this.checkApplicable(a.elementPath(), a)) {
              var b = this._.enterMode;b || (this._.enterMode = a.activeEnterMode);A.call(this, a.getSelection(), 1, a);this._.enterMode = b;
            }
          }, applyToRange: function (a) {
            this.applyToRange = this.type == CKEDITOR.STYLE_INLINE ? g : this.type == CKEDITOR.STYLE_BLOCK ? m : this.type == CKEDITOR.STYLE_OBJECT ? l : null;return this.applyToRange(a);
          }, removeFromRange: function (d) {
            this.removeFromRange = this.type == CKEDITOR.STYLE_INLINE ? a : this.type == CKEDITOR.STYLE_BLOCK ? b : this.type == CKEDITOR.STYLE_OBJECT ? k : null;return this.removeFromRange(d);
          }, applyToObject: function (a) {
            p(a, this);
          }, checkActive: function (a, b) {
            switch (this.type) {case CKEDITOR.STYLE_BLOCK:
                return this.checkElementRemovable(a.block || a.blockLimit, !0, b);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:
                for (var d = a.elements, f = 0, c; f < d.length; f++) if (c = d[f], this.type != CKEDITOR.STYLE_INLINE || c != a.block && c != a.blockLimit) {
                  if (this.type == CKEDITOR.STYLE_OBJECT) {
                    var e = c.getName();if (!("string" == typeof this.element ? e == this.element : e in this.element)) continue;
                  }if (this.checkElementRemovable(c, !0, b)) return !0;
                }}return !1;
          }, checkApplicable: function (a, b, d) {
            b && b instanceof CKEDITOR.filter && (d = b);if (d && !d.check(this)) return !1;switch (this.type) {case CKEDITOR.STYLE_OBJECT:
                return !!a.contains(this.element);case CKEDITOR.STYLE_BLOCK:
                return !!a.blockLimit.getDtd()[this.element];}return !0;
          }, checkElementMatch: function (a, b) {
            var d = this._.definition;if (!a || !d.ignoreReadonly && a.isReadOnly()) return !1;var f = a.getName();if ("string" == typeof this.element ? f == this.element : f in this.element) {
              if (!b && !a.hasAttributes()) return !0;if (f = d._AC) d = f;else {
                var f = {},
                    c = 0,
                    e = d.attributes;
                if (e) for (var g in e) c++, f[g] = e[g];if (g = CKEDITOR.style.getStyleText(d)) f.style || c++, f.style = g;f._length = c;d = d._AC = f;
              }if (d._length) {
                for (var l in d) if ("_length" != l) if (f = a.getAttribute(l) || "", "style" == l ? y(d[l], f) : d[l] == f) {
                  if (!b) return !0;
                } else if (b) return !1;if (b) return !0;
              } else return !0;
            }return !1;
          }, checkElementRemovable: function (a, b, d) {
            if (this.checkElementMatch(a, b, d)) return !0;if (b = v(this)[a.getName()]) {
              var f;if (!(b = b.attributes)) return !0;for (d = 0; d < b.length; d++) if (f = b[d][0], f = a.getAttribute(f)) {
                var c = b[d][1];
                if (null === c) return !0;if ("string" == typeof c) {
                  if (f == c) return !0;
                } else if (c.test(f)) return !0;
              }
            }return !1;
          }, buildPreview: function (a) {
            var b = this._.definition,
                d = [],
                f = b.element;"bdo" == f && (f = "span");var d = ["\x3c", f],
                c = b.attributes;if (c) for (var e in c) d.push(" ", e, '\x3d"', c[e], '"');(c = CKEDITOR.style.getStyleText(b)) && d.push(' style\x3d"', c, '"');d.push("\x3e", a || b.name, "\x3c/", f, "\x3e");return d.join("");
          }, getDefinition: function () {
            return this._.definition;
          } };CKEDITOR.style.getStyleText = function (a) {
          var b = a._ST;if (b) return b;
          var b = a.styles,
              d = a.attributes && a.attributes.style || "",
              f = "";d.length && (d = d.replace(G, ";"));for (var c in b) {
            var e = b[c],
                g = (c + ":" + e).replace(G, ";");"inherit" == e ? f += g : d += g;
          }d.length && (d = CKEDITOR.tools.normalizeCssText(d, !0));return a._ST = d + f;
        };CKEDITOR.style.customHandlers = {};CKEDITOR.style.unstylableElements = [];CKEDITOR.style.addCustomHandler = function (a) {
          var b = function (a) {
            this._ = { definition: a };this.setup && this.setup(a);
          };b.prototype = CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype), { assignedTo: CKEDITOR.STYLE_OBJECT }, a, !0);return this.customHandlers[a.type] = b;
        };var M = CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED,
            I = CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED;
      }(), CKEDITOR.styleCommand = function (c, h) {
        this.requiredContent = this.allowedContent = this.style = c;CKEDITOR.tools.extend(this, h, !0);
      }, CKEDITOR.styleCommand.prototype.exec = function (c) {
        c.focus();this.state == CKEDITOR.TRISTATE_OFF ? c.applyStyle(this.style) : this.state == CKEDITOR.TRISTATE_ON && c.removeStyle(this.style);
      }, CKEDITOR.stylesSet = new CKEDITOR.resourceManager("", "stylesSet"), CKEDITOR.addStylesSet = CKEDITOR.tools.bind(CKEDITOR.stylesSet.add, CKEDITOR.stylesSet), CKEDITOR.loadStylesSet = function (c, h, g) {
        CKEDITOR.stylesSet.addExternal(c, h, "");CKEDITOR.stylesSet.load(c, g);
      }, CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { attachStyleStateChange: function (c, h) {
          var g = this._.styleStateChangeCallbacks;g || (g = this._.styleStateChangeCallbacks = [], this.on("selectionChange", function (a) {
            for (var c = 0; c < g.length; c++) {
              var l = g[c],
                  k = l.style.checkActive(a.data.path, this) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF;l.fn.call(this, k);
            }
          }));g.push({ style: c, fn: h });
        }, applyStyle: function (c) {
          c.apply(this);
        }, removeStyle: function (c) {
          c.remove(this);
        }, getStylesSet: function (c) {
          if (this._.stylesDefinitions) c(this._.stylesDefinitions);else {
            var h = this,
                g = h.config.stylesCombo_stylesSet || h.config.stylesSet;if (!1 === g) c(null);else if (g instanceof Array) h._.stylesDefinitions = g, c(g);else {
              g || (g = "default");
              var g = g.split(":"),
                  a = g[0];CKEDITOR.stylesSet.addExternal(a, g[1] ? g.slice(1).join(":") : CKEDITOR.getUrl("styles.js"), "");CKEDITOR.stylesSet.load(a, function (e) {
                h._.stylesDefinitions = e[a];c(h._.stylesDefinitions);
              });
            }
          }
        } }), function () {
        if (window.Promise) CKEDITOR.tools.promise = Promise;else {
          var c = CKEDITOR.getUrl("vendor/promise.js");if ("function" === typeof window.define && window.define.amd && "function" === typeof window.require) return window.require([c], function (c) {
            CKEDITOR.tools.promise = c;
          });CKEDITOR.scriptLoader.load(c, function (h) {
            if (!h) return CKEDITOR.error("no-vendor-lib", { path: c });if ("undefined" !== typeof window.ES6Promise) return CKEDITOR.tools.promise = ES6Promise;
          });
        }
      }(), function () {
        function c(a, c, l) {
          a.once("selectionCheck", function (a) {
            if (!h) {
              var m = a.data.getRanges()[0];l.equals(m) ? a.cancel() : c.equals(m) && (g = !0);
            }
          }, null, null, -1);
        }var h = !0,
            g = !1;CKEDITOR.dom.selection.setupEditorOptimization = function (a) {
          a.on("selectionCheck", function (a) {
            a.data && !g && a.data.optimizeInElementEnds();g = !1;
          });a.on("contentDom", function () {
            var c = a.editable();c && (c.attachListener(c, "keydown", function (a) {
              this._.shiftPressed = a.data.$.shiftKey;
            }, this), c.attachListener(c, "keyup", function (a) {
              this._.shiftPressed = a.data.$.shiftKey;
            }, this));
          });
        };CKEDITOR.dom.selection.prototype.optimizeInElementEnds = function () {
          var a = this.getRanges()[0],
              e = this.root.editor,
              g;if (this.root.editor._.shiftPressed || this.isFake || a.isCollapsed || a.startContainer.equals(a.endContainer) || (a.endContainer.is ? a.endContainer.is("li") : a.endContainer.getParent().is && a.endContainer.getParent().is("li"))) g = !1;else if (0 === a.endOffset) g = !0;else {
            g = a.startContainer.type === CKEDITOR.NODE_TEXT;var k = a.endContainer.type === CKEDITOR.NODE_TEXT,
                m = g ? a.startContainer.getLength() : a.startContainer.getChildCount();g = a.startOffset === m || g ^ k;
          }g && (g = a.clone(), a.shrink(CKEDITOR.SHRINK_TEXT, !1, { skipBogus: !CKEDITOR.env.webkit }), h = !1, c(e, a, g), a.select(), h = !0);
        };
      }(), function () {
        function c(a, c) {
          if (g(a)) a = Math.round(c * (parseFloat(a) / 100));else if ("string" === typeof a && a.match(/^\d+$/gm) || "string" === typeof a && a.match(/^\d+(?:deg)?$/gm)) a = parseInt(a, 10);return a;
        }function h(a, c) {
          g(a) ? a = c * (parseFloat(a) / 100) : "string" === typeof a && a.match(/^\d?\.\d+/gm) && (a = parseFloat(a));return a;
        }function g(a) {
          return "string" === typeof a && a.match(/^((\d*\.\d+)|(\d+))%{1}$/gm);
        }function a(a, c, e) {
          return !isNaN(a) && a >= c && a <= e;
        }function e(a) {
          a = a.toString(16);return 1 == a.length ? "0" + a : a;
        }CKEDITOR.tools.color = CKEDITOR.tools.createClass({ $: function (a, c) {
            this._.initialColorCode = a;this._.defaultValue = c;this._.parseInput(a);
          }, proto: { getHex: function () {
              if (!this._.isValidColor) return this._.defaultValue;
              var a = this._.blendAlphaColor(this._.red, this._.green, this._.blue, this._.alpha);return this._.formatHexString(a[0], a[1], a[2]);
            }, getHexWithAlpha: function () {
              if (!this._.isValidColor) return this._.defaultValue;var a = Math.round(this._.alpha * CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);return this._.formatHexString(this._.red, this._.green, this._.blue, a);
            }, getRgb: function () {
              if (!this._.isValidColor) return this._.defaultValue;var a = this._.blendAlphaColor(this._.red, this._.green, this._.blue, this._.alpha);return this._.formatRgbString("rgb", a[0], a[1], a[2]);
            }, getRgba: function () {
              return this._.isValidColor ? this._.formatRgbString("rgba", this._.red, this._.green, this._.blue, this._.alpha) : this._.defaultValue;
            }, getHsl: function () {
              var a = 0 === this._.alpha || 1 === this._.alpha;if (!this._.isValidColor) return this._.defaultValue;this._.type === CKEDITOR.tools.color.TYPE_HSL && a ? a = [this._.hue, this._.saturation, this._.lightness] : (a = this._.blendAlphaColor(this._.red, this._.green, this._.blue, this._.alpha), a = this._.rgbToHsl(a[0], a[1], a[2]));return this._.formatHslString("hsl", a[0], a[1], a[2]);
            }, getHsla: function () {
              var a;if (!this._.isValidColor) return this._.defaultValue;a = this._.type === CKEDITOR.tools.color.TYPE_HSL ? [this._.hue, this._.saturation, this._.lightness] : this._.rgbToHsl(this._.red, this._.green, this._.blue);return this._.formatHslString("hsla", a[0], a[1], a[2], this._.alpha);
            }, getInitialValue: function () {
              return this._.initialColorCode;
            } }, _: { initialColorCode: "", isValidColor: !0, type: 0, hue: 0, saturation: 0, lightness: 0, red: 0, green: 0, blue: 0, alpha: 1, blendAlphaColor: function (a, c, e, b) {
              return CKEDITOR.tools.array.map([a, c, e], function (a) {
                return Math.round(CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE - b * (CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE - a));
              });
            }, formatHexString: function (a, c, g, b) {
              a = "#" + e(a) + e(c) + e(g);void 0 !== b && (a += e(b));return a.toUpperCase();
            }, formatRgbString: function (a, c, e, b, d) {
              c = [c, e, b];void 0 !== d && c.push(d);return a + "(" + c.join(",") + ")";
            }, formatHslString: function (a, c, e, b, d) {
              return a + "(" + c + "," + e + "%," + b + "%" + (void 0 !== d ? "," + d : "") + ")";
            }, parseInput: function (a) {
              if ("string" !== typeof a) this._.isValidColor = !1;else {
                a = CKEDITOR.tools.trim(a);var c = this._.matchStringToNamedColor(a);c && (a = c);var c = this._.extractColorChannelsFromHex(a),
                    e = this._.extractColorChannelsFromRgba(a);a = this._.extractColorChannelsFromHsla(a);(a = c || e || a) ? (this._.type = a.type, this._.red = a.red, this._.green = a.green, this._.blue = a.blue, this._.alpha = a.alpha, a.type === CKEDITOR.tools.color.TYPE_HSL && (this._.hue = a.hue, this._.saturation = a.saturation, this._.lightness = a.lightness)) : this._.isValidColor = !1;
              }
            }, matchStringToNamedColor: function (a) {
              return CKEDITOR.tools.color.namedColors[a.toLowerCase()] || null;
            }, extractColorChannelsFromHex: function (a) {
              -1 === a.indexOf("#") && (a = "#" + a);a.match(CKEDITOR.tools.color.hex3CharsRegExp) && (a = this._.hex3ToHex6(a));a.match(CKEDITOR.tools.color.hex4CharsRegExp) && (a = this._.hex4ToHex8(a));if (!a.match(CKEDITOR.tools.color.hex6CharsRegExp) && !a.match(CKEDITOR.tools.color.hex8CharsRegExp)) return null;a = a.split("");var c = 1;a[7] && a[8] && (c = parseInt(a[7] + a[8], 16), c /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE, c = Number(c.toFixed(1)));return { type: CKEDITOR.tools.color.TYPE_RGB,
                red: parseInt(a[1] + a[2], 16), green: parseInt(a[3] + a[4], 16), blue: parseInt(a[5] + a[6], 16), alpha: c };
            }, extractColorChannelsFromRgba: function (a) {
              var e = this._.extractColorChannelsByPattern(a, CKEDITOR.tools.color.rgbRegExp);if (!e || 3 > e.length || 4 < e.length) return null;var g = 4 === e.length;a = c(e[0], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);var b = c(e[1], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),
                  d = c(e[2], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),
                  f = 1;g && (f = h(e[3], CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE));e = { type: CKEDITOR.tools.color.TYPE_RGB, red: a, green: b, blue: d, alpha: f };return this._.areColorChannelsValid(a, b, d, f) ? e : null;
            }, extractColorChannelsFromHsla: function (a) {
              var e = this._.extractColorChannelsByPattern(a, CKEDITOR.tools.color.hslRegExp);if (!e || 3 > e.length || 4 < e.length) return null;var g = 4 === e.length,
                  b = c(e[0], CKEDITOR.tools.color.MAX_HUE_CHANNEL_VALUE),
                  d = h(e[1], CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),
                  f = h(e[2], CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),
                  n = 1;a = this._.hslToRgb(b, d, f);g && (n = h(e[3], CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE));a.push(n);e = { type: CKEDITOR.tools.color.TYPE_HSL, red: a[0], green: a[1], blue: a[2], alpha: a[3], hue: b, saturation: Math.round(100 * d), lightness: Math.round(100 * f) };return this._.areColorChannelsValid(a[0], a[1], a[2], a[3]) ? e : null;
            }, hex3ToHex6: function (a) {
              a = a.split("");return "#" + a[1] + a[1] + a[2] + a[2] + a[3] + a[3];
            }, hex4ToHex8: function (a) {
              return this._.hex3ToHex6(a.substr(0, 4)) + CKEDITOR.tools.repeat(a[4], 2);
            }, extractColorChannelsByPattern: function (a, c) {
              var e = a.match(c);if (!e) return null;var b = -1 === e[1].indexOf(",") ? /\s/ : ",",
                  b = e[1].split(b),
                  b = CKEDITOR.tools.array.reduce(b, function (a, b) {
                var c = CKEDITOR.tools.trim(b);return 0 === c.length ? a : a.concat([c]);
              }, []);e[2] && (e = CKEDITOR.tools.trim(e[2].replace(/[\/,]/, "")), b.push(e));return b;
            }, areColorChannelsValid: function (c, e, g, b) {
              return a(c, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && a(e, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && a(g, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && a(b, 0, CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE);
            },
            hslToRgb: function (a, c, e) {
              var b = function (b) {
                var f = (b + a / 30) % 12;b = c * Math.min(e, 1 - e);f = Math.min(f - 3, 9 - f, 1);f = Math.max(-1, f);return Math.round((e - b * f) * CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);
              };return [b(0), b(8), b(4)];
            }, rgbToHsl: function (a, c, e) {
              a /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;c /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;var b = e / CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE,
                  d = Math.max(a, c, b),
                  f = Math.min(a, c, b);e = d - f;var g = 0;switch (d) {case a:
                  g = (c - b) / e % 6;break;case c:
                  g = (b - a) / e + 2;break;case b:
                  g = (a - c) / e + 4;}a = 0 === e ? 0 : 60 * g;c = (d + f) / 2;d = 0;1 !== c && 0 !== c && (d = e / (1 - Math.abs(2 * c - 1)));a = Math.round(a);d = Math.round(100 * d);c = Math.round(100 * c);return [a, d, c];
            } }, statics: { TYPE_RGB: 1, TYPE_HSL: 2, MAX_RGB_CHANNEL_VALUE: 255, MAX_ALPHA_CHANNEL_VALUE: 1, MAX_HUE_CHANNEL_VALUE: 360, MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE: 1, hex3CharsRegExp: /#([0-9a-f]{3}$)/gim, hex4CharsRegExp: /#([0-9a-f]{4}$)/gim, hex6CharsRegExp: /#([0-9a-f]{6}$)/gim, hex8CharsRegExp: /#([0-9a-f]{8}$)/gim, rgbRegExp: /rgba?\(([.,\d\s%]*)(\s*\/\s*[\d.%]+)?\s*\)/i,
            hslRegExp: /hsla?\((\s*(?:[.\d]+(?:deg)?)(?:\s*,?\s*[.\d]+%){2})((?:(?:\s*\/\s*)|(?:\s*,\s*))[\d.]+%?)?\s*\)/i, namedColors: { aliceblue: "#F0F8FF", antiquewhite: "#FAEBD7", aqua: "#00FFFF", aquamarine: "#7FFFD4", azure: "#F0FFFF", beige: "#F5F5DC", bisque: "#FFE4C4", black: "#000000", blanchedalmond: "#FFEBCD", blue: "#0000FF", blueviolet: "#8A2BE2", brown: "#A52A2A", burlywood: "#DEB887", cadetblue: "#5F9EA0", chartreuse: "#7FFF00", chocolate: "#D2691E", coral: "#FF7F50", cornflowerblue: "#6495ED", cornsilk: "#FFF8DC", crimson: "#DC143C",
              cyan: "#00FFFF", darkblue: "#00008B", darkcyan: "#008B8B", darkgoldenrod: "#B8860B", darkgray: "#A9A9A9", darkgreen: "#006400", darkgrey: "#A9A9A9", darkkhaki: "#BDB76B", darkmagenta: "#8B008B", darkolivegreen: "#556B2F", darkorange: "#FF8C00", darkorchid: "#9932CC", darkred: "#8B0000", darksalmon: "#E9967A", darkseagreen: "#8FBC8F", darkslateblue: "#483D8B", darkslategray: "#2F4F4F", darkslategrey: "#2F4F4F", darkturquoise: "#00CED1", darkviolet: "#9400D3", deeppink: "#FF1493", deepskyblue: "#00BFFF", dimgray: "#696969", dimgrey: "#696969", dodgerblue: "#1E90FF",
              firebrick: "#B22222", floralwhite: "#FFFAF0", forestgreen: "#228B22", fuchsia: "#FF00FF", gainsboro: "#DCDCDC", ghostwhite: "#F8F8FF", gold: "#FFD700", goldenrod: "#DAA520", gray: "#808080", green: "#008000", greenyellow: "#ADFF2F", grey: "#808080", honeydew: "#F0FFF0", hotpink: "#FF69B4", indianred: "#CD5C5C", indigo: "#4B0082", ivory: "#FFFFF0", khaki: "#F0E68C", lavender: "#E6E6FA", lavenderblush: "#FFF0F5", lawngreen: "#7CFC00", lemonchiffon: "#FFFACD", lightblue: "#ADD8E6", lightcoral: "#F08080", lightcyan: "#E0FFFF", lightgoldenrodyellow: "#FAFAD2",
              lightgray: "#D3D3D3", lightgreen: "#90EE90", lightgrey: "#D3D3D3", lightpink: "#FFB6C1", lightsalmon: "#FFA07A", lightseagreen: "#20B2AA", lightskyblue: "#87CEFA", lightslategray: "#778899", lightslategrey: "#778899", lightsteelblue: "#B0C4DE", lightyellow: "#FFFFE0", lime: "#00FF00", limegreen: "#32CD32", linen: "#FAF0E6", magenta: "#FF00FF", maroon: "#800000", mediumaquamarine: "#66CDAA", mediumblue: "#0000CD", mediumorchid: "#BA55D3", mediumpurple: "#9370DB", mediumseagreen: "#3CB371", mediumslateblue: "#7B68EE", mediumspringgreen: "#00FA9A",
              mediumturquoise: "#48D1CC", mediumvioletred: "#C71585", midnightblue: "#191970", mintcream: "#F5FFFA", mistyrose: "#FFE4E1", moccasin: "#FFE4B5", navajowhite: "#FFDEAD", navy: "#000080", oldlace: "#FDF5E6", olive: "#808000", olivedrab: "#6B8E23", orange: "#FFA500", orangered: "#FF4500", orchid: "#DA70D6", palegoldenrod: "#EEE8AA", palegreen: "#98FB98", paleturquoise: "#AFEEEE", palevioletred: "#DB7093", papayawhip: "#FFEFD5", peachpuff: "#FFDAB9", peru: "#CD853F", pink: "#FFC0CB", plum: "#DDA0DD", powderblue: "#B0E0E6", purple: "#800080", rebeccapurple: "#663399",
              red: "#FF0000", rosybrown: "#BC8F8F", royalblue: "#4169E1", saddlebrown: "#8B4513", salmon: "#FA8072", sandybrown: "#F4A460", seagreen: "#2E8B57", seashell: "#FFF5EE", sienna: "#A0522D", silver: "#C0C0C0", skyblue: "#87CEEB", slateblue: "#6A5ACD", slategray: "#708090", slategrey: "#708090", snow: "#FFFAFA", springgreen: "#00FF7F", steelblue: "#4682B4", tan: "#D2B48C", teal: "#008080", thistle: "#D8BFD8", tomato: "#FF6347", turquoise: "#40E0D0", violet: "#EE82EE", windowtext: "windowtext", wheat: "#F5DEB3", white: "#FFFFFF", whitesmoke: "#F5F5F5", yellow: "#FFFF00",
              yellowgreen: "#9ACD32" } } });CKEDITOR.tools.style.parse._colors = CKEDITOR.tools.color.namedColors;
      }(), CKEDITOR.dom.comment = function (c, h) {
        "string" == typeof c && (c = (h ? h.$ : document).createComment(c));CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.comment.prototype = new CKEDITOR.dom.node(), CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype, { type: CKEDITOR.NODE_COMMENT, getOuterHtml: function () {
          return "\x3c!--" + this.$.nodeValue + "--\x3e";
        } }), "use strict", function () {
        var c = {},
            h = {},
            g;for (g in CKEDITOR.dtd.$blockLimit) g in CKEDITOR.dtd.$list || (c[g] = 1);for (g in CKEDITOR.dtd.$block) g in CKEDITOR.dtd.$blockLimit || g in CKEDITOR.dtd.$empty || (h[g] = 1);CKEDITOR.dom.elementPath = function (a, e) {
          var g = null,
              k = null,
              m = [],
              b = a,
              d;e = e || a.getDocument().getBody();b || (b = e);do if (b.type == CKEDITOR.NODE_ELEMENT) {
            m.push(b);if (!this.lastElement && (this.lastElement = b, b.is(CKEDITOR.dtd.$object) || "false" == b.getAttribute("contenteditable"))) continue;if (b.equals(e)) break;if (!k && (d = b.getName(), "true" == b.getAttribute("contenteditable") ? k = b : !g && h[d] && (g = b), c[d])) {
              if (d = !g && "div" == d) {
                a: {
                  d = b.getChildren();for (var f = 0, n = d.count(); f < n; f++) {
                    var w = d.getItem(f);if (w.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$block[w.getName()]) {
                      d = !0;break a;
                    }
                  }d = !1;
                }d = !d;
              }d ? g = b : k = b;
            }
          } while (b = b.getParent());k || (k = e);this.block = g;this.blockLimit = k;this.root = e;this.elements = m;
        };
      }(), CKEDITOR.dom.elementPath.prototype = { compare: function (c) {
          var h = this.elements;c = c && c.elements;if (!c || h.length != c.length) return !1;for (var g = 0; g < h.length; g++) if (!h[g].equals(c[g])) return !1;return !0;
        }, contains: function (c, h, g) {
          var a = 0,
              e;"string" == typeof c && (e = function (a) {
            return a.getName() == c;
          });c instanceof CKEDITOR.dom.element ? e = function (a) {
            return a.equals(c);
          } : CKEDITOR.tools.isArray(c) ? e = function (a) {
            return -1 < CKEDITOR.tools.indexOf(c, a.getName());
          } : "function" == typeof c ? e = c : "object" == typeof c && (e = function (a) {
            return a.getName() in c;
          });var l = this.elements,
              k = l.length;h && (g ? a += 1 : --k);g && (l = Array.prototype.slice.call(l, 0), l.reverse());for (; a < k; a++) if (e(l[a])) return l[a];return null;
        }, isContextFor: function (c) {
          var h;return c in CKEDITOR.dtd.$block ? (h = this.contains(CKEDITOR.dtd.$intermediate) || this.root.equals(this.block) && this.block || this.blockLimit, !!h.getDtd()[c]) : !0;
        }, direction: function () {
          return (this.block || this.blockLimit || this.root).getDirection(1);
        } }, CKEDITOR.dom.text = function (c, h) {
        "string" == typeof c && (c = (h ? h.$ : document).createTextNode(c));this.$ = c;
      }, CKEDITOR.dom.text.prototype = new CKEDITOR.dom.node(), CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype, { type: CKEDITOR.NODE_TEXT, getLength: function () {
          return this.$.nodeValue.length;
        },
        getText: function () {
          return this.$.nodeValue;
        }, setText: function (c) {
          this.$.nodeValue = c;
        }, isEmpty: function (c) {
          var h = this.getText();c && (h = CKEDITOR.tools.trim(h));return !h || h === CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE;
        }, split: function (c) {
          var h = this.$.parentNode,
              g = h.childNodes.length,
              a = this.getLength(),
              e = this.getDocument(),
              l = new CKEDITOR.dom.text(this.$.splitText(c), e);h.childNodes.length == g && (c >= a ? (l = e.createText(""), l.insertAfter(this)) : (c = e.createText(""), c.insertAfter(l), c.remove()));return l;
        }, substring: function (c, h) {
          return "number" != typeof h ? this.$.nodeValue.substr(c) : this.$.nodeValue.substring(c, h);
        } }), function () {
        function c(c, a, e) {
          var h = c.serializable,
              k = a[e ? "endContainer" : "startContainer"],
              m = e ? "endOffset" : "startOffset",
              b = h ? a.document.getById(c.startNode) : c.startNode;c = h ? a.document.getById(c.endNode) : c.endNode;k.equals(b.getPrevious()) ? (a.startOffset = a.startOffset - k.getLength() - c.getPrevious().getLength(), k = c.getNext()) : k.equals(c.getPrevious()) && (a.startOffset -= k.getLength(), k = c.getNext());k.equals(b.getParent()) && a[m]++;k.equals(c.getParent()) && a[m]++;a[e ? "endContainer" : "startContainer"] = k;return a;
        }CKEDITOR.dom.rangeList = function (c) {
          if (c instanceof CKEDITOR.dom.rangeList) return c;c ? c instanceof CKEDITOR.dom.range && (c = [c]) : c = [];return CKEDITOR.tools.extend(c, h);
        };var h = { createIterator: function () {
            var c = this,
                a = CKEDITOR.dom.walker.bookmark(),
                e = [],
                h;return { getNextRange: function (k) {
                h = void 0 === h ? 0 : h + 1;var m = c[h];if (m && 1 < c.length) {
                  if (!h) for (var b = c.length - 1; 0 <= b; b--) e.unshift(c[b].createBookmark(!0));if (k) for (var d = 0; c[h + d + 1];) {
                    var f = m.document;k = 0;b = f.getById(e[d].endNode);for (f = f.getById(e[d + 1].startNode);;) {
                      b = b.getNextSourceNode(!1);if (f.equals(b)) k = 1;else if (a(b) || b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()) continue;break;
                    }if (!k) break;d++;
                  }for (m.moveToBookmark(e.shift()); d--;) b = c[++h], b.moveToBookmark(e.shift()), m.setEnd(b.endContainer, b.endOffset);
                }return m;
              } };
          }, createBookmarks: function (g) {
            for (var a = [], e, h = 0; h < this.length; h++) {
              a.push(e = this[h].createBookmark(g, !0));for (var k = h + 1; k < this.length; k++) this[k] = c(e, this[k]), this[k] = c(e, this[k], !0);
            }return a;
          }, createBookmarks2: function (c) {
            for (var a = [], e = 0; e < this.length; e++) a.push(this[e].createBookmark2(c));return a;
          }, moveToBookmarks: function (c) {
            for (var a = 0; a < this.length; a++) this[a].moveToBookmark(c[a]);
          } };
      }(), function () {
        function c() {
          return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1] || "skins/" + CKEDITOR.skinName.split(",")[0] + "/");
        }function h(a) {
          var b = CKEDITOR.skin["ua_" + a],
              e = CKEDITOR.env;if (b) for (var b = b.split(",").sort(function (a, b) {
            return a > b ? -1 : 1;
          }), g = 0, h; g < b.length; g++) if (h = b[g], e.ie && (h.replace(/^ie/, "") == e.version || e.quirks && "iequirks" == h) && (h = "ie"), e[h]) {
            a += "_" + b[g];break;
          }return CKEDITOR.getUrl(c() + a + ".css");
        }function g(a, b) {
          l[a] || (CKEDITOR.document.appendStyleSheet(h(a)), l[a] = 1);b && b();
        }function a(a) {
          var b = a.getById(k);b || (b = a.getHead().append("style"), b.setAttribute("id", k), b.setAttribute("type", "text/css"));return b;
        }function e(a, b, c) {
          var e, g, h;if (CKEDITOR.env.webkit) for (b = b.split("}").slice(0, -1), g = 0; g < b.length; g++) b[g] = b[g].split("{");for (var k = 0; k < a.length; k++) if (CKEDITOR.env.webkit) for (g = 0; g < b.length; g++) {
            h = b[g][1];for (e = 0; e < c.length; e++) h = h.replace(c[e][0], c[e][1]);a[k].$.sheet.addRule(b[g][0], h);
          } else {
            h = b;for (e = 0; e < c.length; e++) h = h.replace(c[e][0], c[e][1]);CKEDITOR.env.ie && 11 > CKEDITOR.env.version ? a[k].$.styleSheet.cssText += h : a[k].$.innerHTML += h;
          }
        }var l = {};CKEDITOR.skin = { path: c, loadPart: function (a, b) {
            CKEDITOR.skin.name != CKEDITOR.skinName.split(",")[0] ? CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c() + "skin.js"), function () {
              g(a, b);
            }) : g(a, b);
          },
          getPath: function (a) {
            return CKEDITOR.getUrl(h(a));
          }, icons: {}, addIcon: function (a, b, c, e) {
            a = a.toLowerCase();this.icons[a] || (this.icons[a] = { path: b, offset: c || 0, bgsize: e || "16px" });
          }, getIconStyle: function (a, b, c, e, g) {
            var h;a && (a = a.toLowerCase(), b && (h = this.icons[a + "-rtl"]), h || (h = this.icons[a]));a = c || h && h.path || "";e = e || h && h.offset;g = g || h && h.bgsize || "16px";a && (a = a.replace(/'/g, "\\'"));return a && "background-image:url('" + CKEDITOR.getUrl(a) + "');background-position:0 " + e + "px;background-size:" + g + ";";
          } };CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { getUiColor: function () {
            return this.uiColor;
          }, setUiColor: function (d) {
            var f = a(CKEDITOR.document);return (this.setUiColor = function (a) {
              this.uiColor = a;var d = CKEDITOR.skin.chameleon,
                  c = "",
                  g = "";"function" == typeof d && (c = d(this, "editor"), g = d(this, "panel"));a = [[b, a]];e([f], c, a);e(m, g, a);
            }).call(this, d);
          } });var k = "cke_ui_color",
            m = [],
            b = /\$color/g;CKEDITOR.on("instanceLoaded", function (d) {
          if (!CKEDITOR.env.ie || !CKEDITOR.env.quirks) {
            var f = d.editor;d = function (d) {
              d = (d.data[0] || d.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();
              if (!d.getById("cke_ui_color")) {
                var c = a(d);m.push(c);f.on("destroy", function () {
                  m = CKEDITOR.tools.array.filter(m, function (a) {
                    return c !== a;
                  });
                });(d = f.getUiColor()) && e([c], CKEDITOR.skin.chameleon(f, "panel"), [[b, d]]);
              }
            };f.on("panelShow", d);f.on("menuShow", d);f.config.uiColor && f.setUiColor(f.config.uiColor);
          }
        });
      }(), function () {
        var c = CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e', CKEDITOR.document);
        c.appendTo(CKEDITOR.document.getHead());try {
          var h = c.getComputedStyle("border-top-color"),
              g = c.getComputedStyle("border-right-color");CKEDITOR.env.hc = !(!h || h != g);
        } catch (a) {
          CKEDITOR.env.hc = !1;
        }c.remove();CKEDITOR.env.hc && (CKEDITOR.env.cssClass += " cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status = "loaded";CKEDITOR.fireOnce("loaded");if (c = CKEDITOR._.pending) for (delete CKEDITOR._.pending, h = 0; h < c.length; h++) CKEDITOR.editor.prototype.constructor.apply(c[h][0], c[h][1]), CKEDITOR.add(c[h][0]);
      }(), CKEDITOR.skin.name = "moono-lexicon", CKEDITOR.skin.ua_editor = "ie,iequirks,ie8,gecko", CKEDITOR.skin.ua_dialog = "ie,iequirks,ie8", CKEDITOR.skin.chameleon = function () {
        var c = function () {
          return function (c, a) {
            for (var e = c.match(/[^#]./g), h = 0; 3 > h; h++) {
              var k = h,
                  m;m = parseInt(e[h], 16);m = ("0" + (0 > a ? 0 | m * (1 + a) : 0 | m + (255 - m) * a).toString(16)).slice(-2);e[k] = m;
            }return "#" + e.join("");
          };
        }(),
            h = { editor: new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] "),
          panel: new CKEDITOR.template(".cke_panel_grouptitle [background-color:{lightBackground};border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active [background-color:{menubuttonHover};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ") };
        return function (g, a) {
          var e = c(g.uiColor, .4),
              e = { id: "." + g.id, defaultBorder: c(e, -.2), toolbarElementsBorder: c(e, -.25), defaultBackground: e, lightBackground: c(e, .8), darkBackground: c(e, -.15), ckeButtonOn: c(e, .4), ckeResizer: c(e, -.4), ckeColorauto: c(e, .8), dialogBody: c(e, .7), dialogTab: c(e, .65), dialogTabSelected: "#FFF", dialogTabSelectedBorder: "#FFF", elementsPathColor: c(e, -.6), menubuttonHover: c(e, .1), menubuttonIcon: c(e, .5), menubuttonIconHover: c(e, .3) };return h[a].output(e).replace(/\[/g, "{").replace(/\]/g, "}");
        };
      }(), CKEDITOR.plugins.add("dialogui", { onLoad: function () {
          var c = function (a) {
            this._ || (this._ = {});this._["default"] = this._.initValue = a["default"] || "";this._.required = a.required || !1;for (var d = [this._], f = 1; f < arguments.length; f++) d.push(arguments[f]);d.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools, d);return this._;
          },
              h = { build: function (a, d, f) {
              return new CKEDITOR.ui.dialog.textInput(a, d, f);
            } },
              g = { build: function (a, d, f) {
              return new CKEDITOR.ui.dialog[d.type](a, d, f);
            } },
              a = { isChanged: function () {
              return this.getValue() != this.getInitValue();
            }, reset: function (a) {
              this.setValue(this.getInitValue(), a);
            }, setInitValue: function () {
              this._.initValue = this.getValue();
            }, resetInitValue: function () {
              this._.initValue = this._["default"];
            }, getInitValue: function () {
              return this._.initValue;
            } },
              e = CKEDITOR.tools.extend({}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onChange: function (a, d) {
              this._.domOnChangeRegistered || (a.on("load", function () {
                this.getInputElement().on("change", function () {
                  a.parts.dialog.isVisible() && this.fire("change", { value: this.getValue() });
                }, this);
              }, this), this._.domOnChangeRegistered = !0);this.on("change", d);
            } }, !0),
              l = /^on([A-Z]\w+)/,
              k = function (a) {
            for (var d in a) (l.test(d) || "title" == d || "type" == d) && delete a[d];return a;
          },
              m = function (a) {
            a = a.data.getKeystroke();a == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ? this.setDirectionMarker("ltr") : a == CKEDITOR.SHIFT + CKEDITOR.ALT + 35 && this.setDirectionMarker("rtl");
          };CKEDITOR.tools.extend(CKEDITOR.ui.dialog, { labeledElement: function (a, d, f, e) {
              if (!(4 > arguments.length)) {
                var g = c.call(this, d);g.labelId = CKEDITOR.tools.getNextId() + "_label";this._.children = [];var h = { role: d.role || "presentation" };d.includeLabel && (h["aria-labelledby"] = g.labelId);CKEDITOR.ui.dialog.uiElement.call(this, a, d, f, "div", null, h, function () {
                  var f = [],
                      c = d.required ? " cke_required" : "";"horizontal" != d.labelLayout ? f.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label' + c + '" ', ' id\x3d"' + g.labelId + '"', g.inputId ? ' for\x3d"' + g.inputId + '"' : "", (d.labelStyle ? ' style\x3d"' + d.labelStyle + '"' : "") + "\x3e", d.required ? d.label + '\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e' : d.label, "\x3c/label\x3e", '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', d.controlStyle ? ' style\x3d"' + d.controlStyle + '"' : "", ' role\x3d"presentation"\x3e', e.call(this, a, d), "\x3c/div\x3e") : (c = { type: "hbox", widths: d.widths, padding: 0, children: [{ type: "html", html: '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + c + '" id\x3d"' + g.labelId + '" for\x3d"' + g.inputId + '"' + (d.labelStyle ? ' style\x3d"' + d.labelStyle + '"' : "") + "\x3e" + CKEDITOR.tools.htmlEncode(d.label) + "\x3c/label\x3e" }, { type: "html", html: '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' + (d.controlStyle ? ' style\x3d"' + d.controlStyle + '"' : "") + "\x3e" + e.call(this, a, d) + "\x3c/span\x3e" }] }, CKEDITOR.dialog._.uiElementBuilders.hbox.build(a, c, f));return f.join("");
                });
              }
            }, textInput: function (a, d, f) {
              if (!(3 > arguments.length)) {
                c.call(this, d);var e = this._.inputId = CKEDITOR.tools.getNextId() + "_textInput",
                    g = { "class": "cke_dialog_ui_input_" + d.type, id: e, type: d.type };d.validate && (this.validate = d.validate);d.maxLength && (g.maxlength = d.maxLength);d.size && (g.size = d.size);d.inputStyle && (g.style = d.inputStyle);var h = this,
                    k = !1;a.on("load", function () {
                  h.getInputElement().on("keydown", function (a) {
                    13 == a.data.getKeystroke() && (k = !0);
                  });h.getInputElement().on("keyup", function (d) {
                    13 == d.data.getKeystroke() && k && (a.getButton("ok") && setTimeout(function () {
                      a.getButton("ok").click();
                    }, 0), k = !1);h.bidi && m.call(h, d);
                  }, null, null, 1E3);
                });CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  var a = ['\x3cdiv class\x3d"cke_dialog_ui_input_', d.type, '" role\x3d"presentation"'];d.width && a.push('style\x3d"width:' + d.width + '" ');a.push("\x3e\x3cinput ");
                  g["aria-labelledby"] = this._.labelId;this._.required && (g["aria-required"] = this._.required);for (var b in g) a.push(b + '\x3d"' + g[b] + '" ');a.push(" /\x3e\x3c/div\x3e");return a.join("");
                });
              }
            }, textarea: function (a, d, f) {
              if (!(3 > arguments.length)) {
                c.call(this, d);var e = this,
                    g = this._.inputId = CKEDITOR.tools.getNextId() + "_textarea",
                    h = {};d.validate && (this.validate = d.validate);h.rows = d.rows || 5;h.cols = d.cols || 20;h["class"] = "cke_dialog_ui_input_textarea " + (d["class"] || "");"undefined" != typeof d.inputStyle && (h.style = d.inputStyle);
                d.dir && (h.dir = d.dir);if (e.bidi) a.on("load", function () {
                  e.getInputElement().on("keyup", m);
                }, e);CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  h["aria-labelledby"] = this._.labelId;this._.required && (h["aria-required"] = this._.required);var a = ['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"', g, '" '],
                      b;for (b in h) a.push(b + '\x3d"' + CKEDITOR.tools.htmlEncode(h[b]) + '" ');a.push("\x3e", CKEDITOR.tools.htmlEncode(e._["default"]), "\x3c/textarea\x3e\x3c/div\x3e");
                  return a.join("");
                });
              }
            }, checkbox: function (a, d, f) {
              if (!(3 > arguments.length)) {
                var e = c.call(this, d, { "default": !!d["default"] });d.validate && (this.validate = d.validate);CKEDITOR.ui.dialog.uiElement.call(this, a, d, f, "span", null, null, function () {
                  var f = CKEDITOR.tools.extend({}, d, { id: d.id ? d.id + "_checkbox" : CKEDITOR.tools.getNextId() + "_checkbox" }, !0),
                      c = [],
                      g = CKEDITOR.tools.getNextId() + "_label",
                      h = { "class": "cke_dialog_ui_checkbox_input", type: "checkbox", "aria-labelledby": g };k(f);d["default"] && (h.checked = "checked");"undefined" != typeof f.inputStyle && (f.style = f.inputStyle);e.checkbox = new CKEDITOR.ui.dialog.uiElement(a, f, c, "input", null, h);c.push(' \x3clabel id\x3d"', g, '" for\x3d"', h.id, '"' + (d.labelStyle ? ' style\x3d"' + d.labelStyle + '"' : "") + "\x3e", CKEDITOR.tools.htmlEncode(d.label), "\x3c/label\x3e");return c.join("");
                });
              }
            }, radio: function (a, d, f) {
              if (!(3 > arguments.length)) {
                c.call(this, d);this._["default"] || (this._["default"] = this._.initValue = d.items[0][1]);d.validate && (this.validate = d.validate);var e = [],
                    g = this;d.role = "radiogroup";
                d.includeLabel = !0;CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  for (var f = [], c = [], h = (d.id ? d.id : CKEDITOR.tools.getNextId()) + "_radio", l = 0; l < d.items.length; l++) {
                    var m = d.items[l],
                        p = void 0 !== m[2] ? m[2] : m[0],
                        x = void 0 !== m[1] ? m[1] : m[0],
                        v = CKEDITOR.tools.getNextId() + "_radio_input",
                        q = v + "_label",
                        v = CKEDITOR.tools.extend({}, d, { id: v, title: null, type: null }, !0),
                        p = CKEDITOR.tools.extend({}, v, { title: p }, !0),
                        y = { type: "radio", "class": "cke_dialog_ui_radio_input", name: h, value: x, "aria-labelledby": q },
                        A = [];g._["default"] == x && (y.checked = "checked");k(v);k(p);"undefined" != typeof v.inputStyle && (v.style = v.inputStyle);x = new CKEDITOR.ui.dialog.uiElement(a, v, A, "input", null, y);x.on("focus", function () {
                      g.click();
                    });e.push(x);A.push(" ");new CKEDITOR.ui.dialog.uiElement(a, p, A, "label", null, { id: q, "for": y.id }, m[0]);f.push(A.join(""));
                  }new CKEDITOR.ui.dialog.hbox(a, e, f, c);return c.join("");
                });this._.children = e;
              }
            }, button: function (a, d, f) {
              if (arguments.length) {
                "function" == typeof d && (d = d(a.getParentEditor()));c.call(this, d, { disabled: d.disabled || !1 });CKEDITOR.event.implementOn(this);var e = this;a.on("load", function () {
                  var a = this.getElement();(function () {
                    a.on("click", function (a) {
                      e.click();a.data.preventDefault();
                    });a.on("keydown", function (a) {
                      a.data.getKeystroke() in { 32: 1 } && (e.click(), a.data.preventDefault());
                    });
                  })();a.unselectable();
                }, this);var g = CKEDITOR.tools.extend({}, d);delete g.style;var h = CKEDITOR.tools.getNextId() + "_label";CKEDITOR.ui.dialog.uiElement.call(this, a, g, f, "a", null, { style: d.style, href: "javascript:void(0)", title: d.label, hidefocus: "true",
                  "class": d["class"], role: "button", "aria-labelledby": h }, '\x3cspan id\x3d"' + h + '" class\x3d"cke_dialog_ui_button"\x3e' + CKEDITOR.tools.htmlEncode(d.label) + "\x3c/span\x3e");
              }
            }, select: function (a, d, f) {
              if (!(3 > arguments.length)) {
                var e = c.call(this, d);d.validate && (this.validate = d.validate);e.inputId = CKEDITOR.tools.getNextId() + "_select";CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  var f = CKEDITOR.tools.extend({}, d, { id: d.id ? d.id + "_select" : CKEDITOR.tools.getNextId() + "_select" }, !0),
                      c = [],
                      g = [],
                      h = { id: e.inputId,
                    "class": "cke_dialog_ui_input_select", "aria-labelledby": this._.labelId };c.push('\x3cdiv class\x3d"cke_dialog_ui_input_', d.type, '" role\x3d"presentation"');d.width && c.push('style\x3d"width:' + d.width + '" ');c.push("\x3e");void 0 !== d.size && (h.size = d.size);void 0 !== d.multiple && (h.multiple = d.multiple);k(f);for (var l = 0, m; l < d.items.length && (m = d.items[l]); l++) g.push('\x3coption value\x3d"', CKEDITOR.tools.htmlEncode(void 0 !== m[1] ? m[1] : m[0]).replace(/"/g, "\x26quot;"), '" /\x3e ', CKEDITOR.tools.htmlEncode(m[0]));
                  "undefined" != typeof f.inputStyle && (f.style = f.inputStyle);e.select = new CKEDITOR.ui.dialog.uiElement(a, f, c, "select", null, h, g.join(""));c.push("\x3c/div\x3e");return c.join("");
                });
              }
            }, file: function (a, d, f) {
              if (!(3 > arguments.length)) {
                void 0 === d["default"] && (d["default"] = "");var e = CKEDITOR.tools.extend(c.call(this, d), { definition: d, buttons: [] });d.validate && (this.validate = d.validate);a.on("load", function () {
                  CKEDITOR.document.getById(e.frameId).getParent().addClass("cke_dialog_ui_input_file");
                });CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  e.frameId = CKEDITOR.tools.getNextId() + "_fileInput";var a = ['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', e.frameId, '" title\x3d"', d.label, '" src\x3d"javascript:void('];a.push(CKEDITOR.env.ie ? "(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "})()" : "0");a.push(')"\x3e\x3c/iframe\x3e');return a.join("");
                });
              }
            }, fileButton: function (a, d, f) {
              var e = this;if (!(3 > arguments.length)) {
                c.call(this, d);d.validate && (this.validate = d.validate);var g = CKEDITOR.tools.extend({}, d),
                    h = g.onClick;g.className = (g.className ? g.className + " " : "") + "cke_dialog_ui_button";g.onClick = function (f) {
                  var c = d["for"];f = h ? h.call(this, f) : !1;!1 !== f && ("xhr" !== f && a.getContentElement(c[0], c[1]).submit(), this.disable());
                };a.on("load", function () {
                  a.getContentElement(d["for"][0], d["for"][1])._.buttons.push(e);
                });CKEDITOR.ui.dialog.button.call(this, a, g, f);
              }
            }, html: function () {
              var a = /^\s*<[\w:]+\s+([^>]*)?>/,
                  d = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,
                  f = /\/$/;return function (c, e, g) {
                if (!(3 > arguments.length)) {
                  var h = [],
                      k = e.html;"\x3c" != k.charAt(0) && (k = "\x3cspan\x3e" + k + "\x3c/span\x3e");var l = e.focus;if (l) {
                    var m = this.focus;this.focus = function () {
                      ("function" == typeof l ? l : m).call(this);this.fire("focus");
                    };e.isFocusable && (this.isFocusable = this.isFocusable);this.keyboardFocusable = !0;
                  }CKEDITOR.ui.dialog.uiElement.call(this, c, e, h, "span", null, null, "");h = h.join("").match(a);k = k.match(d) || ["", "", ""];f.test(k[1]) && (k[1] = k[1].slice(0, -1), k[2] = "/" + k[2]);g.push([k[1], " ", h[1] || "", k[2]].join(""));
                }
              };
            }(), fieldset: function (a, d, f, c, e) {
              var g = e.label;this._ = { children: d };CKEDITOR.ui.dialog.uiElement.call(this, a, e, c, "fieldset", null, null, function () {
                var a = [];g && a.push("\x3clegend" + (e.labelStyle ? ' style\x3d"' + e.labelStyle + '"' : "") + "\x3e" + g + "\x3c/legend\x3e");for (var b = 0; b < f.length; b++) a.push(f[b]);return a.join("");
              });
            } }, !0);CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement();CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { setLabel: function (a) {
              var d = CKEDITOR.document.getById(this._.labelId);1 > d.getChildCount() ? new CKEDITOR.dom.text(a, CKEDITOR.document).appendTo(d) : d.getChild(0).$.nodeValue = a;return this;
            }, getLabel: function () {
              var a = CKEDITOR.document.getById(this._.labelId);return !a || 1 > a.getChildCount() ? "" : a.getChild(0).getText();
            }, eventProcessors: e }, !0);CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { click: function () {
              return this._.disabled ? !1 : this.fire("click", { dialog: this._.dialog });
            },
            enable: function () {
              this._.disabled = !1;var a = this.getElement();a && a.removeClass("cke_disabled");
            }, disable: function () {
              this._.disabled = !0;this.getElement().addClass("cke_disabled");
            }, isVisible: function () {
              return this.getElement().getFirst().isVisible();
            }, isEnabled: function () {
              return !this._.disabled;
            }, eventProcessors: CKEDITOR.tools.extend({}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onClick: function (a, d) {
                this.on("click", function () {
                  d.apply(this, arguments);
                });
              } }, !0), accessKeyUp: function () {
              this.click();
            },
            accessKeyDown: function () {
              this.focus();
            }, keyboardFocusable: !0 }, !0);CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(), { getInputElement: function () {
              return CKEDITOR.document.getById(this._.inputId);
            }, focus: function () {
              var a = this.selectParentTab();setTimeout(function () {
                var d = a.getInputElement();d && d.$.focus();
              }, 0);
            }, select: function () {
              var a = this.selectParentTab();setTimeout(function () {
                var d = a.getInputElement();d && (d.$.focus(), d.$.select());
              }, 0);
            }, accessKeyUp: function () {
              this.select();
            },
            setValue: function (a) {
              if (this.bidi) {
                var d = a && a.charAt(0);(d = "‪" == d ? "ltr" : "‫" == d ? "rtl" : null) && (a = a.slice(1));this.setDirectionMarker(d);
              }a || (a = "");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this, arguments);
            }, getValue: function () {
              var a = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if (this.bidi && a) {
                var d = this.getDirectionMarker();d && (a = ("ltr" == d ? "‪" : "‫") + a);
              }return a;
            }, setDirectionMarker: function (a) {
              var d = this.getInputElement();a ? d.setAttributes({ dir: a, "data-cke-dir-marker": a }) : this.getDirectionMarker() && d.removeAttributes(["dir", "data-cke-dir-marker"]);
            }, getDirectionMarker: function () {
              return this.getInputElement().data("cke-dir-marker");
            }, keyboardFocusable: !0 }, a, !0);CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput();CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(), { getInputElement: function () {
              return this._.select.getElement();
            }, add: function (a, d, f) {
              var c = new CKEDITOR.dom.element("option", this.getDialog().getParentEditor().document),
                  e = this.getInputElement().$;c.$.text = a;c.$.value = void 0 === d || null === d ? a : d;void 0 === f || null === f ? CKEDITOR.env.ie ? e.add(c.$) : e.add(c.$, null) : e.add(c.$, f);return this;
            }, remove: function (a) {
              this.getInputElement().$.remove(a);return this;
            }, clear: function () {
              for (var a = this.getInputElement().$; 0 < a.length;) a.remove(0);return this;
            }, keyboardFocusable: !0 }, a, !0);CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { getInputElement: function () {
              return this._.checkbox.getElement();
            },
            setValue: function (a, d) {
              this.getInputElement().$.checked = a;!d && this.fire("change", { value: a });return this;
            }, getValue: function () {
              return this.getInputElement().$.checked;
            }, accessKeyUp: function () {
              this.setValue(!this.getValue());
            }, eventProcessors: { onChange: function (a, d) {
                if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return e.onChange.apply(this, arguments);a.on("load", function () {
                  var a = this._.checkbox.getElement();a.on("propertychange", function (b) {
                    b = b.data.$;"checked" == b.propertyName && this.fire("change", { value: a.$.checked });
                  }, this);
                }, this);this.on("change", d);return null;
              } }, keyboardFocusable: !0 }, a, !0);CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { focus: function () {
              var a = this._.children,
                  d = a[0],
                  f = this._.dialog._,
                  c = f.currentFocusIndex,
                  e = c === f.focusList.length - 1 && 0 === this.focusIndex;c > this.focusIndex && !e && (d = a[a.length - 1]);f.currentFocusIndex = this.focusIndex;for (f = 0; f < a.length; f++) if (c = a[f], c.getInputElement().$.checked) {
                d = c;break;
              }d.focus();
            }, setValue: function (a, d) {
              for (var f = this._.children, c, e = 0; e < f.length && (c = f[e]); e++) c.getElement().$.checked = c.getValue() == a;!d && this.fire("change", { value: a });return this;
            }, getValue: function () {
              for (var a = this._.children, d = 0; d < a.length; d++) if (a[d].getElement().$.checked) return a[d].getValue();return null;
            }, accessKeyUp: function () {
              var a = this._.children,
                  d;for (d = 0; d < a.length; d++) if (a[d].getElement().$.checked) {
                a[d].getElement().focus();return;
              }a[0].getElement().focus();
            }, click: function () {
              this._.dialog._.currentFocusIndex = this.focusIndex;
            }, eventProcessors: { onChange: function (a, d) {
                if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return e.onChange.apply(this, arguments);a.on("load", function () {
                  for (var a = this._.children, b = this, d = 0; d < a.length; d++) a[d].getElement().on("propertychange", function (a) {
                    a = a.data.$;"checked" == a.propertyName && this.$.checked && b.fire("change", { value: this.getAttribute("value") });
                  });
                }, this);this.on("change", d);return null;
              } }, keyboardFocusable: !0 }, a, !0);CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(), a, { getInputElement: function () {
              var a = CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0 < a.$.forms.length ? new CKEDITOR.dom.element(a.$.forms[0].elements[0]) : this.getElement();
            }, submit: function () {
              this.getInputElement().getParent().$.submit();return this;
            }, getAction: function () {
              return this.getInputElement().getParent().$.action;
            }, registerEvents: function (a) {
              var d = /^on([A-Z]\w+)/,
                  f,
                  c = function (a, b, d, f) {
                a.on("formLoaded", function () {
                  a.getInputElement().on(d, f, a);
                });
              },
                  e;for (e in a) if (f = e.match(d)) this.eventProcessors[e] ? this.eventProcessors[e].call(this, this._.dialog, a[e]) : c(this, this._.dialog, f[1].toLowerCase(), a[e]);return this;
            }, reset: function () {
              function a() {
                f.$.open();var b = "";c.size && (b = c.size - (CKEDITOR.env.ie ? 7 : 0));var m = d.frameId + "_input";f.$.write(['\x3chtml dir\x3d"' + k + '" lang\x3d"' + l + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e', '\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + k + '" lang\x3d"' + l + '" action\x3d"', CKEDITOR.tools.htmlEncode(c.action), '"\x3e\x3clabel id\x3d"', d.labelId, '" for\x3d"', m, '" style\x3d"display:none"\x3e', CKEDITOR.tools.htmlEncode(c.label), '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"', m, '" aria-labelledby\x3d"', d.labelId, '" type\x3d"file" name\x3d"', CKEDITOR.tools.htmlEncode(c.id || "cke_upload"), '" size\x3d"', CKEDITOR.tools.htmlEncode(0 < b ? b : ""), '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e', CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "", "window.parent.CKEDITOR.tools.callFunction(" + g + ");", "window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + h + ")}", "\x3c/script\x3e"].join(""));f.$.close();for (b = 0; b < e.length; b++) e[b].enable();
              }var d = this._,
                  f = CKEDITOR.document.getById(d.frameId).getFrameDocument(),
                  c = d.definition,
                  e = d.buttons,
                  g = this.formLoadedNumber,
                  h = this.formUnloadNumber,
                  k = d.dialog._.editor.lang.dir,
                  l = d.dialog._.editor.langCode;g || (g = this.formLoadedNumber = CKEDITOR.tools.addFunction(function () {
                this.fire("formLoaded");
              }, this), h = this.formUnloadNumber = CKEDITOR.tools.addFunction(function () {
                this.getInputElement().clearCustomData();
              }, this), this.getDialog()._.editor.on("destroy", function () {
                CKEDITOR.tools.removeFunction(g);CKEDITOR.tools.removeFunction(h);
              }));CKEDITOR.env.gecko ? setTimeout(a, 500) : a();
            }, getValue: function () {
              return this.getInputElement().$.value || "";
            }, setInitValue: function () {
              this._.initValue = "";
            }, eventProcessors: { onChange: function (a, d) {
                this._.domOnChangeRegistered || (this.on("formLoaded", function () {
                  this.getInputElement().on("change", function () {
                    this.fire("change", { value: this.getValue() });
                  }, this);
                }, this), this._.domOnChangeRegistered = !0);this.on("change", d);
              } }, keyboardFocusable: !0 }, !0);CKEDITOR.ui.dialog.fileButton.prototype = new CKEDITOR.ui.dialog.button();CKEDITOR.ui.dialog.fieldset.prototype = CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text", h);CKEDITOR.dialog.addUIElement("password", h);CKEDITOR.dialog.addUIElement("tel", h);CKEDITOR.dialog.addUIElement("textarea", g);CKEDITOR.dialog.addUIElement("checkbox", g);CKEDITOR.dialog.addUIElement("radio", g);CKEDITOR.dialog.addUIElement("button", g);
          CKEDITOR.dialog.addUIElement("select", g);CKEDITOR.dialog.addUIElement("file", g);CKEDITOR.dialog.addUIElement("fileButton", g);CKEDITOR.dialog.addUIElement("html", g);CKEDITOR.dialog.addUIElement("fieldset", { build: function (a, d, f) {
              for (var c = d.children, e, g = [], h = [], k = 0; k < c.length && (e = c[k]); k++) {
                var l = [];g.push(l);h.push(CKEDITOR.dialog._.uiElementBuilders[e.type].build(a, e, l));
              }return new CKEDITOR.ui.dialog[d.type](a, h, g, f, d);
            } });
        } }), CKEDITOR.DIALOG_RESIZE_NONE = 0, CKEDITOR.DIALOG_RESIZE_WIDTH = 1, CKEDITOR.DIALOG_RESIZE_HEIGHT = 2, CKEDITOR.DIALOG_RESIZE_BOTH = 3, CKEDITOR.DIALOG_STATE_IDLE = 1, CKEDITOR.DIALOG_STATE_BUSY = 2, function () {
        function c(a) {
          a._.tabBarMode = !0;a._.tabs[a._.currentTabId][0].focus();a._.currentFocusIndex = -1;
        }function h() {
          for (var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId) + a, d = b - 1; d > b - a; d--) if (this._.tabs[this._.tabIdList[d % a]][0].$.offsetHeight) return this._.tabIdList[d % a];return null;
        }function g() {
          for (var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId), d = b + 1; d < b + a; d++) if (this._.tabs[this._.tabIdList[d % a]][0].$.offsetHeight) return this._.tabIdList[d % a];return null;
        }function a(a, b) {
          for (var d = a.$.getElementsByTagName("input"), f = 0, c = d.length; f < c; f++) {
            var e = new CKEDITOR.dom.element(d[f]);"text" == e.getAttribute("type").toLowerCase() && (b ? (e.setAttribute("value", e.getCustomData("fake_value") || ""), e.removeCustomData("fake_value")) : (e.setCustomData("fake_value", e.getAttribute("value")), e.setAttribute("value", "")));
          }
        }function e(a, b) {
          var d = this.getInputElement();d && (a ? d.removeAttribute("aria-invalid") : d.setAttribute("aria-invalid", !0));a || (this.select ? this.select() : this.focus());b && alert(b);this.fire("validated", { valid: a, msg: b });
        }function l() {
          var a = this.getInputElement();a && a.removeAttribute("aria-invalid");
        }function k(a) {
          var b = CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog", K).output({ id: CKEDITOR.tools.getNextNumber(), editorId: a.id, langDir: a.lang.dir, langCode: a.langCode, editorDialogClass: "cke_editor_" + a.name.replace(/\./g, "\\.") + "_dialog", closeTitle: a.lang.common.close, hidpi: CKEDITOR.env.hidpi ? "cke_hidpi" : "" })),
              d = b.getChild([0, 0, 0, 0, 0]),
              f = d.getChild(0),
              c = d.getChild(1);a.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(d);!CKEDITOR.env.ie || CKEDITOR.env.quirks || CKEDITOR.env.edge || (a = "javascript:void(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "}())", CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"' + a + '" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(d.getParent()));f.unselectable();c.unselectable();return { element: b, parts: { dialog: b.getChild(0), title: f, close: c, tabs: d.getChild(2), contents: d.getChild([3, 0, 0, 0]), footer: d.getChild([3, 0, 1, 0]) } };
        }function m(a, b, d) {
          this.element = b;this.focusIndex = d;this.tabIndex = 0;this.isFocusable = function () {
            return !b.getAttribute("disabled") && b.isVisible();
          };this.focus = function () {
            a._.currentFocusIndex = this.focusIndex;this.element.focus();
          };b.on("keydown", function (a) {
            a.data.getKeystroke() in { 32: 1, 13: 1 } && this.fire("click");
          });b.on("focus", function () {
            this.fire("mouseover");
          });b.on("blur", function () {
            this.fire("mouseout");
          });
        }function b(a) {
          function b() {
            a.layout();
          }var d = CKEDITOR.document.getWindow();d.on("resize", b);a.on("hide", function () {
            d.removeListener("resize", b);
          });
        }function d(a, b) {
          this.dialog = a;for (var d = b.contents, c = 0, e; e = d[c]; c++) d[c] = e && new f(a, e);CKEDITOR.tools.extend(this, b);
        }function f(a, b) {
          this._ = { dialog: a };CKEDITOR.tools.extend(this, b);
        }function n(a) {
          function b(d) {
            var k = a.getSize(),
                l = a.parts.dialog.getParent().getClientSize(),
                m = d.data.$.screenX,
                n = d.data.$.screenY,
                q = m - f.x,
                p = n - f.y;f = { x: m, y: n };c.x += q;c.y += p;m = c.x + h[3] < g ? -h[3] : c.x - h[1] > l.width - k.width - g ? l.width - k.width + ("rtl" == e.lang.dir ? 0 : h[1]) : c.x;k = c.y + h[0] < g ? -h[0] : c.y - h[2] > l.height - k.height - g ? l.height - k.height + h[2] : c.y;m = Math.floor(m);k = Math.floor(k);a.move(m, k, 1);d.data.preventDefault();
          }function d() {
            CKEDITOR.document.removeListener("mousemove", b);CKEDITOR.document.removeListener("mouseup", d);if (CKEDITOR.env.ie6Compat) {
              var a = B.getChild(0).getFrameDocument();a.removeListener("mousemove", b);a.removeListener("mouseup", d);
            }
          }var f = null,
              c = null,
              e = a.getParentEditor(),
              g = e.config.dialog_magnetDistance,
              h = CKEDITOR.skin.margins || [0, 0, 0, 0];"undefined" == typeof g && (g = 20);a.parts.title.on("mousedown", function (e) {
            if (!a._.moved) {
              var g = a._.element;g.getFirst().setStyle("position", "absolute");g.removeStyle("display");a._.moved = !0;a.layout();
            }f = { x: e.data.$.screenX, y: e.data.$.screenY };CKEDITOR.document.on("mousemove", b);CKEDITOR.document.on("mouseup", d);c = a.getPosition();CKEDITOR.env.ie6Compat && (g = B.getChild(0).getFrameDocument(), g.on("mousemove", b), g.on("mouseup", d));e.data.preventDefault();
          }, a);
        }function w(a) {
          function b(d) {
            var n = "rtl" == e.lang.dir,
                q = m.width,
                p = m.height,
                v = q + (d.data.$.screenX - l.x) * (n ? -1 : 1) * (a._.moved ? 1 : 2),
                J = p + (d.data.$.screenY - l.y) * (a._.moved ? 1 : 2),
                w = a._.element.getFirst(),
                w = n && parseInt(w.getComputedStyle("right"), 10),
                t = a.getPosition();t.x = t.x || 0;t.y = t.y || 0;t.y + J > k.height && (J = k.height - t.y);(n ? w : t.x) + v > k.width && (v = k.width - (n ? w : t.x));
            J = Math.floor(J);v = Math.floor(v);if (c == CKEDITOR.DIALOG_RESIZE_WIDTH || c == CKEDITOR.DIALOG_RESIZE_BOTH) q = Math.max(f.minWidth || 0, v - g);if (c == CKEDITOR.DIALOG_RESIZE_HEIGHT || c == CKEDITOR.DIALOG_RESIZE_BOTH) p = Math.max(f.minHeight || 0, J - h);a.resize(q, p);a._.moved && z(a, a._.position.x, a._.position.y);a._.moved || a.layout();d.data.preventDefault();
          }function d() {
            CKEDITOR.document.removeListener("mouseup", d);CKEDITOR.document.removeListener("mousemove", b);n && (n.remove(), n = null);if (CKEDITOR.env.ie6Compat) {
              var a = B.getChild(0).getFrameDocument();
              a.removeListener("mouseup", d);a.removeListener("mousemove", b);
            }
          }var f = a.definition,
              c = f.resizable;if (c != CKEDITOR.DIALOG_RESIZE_NONE) {
            var e = a.getParentEditor(),
                g,
                h,
                k,
                l,
                m,
                n,
                q = CKEDITOR.tools.addFunction(function (f) {
              function c(a) {
                return a.isVisible();
              }m = a.getSize();var e = a.parts.contents,
                  q = e.$.getElementsByTagName("iframe").length,
                  p = !(CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks);q && (n = CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%; left:0; top:0;"\x3e\x3c/div\x3e'), e.append(n));h = m.height - a.parts.contents.getFirst(c).getSize("height", p);g = m.width - a.parts.contents.getFirst(c).getSize("width", 1);l = { x: f.screenX, y: f.screenY };k = CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove", b);CKEDITOR.document.on("mouseup", d);CKEDITOR.env.ie6Compat && (e = B.getChild(0).getFrameDocument(), e.on("mousemove", b), e.on("mouseup", d));f.preventDefault && f.preventDefault();
            });a.on("load", function () {
              var b = "";c == CKEDITOR.DIALOG_RESIZE_WIDTH ? b = " cke_resizer_horizontal" : c == CKEDITOR.DIALOG_RESIZE_HEIGHT && (b = " cke_resizer_vertical");b = CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer' + b + " cke_resizer_" + e.lang.dir + '" title\x3d"' + CKEDITOR.tools.htmlEncode(e.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + q + ', event )"\x3e' + ("ltr" == e.lang.dir ? "◢" : "◣") + "\x3c/div\x3e");a.parts.footer.append(b, 1);
            });e.on("destroy", function () {
              CKEDITOR.tools.removeFunction(q);
            });
          }
        }function z(a, b, d) {
          var f = a.parts.dialog.getParent().getClientSize(),
              c = a.getSize(),
              e = a._.viewportRatio,
              g = Math.max(f.width - c.width, 0),
              f = Math.max(f.height - c.height, 0);e.width = g ? b / g : e.width;e.height = f ? d / f : e.height;a._.viewportRatio = e;
        }function r(a) {
          a.data.preventDefault(1);
        }function t(a) {
          var b = a.config,
              d = CKEDITOR.skinName || a.config.skin,
              f = b.dialog_backgroundCoverColor || ("moono-lisa" == d ? "black" : "white"),
              d = b.dialog_backgroundCoverOpacity,
              c = b.baseFloatZIndex,
              b = CKEDITOR.tools.genKey(f, d, c),
              e = D[b];CKEDITOR.document.getBody().addClass("cke_dialog_open");e ? e.show() : (c = ['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ', CKEDITOR.env.ie6Compat ? "absolute" : "fixed", "; z-index: ", c, "; top: 0px; left: 0px; ", "; width: 100%; height: 100%;", CKEDITOR.env.ie6Compat ? "" : "background-color: " + f, '" class\x3d"cke_dialog_background_cover"\x3e'], CKEDITOR.env.ie6Compat && (f = "\x3chtml\x3e\x3cbody style\x3d\\'background-color:" + f + ";\\'\x3e\x3c/body\x3e\x3c/html\x3e", c.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'), c.push("void((function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.write( '" + f + "' );document.close();") + "})())"), c.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')), c.push("\x3c/div\x3e"), e = CKEDITOR.dom.element.createFromHtml(c.join("")), e.setOpacity(void 0 !== d ? d : .5), e.on("keydown", r), e.on("keypress", r), e.on("keyup", r), e.appendTo(CKEDITOR.document.getBody()), D[b] = e);a.focusManager.add(e);B = e;CKEDITOR.env.mac && CKEDITOR.env.webkit || e.focus();
        }function u(a) {
          CKEDITOR.document.getBody().removeClass("cke_dialog_open");B && (a.focusManager.remove(B), B.hide());
        }function C(a) {
          var b = a.data.$.ctrlKey || a.data.$.metaKey,
              d = a.data.$.altKey,
              f = a.data.$.shiftKey,
              c = String.fromCharCode(a.data.$.keyCode);(b = P[(b ? "CTRL+" : "") + (d ? "ALT+" : "") + (f ? "SHIFT+" : "") + c]) && b.length && (b = b[b.length - 1], b.keydown && b.keydown.call(b.uiElement, b.dialog, b.key), a.data.preventDefault());
        }function p(a) {
          var b = a.data.$.ctrlKey || a.data.$.metaKey,
              d = a.data.$.altKey,
              f = a.data.$.shiftKey,
              c = String.fromCharCode(a.data.$.keyCode);(b = P[(b ? "CTRL+" : "") + (d ? "ALT+" : "") + (f ? "SHIFT+" : "") + c]) && b.length && (b = b[b.length - 1], b.keyup && (b.keyup.call(b.uiElement, b.dialog, b.key), a.data.preventDefault()));
        }function x(a, b, d, f, c) {
          (P[d] || (P[d] = [])).push({ uiElement: a, dialog: b, key: d, keyup: c || a.accessKeyUp, keydown: f || a.accessKeyDown });
        }function v(a) {
          for (var b in P) {
            for (var d = P[b], f = d.length - 1; 0 <= f; f--) d[f].dialog != a && d[f].uiElement != a || d.splice(f, 1);0 === d.length && delete P[b];
          }
        }function q(a, b) {
          a._.accessKeyMap[b] && a.selectPage(a._.accessKeyMap[b]);
        }function y() {}var A = CKEDITOR.tools.cssLength,
            F,
            B,
            G = !1,
            E = !CKEDITOR.env.ie || CKEDITOR.env.edge,
            K = '\x3cdiv class\x3d"cke_reset_all cke_dialog_container {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" style\x3d"' + (E ? "display:flex" : "") + '" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog ' + CKEDITOR.env.cssClass + ' cke_{langDir}" style\x3d"' + (E ? "margin:auto" : "position:absolute") + '" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button close" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e';
        CKEDITOR.dialog = function (a, b) {
          function f() {
            var a = A._.focusList;a.sort(function (a, b) {
              return a.tabIndex != b.tabIndex ? b.tabIndex - a.tabIndex : a.focusIndex - b.focusIndex;
            });for (var b = a.length, d = 0; d < b; d++) a[d].focusIndex = d;
          }function m(a) {
            var b = A._.focusList;a = a || 0;if (!(1 > b.length)) {
              var d = A._.currentFocusIndex;A._.tabBarMode && 0 > a && (d = 0);try {
                b[d].getInputElement().$.blur();
              } catch (f) {}var c = d,
                  e = 1 < A._.pageCount;do {
                c += a;if (e && !A._.tabBarMode && (c == b.length || -1 == c)) {
                  A._.tabBarMode = !0;A._.tabs[A._.currentTabId][0].focus();
                  A._.currentFocusIndex = -1;return;
                }c = (c + b.length) % b.length;if (c == d) break;
              } while (a && !b[c].isFocusable());b[c].focus();"text" == b[c].type && b[c].select();
            }
          }function q(b) {
            if (A == CKEDITOR.dialog._.currentTop) {
              var d = b.data.getKeystroke(),
                  f = "rtl" == a.lang.dir;C = z = 0;if (9 == d || d == CKEDITOR.SHIFT + 9) m(d == CKEDITOR.SHIFT + 9 ? -1 : 1), C = 1;else if (d == CKEDITOR.ALT + 121 && !A._.tabBarMode && 1 < A.getPageCount()) c(A), C = 1;else if (-1 != CKEDITOR.tools.indexOf([37, 38, 39, 40], d) && A._.tabBarMode) d = -1 != CKEDITOR.tools.indexOf([f ? 39 : 37, 38], d) ? h.call(A) : g.call(A), A.selectPage(d), A._.tabs[d][0].focus(), C = 1;else if (13 != d && 32 != d || !A._.tabBarMode) {
                if (13 == d) d = b.data.getTarget(), d.is("a", "button", "select", "textarea") || d.is("input") && "button" == d.$.type || ((d = this.getButton("ok")) && CKEDITOR.tools.setTimeout(d.click, 0, d), C = 1), z = 1;else if (27 == d) (d = this.getButton("cancel")) ? CKEDITOR.tools.setTimeout(d.click, 0, d) : !1 !== this.fire("cancel", { hide: !0 }).hide && this.hide(), z = 1;else return;
              } else this.selectPage(this._.currentTabId), this._.tabBarMode = !1, this._.currentFocusIndex = -1, m(1), C = 1;p(b);
            }
          }function p(a) {
            C ? a.data.preventDefault(1) : z && a.data.stopPropagation();
          }var v = CKEDITOR.dialog._.dialogDefinitions[b],
              t = CKEDITOR.tools.clone(F),
              u = a.config.dialog_buttonsOrder || "OS",
              x = a.lang.dir,
              y = {},
              C,
              z;("OS" == u && CKEDITOR.env.mac || "rtl" == u && "ltr" == x || "ltr" == u && "rtl" == x) && t.buttons.reverse();v = CKEDITOR.tools.extend(v(a), t);v = CKEDITOR.tools.clone(v);v = new d(this, v);t = k(a);this._ = { editor: a, element: t.element, name: b, model: null, contentSize: { width: 0, height: 0 }, size: { width: 0, height: 0 }, contents: {},
            buttons: {}, accessKeyMap: {}, viewportRatio: { width: .5, height: .5 }, tabs: {}, tabIdList: [], currentTabId: null, currentTabIndex: null, pageCount: 0, lastTab: null, tabBarMode: !1, focusList: [], currentFocusIndex: 0, hasFocus: !1 };this.parts = t.parts;CKEDITOR.tools.setTimeout(function () {
            a.fire("ariaWidget", this.parts.contents);
          }, 0, this);t = { top: 0, visibility: "hidden" };CKEDITOR.env.ie6Compat && (t.position = "absolute");t["rtl" == x ? "right" : "left"] = 0;this.parts.dialog.setStyles(t);CKEDITOR.event.call(this);this.definition = v = CKEDITOR.fire("dialogDefinition", { name: b, definition: v, dialog: this }, a).definition;if (!("removeDialogTabs" in a._) && a.config.removeDialogTabs) {
            t = a.config.removeDialogTabs.split(";");for (x = 0; x < t.length; x++) if (u = t[x].split(":"), 2 == u.length) {
              var r = u[0];y[r] || (y[r] = []);y[r].push(u[1]);
            }a._.removeDialogTabs = y;
          }if (a._.removeDialogTabs && (y = a._.removeDialogTabs[b])) for (x = 0; x < y.length; x++) v.removeContents(y[x]);if (v.onLoad) this.on("load", v.onLoad);if (v.onShow) this.on("show", v.onShow);if (v.onHide) this.on("hide", v.onHide);if (v.onOk) this.on("ok", function (b) {
            a.fire("saveSnapshot");setTimeout(function () {
              a.fire("saveSnapshot");
            }, 0);!1 === v.onOk.call(this, b) && (b.data.hide = !1);
          });this.state = CKEDITOR.DIALOG_STATE_IDLE;if (v.onCancel) this.on("cancel", function (a) {
            !1 === v.onCancel.call(this, a) && (a.data.hide = !1);
          });var A = this,
              B = function (a) {
            var b = A._.contents,
                d = !1,
                f;for (f in b) for (var c in b[f]) if (d = a.call(this, b[f][c])) return;
          };this.on("ok", function (a) {
            B(function (b) {
              if (b.validate) {
                var d = b.validate(this),
                    f = "string" == typeof d || !1 === d;f && (a.data.hide = !1, a.stop());
                e.call(b, !f, "string" == typeof d ? d : void 0);return f;
              }
            });
          }, this, null, 0);this.on("cancel", function (b) {
            B(function (d) {
              if (d.isChanged()) return a.config.dialog_noConfirmCancel || confirm(a.lang.common.confirmCancel) || (b.data.hide = !1), !0;
            });
          }, this, null, 0);this.parts.close.on("click", function (a) {
            !1 !== this.fire("cancel", { hide: !0 }).hide && this.hide();a.data && a.data.preventDefault();
          }, this);this.on("load", function () {
            this.addFocusable(this.parts.close);
          });this.changeFocus = m;var E = this._.element;a.focusManager.add(E, 1);
          this.on("show", function () {
            E.on("keydown", q, this);if (CKEDITOR.env.gecko) E.on("keypress", p, this);
          });this.on("hide", function () {
            E.removeListener("keydown", q);CKEDITOR.env.gecko && E.removeListener("keypress", p);B(function (a) {
              l.apply(a);
            });
          });this.on("iframeAdded", function (a) {
            new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document).on("keydown", q, this, null, 0);
          });this.on("show", function () {
            f();var b = 1 < A._.pageCount;a.config.dialog_startupFocusTab && b ? (A._.tabBarMode = !0, A._.tabs[A._.currentTabId][0].focus(), A._.currentFocusIndex = -1) : this._.hasFocus || (this._.currentFocusIndex = b ? -1 : this._.focusList.length - 1, v.onFocus ? (b = v.onFocus.call(this)) && b.focus() : m(1));
          }, this, null, 4294967295);if (CKEDITOR.env.ie6Compat) this.on("load", function () {
            var a = this.getElement(),
                b = a.getFirst();b.remove();b.appendTo(a);
          }, this);n(this);w(this);new CKEDITOR.dom.text(v.title, CKEDITOR.document).appendTo(this.parts.title);for (x = 0; x < v.contents.length; x++) (y = v.contents[x]) && this.addPage(y);this.parts.tabs.on("click", function (a) {
            var b = a.data.getTarget();b.hasClass("cke_dialog_tab") && (b = b.$.id, this.selectPage(b.substring(4, b.lastIndexOf("_"))), c(this), a.data.preventDefault());
          }, this);x = [];y = CKEDITOR.dialog._.uiElementBuilders.hbox.build(this, { type: "hbox", className: "cke_dialog_footer_buttons", widths: [], children: v.buttons }, x).getChild();this.parts.footer.setHtml(x.join(""));for (x = 0; x < y.length; x++) this._.buttons[y[x].id] = y[x];
        };CKEDITOR.dialog.prototype = { destroy: function () {
            this.hide();this._.element.remove();
          }, resize: function (a, b) {
            if (!this._.contentSize || this._.contentSize.width != a || this._.contentSize.height != b) {
              CKEDITOR.dialog.fire("resize", { dialog: this, width: a, height: b }, this._.editor);this.fire("resize", { width: a, height: b }, this._.editor);this.parts.contents.setStyles({ width: a + "px", height: b + "px" });if ("rtl" == this._.editor.lang.dir && this._.position) {
                var d = this.parts.dialog.getParent().getClientSize().width;this._.position.x = d - this._.contentSize.width - parseInt(this._.element.getFirst().getStyle("right"), 10);
              }this._.contentSize = { width: a, height: b };
            }
          }, getSize: function () {
            var a = this._.element.getFirst();return { width: a.$.offsetWidth || 0, height: a.$.offsetHeight || 0 };
          }, move: function (a, b, d) {
            var f = this._.element.getFirst(),
                c = "rtl" == this._.editor.lang.dir;CKEDITOR.env.ie && f.setStyle("zoom", "100%");var e = this.parts.dialog.getParent().getClientSize(),
                g = this.getSize(),
                h = this._.viewportRatio,
                k = Math.max(e.width - g.width, 0),
                e = Math.max(e.height - g.height, 0);this._.position && this._.position.x == a && this._.position.y == b ? (a = Math.floor(k * h.width), b = Math.floor(e * h.height)) : z(this, a, b);this._.position = { x: a, y: b };c && (a = k - a);b = { top: (0 < b ? b : 0) + "px" };b[c ? "right" : "left"] = (0 < a ? a : 0) + "px";f.setStyles(b);d && (this._.moved = 1);
          }, getPosition: function () {
            return CKEDITOR.tools.extend({}, this._.position);
          }, show: function () {
            var a = this._.element,
                d = this.definition,
                f = CKEDITOR.document.getBody(),
                c = this._.editor.config.baseFloatZIndex;a.getParent() && a.getParent().equals(f) ? a.setStyle("display", E ? "flex" : "block") : a.appendTo(f);this.resize(this._.contentSize && this._.contentSize.width || d.width || d.minWidth, this._.contentSize && this._.contentSize.height || d.height || d.minHeight);this.reset();null === this._.currentTabId && this.selectPage(this.definition.contents[0].id);null === CKEDITOR.dialog._.currentZIndex && (CKEDITOR.dialog._.currentZIndex = c);this._.element.getFirst().setStyle("z-index", CKEDITOR.dialog._.currentZIndex += 10);this.getElement().setStyle("z-index", CKEDITOR.dialog._.currentZIndex);null === CKEDITOR.dialog._.currentTop ? (CKEDITOR.dialog._.currentTop = this, this._.parentDialog = null, t(this._.editor)) : CKEDITOR.dialog._.currentTop !== this && (this._.parentDialog = CKEDITOR.dialog._.currentTop, f = this._.parentDialog.getElement().getFirst(), f.$.style.zIndex -= Math.floor(c / 2), this._.parentDialog.getElement().setStyle("z-index", f.$.style.zIndex), CKEDITOR.dialog._.currentTop = this);a.on("keydown", C);a.on("keyup", p);this._.hasFocus = !1;for (var e in d.contents) if (d.contents[e]) {
              var a = d.contents[e],
                  c = this._.tabs[a.id],
                  f = a.requiredContent,
                  g = 0;if (c) {
                for (var h in this._.contents[a.id]) {
                  var k = this._.contents[a.id][h];"hbox" != k.type && "vbox" != k.type && k.getInputElement() && (k.requiredContent && !this._.editor.activeFilter.check(k.requiredContent) ? k.disable() : (k.enable(), g++));
                }!g || f && !this._.editor.activeFilter.check(f) ? c[0].addClass("cke_dialog_tab_disabled") : c[0].removeClass("cke_dialog_tab_disabled");
              }
            }CKEDITOR.tools.setTimeout(function () {
              this.layout();b(this);this.parts.dialog.setStyle("visibility", "");this.fireOnce("load", {});CKEDITOR.ui.fire("ready", this);this.fire("show", {});this._.editor.fire("dialogShow", this);this._.parentDialog || this._.editor.focusManager.lock();
              this.foreach(function (a) {
                a.setInitValue && a.setInitValue();
              });
            }, 100, this);
          }, layout: function () {
            var a = this.parts.dialog;if (this._.moved || !E) {
              var b = this.getSize(),
                  d = CKEDITOR.document.getWindow().getViewPaneSize(),
                  f;this._.moved && this._.position ? (f = this._.position.x, b = this._.position.y) : (f = (d.width - b.width) / 2, b = (d.height - b.height) / 2);CKEDITOR.env.ie6Compat || (a.setStyle("position", "absolute"), a.removeStyle("margin"));f = Math.floor(f);b = Math.floor(b);this.move(f, b);
            }
          }, foreach: function (a) {
            for (var b in this._.contents) for (var d in this._.contents[b]) a.call(this, this._.contents[b][d]);return this;
          }, reset: function () {
            var a = function (a) {
              a.reset && a.reset(1);
            };return function () {
              this.foreach(a);return this;
            };
          }(), setupContent: function () {
            var a = arguments;this.foreach(function (b) {
              b.setup && b.setup.apply(b, a);
            });
          }, commitContent: function () {
            var a = arguments;this.foreach(function (b) {
              CKEDITOR.env.ie && this._.currentFocusIndex == b.focusIndex && b.getInputElement().$.blur();b.commit && b.commit.apply(b, a);
            });
          }, hide: function () {
            if (this.parts.dialog.isVisible()) {
              this.fire("hide", {});this._.editor.fire("dialogHide", this);this.selectPage(this._.tabIdList[0]);var a = this._.element;a.setStyle("display", "none");this.parts.dialog.setStyle("visibility", "hidden");for (v(this); CKEDITOR.dialog._.currentTop != this;) CKEDITOR.dialog._.currentTop.hide();if (this._.parentDialog) {
                var b = this._.parentDialog.getElement().getFirst(),
                    d = parseInt(b.$.style.zIndex, 10) + Math.floor(this._.editor.config.baseFloatZIndex / 2);this._.parentDialog.getElement().setStyle("z-index", d);b.setStyle("z-index", d);
              } else u(this._.editor);if (CKEDITOR.dialog._.currentTop = this._.parentDialog) CKEDITOR.dialog._.currentZIndex -= 10;else {
                CKEDITOR.dialog._.currentZIndex = null;a.removeListener("keydown", C);a.removeListener("keyup", p);var f = this._.editor;f.focus();setTimeout(function () {
                  f.focusManager.unlock();CKEDITOR.env.iOS && f.window.focus();
                }, 0);
              }delete this._.parentDialog;this.foreach(function (a) {
                a.resetInitValue && a.resetInitValue();
              });this.setState(CKEDITOR.DIALOG_STATE_IDLE);
            }
          }, addPage: function (a) {
            if (!a.requiredContent || this._.editor.filter.check(a.requiredContent)) {
              for (var b = [], d = a.label ? ' title\x3d"' + CKEDITOR.tools.htmlEncode(a.label) + '"' : "", f = CKEDITOR.dialog._.uiElementBuilders.vbox.build(this, { type: "vbox", className: "cke_dialog_page_contents", children: a.elements, expand: !!a.expand, padding: a.padding, style: a.style || "width: inherit;" }, b), c = this._.contents[a.id] = {}, e = f.getChild(), g = 0; f = e.shift();) f.notAllowed || "hbox" == f.type || "vbox" == f.type || g++, c[f.id] = f, "function" == typeof f.getChild && e.push.apply(e, f.getChild());g || (a.hidden = !0);b = CKEDITOR.dom.element.createFromHtml(b.join(""));
              b.setAttribute("role", "tabpanel");b.setStyle("min-height", "100%");f = CKEDITOR.env;c = "cke_" + a.id + "_" + CKEDITOR.tools.getNextNumber();d = CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"', 0 < this._.pageCount ? " cke_last" : "cke_first", d, a.hidden ? ' style\x3d"display:none"' : "", ' id\x3d"', c, '"', f.gecko && !f.hc ? "" : ' href\x3d"javascript:void(0)"', ' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e', a.label, "\x3c/a\x3e"].join(""));b.setAttribute("aria-labelledby", c);this._.tabs[a.id] = [d, b];this._.tabIdList.push(a.id);!a.hidden && this._.pageCount++;this._.lastTab = d;this.updateStyle();b.setAttribute("name", a.id);b.appendTo(this.parts.contents);d.unselectable();this.parts.tabs.append(d);a.accessKey && (x(this, this, "CTRL+" + a.accessKey, y, q), this._.accessKeyMap["CTRL+" + a.accessKey] = a.id);
            }
          }, selectPage: function (b) {
            if (this._.currentTabId != b && !this._.tabs[b][0].hasClass("cke_dialog_tab_disabled") && !1 !== this.fire("selectPage", { page: b, currentPage: this._.currentTabId })) {
              for (var d in this._.tabs) {
                var f = this._.tabs[d][0],
                    c = this._.tabs[d][1];d != b && (f.removeClass("cke_dialog_tab_selected"), f.removeAttribute("aria-selected"), c.hide());c.setAttribute("aria-hidden", d != b);
              }var e = this._.tabs[b];e[0].addClass("cke_dialog_tab_selected");e[0].setAttribute("aria-selected", !0);CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ? (a(e[1]), e[1].show(), setTimeout(function () {
                a(e[1], 1);
              }, 0)) : e[1].show();this._.currentTabId = b;this._.currentTabIndex = CKEDITOR.tools.indexOf(this._.tabIdList, b);
            }
          }, updateStyle: function () {
            this.parts.dialog[(1 === this._.pageCount ? "add" : "remove") + "Class"]("cke_single_page");
          }, hidePage: function (a) {
            var b = this._.tabs[a] && this._.tabs[a][0];b && 1 != this._.pageCount && b.isVisible() && (a == this._.currentTabId && this.selectPage(h.call(this)), b.hide(), this._.pageCount--, this.updateStyle());
          }, showPage: function (a) {
            if (a = this._.tabs[a] && this._.tabs[a][0]) a.show(), this._.pageCount++, this.updateStyle();
          }, getElement: function () {
            return this._.element;
          }, getName: function () {
            return this._.name;
          }, getContentElement: function (a, b) {
            var d = this._.contents[a];
            return d && d[b];
          }, getValueOf: function (a, b) {
            return this.getContentElement(a, b).getValue();
          }, setValueOf: function (a, b, d) {
            return this.getContentElement(a, b).setValue(d);
          }, getButton: function (a) {
            return this._.buttons[a];
          }, click: function (a) {
            return this._.buttons[a].click();
          }, disableButton: function (a) {
            return this._.buttons[a].disable();
          }, enableButton: function (a) {
            return this._.buttons[a].enable();
          }, getPageCount: function () {
            return this._.pageCount;
          }, getParentEditor: function () {
            return this._.editor;
          }, getSelectedElement: function () {
            return this.getParentEditor().getSelection().getSelectedElement();
          },
          addFocusable: function (a, b) {
            if ("undefined" == typeof b) b = this._.focusList.length, this._.focusList.push(new m(this, a, b));else {
              this._.focusList.splice(b, 0, new m(this, a, b));for (var d = b + 1; d < this._.focusList.length; d++) this._.focusList[d].focusIndex++;
            }
          }, setState: function (a) {
            if (this.state != a) {
              this.state = a;if (a == CKEDITOR.DIALOG_STATE_BUSY) {
                if (!this.parts.spinner) {
                  var b = this.getParentEditor().lang.dir,
                      d = { attributes: { "class": "cke_dialog_spinner" }, styles: { "float": "rtl" == b ? "right" : "left" } };d.styles["margin-" + ("rtl" == b ? "left" : "right")] = "8px";this.parts.spinner = CKEDITOR.document.createElement("div", d);this.parts.spinner.setHtml("\x26#8987;");this.parts.spinner.appendTo(this.parts.title, 1);
                }this.parts.spinner.show();this.getButton("ok") && this.getButton("ok").disable();
              } else a == CKEDITOR.DIALOG_STATE_IDLE && (this.parts.spinner && this.parts.spinner.hide(), this.getButton("ok") && this.getButton("ok").enable());this.fire("state", a);
            }
          }, getModel: function (a) {
            return this._.model ? this._.model : this.definition.getModel ? this.definition.getModel(a) : null;
          }, setModel: function (a) {
            this._.model = a;
          }, getMode: function (a) {
            if (this.definition.getMode) return this.definition.getMode(a);a = this.getModel(a);return !a || a instanceof CKEDITOR.dom.element && !a.getParent() ? CKEDITOR.dialog.CREATION_MODE : CKEDITOR.dialog.EDITING_MODE;
          } };CKEDITOR.tools.extend(CKEDITOR.dialog, { CREATION_MODE: 0, EDITING_MODE: 1, add: function (a, b) {
            this._.dialogDefinitions[a] && "function" != typeof b || (this._.dialogDefinitions[a] = b);
          }, exists: function (a) {
            return !!this._.dialogDefinitions[a];
          }, getCurrent: function () {
            return CKEDITOR.dialog._.currentTop;
          },
          isTabEnabled: function (a, b, d) {
            a = a.config.removeDialogTabs;return !(a && a.match(new RegExp("(?:^|;)" + b + ":" + d + "(?:$|;)", "i")));
          }, okButton: function () {
            var a = function (a, b) {
              b = b || {};return CKEDITOR.tools.extend({ id: "ok", type: "button", label: a.lang.common.ok, "class": "cke_dialog_ui_button_ok", onClick: function (a) {
                  a = a.data.dialog;!1 !== a.fire("ok", { hide: !0 }).hide && a.hide();
                } }, b, !0);
            };a.type = "button";a.override = function (b) {
              return CKEDITOR.tools.extend(function (d) {
                return a(d, b);
              }, { type: "button" }, !0);
            };return a;
          }(), cancelButton: function () {
            var a = function (a, b) {
              b = b || {};return CKEDITOR.tools.extend({ id: "cancel", type: "button", label: a.lang.common.cancel, "class": "cke_dialog_ui_button_cancel", onClick: function (a) {
                  a = a.data.dialog;!1 !== a.fire("cancel", { hide: !0 }).hide && a.hide();
                } }, b, !0);
            };a.type = "button";a.override = function (b) {
              return CKEDITOR.tools.extend(function (d) {
                return a(d, b);
              }, { type: "button" }, !0);
            };return a;
          }(), addUIElement: function (a, b) {
            this._.uiElementBuilders[a] = b;
          } });CKEDITOR.dialog._ = { uiElementBuilders: {}, dialogDefinitions: {}, currentTop: null, currentZIndex: null };
        CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);F = { resizable: CKEDITOR.DIALOG_RESIZE_BOTH, minWidth: 600, minHeight: 400, buttons: [CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton] };var H = function (a, b, d) {
          for (var f = 0, c; c = a[f]; f++) if (c.id == b || d && c[d] && (c = H(c[d], b, d))) return c;return null;
        },
            M = function (a, b, d, f, c) {
          if (d) {
            for (var e = 0, g; g = a[e]; e++) {
              if (g.id == d) return a.splice(e, 0, b), b;if (f && g[f] && (g = M(g[f], b, d, f, !0))) return g;
            }if (c) return null;
          }a.push(b);return b;
        },
            I = function (a, b, d) {
          for (var f = 0, c; c = a[f]; f++) {
            if (c.id == b) return a.splice(f, 1);if (d && c[d] && (c = I(c[d], b, d))) return c;
          }return null;
        };d.prototype = { getContents: function (a) {
            return H(this.contents, a);
          }, getButton: function (a) {
            return H(this.buttons, a);
          }, addContents: function (a, b) {
            return M(this.contents, a, b);
          }, addButton: function (a, b) {
            return M(this.buttons, a, b);
          }, removeContents: function (a) {
            I(this.contents, a);
          }, removeButton: function (a) {
            I(this.buttons, a);
          } };f.prototype = { get: function (a) {
            return H(this.elements, a, "children");
          },
          add: function (a, b) {
            return M(this.elements, a, b, "children");
          }, remove: function (a) {
            I(this.elements, a, "children");
          } };var D = {},
            P = {};(function () {
          CKEDITOR.ui.dialog = { uiElement: function (a, b, d, f, c, e, g) {
              if (!(4 > arguments.length)) {
                var h = (f.call ? f(b) : f) || "div",
                    k = ["\x3c", h, " "],
                    l = (c && c.call ? c(b) : c) || {},
                    m = (e && e.call ? e(b) : e) || {},
                    n = (g && g.call ? g.call(this, a, b) : g) || "",
                    q = this.domId = m.id || CKEDITOR.tools.getNextId() + "_uiElement";b.requiredContent && !a.getParentEditor().filter.check(b.requiredContent) && (l.display = "none", this.notAllowed = !0);m.id = q;var p = {};b.type && (p["cke_dialog_ui_" + b.type] = 1);b.className && (p[b.className] = 1);b.disabled && (p.cke_disabled = 1);for (var v = m["class"] && m["class"].split ? m["class"].split(" ") : [], q = 0; q < v.length; q++) v[q] && (p[v[q]] = 1);v = [];for (q in p) v.push(q);m["class"] = v.join(" ");b.title && (m.title = b.title);p = (b.style || "").split(";");b.align && (v = b.align, l["margin-left"] = "left" == v ? 0 : "auto", l["margin-right"] = "right" == v ? 0 : "auto");for (q in l) p.push(q + ":" + l[q]);b.hidden && p.push("display:none");for (q = p.length - 1; 0 <= q; q--) "" === p[q] && p.splice(q, 1);0 < p.length && (m.style = (m.style ? m.style + "; " : "") + p.join("; "));for (q in m) k.push(q + '\x3d"' + CKEDITOR.tools.htmlEncode(m[q]) + '" ');k.push("\x3e", n, "\x3c/", h, "\x3e");d.push(k.join(""));(this._ || (this._ = {})).dialog = a;"boolean" == typeof b.isChanged && (this.isChanged = function () {
                  return b.isChanged;
                });"function" == typeof b.isChanged && (this.isChanged = b.isChanged);"function" == typeof b.setValue && (this.setValue = CKEDITOR.tools.override(this.setValue, function (a) {
                  return function (d) {
                    a.call(this, b.setValue.call(this, d));
                  };
                }));"function" == typeof b.getValue && (this.getValue = CKEDITOR.tools.override(this.getValue, function (a) {
                  return function () {
                    return b.getValue.call(this, a.call(this));
                  };
                }));CKEDITOR.event.implementOn(this);this.registerEvents(b);this.accessKeyUp && this.accessKeyDown && b.accessKey && x(this, a, "CTRL+" + b.accessKey);var w = this;a.on("load", function () {
                  var b = w.getInputElement();if (b) {
                    var d = w.type in { checkbox: 1, ratio: 1 } && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? "cke_dialog_ui_focused" : "";b.on("focus", function () {
                      a._.tabBarMode = !1;a._.hasFocus = !0;w.fire("focus");d && this.addClass(d);
                    });b.on("blur", function () {
                      w.fire("blur");d && this.removeClass(d);
                    });
                  }
                });CKEDITOR.tools.extend(this, b);this.keyboardFocusable && (this.tabIndex = b.tabIndex || 0, this.focusIndex = a._.focusList.push(this) - 1, this.on("focus", function () {
                  a._.currentFocusIndex = w.focusIndex;
                }));
              }
            }, hbox: function (a, b, d, f, c) {
              if (!(4 > arguments.length)) {
                this._ || (this._ = {});var e = this._.children = b,
                    g = c && c.widths || null,
                    h = c && c.height || null,
                    k,
                    l = { role: "presentation" };
                c && c.align && (l.align = c.align);CKEDITOR.ui.dialog.uiElement.call(this, a, c || { type: "hbox" }, f, "table", {}, l, function () {
                  var a = ['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for (k = 0; k < d.length; k++) {
                    var b = "cke_dialog_ui_hbox_child",
                        f = [];0 === k && (b = "cke_dialog_ui_hbox_first");k == d.length - 1 && (b = "cke_dialog_ui_hbox_last");a.push('\x3ctd class\x3d"', b, '" role\x3d"presentation" ');g ? g[k] && f.push("width:" + A(g[k])) : f.push("width:" + Math.floor(100 / d.length) + "%");h && f.push("height:" + A(h));c && void 0 !== c.padding && f.push("padding:" + A(c.padding));CKEDITOR.env.ie && CKEDITOR.env.quirks && e[k].align && f.push("text-align:" + e[k].align);0 < f.length && a.push('style\x3d"' + f.join("; ") + '" ');a.push("\x3e", d[k], "\x3c/td\x3e");
                  }a.push("\x3c/tr\x3e\x3c/tbody\x3e");return a.join("");
                });
              }
            }, vbox: function (a, b, d, f, c) {
              if (!(3 > arguments.length)) {
                this._ || (this._ = {});var e = this._.children = b,
                    g = c && c.width || null,
                    h = c && c.heights || null;CKEDITOR.ui.dialog.uiElement.call(this, a, c || { type: "vbox" }, f, "div", null, { role: "presentation" }, function () {
                  var b = ['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];b.push('style\x3d"');c && c.expand && b.push("height:100%;");b.push("width:" + A(g || "100%"), ";");CKEDITOR.env.webkit && b.push("float:none;");b.push('"');b.push('align\x3d"', CKEDITOR.tools.htmlEncode(c && c.align || ("ltr" == a.getParentEditor().lang.dir ? "left" : "right")), '" ');b.push("\x3e\x3ctbody\x3e");for (var f = 0; f < d.length; f++) {
                    var k = [];b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');g && k.push("width:" + A(g || "100%"));h ? k.push("height:" + A(h[f])) : c && c.expand && k.push("height:" + Math.floor(100 / d.length) + "%");c && void 0 !== c.padding && k.push("padding:" + A(c.padding));CKEDITOR.env.ie && CKEDITOR.env.quirks && e[f].align && k.push("text-align:" + e[f].align);0 < k.length && b.push('style\x3d"', k.join("; "), '" ');b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e', d[f], "\x3c/td\x3e\x3c/tr\x3e");
                  }b.push("\x3c/tbody\x3e\x3c/table\x3e");return b.join("");
                });
              }
            } };
        })();CKEDITOR.ui.dialog.uiElement.prototype = { getElement: function () {
            return CKEDITOR.document.getById(this.domId);
          },
          getInputElement: function () {
            return this.getElement();
          }, getDialog: function () {
            return this._.dialog;
          }, setValue: function (a, b) {
            this.getInputElement().setValue(a);!b && this.fire("change", { value: a });return this;
          }, getValue: function () {
            return this.getInputElement().getValue();
          }, isChanged: function () {
            return !1;
          }, selectParentTab: function () {
            for (var a = this.getInputElement(); (a = a.getParent()) && -1 == a.$.className.search("cke_dialog_page_contents"););if (!a) return this;a = a.getAttribute("name");this._.dialog._.currentTabId != a && this._.dialog.selectPage(a);return this;
          }, focus: function () {
            this.selectParentTab().getInputElement().focus();return this;
          }, registerEvents: function (a) {
            var b = /^on([A-Z]\w+)/,
                d,
                f = function (a, b, d, f) {
              b.on("load", function () {
                a.getInputElement().on(d, f, a);
              });
            },
                c;for (c in a) if (d = c.match(b)) this.eventProcessors[c] ? this.eventProcessors[c].call(this, this._.dialog, a[c]) : f(this, this._.dialog, d[1].toLowerCase(), a[c]);return this;
          }, eventProcessors: { onLoad: function (a, b) {
              a.on("load", b, this);
            }, onShow: function (a, b) {
              a.on("show", b, this);
            }, onHide: function (a, b) {
              a.on("hide", b, this);
            } }, accessKeyDown: function () {
            this.focus();
          }, accessKeyUp: function () {}, disable: function () {
            var a = this.getElement();this.getInputElement().setAttribute("disabled", "true");a.addClass("cke_disabled");
          }, enable: function () {
            var a = this.getElement();this.getInputElement().removeAttribute("disabled");a.removeClass("cke_disabled");
          }, isEnabled: function () {
            return !this.getElement().hasClass("cke_disabled");
          }, isVisible: function () {
            return this.getInputElement().isVisible();
          },
          isFocusable: function () {
            return this.isEnabled() && this.isVisible() ? !0 : !1;
          } };CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { getChild: function (a) {
            if (1 > arguments.length) return this._.children.concat();a.splice || (a = [a]);return 2 > a.length ? this._.children[a[0]] : this._.children[a[0]] && this._.children[a[0]].getChild ? this._.children[a[0]].getChild(a.slice(1, a.length)) : null;
          } }, !0);CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox();(function () {
          var a = { build: function (a, b, d) {
              for (var f = b.children, c, e = [], g = [], h = 0; h < f.length && (c = f[h]); h++) {
                var k = [];e.push(k);g.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(a, c, k));
              }return new CKEDITOR.ui.dialog[b.type](a, g, e, d, b);
            } };CKEDITOR.dialog.addUIElement("hbox", a);CKEDITOR.dialog.addUIElement("vbox", a);
        })();CKEDITOR.dialogCommand = function (a, b) {
          this.dialogName = a;CKEDITOR.tools.extend(this, b, !0);
        };CKEDITOR.dialogCommand.prototype = { exec: function (a) {
            var b = this.tabId;a.openDialog(this.dialogName, function (a) {
              b && a.selectPage(b);
            });
          },
          canUndo: !1, editorFocus: 1 };(function () {
          var a = /^\d*$/,
              b = /^\d*(?:\.\d+)?$/,
              d = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,
              f = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,
              c = /^(--|-?([a-zA-Z_]|\\))(\\|[a-zA-Z0-9-_])*\s*?:\s*?[^:;]+$/;CKEDITOR.VALIDATE_OR = 1;CKEDITOR.VALIDATE_AND = 2;CKEDITOR.dialog.validate = { functions: function () {
              var a = arguments;return function (b) {
                this && this.getValue && (b = this.getValue());var d,
                    f = CKEDITOR.VALIDATE_AND,
                    c = [],
                    e;for (e = 0; e < a.length; e++) if ("function" == typeof a[e]) c.push(a[e]);else break;e < a.length && "string" == typeof a[e] && (d = a[e], e++);e < a.length && "number" == typeof a[e] && (f = a[e]);e = f == CKEDITOR.VALIDATE_AND;for (var g = 0; g < c.length; g++) {
                  var h = !0 === c[g](b);e = f == CKEDITOR.VALIDATE_AND ? e && h : e || h;
                }return e ? !0 : d;
              };
            }, regex: function (a, b) {
              return this.functions(function (b) {
                return a.test(b);
              }, b);
            }, notEmpty: function (a) {
              return this.functions(function (a) {
                return 0 < a.replace(RegExp("^[\\u0020\\u00a0\\u1680\\u202f\\u205f\\u3000\\u2000-\\u200a\\s]+|[\\u0020\\u00a0\\u1680\\u202f\\u205f\\u3000\\u2000-\\u200a\\s]+$", "g"), "").length;
              }, a);
            }, integer: function (b) {
              return this.regex(a, b);
            }, number: function (a) {
              return this.regex(b, a);
            }, cssLength: function (a) {
              return this.functions(function (a) {
                return f.test(CKEDITOR.tools.trim(a));
              }, a);
            }, htmlLength: function (a) {
              return this.functions(function (a) {
                return d.test(CKEDITOR.tools.trim(a));
              }, a);
            }, inlineStyle: function (a) {
              return this.functions(function (a) {
                a = CKEDITOR.tools.trim(a).split(";");"" === a[a.length - 1] && a.pop();return CKEDITOR.tools.array.every(a, function (a) {
                  return c.test(CKEDITOR.tools.trim(a));
                });
              }, a);
            }, equals: function (a, b) {
              return this.functions(function (b) {
                return b == a;
              }, b);
            }, notEqual: function (a, b) {
              return this.functions(function (b) {
                return b != a;
              }, b);
            } };CKEDITOR.on("instanceDestroyed", function (a) {
            if (CKEDITOR.tools.isEmpty(CKEDITOR.instances)) {
              for (var b; b = CKEDITOR.dialog._.currentTop;) b.hide();for (var d in D) D[d].remove();D = {};
            }a = a.editor._.storedDialogs;for (var f in a) a[f].destroy();
          });
        })();CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { openDialog: function (a, b, d) {
            var f = null,
                c = CKEDITOR.dialog._.dialogDefinitions[a];
            null === CKEDITOR.dialog._.currentTop && t(this);if ("function" == typeof c) c = this._.storedDialogs || (this._.storedDialogs = {}), f = c[a] || (c[a] = new CKEDITOR.dialog(this, a)), f.setModel(d), b && b.call(f, f), f.show();else {
              if ("failed" == c) throw u(this), Error('[CKEDITOR.dialog.openDialog] Dialog "' + a + '" failed when loading definition.');"string" == typeof c && CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c), function () {
                "function" != typeof CKEDITOR.dialog._.dialogDefinitions[a] && (CKEDITOR.dialog._.dialogDefinitions[a] = "failed");
                this.openDialog(a, b, d);
              }, this, 0, 1);
            }CKEDITOR.skin.loadPart("dialog");if (f) f.once("hide", function () {
              f.setModel(null);
            }, null, null, 999);return f;
          } });CKEDITOR.plugins.add("dialog", { requires: "dialogui", init: function (a) {
            G || (CKEDITOR.document.appendStyleSheet(this.path + "styles/dialog.css"), G = !0);a.on("doubleclick", function (b) {
              b.data.dialog && a.openDialog(b.data.dialog);
            }, null, null, 999);
          } });
      }(), function () {
        CKEDITOR.plugins.add("a11yhelp", { requires: "dialog", availableLangs: { af: 1, ar: 1, az: 1, bg: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1,
            "de-ch": 1, el: 1, en: 1, "en-au": 1, "en-gb": 1, eo: 1, es: 1, "es-mx": 1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1, fr: 1, "fr-ca": 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, it: 1, ja: 1, km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, nb: 1, nl: 1, no: 1, oc: 1, pl: 1, pt: 1, "pt-br": 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, sr: 1, "sr-latn": 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1, uk: 1, vi: 1, zh: 1, "zh-cn": 1 }, init: function (c) {
            var h = this;c.addCommand("a11yHelp", { exec: function () {
                var g = c.langCode,
                    g = h.availableLangs[g] ? g : h.availableLangs[g.replace(/-.*/, "")] ? g.replace(/-.*/, "") : "en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(h.path + "dialogs/lang/" + g + ".js"), function () {
                  c.lang.a11yhelp = h.langEntries[g];c.openDialog("a11yHelp");
                });
              }, modes: { wysiwyg: 1, source: 1 }, readOnly: 1, canUndo: !1 });c.setKeystroke(CKEDITOR.ALT + 48, "a11yHelp");CKEDITOR.dialog.add("a11yHelp", this.path + "dialogs/a11yhelp.js");c.on("ariaEditorHelpLabel", function (g) {
              g.data.label = c.lang.common.editorHelp;
            });
          } });
      }(), CKEDITOR.plugins.add("basicstyles", { init: function (c) {
          var h = 0,
              g = function (e, g, b, d) {
            if (d) {
              d = new CKEDITOR.style(d);var f = a[b];f.unshift(d);c.attachStyleStateChange(d, function (a) {
                !c.readOnly && c.getCommand(b).setState(a);
              });c.addCommand(b, new CKEDITOR.styleCommand(d, { contentForms: f }));c.ui.addButton && c.ui.addButton(e, { isToggle: !0, label: g, command: b, toolbar: "basicstyles," + (h += 10) });
            }
          },
              a = { bold: ["strong", "b", ["span", function (a) {
              a = a.styles["font-weight"];return "bold" == a || 700 <= +a;
            }]], italic: ["em", "i", ["span", function (a) {
              return "italic" == a.styles["font-style"];
            }]], underline: ["u", ["span", function (a) {
              return "underline" == a.styles["text-decoration"];
            }]], strike: ["s", "strike", ["span", function (a) {
              return "line-through" == a.styles["text-decoration"];
            }]], subscript: ["sub"], superscript: ["sup"] },
              e = c.config,
              l = c.lang.basicstyles;g("Bold", l.bold, "bold", e.coreStyles_bold);g("Italic", l.italic, "italic", e.coreStyles_italic);g("Underline", l.underline, "underline", e.coreStyles_underline);g("Strike", l.strike, "strike", e.coreStyles_strike);g("Subscript", l.subscript, "subscript", e.coreStyles_subscript);g("Superscript", l.superscript, "superscript", e.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL + 66, "bold"], [CKEDITOR.CTRL + 73, "italic"], [CKEDITOR.CTRL + 85, "underline"]]);
        }, afterInit: function (c) {
          if (c.config.coreStyles_toggleSubSup) {
            var h = c.getCommand("subscript"),
                g = c.getCommand("superscript");if (h && g) c.on("afterCommandExec", function (a) {
              a = a.data.name;if ("subscript" === a || "superscript" === a) {
                var e = "subscript" === a ? g : h;("subscript" === a ? h : g).state === CKEDITOR.TRISTATE_ON && e.state === CKEDITOR.TRISTATE_ON && (e.exec(c), c.fire("updateSnapshot"));
              }
            });
          }
        } }), CKEDITOR.config.coreStyles_bold = { element: "strong", overrides: "b" }, CKEDITOR.config.coreStyles_italic = { element: "em", overrides: "i" }, CKEDITOR.config.coreStyles_underline = { element: "u" }, CKEDITOR.config.coreStyles_strike = { element: "s", overrides: "strike" }, CKEDITOR.config.coreStyles_subscript = { element: "sub" }, CKEDITOR.config.coreStyles_superscript = { element: "sup" }, CKEDITOR.config.coreStyles_toggleSubSup = !1, function () {
        var c = { exec: function (c) {
            var g = c.getCommand("blockquote").state,
                a = c.getSelection(),
                e = a && a.getRanges()[0];if (e) {
              var l = a.createBookmarks();if (CKEDITOR.env.ie) {
                var k = l[0].startNode,
                    m = l[0].endNode,
                    b;if (k && "blockquote" == k.getParent().getName()) for (b = k; b = b.getNext();) if (b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()) {
                  k.move(b, !0);break;
                }if (m && "blockquote" == m.getParent().getName()) for (b = m; b = b.getPrevious();) if (b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()) {
                  m.move(b);break;
                }
              }var d = e.createIterator();d.enlargeBr = c.config.enterMode != CKEDITOR.ENTER_BR;if (g == CKEDITOR.TRISTATE_OFF) {
                for (k = []; g = d.getNextParagraph();) k.push(g);1 > k.length && (g = c.document.createElement(c.config.enterMode == CKEDITOR.ENTER_P ? "p" : "div"), m = l.shift(), e.insertNode(g), g.append(new CKEDITOR.dom.text("﻿", c.document)), e.moveToBookmark(m), e.selectNodeContents(g), e.collapse(!0), m = e.createBookmark(), k.push(g), l.unshift(m));b = k[0].getParent();e = [];for (m = 0; m < k.length; m++) g = k[m], b = b.getCommonAncestor(g.getParent());for (g = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 }; g[b.getName()];) b = b.getParent();for (m = null; 0 < k.length;) {
                  for (g = k.shift(); !g.getParent().equals(b);) g = g.getParent();g.equals(m) || e.push(g);m = g;
                }for (; 0 < e.length;) if (g = e.shift(), "blockquote" == g.getName()) {
                  for (m = new CKEDITOR.dom.documentFragment(c.document); g.getFirst();) m.append(g.getFirst().remove()), k.push(m.getLast());m.replace(g);
                } else k.push(g);e = c.document.createElement("blockquote");for (e.insertBefore(k[0]); 0 < k.length;) g = k.shift(), e.append(g);
              } else if (g == CKEDITOR.TRISTATE_ON) {
                m = [];for (b = {}; g = d.getNextParagraph();) {
                  for (k = e = null; g.getParent();) {
                    if ("blockquote" == g.getParent().getName()) {
                      e = g.getParent();k = g;break;
                    }g = g.getParent();
                  }e && k && !k.getCustomData("blockquote_moveout") && (m.push(k), CKEDITOR.dom.element.setMarker(b, k, "blockquote_moveout", !0));
                }CKEDITOR.dom.element.clearAllMarkers(b);g = [];k = [];for (b = {}; 0 < m.length;) d = m.shift(), e = d.getParent(), d.getPrevious() ? d.getNext() ? (d.breakParent(d.getParent()), k.push(d.getNext())) : d.remove().insertAfter(e) : d.remove().insertBefore(e), e.getCustomData("blockquote_processed") || (k.push(e), CKEDITOR.dom.element.setMarker(b, e, "blockquote_processed", !0)), g.push(d);CKEDITOR.dom.element.clearAllMarkers(b);for (m = k.length - 1; 0 <= m; m--) {
                  e = k[m];
                  a: {
                    b = e;for (var d = 0, f = b.getChildCount(), n = void 0; d < f && (n = b.getChild(d)); d++) if (n.type == CKEDITOR.NODE_ELEMENT && n.isBlockBoundary()) {
                      b = !1;break a;
                    }b = !0;
                  }b && e.remove();
                }if (c.config.enterMode == CKEDITOR.ENTER_BR) for (e = !0; g.length;) if (d = g.shift(), "div" == d.getName()) {
                  m = new CKEDITOR.dom.documentFragment(c.document);!e || !d.getPrevious() || d.getPrevious().type == CKEDITOR.NODE_ELEMENT && d.getPrevious().isBlockBoundary() || m.append(c.document.createElement("br"));for (e = d.getNext() && !(d.getNext().type == CKEDITOR.NODE_ELEMENT && d.getNext().isBlockBoundary()); d.getFirst();) d.getFirst().remove().appendTo(m);e && m.append(c.document.createElement("br"));m.replace(d);e = !1;
                }
              }a.selectBookmarks(l);c.focus();
            }
          }, refresh: function (c, g) {
            this.setState(c.elementPath(g.block || g.blockLimit).contains("blockquote", 1) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
          }, context: "blockquote", allowedContent: "blockquote", requiredContent: "blockquote" };CKEDITOR.plugins.add("blockquote", { init: function (h) {
            h.blockless || (h.addCommand("blockquote", c), h.ui.addButton && h.ui.addButton("Blockquote", { isToggle: !0, label: h.lang.blockquote.toolbar, command: "blockquote", toolbar: "blocks,10" }));
          } });
      }(), "use strict", function () {
        function c(c, a) {
          CKEDITOR.tools.extend(this, a, { editor: c, id: "cke-" + CKEDITOR.tools.getUniqueId(), area: c._.notificationArea });a.type || (this.type = "info");this.element = this._createElement();c.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element);
        }function h(c) {
          var a = this;this.editor = c;this.notifications = [];this.element = this._createElement();
          this._uiBuffer = CKEDITOR.tools.eventsBuffer(10, this._layout, this);this._changeBuffer = CKEDITOR.tools.eventsBuffer(500, this._layout, this);c.on("destroy", function () {
            a._removeListeners();a.element.remove();
          });
        }CKEDITOR.plugins.add("notification", { init: function (c) {
            function a(a) {
              var c = new CKEDITOR.dom.element("div");c.setStyles({ position: "fixed", "margin-left": "-9999px" });c.setAttributes({ "aria-live": "assertive", "aria-atomic": "true" });c.setText(a);CKEDITOR.document.getBody().append(c);setTimeout(function () {
                c.remove();
              }, 100);
            }c._.notificationArea = new h(c);c.showNotification = function (a, h, k) {
              var m, b;"progress" == h ? m = k : b = k;a = new CKEDITOR.plugins.notification(c, { message: a, type: h, progress: m, duration: b });a.show();return a;
            };c.on("key", function (e) {
              if (27 == e.data.keyCode) {
                var h = c._.notificationArea.notifications;h.length && (a(c.lang.notification.closed), h[h.length - 1].hide(), e.cancel());
              }
            });
          } });c.prototype = { show: function () {
            !1 !== this.editor.fire("notificationShow", { notification: this }) && (this.area.add(this), this._hideAfterTimeout());
          },
          update: function (c) {
            var a = !0;!1 === this.editor.fire("notificationUpdate", { notification: this, options: c }) && (a = !1);var e = this.element,
                h = e.findOne(".cke_notification_message"),
                k = e.findOne(".cke_notification_progress"),
                m = c.type;e.removeAttribute("role");c.progress && "progress" != this.type && (m = "progress");m && (e.removeClass(this._getClass()), e.removeAttribute("aria-label"), this.type = m, e.addClass(this._getClass()), e.setAttribute("aria-label", this.type), "progress" != this.type || k ? "progress" != this.type && k && k.remove() : (k = this._createProgressElement(), k.insertBefore(h)));void 0 !== c.message && (this.message = c.message, h.setHtml(this.message));void 0 !== c.progress && (this.progress = c.progress, k && k.setStyle("width", this._getPercentageProgress()));a && c.important && (e.setAttribute("role", "alert"), this.isVisible() || this.area.add(this));this.duration = c.duration;this._hideAfterTimeout();
          }, hide: function () {
            !1 !== this.editor.fire("notificationHide", { notification: this }) && this.area.remove(this);
          }, isVisible: function () {
            return 0 <= CKEDITOR.tools.indexOf(this.area.notifications, this);
          }, _createElement: function () {
            var c = this,
                a,
                e,
                h = this.editor.lang.common.close;a = new CKEDITOR.dom.element("div");a.addClass("cke_notification");a.addClass(this._getClass());a.setAttributes({ id: this.id, role: "alert", "aria-label": this.type });"progress" == this.type && a.append(this._createProgressElement());e = new CKEDITOR.dom.element("p");e.addClass("cke_notification_message");e.setHtml(this.message);a.append(e);e = CKEDITOR.dom.element.createFromHtml('\x3ca class\x3d"cke_notification_close" href\x3d"javascript:void(0)" title\x3d"' + h + '" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e');a.append(e);e.on("click", function () {
              c.editor.focus();c.hide();
            });return a;
          }, _getClass: function () {
            return "progress" == this.type ? "cke_notification_info" : "cke_notification_" + this.type;
          }, _createProgressElement: function () {
            var c = new CKEDITOR.dom.element("span");c.addClass("cke_notification_progress");c.setStyle("width", this._getPercentageProgress());return c;
          }, _getPercentageProgress: function () {
            return Math.round(100 * (this.progress || 0)) + "%";
          }, _hideAfterTimeout: function () {
            var c = this,
                a;this._hideTimeoutId && clearTimeout(this._hideTimeoutId);if ("number" == typeof this.duration) a = this.duration;else if ("info" == this.type || "success" == this.type) a = "number" == typeof this.editor.config.notification_duration ? this.editor.config.notification_duration : 5E3;a && (c._hideTimeoutId = setTimeout(function () {
              c.hide();
            }, a));
          } };h.prototype = { add: function (c) {
            this.notifications.push(c);this.element.append(c.element);1 == this.element.getChildCount() && (CKEDITOR.document.getBody().append(this.element), this._attachListeners());this._layout();
          }, remove: function (c) {
            var a = CKEDITOR.tools.indexOf(this.notifications, c);0 > a || (this.notifications.splice(a, 1), c.element.remove(), this.element.getChildCount() || (this._removeListeners(), this.element.remove()));
          }, _createElement: function () {
            var c = this.editor,
                a = c.config,
                e = new CKEDITOR.dom.element("div");e.addClass("cke_notifications_area");e.setAttribute("id", "cke_notifications_area_" + c.name);e.setStyle("z-index", a.baseFloatZIndex - 2);return e;
          }, _attachListeners: function () {
            var c = CKEDITOR.document.getWindow(),
                a = this.editor;c.on("scroll", this._uiBuffer.input);c.on("resize", this._uiBuffer.input);a.on("change", this._changeBuffer.input);a.on("floatingSpaceLayout", this._layout, this, null, 20);a.on("blur", this._layout, this, null, 20);
          }, _removeListeners: function () {
            var c = CKEDITOR.document.getWindow(),
                a = this.editor;c.removeListener("scroll", this._uiBuffer.input);c.removeListener("resize", this._uiBuffer.input);a.removeListener("change", this._changeBuffer.input);
            a.removeListener("floatingSpaceLayout", this._layout);a.removeListener("blur", this._layout);
          }, _layout: function () {
            function c() {
              a.setStyle("left", C(p + h.width - n - w));
            }var a = this.element,
                e = this.editor,
                h = e.ui.contentsElement.getClientRect(),
                k = e.ui.contentsElement.getDocumentPosition(),
                m,
                b,
                d = a.getClientRect(),
                f,
                n = this._notificationWidth,
                w = this._notificationMargin;f = CKEDITOR.document.getWindow();var z = f.getScrollPosition(),
                r = f.getViewPaneSize(),
                t = CKEDITOR.document.getBody(),
                u = t.getDocumentPosition(),
                C = CKEDITOR.tools.cssLength;
            n && w || (f = this.element.getChild(0), n = this._notificationWidth = f.getClientRect().width, w = this._notificationMargin = parseInt(f.getComputedStyle("margin-left"), 10) + parseInt(f.getComputedStyle("margin-right"), 10));e.toolbar && (m = e.ui.space(e.config.toolbarLocation), b = m.getClientRect());m && m.isVisible() && b.bottom > h.top && b.bottom < h.bottom - d.height ? a.setStyles({ position: "fixed", top: C(b.bottom) }) : 0 < h.top ? a.setStyles({ position: "absolute", top: C(k.y) }) : k.y + h.height - d.height > z.y ? a.setStyles({ position: "fixed", top: 0 }) : a.setStyles({ position: "absolute", top: C(k.y + h.height - d.height) });var p = "fixed" == a.getStyle("position") ? h.left : "static" != t.getComputedStyle("position") ? k.x - u.x : k.x;h.width < n + w ? k.x + n + w > z.x + r.width ? c() : a.setStyle("left", C(p)) : k.x + n + w > z.x + r.width ? a.setStyle("left", C(p)) : k.x + h.width / 2 + n / 2 + w > z.x + r.width ? a.setStyle("left", C(p - k.x + z.x + r.width - n - w)) : 0 > h.left + h.width - n - w ? c() : 0 > h.left + h.width / 2 - n / 2 ? a.setStyle("left", C(p - k.x + z.x)) : a.setStyle("left", C(p + h.width / 2 - n / 2 - w / 2));
          } };CKEDITOR.plugins.notification = c;
      }(), function () {
        var c = '\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"{hasArrowAriaHtml}{toggleAriaHtml}';CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"');
        CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var h = "";CKEDITOR.env.ie && (h = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var c = c + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"' + h + 'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"') + '\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_button_label" aria-hidden\x3d"false"\x3e{ariaShortcutSpace}{ariaShortcut}\x3c/span\x3e{arrowHtml}\x3c/a\x3e',
            g = CKEDITOR.addTemplate("buttonArrow", '\x3cspan class\x3d"cke_button_arrow"\x3e' + (CKEDITOR.env.hc ? "\x26#9660;" : "") + "\x3c/span\x3e"),
            a = CKEDITOR.addTemplate("button", c);CKEDITOR.plugins.add("button", { beforeInit: function (a) {
            a.ui.addHandler(CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler);
          } });CKEDITOR.UI_BUTTON = "button";CKEDITOR.ui.button = function (a) {
          CKEDITOR.tools.extend(this, a, { isToggle: a.isToggle || !1, title: a.label, click: a.click || function (c) {
              c.execCommand(a.command);
            } });this._ = {};
        };CKEDITOR.ui.button.handler = { create: function (a) {
            return new CKEDITOR.ui.button(a);
          } };CKEDITOR.ui.button.prototype = { render: function (c, h) {
            function k() {
              var a = c.mode;a && (a = this.modes[a] ? void 0 !== m[a] ? m[a] : CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, a = c.readOnly && !this.readOnly ? CKEDITOR.TRISTATE_DISABLED : a, this.setState(a), this.refresh && this.refresh());
            }var m = null,
                b = CKEDITOR.env,
                d = "",
                f = this.command,
                n,
                w,
                z,
                r = this._.id;r || (r = CKEDITOR.tools.getNextId(), this._.id = r);this._.editor = c;var t = { id: r, button: this, editor: c, focus: function () {
                CKEDITOR.document.getById(r).focus();
              }, execute: function () {
                this.button.click(c);
              }, attach: function (a) {
                this.button.attach(a);
              } },
                u = CKEDITOR.tools.addFunction(function (a) {
              if (t.onkey) return a = new CKEDITOR.dom.event(a), !1 !== t.onkey(t, a.getKeystroke());
            }),
                C = CKEDITOR.tools.addFunction(function (a) {
              var b;t.onfocus && (b = !1 !== t.onfocus(t, new CKEDITOR.dom.event(a)));return b;
            }),
                p = 0;t.clickFn = n = CKEDITOR.tools.addFunction(function () {
              p && (c.unlockSelection(1), p = 0);t.execute();b.iOS && c.focus();
            });this.modes ? (m = {}, c.on("beforeModeUnload", function () {
              c.mode && this._.state != CKEDITOR.TRISTATE_DISABLED && (m[c.mode] = this._.state);
            }, this), c.on("activeFilterChange", k, this), c.on("mode", k, this), !this.readOnly && c.on("readOnly", k, this)) : f && (f = c.getCommand(f)) && (f.on("state", function () {
              this.setState(f.state);
            }, this), d += f.state == CKEDITOR.TRISTATE_ON ? "on" : f.state == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off");var x;if (this.directional) c.on("contentDirChanged", function (a) {
              var b = CKEDITOR.document.getById(this._.id),
                  d = b.getFirst();a = a.data;a != c.lang.dir ? b.addClass("cke_" + a) : b.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style", CKEDITOR.skin.getIconStyle(x, "rtl" == a, this.icon, this.iconOffset));
            }, this);f ? (w = c.getCommandKeystroke(f)) && (z = CKEDITOR.tools.keystrokeToString(c.lang.common.keyboard, w)) : d += "off";w = this.name || this.command;var v = null,
                q = this.icon;x = w;this.icon && !/\./.test(this.icon) ? (x = this.icon, q = null) : (this.icon && (v = this.icon), CKEDITOR.env.hidpi && this.iconHiDpi && (v = this.iconHiDpi));v ? (CKEDITOR.skin.addIcon(v, v), q = null) : v = x;d = { id: r, name: w, iconName: x, label: this.label, cls: (this.hasArrow ? "cke_button_expandable " : "") + (this.className || ""), state: d, ariaDisabled: "disabled" == d ? "true" : "false", title: this.title + (z ? " (" + z.display + ")" : ""), ariaShortcutSpace: z ? "\x26nbsp;" : "", ariaShortcut: z ? c.lang.common.keyboardShortcut + " " + z.aria : "", titleJs: b.gecko && !b.hc ? "" : (this.title || "").replace("'", ""), hasArrow: "string" === typeof this.hasArrow && this.hasArrow || (this.hasArrow ? "true" : "false"), keydownFn: u, focusFn: C, clickFn: n, style: CKEDITOR.skin.getIconStyle(v, "rtl" == c.lang.dir, q, this.iconOffset), arrowHtml: this.hasArrow ? g.output() : "", hasArrowAriaHtml: this.hasArrow ? ' aria-expanded\x3d"false"' : "", toggleAriaHtml: this.isToggle ? 'aria-pressed\x3d"false"' : "" };a.output(d, h);if (this.onRender) this.onRender();return t;
          }, setState: function (a) {
            if (this._.state == a) return !1;this._.state = a;var c = CKEDITOR.document.getById(this._.id);return c ? (c.setState(a, "cke_button"), c.setAttribute("aria-disabled", a == CKEDITOR.TRISTATE_DISABLED), this.isToggle && !this.hasArrow && c.setAttribute("aria-pressed", a === CKEDITOR.TRISTATE_ON), !0) : !1;
          }, getState: function () {
            return this._.state;
          }, toFeature: function (a) {
            if (this._.feature) return this._.feature;var c = this;this.allowedContent || this.requiredContent || !this.command || (c = a.getCommand(this.command) || c);return this._.feature = c;
          } };CKEDITOR.ui.prototype.addButton = function (a, c) {
          this.add(a, CKEDITOR.UI_BUTTON, c);
        };
      }(), function () {
        function c(a) {
          function c() {
            for (var b = g(), d = CKEDITOR.tools.clone(a.config.toolbarGroups) || h(a), f = 0; f < d.length; f++) {
              var l = d[f];if ("/" != l) {
                "string" == typeof l && (l = d[f] = { name: l });var t,
                    u = l.groups;if (u) for (var C = 0; C < u.length; C++) t = u[C], (t = b[t]) && m(l, t);(t = b[l.name]) && m(l, t);
              }
            }return d;
          }function g() {
            var b = {},
                d,
                c,
                f;for (d in a.ui.items) c = a.ui.items[d], f = c.toolbar || "others", f = f.split(","), c = f[0], f = parseInt(f[1] || -1, 10), b[c] || (b[c] = []), b[c].push({ name: d, order: f });for (c in b) b[c] = b[c].sort(function (a, b) {
              return a.order == b.order ? 0 : 0 > b.order ? -1 : 0 > a.order ? 1 : a.order < b.order ? -1 : 1;
            });return b;
          }function m(b, c) {
            if (c.length) {
              b.items ? b.items.push(a.ui.create("-")) : b.items = [];for (var f; f = c.shift();) f = "string" == typeof f ? f : f.name, d && -1 != CKEDITOR.tools.indexOf(d, f) || (f = a.ui.create(f)) && a.addFeature(f) && b.items.push(f);
            }
          }function b(a) {
            var b = [],
                d,
                c,
                f;for (d = 0; d < a.length; ++d) c = a[d], f = {}, "/" == c ? b.push(c) : CKEDITOR.tools.isArray(c) ? (m(f, CKEDITOR.tools.clone(c)), b.push(f)) : c.items && (m(f, CKEDITOR.tools.clone(c.items)), f.name = c.name, b.push(f));return b;
          }var d = function (a) {
            return a && "string" === typeof a ? a.split(",") : a;
          }(a.config.removeButtons),
              f = a.config.toolbar;"string" == typeof f && (f = a.config["toolbar_" + f]);return a.toolbar = f ? b(f) : c();
        }function h(a) {
          return a._.toolbarGroups || (a._.toolbarGroups = [{ name: "document", groups: ["mode", "document", "doctools"] }, { name: "clipboard", groups: ["clipboard", "undo"] }, { name: "editing", groups: ["find", "selection", "spellchecker"] }, { name: "forms" }, "/", { name: "basicstyles", groups: ["basicstyles", "cleanup"] }, { name: "paragraph", groups: ["list", "indent", "blocks", "align", "bidi"] }, { name: "links" }, { name: "insert" }, "/", { name: "styles" }, { name: "colors" }, { name: "tools" }, { name: "others" }, { name: "about" }]);
        }var g = function () {
          this.toolbars = [];
        };g.prototype.focus = function () {
          for (var a = 0, c; c = this.toolbars[a++];) for (var g = 0, h; h = c.items[g++];) if (h.focus) {
            h.focus();return;
          }
        };var a = { modes: { wysiwyg: 1,
            source: 1 }, readOnly: 1, exec: function (a) {
            a.toolbox && (CKEDITOR.env.ie || CKEDITOR.env.air ? setTimeout(function () {
              a.toolbox.focus();
            }, 100) : a.toolbox.focus());
          } };CKEDITOR.plugins.add("toolbar", { requires: "button", init: function (e) {
            var h,
                k = function (a, b) {
              var d,
                  c = "rtl" == e.lang.dir,
                  g = e.config.toolbarGroupCycling,
                  w = c ? 37 : 39,
                  c = c ? 39 : 37,
                  g = void 0 === g || g;switch (b) {case 9:case CKEDITOR.SHIFT + 9:
                  for (; !d || !d.items.length;) if (d = 9 == b ? (d ? d.next : a.toolbar.next) || e.toolbox.toolbars[0] : (d ? d.previous : a.toolbar.previous) || e.toolbox.toolbars[e.toolbox.toolbars.length - 1], d.items.length) for (a = d.items[h ? d.items.length - 1 : 0]; a && !a.focus;) (a = h ? a.previous : a.next) || (d = 0);a && a.focus();return !1;case w:
                  d = a;do d = d.next, !d && g && (d = a.toolbar.items[0]); while (d && !d.focus);d ? d.focus() : k(a, 9);return !1;case 40:
                  return a.button && a.button.hasArrow ? a.execute() : k(a, 40 == b ? w : c), !1;case c:case 38:
                  d = a;do d = d.previous, !d && g && (d = a.toolbar.items[a.toolbar.items.length - 1]); while (d && !d.focus);d ? d.focus() : (h = 1, k(a, CKEDITOR.SHIFT + 9), h = 0);return !1;case 27:
                  return e.focus(), !1;case 13:case 32:
                  return a.execute(), !1;case CKEDITOR.ALT + 122:
                  return e.execCommand("elementsPathFocus"), !1;}return !0;
            };e.on("uiSpace", function (a) {
              if (a.data.space == e.config.toolbarLocation) {
                a.removeListener();e.toolbox = new g();var b = CKEDITOR.tools.getNextId(),
                    d = ['\x3cspan id\x3d"', b, '" class\x3d"cke_voice_label"\x3e', e.lang.toolbar.toolbars, "\x3c/span\x3e", '\x3cspan id\x3d"' + e.ui.spaceId("toolbox") + '" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"', b, '" onmousedown\x3d"return false;"\x3e'],
                    b = !1 !== e.config.toolbarStartupExpanded,
                    f,
                    h;e.config.toolbarCanCollapse && e.elementMode != CKEDITOR.ELEMENT_MODE_INLINE && d.push('\x3cspan class\x3d"cke_toolbox_main"' + (b ? "\x3e" : ' style\x3d"display:none"\x3e'));for (var l = e.toolbox.toolbars, z = c(e), r = z.length, t = 0; t < r; t++) {
                  var u,
                      C = 0,
                      p,
                      x = z[t],
                      v = "/" !== x && ("/" === z[t + 1] || t == r - 1),
                      q;if (x) if (f && (d.push("\x3c/span\x3e"), h = f = 0), "/" === x) d.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e');else {
                    q = x.items || x;for (var y = 0; y < q.length; y++) {
                      var A = q[y],
                          F;if (A) {
                        var B = function (a) {
                          a = a.render(e, d);G = C.items.push(a) - 1;0 < G && (a.previous = C.items[G - 1], a.previous.next = a);a.toolbar = C;a.onkey = k;
                        };if (A.type == CKEDITOR.UI_SEPARATOR) h = f && A;else {
                          F = !1 !== A.canGroup;if (!C) {
                            u = CKEDITOR.tools.getNextId();C = { id: u, items: [] };p = x.name && (e.lang.toolbar.toolbarGroups[x.name] || x.name);d.push('\x3cspan id\x3d"', u, '" class\x3d"cke_toolbar' + (v ? ' cke_toolbar_last"' : '"'), p ? ' aria-labelledby\x3d"' + u + '_label"' : "", ' role\x3d"toolbar"\x3e');p && d.push('\x3cspan id\x3d"', u, '_label" class\x3d"cke_voice_label"\x3e', p, "\x3c/span\x3e");d.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e');
                            var G = l.push(C) - 1;0 < G && (C.previous = l[G - 1], C.previous.next = C);
                          }F ? f || (d.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'), f = 1) : f && (d.push("\x3c/span\x3e"), f = 0);h && (B(h), h = 0);B(A);
                        }
                      }
                    }f && (d.push("\x3c/span\x3e"), h = f = 0);C && d.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e');
                  }
                }e.config.toolbarCanCollapse && d.push("\x3c/span\x3e");if (e.config.toolbarCanCollapse && e.elementMode != CKEDITOR.ELEMENT_MODE_INLINE) {
                  var E = CKEDITOR.tools.addFunction(function () {
                    e.execCommand("toolbarCollapse");
                  });
                  e.on("destroy", function () {
                    CKEDITOR.tools.removeFunction(E);
                  });e.addCommand("toolbarCollapse", { readOnly: 1, exec: function (a) {
                      var b = a.ui.space("toolbar_collapser"),
                          d = b.getPrevious(),
                          c = a.ui.space("contents"),
                          f = d.getParent(),
                          e = parseInt(c.$.style.height, 10),
                          g = f.$.offsetHeight,
                          h = b.hasClass("cke_toolbox_collapser_min");h ? (d.show(), b.removeClass("cke_toolbox_collapser_min"), b.setAttribute("title", a.lang.toolbar.toolbarCollapse)) : (d.hide(), b.addClass("cke_toolbox_collapser_min"), b.setAttribute("title", a.lang.toolbar.toolbarExpand));
                      b.getFirst().setText(h ? "▲" : "◀");c.setStyle("height", e - (f.$.offsetHeight - g) + "px");a.fire("resize", { outerHeight: a.container.$.offsetHeight, contentsHeight: c.$.offsetHeight, outerWidth: a.container.$.offsetWidth });
                    }, modes: { wysiwyg: 1, source: 1 } });e.setKeystroke(CKEDITOR.ALT + (CKEDITOR.env.ie || CKEDITOR.env.webkit ? 189 : 109), "toolbarCollapse");d.push('\x3ca title\x3d"' + (b ? e.lang.toolbar.toolbarCollapse : e.lang.toolbar.toolbarExpand) + '" id\x3d"' + e.ui.spaceId("toolbar_collapser") + '" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser');
                  b || d.push(" cke_toolbox_collapser_min");d.push('" onclick\x3d"CKEDITOR.tools.callFunction(' + E + ')"\x3e', '\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e', "\x3c/a\x3e");
                }d.push("\x3c/span\x3e");a.data.html += d.join("");
              }
            });e.on("destroy", function () {
              if (this.toolbox) {
                var a,
                    b = 0,
                    d,
                    c,
                    e;for (a = this.toolbox.toolbars; b < a.length; b++) for (c = a[b].items, d = 0; d < c.length; d++) e = c[d], e.clickFn && CKEDITOR.tools.removeFunction(e.clickFn), e.keyDownFn && CKEDITOR.tools.removeFunction(e.keyDownFn);
              }
            });e.on("uiReady", function () {
              var a = e.ui.space("toolbox");a && e.focusManager.add(a, 1);
            });e.addCommand("toolbarFocus", a);e.setKeystroke(CKEDITOR.ALT + 121, "toolbarFocus");e.ui.add("-", CKEDITOR.UI_SEPARATOR, {});e.ui.addHandler(CKEDITOR.UI_SEPARATOR, { create: function () {
                return { render: function (a, b) {
                    b.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e');return {};
                  } };
              } });
          } });CKEDITOR.ui.prototype.addToolbarGroup = function (a, c, g) {
          var m = h(this.editor),
              b = 0 === c;if (g) {
            if (g = CKEDITOR.tools.search(m, function (a) {
              return a.name == g;
            })) {
              !g.groups && (g.groups = []);if (c && (c = CKEDITOR.tools.indexOf(g.groups, c), 0 <= c)) {
                g.groups.splice(c + 1, 0, a);return;
              }b ? g.groups.splice(0, 0, a) : g.groups.push(a);return;
            }c = null;
          }c && (c = CKEDITOR.tools.indexOf(m, function (a) {
            return a.name == c;
          }));b ? m.splice(0, 0, a) : "number" == typeof c ? m.splice(c + 1, 0, { name: a }) : m.push(a);
        };
      }(), CKEDITOR.UI_SEPARATOR = "separator", CKEDITOR.config.toolbarLocation = "top", "use strict", function () {
        function c(a, b, d) {
          b.type || (b.type = "auto");if (d && !1 === a.fire("beforePaste", b) || !b.dataValue && b.dataTransfer.isEmpty()) return !1;
          b.dataValue || (b.dataValue = "");if (CKEDITOR.env.gecko && "drop" == b.method && a.toolbox) a.once("afterPaste", function () {
            a.toolbox.focus();a.focus();
          });return a.fire("paste", b);
        }function h(a) {
          function b() {
            var d = a.editable();if (CKEDITOR.plugins.clipboard.isCustomCopyCutSupported) {
              var c = function (b) {
                a.getSelection().isCollapsed() || (a.readOnly && "cut" == b.name || F.initPasteDataTransfer(b, a), b.data.preventDefault());
              };d.on("copy", c);d.on("cut", c);d.on("cut", function () {
                a.readOnly || a.extractSelectedHtml();
              }, null, null, 999);
            }d.on(F.mainPasteEvent, function (a) {
              "beforepaste" == F.mainPasteEvent && B || q(a);
            });"beforepaste" == F.mainPasteEvent && (d.on("paste", function (a) {
              G || (g(), a.data.preventDefault(), q(a), k("paste"));
            }), d.on("contextmenu", h, null, null, 0), d.on("beforepaste", function (a) {
              !a.data || a.data.$.ctrlKey || a.data.$.shiftKey || h();
            }, null, null, 0));d.on("beforecut", function () {
              !B && l(a);
            });var e;d.attachListener(CKEDITOR.env.ie ? d : a.document.getDocumentElement(), "mouseup", function () {
              e = setTimeout(y, 0);
            });a.on("destroy", function () {
              clearTimeout(e);
            });d.on("keyup", y);
          }function d(b) {
            return { type: b, canUndo: "cut" == b, startDisabled: !0, fakeKeystroke: "cut" == b ? CKEDITOR.CTRL + 88 : CKEDITOR.CTRL + 67, exec: function () {
                "cut" == this.type && l();var b;var d = this.type;if (CKEDITOR.env.ie) b = k(d);else try {
                  b = a.document.$.execCommand(d, !1, null);
                } catch (c) {
                  b = !1;
                }b || a.showNotification(a.lang.clipboard[this.type + "Error"]);return b;
              } };
          }function e() {
            return { canUndo: !1, async: !0, fakeKeystroke: CKEDITOR.CTRL + 86, exec: function (a, b) {
                function d(b, g) {
                  g = "undefined" !== typeof g ? g : !0;b ? (b.method = "paste", b.dataTransfer || (b.dataTransfer = F.initPasteDataTransfer()), c(a, b, g)) : e && !a._.forcePasteDialog && a.showNotification(k, "info", a.config.clipboard_notificationDuration);a._.forcePasteDialog = !1;a.fire("afterCommandExec", { name: "paste", command: f, returnValue: !!b });
                }b = "undefined" !== typeof b && null !== b ? b : {};var f = this,
                    e = "undefined" !== typeof b.notification ? b.notification : !0,
                    g = b.type,
                    h = CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard, a.getCommandKeystroke(this)),
                    k = "string" === typeof e ? e : a.lang.clipboard.pasteNotification.replace(/%1/, '\x3ckbd aria-label\x3d"' + h.aria + '"\x3e' + h.display + "\x3c/kbd\x3e"),
                    h = "string" === typeof b ? b : b.dataValue;g && !0 !== a.config.forcePasteAsPlainText && "allow-word" !== a.config.forcePasteAsPlainText ? a._.nextPasteType = g : delete a._.nextPasteType;"string" === typeof h ? d({ dataValue: h }) : a.getClipboardData(d);
              } };
          }function g() {
            G = 1;setTimeout(function () {
              G = 0;
            }, 100);
          }function h() {
            B = 1;setTimeout(function () {
              B = 0;
            }, 10);
          }function k(b) {
            var d = a.document,
                c = d.getBody(),
                e = !1,
                g = function () {
              e = !0;
            };c.on(b, g);7 < CKEDITOR.env.version ? d.$.execCommand(b) : d.$.selection.createRange().execCommand(b);c.removeListener(b, g);return e;
          }function l() {
            if (CKEDITOR.env.ie && !CKEDITOR.env.quirks) {
              var b = a.getSelection(),
                  d,
                  c,
                  e;b.getType() == CKEDITOR.SELECTION_ELEMENT && (d = b.getSelectedElement()) && (c = b.getRanges()[0], e = a.document.createText(""), e.insertBefore(d), c.setStartBefore(e), c.setEndAfter(d), b.selectRanges([c]), setTimeout(function () {
                d.getParent() && (e.remove(), b.selectElement(d));
              }, 0));
            }
          }function m(b, d) {
            var c = a.document,
                e = a.editable(),
                g = function (a) {
              a.cancel();
            },
                h;
            if (!c.getById("cke_pastebin")) {
              var k = a.getSelection(),
                  l = k.createBookmarks();CKEDITOR.env.ie && k.root.fire("selectionchange");var n = new CKEDITOR.dom.element(!CKEDITOR.env.webkit && !e.is("body") || CKEDITOR.env.ie ? "div" : "body", c);n.setAttributes({ id: "cke_pastebin", "data-cke-temp": "1" });var q = 0,
                  c = c.getWindow();CKEDITOR.env.webkit ? (e.append(n), n.addClass("cke_editable"), e.is("body") || (q = "static" != e.getComputedStyle("position") ? e : CKEDITOR.dom.element.get(e.$.offsetParent), q = q.getDocumentPosition().y)) : e.getAscendant(CKEDITOR.env.ie ? "body" : "html", 1).append(n);n.setStyles({ position: "absolute", top: c.getScrollPosition().y - q + 10 + "px", width: "1px", height: Math.max(1, c.getViewPaneSize().height - 20) + "px", overflow: "hidden", margin: 0, padding: 0 });CKEDITOR.env.safari && n.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "text"));(q = n.getParent().isReadOnly()) ? (n.setOpacity(0), n.setAttribute("contenteditable", !0)) : n.setStyle("ltr" == a.config.contentsLangDirection ? "left" : "right", "-10000px");a.on("selectionChange", g, null, null, 0);if (CKEDITOR.env.webkit || CKEDITOR.env.gecko) h = e.once("blur", g, null, null, -100);q && n.focus();q = new CKEDITOR.dom.range(n);q.selectNodeContents(n);var p = q.select();CKEDITOR.env.ie && (h = e.once("blur", function () {
                a.lockSelection(p);
              }));var v = CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function () {
                CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = v);h && h.removeListener();CKEDITOR.env.ie && e.focus();k.selectBookmarks(l);n.remove();var b;CKEDITOR.env.webkit && (b = n.getFirst()) && b.is && b.hasClass("Apple-style-span") && (n = b);a.removeListener("selectionChange", g);d(n.getHtml());
              }, 0);
            }
          }function x() {
            if ("paste" == F.mainPasteEvent) return a.fire("beforePaste", { type: "auto", method: "paste" }), !1;a.focus();g();var b = a.focusManager;b.lock();if (a.editable().fire(F.mainPasteEvent) && !k("paste")) return b.unlock(), !1;b.unlock();return !0;
          }function v(b) {
            if ("wysiwyg" == a.mode) switch (b.data.keyCode) {case CKEDITOR.CTRL + 86:case CKEDITOR.SHIFT + 45:
                b = a.editable();g();"paste" == F.mainPasteEvent && b.fire("beforepaste");break;case CKEDITOR.CTRL + 88:case CKEDITOR.SHIFT + 46:
                a.fire("saveSnapshot"), setTimeout(function () {
                  a.fire("saveSnapshot");
                }, 50);}
          }function q(b) {
            var d = { type: "auto", method: "paste", dataTransfer: F.initPasteDataTransfer(b) };d.dataTransfer.cacheData();var e = !1 !== a.fire("beforePaste", d);e && F.canClipboardApiBeTrusted(d.dataTransfer, a) ? (b.data.preventDefault(), setTimeout(function () {
              c(a, d);
            }, 0)) : m(b, function (b) {
              d.dataValue = b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig, "");e && c(a, d);
            });
          }function y() {
            if ("wysiwyg" == a.mode) {
              var b = A("paste");a.getCommand("cut").setState(A("cut"));
              a.getCommand("copy").setState(A("copy"));a.getCommand("paste").setState(b);a.fire("pasteState", b);
            }
          }function A(b) {
            var d = a.getSelection(),
                d = d && d.getRanges()[0];if ((a.readOnly || d && d.checkReadOnly()) && b in { paste: 1, cut: 1 }) return CKEDITOR.TRISTATE_DISABLED;if ("paste" == b) return CKEDITOR.TRISTATE_OFF;b = a.getSelection();d = b.getRanges();return b.getType() == CKEDITOR.SELECTION_NONE || 1 == d.length && d[0].collapsed ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF;
          }var F = CKEDITOR.plugins.clipboard,
              B = 0,
              G = 0;(function () {
            a.on("key", v);a.on("contentDom", b);a.on("selectionChange", y);if (a.contextMenu) {
              a.contextMenu.addListener(function () {
                return { cut: A("cut"), copy: A("copy"), paste: A("paste") };
              });var d = null;a.on("menuShow", function () {
                d && (d.removeListener(), d = null);var b = a.contextMenu.findItemByCommandName("paste");b && b.element && (d = b.element.on("touchend", function () {
                  a._.forcePasteDialog = !0;
                }));
              });
            }if (a.ui.addButton) a.once("instanceReady", function () {
              a._.pasteButtons && CKEDITOR.tools.array.forEach(a._.pasteButtons, function (b) {
                if (b = a.ui.get(b)) if (b = CKEDITOR.document.getById(b._.id)) b.on("touchend", function () {
                  a._.forcePasteDialog = !0;
                });
              });
            });
          })();(function () {
            function b(d, c, e, g, h) {
              var k = a.lang.clipboard[c];a.addCommand(c, e);a.ui.addButton && a.ui.addButton(d, { label: k, command: c, toolbar: "clipboard," + g });a.addMenuItems && a.addMenuItem(c, { label: k, command: c, group: "clipboard", order: h });
            }b("Cut", "cut", d("cut"), 10, 1);b("Copy", "copy", d("copy"), 20, 4);b("Paste", "paste", e(), 30, 8);a._.pasteButtons || (a._.pasteButtons = []);a._.pasteButtons.push("Paste");
          })();a.getClipboardData = function (b, d) {
            function c(a) {
              a.removeListener();a.cancel();d(a.data);
            }function e(a) {
              a.removeListener();a.cancel();d({ type: h, dataValue: a.data.dataValue, dataTransfer: a.data.dataTransfer, method: "paste" });
            }var g = !1,
                h = "auto";d || (d = b, b = null);a.on("beforePaste", function (a) {
              a.removeListener();g = !0;h = a.data.type;
            }, null, null, 1E3);a.on("paste", c, null, null, 0);!1 === x() && (a.removeListener("paste", c), a._.forcePasteDialog && g && a.fire("pasteDialog") ? (a.on("pasteDialogCommit", e), a.on("dialogHide", function (a) {
              a.removeListener();
              a.data.removeListener("pasteDialogCommit", e);a.data._.committed || d(null);
            })) : d(null));
          };
        }function g(a) {
          if (CKEDITOR.env.webkit) {
            if (!a.match(/^[^<]*$/g) && !a.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi)) return "html";
          } else if (CKEDITOR.env.ie) {
            if (!a.match(/^([^<]|<br( ?\/)?>)*$/gi) && !a.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi)) return "html";
          } else if (CKEDITOR.env.gecko) {
            if (!a.match(/^([^<]|<br( ?\/)?>)*$/gi)) return "html";
          } else return "html";return "htmlifiedtext";
        }function a(a, b) {
          function d(a) {
            return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e", ~~(a / 2)) + (1 == a % 2 ? "\x3cbr\x3e" : "");
          }b = b.replace(/(?!\u3000)\s+/g, " ").replace(/> +</g, "\x3e\x3c").replace(/<br ?\/>/gi, "\x3cbr\x3e");b = b.replace(/<\/?[A-Z]+>/g, function (a) {
            return a.toLowerCase();
          });if (b.match(/^[^<]$/)) return b;CKEDITOR.env.webkit && -1 < b.indexOf("\x3cdiv\x3e") && (b = b.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g, "\x3cbr\x3e").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g, "\x3cdiv\x3e\x3c/div\x3e"), b.match(/<div>(<br>|)<\/div>/) && (b = "\x3cp\x3e" + b.replace(/(<div>(<br>|)<\/div>)+/g, function (a) {
            return d(a.split("\x3c/div\x3e\x3cdiv\x3e").length + 1);
          }) + "\x3c/p\x3e"), b = b.replace(/<\/div><div>/g, "\x3cbr\x3e"), b = b.replace(/<\/?div>/g, ""));CKEDITOR.env.gecko && a.enterMode != CKEDITOR.ENTER_BR && (CKEDITOR.env.gecko && (b = b.replace(/^<br><br>$/, "\x3cbr\x3e")), -1 < b.indexOf("\x3cbr\x3e\x3cbr\x3e") && (b = "\x3cp\x3e" + b.replace(/(<br>){2,}/g, function (a) {
            return d(a.length / 4);
          }) + "\x3c/p\x3e"));return k(a, b);
        }function e(a) {
          function b() {
            var a = {},
                d;for (d in CKEDITOR.dtd) "$" != d.charAt(0) && "div" != d && "span" != d && (a[d] = 1);return a;
          }var d = {};return { get: function (c) {
              return "plain-text" == c ? d.plainText || (d.plainText = new CKEDITOR.filter(a, "br")) : "semantic-content" == c ? ((c = d.semanticContent) || (c = new CKEDITOR.filter(a, {}), c.allow({ $1: { elements: b(), attributes: !0, styles: !1, classes: !1 } }), c = d.semanticContent = c), c) : c ? new CKEDITOR.filter(a, c) : null;
            } };
        }function l(a, b, d) {
          b = CKEDITOR.htmlParser.fragment.fromHtml(b);var c = new CKEDITOR.htmlParser.basicWriter();d.applyTo(b, !0, !1, a.activeEnterMode);b.writeHtml(c);return c.getHtml();
        }
        function k(a, b) {
          a.enterMode == CKEDITOR.ENTER_BR ? b = b.replace(/(<\/p><p>)+/g, function (a) {
            return CKEDITOR.tools.repeat("\x3cbr\x3e", a.length / 7 * 2);
          }).replace(/<\/?p>/g, "") : a.enterMode == CKEDITOR.ENTER_DIV && (b = b.replace(/<(\/)?p>/g, "\x3c$1div\x3e"));return b;
        }function m(a) {
          a.data.preventDefault();a.data.$.dataTransfer.dropEffect = "none";
        }function b(a) {
          var b = CKEDITOR.plugins.clipboard;a.on("contentDom", function () {
            function d(b, e, g) {
              e.select();c(a, { dataTransfer: g, method: "drop" }, 1);g.sourceEditor.fire("saveSnapshot");
              g.sourceEditor.editable().extractHtmlFromRange(b);g.sourceEditor.getSelection().selectRanges([b]);g.sourceEditor.fire("saveSnapshot");
            }function e(d, g) {
              d.select();c(a, { dataTransfer: g, method: "drop" }, 1);b.resetDragDataTransfer();
            }function g(b, d, c) {
              var e = { $: b.data.$, target: b.data.getTarget() };d && (e.dragRange = d);c && (e.dropRange = c);!1 === a.fire(b.name, e) && b.data.preventDefault();
            }function h(a) {
              a.type != CKEDITOR.NODE_ELEMENT && (a = a.getParent());return a.getChildCount();
            }var k = a.editable(),
                l = CKEDITOR.plugins.clipboard.getDropTarget(a),
                m = a.ui.space("top"),
                x = a.ui.space("bottom");b.preventDefaultDropOnElement(m);b.preventDefaultDropOnElement(x);k.attachListener(l, "dragstart", g);k.attachListener(a, "dragstart", b.resetDragDataTransfer, b, null, 1);k.attachListener(a, "dragstart", function (d) {
              b.initDragDataTransfer(d, a);
            }, null, null, 2);k.attachListener(a, "dragstart", function () {
              var d = b.dragRange = a.getSelection().getRanges()[0];CKEDITOR.env.ie && 10 > CKEDITOR.env.version && (b.dragStartContainerChildCount = d ? h(d.startContainer) : null, b.dragEndContainerChildCount = d ? h(d.endContainer) : null);
            }, null, null, 100);k.attachListener(l, "dragend", g);k.attachListener(a, "dragend", b.initDragDataTransfer, b, null, 1);k.attachListener(a, "dragend", b.resetDragDataTransfer, b, null, 100);k.attachListener(l, "dragover", function (a) {
              if (CKEDITOR.env.edge) a.data.preventDefault();else {
                var b = a.data.getTarget();b && b.is && b.is("html") ? a.data.preventDefault() : CKEDITOR.env.ie && CKEDITOR.plugins.clipboard.isFileApiSupported && a.data.$.dataTransfer.types.contains("Files") && a.data.preventDefault();
              }
            });
            k.attachListener(l, "drop", function (d) {
              if (!d.data.$.defaultPrevented && (d.data.preventDefault(), !a.readOnly)) {
                var c = d.data.getTarget();if (!c.isReadOnly() || c.type == CKEDITOR.NODE_ELEMENT && c.is("html")) {
                  var c = b.getRangeAtDropPosition(d, a),
                      e = b.dragRange;c && g(d, e, c);
                }
              }
            }, null, null, 9999);k.attachListener(a, "drop", b.initDragDataTransfer, b, null, 1);k.attachListener(a, "drop", function (c) {
              if (c = c.data) {
                var g = c.dropRange,
                    h = c.dragRange,
                    k = c.dataTransfer;k.getTransferType(a) == CKEDITOR.DATA_TRANSFER_INTERNAL ? setTimeout(function () {
                  b.internalDrop(h, g, k, a);
                }, 0) : k.getTransferType(a) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ? d(h, g, k) : e(g, k);
              }
            }, null, null, 9999);
          });
        }var d;CKEDITOR.plugins.add("clipboard", { requires: "dialog,notification,toolbar", _supportedFileMatchers: [], init: function (d) {
            function c(a) {
              return d.config.clipboard_handleImages ? -1 !== CKEDITOR.tools.indexOf(["image/png", "image/jpeg", "image/gif"], a.type) : !1;
            }function k(a) {
              return CKEDITOR.tools.array.some(d.plugins.clipboard._supportedFileMatchers, function (b) {
                return b(a);
              });
            }function m(a) {
              a.length && (a = CKEDITOR.tools.array.unique(a), a = CKEDITOR.tools.array.filter(a, function (a) {
                return !!CKEDITOR.tools.trim(a);
              }), a = r(a.join(", ")), d.showNotification(a, "info", d.config.clipboard_notificationDuration));
            }function r(a) {
              return a ? d.lang.clipboard.fileFormatNotSupportedNotification.replace(/\${formats\}/g, "\x3cem\x3e" + a + "\x3c/em\x3e") : d.lang.clipboard.fileWithoutFormatNotSupportedNotification;
            }function t(a, b) {
              return CKEDITOR.env.ie && a.data.fileTransferCancel || !(CKEDITOR.env.ie || b && x !== b.id) ? !1 : b.isFileTransfer() && 1 === b.getFilesCount();
            }var u,
                C = e(d);d.config.forcePasteAsPlainText ? u = "plain-text" : d.config.pasteFilter ? u = d.config.pasteFilter : !CKEDITOR.env.webkit || "pasteFilter" in d.config || (u = "semantic-content");d.pasteFilter = C.get(u);h(d);b(d);CKEDITOR.dialog.add("paste", CKEDITOR.getUrl(this.path + "dialogs/paste.js"));var p = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || CKEDITOR.plugins.clipboard.isFileApiSupported,
                x;CKEDITOR.plugins.clipboard.addFileMatcher(d, c);d.on("paste", function (a) {
              if (p) {
                var b = a.data;
                a = b.dataTransfer;if (!b.dataValue) {
                  for (var b = [], d = 0; d < a.getFilesCount(); d++) {
                    var c = a.getFile(d);k(c) || b.push(c.type);
                  }m(b);
                }
              }
            }, null, null, 1);d.on("paste", function (a) {
              if (p && d.config.clipboard_handleImages) {
                var b = a.data,
                    e = b.dataTransfer;if (!b.dataValue && t(a, e) && (e = e.getFile(0), c(e))) {
                  var g = new FileReader();g.addEventListener("load", function () {
                    a.data.dataValue = '\x3cimg src\x3d"' + g.result + '" /\x3e';d.fire("paste", a.data);
                  }, !1);g.addEventListener("abort", function () {
                    CKEDITOR.env.ie && (a.data.fileTransferCancel = !0);d.fire("paste", a.data);
                  }, !1);g.addEventListener("error", function () {
                    CKEDITOR.env.ie && (a.data.fileTransferCancel = !0);d.fire("paste", a.data);
                  }, !1);g.readAsDataURL(e);x = b.dataTransfer.id;a.stop();
                }
              }
            }, null, null, 1);d.on("paste", function (a) {
              a.data.dataTransfer || (a.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer());if (!a.data.dataValue) {
                var b = a.data.dataTransfer,
                    c = b.getData("text/html");if (c) a.data.dataValue = c, a.data.type = "html";else if (c = b.getData("text/plain")) a.data.dataValue = d.editable().transformPlainTextToHtml(c), a.data.type = "text";
              }
            }, null, null, 1);d.on("paste", function (a) {
              var b = a.data.dataValue,
                  d = CKEDITOR.dtd.$block;-1 < b.indexOf("Apple-") && (b = b.replace(/<span class="Apple-converted-space">&nbsp;<\/span>/gi, " "), "html" != a.data.type && (b = b.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi, function (a, b) {
                return b.replace(/\t/g, "\x26nbsp;\x26nbsp; \x26nbsp;");
              })), -1 < b.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e') && (a.data.startsWithEOL = 1, a.data.preSniffing = "html", b = b.replace(/<br class="Apple-interchange-newline">/, "")), b = b.replace(/(<[^>]+) class="Apple-[^"]*"/gi, "$1"));if (b.match(/^<[^<]+cke_(editable|contents)/i)) {
                var c,
                    f,
                    e = new CKEDITOR.dom.element("div");for (e.setHtml(b); 1 == e.getChildCount() && (c = e.getFirst()) && c.type == CKEDITOR.NODE_ELEMENT && (c.hasClass("cke_editable") || c.hasClass("cke_contents"));) e = f = c;f && (b = f.getHtml().replace(/<br>$/i, ""));
              }CKEDITOR.env.ie ? b = b.replace(/^&nbsp;(?: |\r\n)?<(\w+)/g, function (b, c) {
                return c.toLowerCase() in d ? (a.data.preSniffing = "html", "\x3c" + c) : b;
              }) : CKEDITOR.env.webkit ? b = b.replace(/<\/(\w+)><div><br><\/div>$/, function (b, c) {
                return c in d ? (a.data.endsWithEOL = 1, "\x3c/" + c + "\x3e") : b;
              }) : CKEDITOR.env.gecko && (b = b.replace(/(\s)<br>$/, "$1"));a.data.dataValue = b;
            }, null, null, 3);d.on("paste", function (b) {
              b = b.data;var c = d._.nextPasteType || b.type,
                  e = b.dataValue,
                  h,
                  k = d.config.clipboard_defaultContentType || "html",
                  m = b.dataTransfer.getTransferType(d) == CKEDITOR.DATA_TRANSFER_EXTERNAL,
                  n = !0 === d.config.forcePasteAsPlainText;h = "html" == c || "html" == b.preSniffing ? "html" : g(e);delete d._.nextPasteType;"htmlifiedtext" == h && (e = a(d.config, e));
              if ("text" == c && "html" == h) e = l(d, e, C.get("plain-text"));else if (m && d.pasteFilter && !b.dontFilter || n) e = l(d, e, d.pasteFilter);b.startsWithEOL && (e = '\x3cbr data-cke-eol\x3d"1"\x3e' + e);b.endsWithEOL && (e += '\x3cbr data-cke-eol\x3d"1"\x3e');"auto" == c && (c = "html" == h || "html" == k ? "html" : "text");b.type = c;b.dataValue = e;delete b.preSniffing;delete b.startsWithEOL;delete b.endsWithEOL;
            }, null, null, 6);d.on("paste", function (a) {
              a = a.data;a.dataValue && (d.insertHtml(a.dataValue, a.type, a.range), setTimeout(function () {
                d.fire("afterPaste");
              }, 0));
            }, null, null, 1E3);d.on("pasteDialog", function (a) {
              setTimeout(function () {
                d.openDialog("paste", a.data);
              }, 0);
            });
          } });CKEDITOR.plugins.clipboard = { addFileMatcher: function (a, b) {
            a.plugins.clipboard._supportedFileMatchers.push(b);
          }, isCustomCopyCutSupported: CKEDITOR.env.ie && 16 > CKEDITOR.env.version || CKEDITOR.env.iOS && 605 > CKEDITOR.env.version ? !1 : !0, isCustomDataTypesSupported: !CKEDITOR.env.ie || 16 <= CKEDITOR.env.version, isFileApiSupported: !CKEDITOR.env.ie || 9 < CKEDITOR.env.version, mainPasteEvent: CKEDITOR.env.ie && !CKEDITOR.env.edge ? "beforepaste" : "paste", addPasteButton: function (a, b, d) {
            a.ui.addButton && (a.ui.addButton(b, d), a._.pasteButtons || (a._.pasteButtons = []), a._.pasteButtons.push(b));
          }, canClipboardApiBeTrusted: function (a, b) {
            return a.getTransferType(b) != CKEDITOR.DATA_TRANSFER_EXTERNAL || CKEDITOR.env.chrome && !a.isEmpty() || CKEDITOR.env.gecko && (a.getData("text/html") || a.getFilesCount()) || CKEDITOR.env.safari && 603 <= CKEDITOR.env.version && !CKEDITOR.env.iOS || CKEDITOR.env.iOS && 605 <= CKEDITOR.env.version || CKEDITOR.env.edge && 16 <= CKEDITOR.env.version ? !0 : !1;
          }, getDropTarget: function (a) {
            var b = a.editable();return CKEDITOR.env.ie && 9 > CKEDITOR.env.version || b.isInline() ? b : a.document;
          }, fixSplitNodesAfterDrop: function (a, b, d, c) {
            function e(a, d, c) {
              var f = a;f.type == CKEDITOR.NODE_TEXT && (f = a.getParent());if (f.equals(d) && c != d.getChildCount()) return a = b.startContainer.getChild(b.startOffset - 1), d = b.startContainer.getChild(b.startOffset), a && a.type == CKEDITOR.NODE_TEXT && d && d.type == CKEDITOR.NODE_TEXT && (c = a.getLength(), a.setText(a.getText() + d.getText()), d.remove(), b.setStart(a, c), b.collapse(!0)), !0;
            }var g = b.startContainer;"number" == typeof c && "number" == typeof d && g.type == CKEDITOR.NODE_ELEMENT && (e(a.startContainer, g, d) || e(a.endContainer, g, c));
          }, isDropRangeAffectedByDragRange: function (a, b) {
            var d = b.startContainer,
                c = b.endOffset;return a.endContainer.equals(d) && a.endOffset <= c || a.startContainer.getParent().equals(d) && a.startContainer.getIndex() < c || a.endContainer.getParent().equals(d) && a.endContainer.getIndex() < c ? !0 : !1;
          }, internalDrop: function (a, b, d, e) {
            var g = CKEDITOR.plugins.clipboard,
                h = e.editable(),
                k,
                l;e.fire("saveSnapshot");e.fire("lockSnapshot", { dontUpdate: 1 });CKEDITOR.env.ie && 10 > CKEDITOR.env.version && this.fixSplitNodesAfterDrop(a, b, g.dragStartContainerChildCount, g.dragEndContainerChildCount);(l = this.isDropRangeAffectedByDragRange(a, b)) || (k = a.createBookmark(!1));g = b.clone().createBookmark(!1);l && (k = a.createBookmark(!1));a = k.startNode;b = k.endNode;l = g.startNode;b && a.getPosition(l) & CKEDITOR.POSITION_PRECEDING && b.getPosition(l) & CKEDITOR.POSITION_FOLLOWING && l.insertBefore(a);a = e.createRange();
            a.moveToBookmark(k);h.extractHtmlFromRange(a, 1);b = e.createRange();g.startNode.getCommonAncestor(h) || (g = e.getSelection().createBookmarks()[0]);b.moveToBookmark(g);c(e, { dataTransfer: d, method: "drop", range: b }, 1);e.fire("unlockSnapshot");
          }, getRangeAtDropPosition: function (a, b) {
            var d = a.data.$,
                c = d.clientX,
                e = d.clientY,
                g = b.getSelection(!0).getRanges()[0],
                h = b.createRange();if (a.data.testRange) return a.data.testRange;if (document.caretRangeFromPoint && b.document.$.caretRangeFromPoint(c, e)) d = b.document.$.caretRangeFromPoint(c, e), h.setStart(CKEDITOR.dom.node(d.startContainer), d.startOffset), h.collapse(!0);else if (d.rangeParent) h.setStart(CKEDITOR.dom.node(d.rangeParent), d.rangeOffset), h.collapse(!0);else {
              if (CKEDITOR.env.ie && 8 < CKEDITOR.env.version && g && b.editable().hasFocus) return g;if (document.body.createTextRange) {
                b.focus();d = b.document.getBody().$.createTextRange();try {
                  for (var k = !1, l = 0; 20 > l && !k; l++) {
                    if (!k) try {
                      d.moveToPoint(c, e - l), k = !0;
                    } catch (m) {}if (!k) try {
                      d.moveToPoint(c, e + l), k = !0;
                    } catch (v) {}
                  }if (k) {
                    var q = "cke-temp-" + new Date().getTime();
                    d.pasteHTML('\x3cspan id\x3d"' + q + '"\x3e​\x3c/span\x3e');var y = b.document.getById(q);h.moveToPosition(y, CKEDITOR.POSITION_BEFORE_START);y.remove();
                  } else {
                    var A = b.document.$.elementFromPoint(c, e),
                        F = new CKEDITOR.dom.element(A),
                        B;if (F.equals(b.editable()) || "html" == F.getName()) return g && g.startContainer && !g.startContainer.equals(b.editable()) ? g : null;B = F.getClientRect();c < B.left ? h.setStartAt(F, CKEDITOR.POSITION_AFTER_START) : h.setStartAt(F, CKEDITOR.POSITION_BEFORE_END);h.collapse(!0);
                  }
                } catch (G) {
                  return null;
                }
              } else return null;
            }return h;
          },
          initDragDataTransfer: function (a, b) {
            var d = a.data.$ ? a.data.$.dataTransfer : null,
                c = new this.dataTransfer(d, b);"dragstart" === a.name && c.storeId();d ? this.dragData && c.id == this.dragData.id ? c = this.dragData : this.dragData = c : this.dragData ? c = this.dragData : this.dragData = c;a.data.dataTransfer = c;
          }, resetDragDataTransfer: function () {
            this.dragData = null;
          }, initPasteDataTransfer: function (a, b) {
            if (this.isCustomCopyCutSupported) {
              if (a && a.data && a.data.$) {
                var d = a.data.$.clipboardData,
                    c = new this.dataTransfer(d, b);"copy" !== a.name && "cut" !== a.name || c.storeId();this.copyCutData && c.id == this.copyCutData.id ? (c = this.copyCutData, c.$ = d) : this.copyCutData = c;return c;
              }return new this.dataTransfer(null, b);
            }return new this.dataTransfer(CKEDITOR.env.edge && a && a.data.$ && a.data.$.clipboardData || null, b);
          }, preventDefaultDropOnElement: function (a) {
            a && a.on("dragover", m);
          } };d = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? "cke/id" : "Text";CKEDITOR.plugins.clipboard.dataTransfer = function (a, b) {
          a && (this.$ = a);this._ = { metaRegExp: /^<meta.*?>/i, fragmentRegExp: /\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g,
            types: [], data: {}, files: [], nativeHtmlCache: "", normalizeType: function (a) {
              a = a.toLowerCase();return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : "files" === a ? "Files" : a;
            } };this._.fallbackDataTransfer = new CKEDITOR.plugins.clipboard.fallbackDataTransfer(this);this.id = this.getData(d);this.id || (this.id = "Text" == d ? "" : "cke-" + CKEDITOR.tools.getUniqueId());b && (this.sourceEditor = b, this.setData("text/html", b.getSelectedHtml(1)), "Text" == d || this.getData("text/plain") || this.setData("text/plain", b.getSelection().getSelectedText()));
        };
        CKEDITOR.DATA_TRANSFER_INTERNAL = 1;CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2;CKEDITOR.DATA_TRANSFER_EXTERNAL = 3;CKEDITOR.plugins.clipboard.dataTransfer.prototype = { getData: function (a, b) {
            a = this._.normalizeType(a);var d = "text/html" == a && b ? this._.nativeHtmlCache : this._.data[a];if (void 0 === d || null === d || "" === d) {
              if (this._.fallbackDataTransfer.isRequired()) d = this._.fallbackDataTransfer.getData(a, b);else try {
                d = this.$.getData(a) || "";
              } catch (c) {
                d = "";
              }"text/html" != a || b || (d = this._stripHtml(d));
            }"Text" == a && CKEDITOR.env.gecko && this.getFilesCount() && "file://" == d.substring(0, 7) && (d = "");if ("string" === typeof d) var e = d.indexOf("\x3c/html\x3e"),
                d = -1 !== e ? d.substring(0, e + 7) : d;return d;
          }, setData: function (a, b) {
            a = this._.normalizeType(a);"text/html" == a ? (this._.data[a] = this._stripHtml(b), this._.nativeHtmlCache = b) : this._.data[a] = b;if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || "URL" == a || "Text" == a) if ("Text" == d && "Text" == a && (this.id = b), this._.fallbackDataTransfer.isRequired()) this._.fallbackDataTransfer.setData(a, b);else try {
              this.$.setData(a, b);
            } catch (c) {}
          }, storeId: function () {
            "Text" !== d && this.setData(d, this.id);
          }, getTransferType: function (a) {
            return this.sourceEditor ? this.sourceEditor == a ? CKEDITOR.DATA_TRANSFER_INTERNAL : CKEDITOR.DATA_TRANSFER_CROSS_EDITORS : CKEDITOR.DATA_TRANSFER_EXTERNAL;
          }, cacheData: function () {
            function a(d) {
              d = b._.normalizeType(d);var c = b.getData(d);"text/html" == d && (b._.nativeHtmlCache = b.getData(d, !0), c = b._stripHtml(c));c && (b._.data[d] = c);b._.types.push(d);
            }if (this.$) {
              var b = this,
                  d,
                  c,
                  e;if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) {
                if (this.$.types) for (d = 0; d < this.$.types.length; d++) a(this.$.types[d]);
              } else a("Text"), a("URL");c = this._getImageFromClipboard();if ((e = this.$ && this.$.files || null) || c) {
                this._.files = [];if (e && e.length) for (d = 0; d < e.length; d++) this._.files.push(e[d]);0 === this._.files.length && c && this._.files.push(c);
              }
            }
          }, getFilesCount: function () {
            if (this._.files.length) return this._.files.length;var a = this.$ && this.$.files || null;return a && a.length ? a.length : this._getImageFromClipboard() ? 1 : 0;
          }, getFile: function (a) {
            if (this._.files.length) return this._.files[a];
            var b = this.$ && this.$.files || null;return b && b.length ? b[a] : 0 === a ? this._getImageFromClipboard() : void 0;
          }, isFileTransfer: function () {
            var a = this.getTypes(),
                a = CKEDITOR.tools.array.filter(a, function (a) {
              return "application/x-moz-file" !== a;
            });return 1 === a.length && "files" === a[0].toLowerCase();
          }, isEmpty: function () {
            var a = {},
                b;if (this.getFilesCount()) return !1;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(this._.data), function (b) {
              a[b] = 1;
            });if (this.$) if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) {
              if (this.$.types) for (var c = 0; c < this.$.types.length; c++) a[this.$.types[c]] = 1;
            } else a.Text = 1, a.URL = 1;"Text" != d && (a[d] = 0);for (b in a) if (a[b] && "" !== this.getData(b)) return !1;return !0;
          }, getTypes: function () {
            return 0 < this._.types.length ? this._.types : this.$ && this.$.types ? [].slice.call(this.$.types) : [];
          }, _getImageFromClipboard: function () {
            var a;try {
              if (this.$ && this.$.items && this.$.items[0] && (a = this.$.items[0].getAsFile()) && a.type) return a;
            } catch (b) {}
          }, _stripHtml: function (a) {
            function b(a) {
              var d = new CKEDITOR.htmlParser(),
                  c,
                  f;d.onTagOpen = function (a) {
                "body" === a && (c = d._.htmlPartsRegex.lastIndex);
              };d.onTagClose = function (a) {
                "body" === a && (f = d._.htmlPartsRegex.lastIndex);
              };d.parse(a);return "number" !== typeof c || "number" !== typeof f ? a : a.substring(c, f).replace(/<\/body\s*>$/gi, "");
            }a && a.length && (a = b(a), a = a.replace(this._.metaRegExp, ""), a = a.replace(this._.fragmentRegExp, ""));return a;
          } };CKEDITOR.plugins.clipboard.fallbackDataTransfer = function (a) {
          this._dataTransfer = a;this._customDataFallbackType = "text/html";
        };CKEDITOR.plugins.clipboard.fallbackDataTransfer._isCustomMimeTypeSupported = null;CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes = [];CKEDITOR.plugins.clipboard.fallbackDataTransfer.prototype = { isRequired: function () {
            var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer,
                b = this._dataTransfer.$;if (null === a._isCustomMimeTypeSupported) if (b) {
              a._isCustomMimeTypeSupported = !1;if (CKEDITOR.env.edge && 17 <= CKEDITOR.env.version) return !0;try {
                b.setData("cke/mimetypetest", "cke test value"), a._isCustomMimeTypeSupported = "cke test value" === b.getData("cke/mimetypetest"), b.clearData("cke/mimetypetest");
              } catch (d) {}
            } else return !1;
            return !a._isCustomMimeTypeSupported;
          }, getData: function (a, b) {
            var d = this._getData(this._customDataFallbackType, !0);if (b) return d;var d = this._extractDataComment(d),
                c = null,
                c = a === this._customDataFallbackType ? d.content : d.data && d.data[a] ? d.data[a] : this._getData(a, !0);return null !== c ? c : "";
          }, setData: function (a, b) {
            var d = a === this._customDataFallbackType;d && (b = this._applyDataComment(b, this._getFallbackTypeData()));var c = b,
                e = this._dataTransfer.$;try {
              e.setData(a, c), d && (this._dataTransfer._.nativeHtmlCache = c);
            } catch (g) {
              if (this._isUnsupportedMimeTypeError(g)) {
                d = CKEDITOR.plugins.clipboard.fallbackDataTransfer;-1 === CKEDITOR.tools.indexOf(d._customTypes, a) && d._customTypes.push(a);var d = this._getFallbackTypeContent(),
                    h = this._getFallbackTypeData();h[a] = c;try {
                  c = this._applyDataComment(d, h), e.setData(this._customDataFallbackType, c), this._dataTransfer._.nativeHtmlCache = c;
                } catch (k) {
                  c = "";
                }
              }
            }return c;
          }, _getData: function (a, b) {
            var d = this._dataTransfer._.data;if (!b && d[a]) return d[a];try {
              return this._dataTransfer.$.getData(a);
            } catch (c) {
              return null;
            }
          }, _getFallbackTypeContent: function () {
            var a = this._dataTransfer._.data[this._customDataFallbackType];a || (a = this._extractDataComment(this._getData(this._customDataFallbackType, !0)).content);return a;
          }, _getFallbackTypeData: function () {
            var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes,
                b = this._extractDataComment(this._getData(this._customDataFallbackType, !0)).data || {},
                d = this._dataTransfer._.data;CKEDITOR.tools.array.forEach(a, function (a) {
              void 0 !== d[a] ? b[a] = d[a] : void 0 !== b[a] && (b[a] = b[a]);
            }, this);return b;
          }, _isUnsupportedMimeTypeError: function (a) {
            return a.message && -1 !== a.message.search(/element not found/gi);
          }, _extractDataComment: function (a) {
            var b = { data: null, content: a || "" };if (a && 16 < a.length) {
              var d;(d = /\x3c!--cke-data:(.*?)--\x3e/g.exec(a)) && d[1] && (b.data = JSON.parse(decodeURIComponent(d[1])), b.content = a.replace(d[0], ""));
            }return b;
          }, _applyDataComment: function (a, b) {
            var d = "";b && CKEDITOR.tools.object.keys(b).length && (d = "\x3c!--cke-data:" + encodeURIComponent(JSON.stringify(b)) + "--\x3e");return d + (a && a.length ? a : "");
          } };
      }(), CKEDITOR.config.clipboard_notificationDuration = 1E4, CKEDITOR.config.clipboard_handleImages = !0, function () {
        var c = !1;CKEDITOR.plugins.add("codemirror", { _addTabKeyMessage: function (c, a, e) {
            var h = document.createElement("div");a = e ? a.lang.codemirror.disableTabKeyUsing : a.lang.codemirror.enableTabKeyUsing;a = '\x3cdiv class\x3d"keyboard-message popover px-2 py-1" style\x3d"left:auto; right: 4px; top:4px"\x3e\x3cspan class\x3d"c-kbd-sm"\x3e' + a;a += "\x3c/span\x3e";a += '\x3ckbd class\x3d"c-kbd c-kbd-light c-kbd-sm"\x3e';a += '\x3ckbd class\x3d"c-kbd"\x3eCtrl\x3c/kbd\x3e';
            a += '\x3cspan class\x3d"c-kbd-separator"\x3e+\x3c/span\x3e';a += '\x3ckbd class\x3d"c-kbd"\x3eM\x3c/kbd\x3e';a += "\x3c/kbd\x3e";a += "\x3c/div\x3e";h.innerHTML = a;c.getWrapperElement().appendChild(h);
          }, _removeTabKeyMessage: function (c) {
            (c = c.getWrapperElement().querySelector(".keyboard-message")) && c.parentElement.removeChild(c);
          }, _createCodeMirrorEditor: function (c) {
            var a = this;c.addMode("source", function (e) {
              var l = this,
                  k = c.ui.space("contents") || c.ui.contentsElement,
                  m = k.getDocument().createElement("textarea");
              k.append(m);l.codeMirrorEditor = CodeMirror.fromTextArea(m.$, { lineNumbers: !0, lineWrapping: !0, mode: "text/html", extraKeys: { "Ctrl-M": function (b) {
                    var d = b.state.keyMaps.every(function (a) {
                      return "tabKey" !== a.name;
                    });a._removeTabKeyMessage(b);a._addTabKeyMessage(b, c, !d);d ? b.addKeyMap({ "Shift-Tab": !1, Tab: !1, name: "tabKey" }) : b.removeKeyMap("tabKey");
                  } } });k = c.getData(1);m = c.editable(new h(c, m));m.setData(k);l.codeMirrorEditor.setValue(k);l.codeMirrorEditor.getWrapperElement().classList.add("cke_enable_context_menu");
              m = m.getParent().getClientSize();m.height && l.codeMirrorEditor.setSize(null, m.height);l.codeMirrorEditor.on("change", a._handleCodeMirrorChange.bind(l, c, k));c.on("resize", a._handleEditorResize.bind(l));c.on("dataReady", function (a) {
                a = a.data;var d = l.codeMirrorEditor.getValue();a && a !== d && l.codeMirrorEditor.setValue(a);
              });c.fire("ariaWidget", this);l.codeMirrorEditor.on("focus", function (b) {
                b.state.keyMaps.every(function (a) {
                  return "tabKey" !== a.name;
                }) && b.addKeyMap({ "Shift-Tab": !1, Tab: !1, name: "tabKey" });a._addTabKeyMessage(b, c, !1);
              });l.codeMirrorEditor.on("blur", function () {
                a._removeTabKeyMessage(l.codeMirrorEditor);
              });e();
            });
          }, _handleCodeMirrorChange: function (c, a) {
            var e = this.codeMirrorEditor.getValue();e !== a && c.setData(e);
          }, _handleEditorResize: function (c) {
            this.codeMirrorEditor.setSize(null, c.data.contentsHeight);
          }, hidpi: !0, icons: "source,source-rtl", init: function (g) {
            var a = this;if (!g.plugins.detectConflict("codemirror", ["sourcearea"])) {
              c || (CKEDITOR.document.appendStyleSheet(this.path + "skins/default.css"), CKEDITOR.document.appendStyleSheet(this.path + "vendors/vendors.css"), c = !0);CKEDITOR.scriptLoader.load(this.path + "vendors/vendors.js", function () {
                a._createCodeMirrorEditor(g);
              });g.addCommand("codemirror", CKEDITOR.plugins.codemirror.commands.source);var e = { state: CKEDITOR.TRISTATE_OFF };g.balloonToolbars || (e.modes = { source: 1, wysiwyg: 0 });g.addCommand("codemirrordialog", CKEDITOR.tools.extend(new CKEDITOR.dialogCommand("codemirrordialog"), e));CKEDITOR.dialog.add("codemirrordialog", this.path + "dialogs/codemirrordialog.js");g.ui.addButton && (g.ui.addButton("Source", { label: g.lang.codemirror.source, command: "codemirror", toolbar: "mode,10" }), g.ui.addButton("Expand", { label: g.lang.common.preview, command: "codemirrordialog", toolbar: "mode,11" }));g.on("mode", function () {
                g.getCommand("codemirror").setState("source" === g.mode ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
              });
            }
          } });var h = CKEDITOR.tools.createClass({ base: CKEDITOR.editable, proto: { setData: function (c) {
              this.setValue(c);this.status = "ready";this.editor.fire("dataReady", c);
            }, getData: function () {
              return this.getValue();
            }, insertHtml: function () {},
            insertElement: function () {}, insertText: function () {}, setReadOnly: function (c) {
              this[(c ? "set" : "remove") + "Attribute"]("readOnly", "readonly");
            }, detach: function () {
              h.baseProto.detach.call(this);this.clearCustomData();this.remove();
            } } });
      }(), CKEDITOR.plugins.codemirror = { commands: { source: { modes: { source: 1, wysiwyg: 1 }, editorFocus: !0, exec: function (c) {
              "wysiwyg" === c.mode && c.fire("saveSnapshot");c.getCommand("codemirror").setState(CKEDITOR.TRISTATE_DISABLED);c.setMode("source" === c.mode ? "wysiwyg" : "source");
            }, canUndo: !1 } } }, CKEDITOR.plugins.add("panelbutton", { requires: "button", onLoad: function () {
          function c(c) {
            var g = this._;g.state != CKEDITOR.TRISTATE_DISABLED && (this.createPanel(c), g.on ? g.panel.hide() : g.panel.showBlock(this._.id, this.document.getById(this._.id), 4));
          }CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass({ base: CKEDITOR.ui.button, $: function (h) {
              var g = h.panel || {};delete h.panel;this.base(h);this.document = g.parent && g.parent.getDocument() || CKEDITOR.document;g.block = { attributes: g.attributes };g.toolbarRelated = !0;this.hasArrow = "listbox";this.click = c;this._ = { panelDefinition: g };
            }, statics: { handler: { create: function (c) {
                  return new CKEDITOR.ui.panelButton(c);
                } } }, proto: { createPanel: function (c) {
                var g = this._;if (!g.panel) {
                  var a = this._.panelDefinition,
                      e = this._.panelDefinition.block,
                      l = a.parent || CKEDITOR.document.getBody(),
                      k = CKEDITOR.document.getById(this._.id),
                      m = this._.panel = new CKEDITOR.ui.floatPanel(c, l, a),
                      a = m.addBlock(g.id, e),
                      b = this,
                      d = c.getCommand(this.command);m.onShow = function () {
                    b.className && this.element.addClass(b.className + "_panel");
                    b.setState(CKEDITOR.TRISTATE_ON);k.setAttribute("aria-expanded", "true");g.on = 1;b.editorFocus && c.focus();if (b.onOpen) b.onOpen();
                  };m.onHide = function (a) {
                    b.className && this.element.getFirst().removeClass(b.className + "_panel");!b.modes && d ? b.setStateFromCommand(d) : b.setState(b.modes && b.modes[c.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);g.on = 0;k.setAttribute("aria-expanded", "false");if (!a && b.onClose) b.onClose();
                  };m.onEscape = function () {
                    m.hide(1);b.document.getById(g.id).focus();
                  };if (this.onBlock) this.onBlock(m, a);a.onHide = function () {
                    g.on = 0;!b.modes && b.command ? b.setStateFromCommand(d) : b.setState(CKEDITOR.TRISTATE_OFF);
                  };
                }
              }, setStateFromCommand: function (c) {
                this.setState(c.state);
              } } });
        }, beforeInit: function (c) {
          c.ui.addHandler(CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler);
        } }), CKEDITOR.UI_PANELBUTTON = "panelbutton", function () {
        CKEDITOR.plugins.add("panel", { beforeInit: function (a) {
            a.ui.addHandler(CKEDITOR.UI_PANEL, CKEDITOR.ui.panel.handler);
          } });CKEDITOR.UI_PANEL = "panel";CKEDITOR.ui.panel = function (a, c) {
          c && CKEDITOR.tools.extend(this, c);CKEDITOR.tools.extend(this, { className: "", css: [] });this.id = CKEDITOR.tools.getNextId();this.document = a;this.isFramed = this.forceIFrame || this.css.length;this._ = { blocks: {} };
        };CKEDITOR.ui.panel.handler = { create: function (a) {
            return new CKEDITOR.ui.panel(a);
          } };var c = CKEDITOR.addTemplate("panel", '\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'),
            h = CKEDITOR.addTemplate("panel-frame", '\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'),
            g = CKEDITOR.addTemplate("panel-frame-inner", '\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e');CKEDITOR.ui.panel.prototype = { render: function (a, e) {
            var l = { editorId: a.id, id: this.id,
              langCode: a.langCode, dir: a.lang.dir, cls: this.className, frame: "", env: CKEDITOR.env.cssClass, "z-index": a.config.baseFloatZIndex + 1 };this.getHolderElement = function () {
              var a = this._.holder;if (!a) {
                if (this.isFramed) {
                  var a = this.document.getById(this.id + "_frame"),
                      b = a.getParent(),
                      a = a.getFrameDocument();CKEDITOR.env.iOS && b.setStyles({ overflow: "scroll", "-webkit-overflow-scrolling": "touch" });b = CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function () {
                    this.isLoaded = !0;if (this.onLoad) this.onLoad();
                  }, this));a.write(g.output(CKEDITOR.tools.extend({ css: CKEDITOR.tools.buildStyleHtml(this.css),
                    onload: "window.parent.CKEDITOR.tools.callFunction(" + b + ");" }, l)));a.getWindow().$.CKEDITOR = CKEDITOR;a.on("keydown", function (a) {
                    var b = a.data.getKeystroke(),
                        c = this.document.getById(this.id).getAttribute("dir");if ("input" !== a.data.getTarget().getName() || 37 !== b && 39 !== b) this._.onKeyDown && !1 === this._.onKeyDown(b) ? "input" === a.data.getTarget().getName() && 32 === b || a.data.preventDefault() : (27 == b || b == ("rtl" == c ? 39 : 37)) && this.onEscape && !1 === this.onEscape(b) && a.data.preventDefault();
                  }, this);a = a.getBody();a.unselectable();
                  CKEDITOR.env.air && CKEDITOR.tools.callFunction(b);
                } else a = this.document.getById(this.id);this._.holder = a;
              }return a;
            };if (this.isFramed) {
              var k = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "}())" : "";l.frame = h.output({ id: this.id + "_frame", src: k });
            }k = c.output(l);e && e.push(k);return k;
          }, addBlock: function (a, c) {
            c = this._.blocks[a] = c instanceof CKEDITOR.ui.panel.block ? c : new CKEDITOR.ui.panel.block(this.getHolderElement(), c);this._.currentBlock || this.showBlock(a);return c;
          }, getBlock: function (a) {
            return this._.blocks[a];
          }, showBlock: function (a) {
            a = this._.blocks[a];var c = this._.currentBlock,
                g = !this.forceIFrame || CKEDITOR.env.ie ? this._.holder : this.document.getById(this.id + "_frame");c && c.hide();this._.currentBlock = a;CKEDITOR.fire("ariaWidget", g);a._.focusIndex = -1;this._.onKeyDown = a.onKeyDown && CKEDITOR.tools.bind(a.onKeyDown, a);a.show();return a;
          }, destroy: function () {
            this.element && this.element.remove();
          } };CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass({ $: function (a, c) {
            this.element = a.append(a.getDocument().createElement("div", { attributes: { tabindex: -1, "class": "cke_panel_block" }, styles: { display: "none" } }));c && CKEDITOR.tools.extend(this, c);this.element.setAttributes({ role: this.attributes.role || "presentation", "aria-label": this.attributes["aria-label"], title: this.attributes.title || this.attributes["aria-label"] });this.keys = {};this._.focusIndex = -1;this.element.disableContextMenu();
          },
          _: { markItem: function (a) {
              -1 != a && (a = this._.getItems().getItem(this._.focusIndex = a), CKEDITOR.env.webkit && a.getDocument().getWindow().focus(), a.focus(), this.onMark && this.onMark(a));
            }, markFirstDisplayed: function (a) {
              for (var c = function (a) {
                return a.type == CKEDITOR.NODE_ELEMENT && "none" == a.getStyle("display");
              }, g = this._.getItems(), h, m, b = g.count() - 1; 0 <= b; b--) if (h = g.getItem(b), h.getAscendant(c) || (m = h, this._.focusIndex = b), "true" == h.getAttribute("aria-selected")) {
                m = h;this._.focusIndex = b;break;
              }m && (a && a(), CKEDITOR.env.webkit && m.getDocument().getWindow().focus(), m.focus(), this.onMark && this.onMark(m));
            }, getItems: function () {
              return this.element.find("a,input");
            } }, proto: { show: function () {
              this.element.setStyle("display", "");
            }, hide: function () {
              this.onHide && !0 === this.onHide.call(this) || this.element.setStyle("display", "none");
            }, onKeyDown: function (a, c) {
              var g = this.keys[a];switch (g) {case "next":
                  for (var h = this._.focusIndex, g = this._.getItems(), m; m = g.getItem(++h);) if (m.getAttribute("_cke_focus") && m.$.offsetWidth) {
                    this._.focusIndex = h;m.focus(!0);
                    break;
                  }return m || c ? !1 : (this._.focusIndex = -1, this.onKeyDown(a, 1));case "prev":
                  h = this._.focusIndex;for (g = this._.getItems(); 0 < h && (m = g.getItem(--h));) {
                    if (m.getAttribute("_cke_focus") && m.$.offsetWidth) {
                      this._.focusIndex = h;m.focus(!0);break;
                    }m = null;
                  }return m || c ? !1 : (this._.focusIndex = g.count(), this.onKeyDown(a, 1));case "click":case "mouseup":
                  return h = this._.focusIndex, (m = 0 <= h && this._.getItems().getItem(h)) && m.fireEventHandler(g, { button: CKEDITOR.tools.normalizeMouseButton(CKEDITOR.MOUSE_BUTTON_LEFT, !0) }), !1;}return !0;
            } } });
      }(), CKEDITOR.plugins.add("floatpanel", { requires: "panel" }), function () {
        function c(c, a, e, l, k) {
          k = CKEDITOR.tools.genKey(a.getUniqueId(), e.getUniqueId(), c.lang.dir, c.uiColor || "", l.css || "", k || "");var m = h[k];m || (m = h[k] = new CKEDITOR.ui.panel(a, l), m.element = e.append(CKEDITOR.dom.element.createFromHtml(m.render(c), a)), m.element.setStyles({ display: "none", position: "absolute" }));return m;
        }var h = {};CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass({ $: function (g, a, e, h) {
            function k() {
              f.hide();
            }e.forceIFrame = 1;e.toolbarRelated && g.elementMode == CKEDITOR.ELEMENT_MODE_INLINE && (a = CKEDITOR.document.getById("cke_" + g.name));var m = a.getDocument();h = c(g, m, a, e, h || 0);var b = h.element,
                d = b.getFirst(),
                f = this;b.disableContextMenu();this.element = b;this._ = { editor: g, panel: h, parentElement: a, definition: e, document: m, iframe: d, children: [], dir: g.lang.dir, showBlockParams: null, markFirst: void 0 !== e.markFirst ? e.markFirst : !0 };g.on("mode", k);g.on("resize", k);m.getWindow().on("resize", function () {
              this.reposition();
            }, this);
          }, proto: { addBlock: function (c, a) {
              return this._.panel.addBlock(c, a);
            }, addListBlock: function (c, a) {
              return this._.panel.addListBlock(c, a);
            }, getBlock: function (c) {
              return this._.panel.getBlock(c);
            }, showBlock: function (c, a, e, h, k, m) {
              var b = this._.panel,
                  d = b.showBlock(c);this._.showBlockParams = [].slice.call(arguments);this.allowBlur(!1);var f = this._.editor.editable();this._.returnFocus = f.hasFocus ? f : new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);this._.hideTimeout = 0;var n = this.element,
                  f = this._.iframe,
                  f = CKEDITOR.env.ie && !CKEDITOR.env.edge ? f : new CKEDITOR.dom.window(f.$.contentWindow),
                  w = n.getDocument(),
                  z = this._.parentElement.getPositionedAncestor(),
                  r = a.getDocumentPosition(w),
                  w = z ? z.getDocumentPosition(w) : { x: 0, y: 0 },
                  t = "rtl" == this._.dir,
                  u = r.x + (h || 0) - w.x,
                  C = r.y + (k || 0) - w.y;!t || 1 != e && 4 != e ? t || 2 != e && 3 != e || (u += a.$.offsetWidth - 1) : u += a.$.offsetWidth;if (3 == e || 4 == e) C += a.$.offsetHeight - 1;this._.panel._.offsetParentId = a.getId();n.setStyles({ top: C + "px", left: 0, display: "" });n.setOpacity(0);n.getFirst().removeStyle("width");this._.editor.focusManager.add(f);this._.blurSet || (CKEDITOR.event.useCapture = !0, f.on("blur", function (a) {
                function b() {
                  delete this._.returnFocus;this.hide();
                }this.allowBlur() && a.data.getPhase() == CKEDITOR.EVENT_PHASE_AT_TARGET && this.visible && !this._.activeChild && (CKEDITOR.env.iOS ? this._.hideTimeout || (this._.hideTimeout = CKEDITOR.tools.setTimeout(b, 0, this)) : b.call(this));
              }, this), f.on("focus", function () {
                this._.focused = !0;this.hideChild();this.allowBlur(!0);
              }, this), CKEDITOR.env.iOS && (f.on("touchstart", function () {
                clearTimeout(this._.hideTimeout);
              }, this), f.on("touchend", function () {
                this._.hideTimeout = 0;this.focus();
              }, this)), CKEDITOR.event.useCapture = !1, this._.blurSet = 1);b.onEscape = CKEDITOR.tools.bind(function (a) {
                if (this.onEscape && !1 === this.onEscape(a)) return !1;
              }, this);CKEDITOR.tools.setTimeout(function () {
                var a = CKEDITOR.tools.bind(function () {
                  var a = n;a.removeStyle("width");if (d.autoSize) {
                    var c = d.element.getDocument(),
                        c = (CKEDITOR.env.webkit || CKEDITOR.env.edge ? d.element : c.getBody()).$.scrollWidth;CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < c && (c += (a.$.offsetWidth || 0) - (a.$.clientWidth || 0) + 3);a.setStyle("width", c + 10 + "px");c = d.element.$.scrollHeight;CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < c && (c += (a.$.offsetHeight || 0) - (a.$.clientHeight || 0) + 3);a.setStyle("height", c + "px");b._.currentBlock.element.setStyle("display", "none").removeStyle("display");
                  } else a.removeStyle("height");t && (u -= n.$.offsetWidth);n.setStyle("left", u + "px");var c = b.element.getWindow(),
                      a = n.$.getBoundingClientRect(),
                      c = c.getViewPaneSize(),
                      f = a.width || a.right - a.left,
                      e = a.height || a.bottom - a.top,
                      g = t ? a.right : c.width - a.left,
                      h = t ? c.width - a.right : a.left;
                  t ? g < f && (u = h > f ? u + f : c.width > f ? u - a.left : u - a.right + c.width) : g < f && (u = h > f ? u - f : c.width > f ? u - a.right + c.width : u - a.left);f = a.top;c.height - a.top < e && (C = f > e ? C - e : c.height > e ? C - a.bottom + c.height : C - a.top);CKEDITOR.env.ie && !CKEDITOR.env.edge && ((c = a = n.$.offsetParent && new CKEDITOR.dom.element(n.$.offsetParent)) && "html" == c.getName() && (c = c.getDocument().getBody()), c && "rtl" == c.getComputedStyle("direction") && (u = CKEDITOR.env.ie8Compat ? u - 2 * n.getDocument().getDocumentElement().$.scrollLeft : u - (a.$.scrollWidth - a.$.clientWidth)));
                  var a = n.getFirst(),
                      k;(k = a.getCustomData("activePanel")) && k.onHide && k.onHide.call(this, 1);a.setCustomData("activePanel", this);n.setStyles({ top: C + "px", left: u + "px" });n.setOpacity(1);m && m();
                }, this);b.isLoaded ? a() : b.onLoad = a;CKEDITOR.tools.setTimeout(function () {
                  var a = CKEDITOR.env.webkit && CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();d.element.focus();CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = a);this.allowBlur(!0);this._.markFirst && (CKEDITOR.env.ie ? CKEDITOR.tools.setTimeout(function () {
                    d.markFirstDisplayed ? d.markFirstDisplayed() : d._.markFirstDisplayed();
                  }, 0) : d.markFirstDisplayed ? d.markFirstDisplayed() : d._.markFirstDisplayed());this._.editor.fire("panelShow", this);
                }, 0, this);
              }, CKEDITOR.env.air ? 200 : 0, this);this.visible = 1;this.onShow && this.onShow.call(this);
            }, reposition: function () {
              var c = this._.showBlockParams;this.visible && this._.showBlockParams && (this.hide(), this.showBlock.apply(this, c));
            }, focus: function () {
              if (CKEDITOR.env.webkit) {
                var c = CKEDITOR.document.getActive();c && !c.equals(this._.iframe) && c.$.blur();
              }(this._.lastFocused || this._.iframe.getFrameDocument().getWindow()).focus();
            }, blur: function () {
              var c = this._.iframe.getFrameDocument().getActive();c && c.is("a") && (this._.lastFocused = c);
            }, hide: function (c) {
              if (this.visible && (!this.onHide || !0 !== this.onHide.call(this))) {
                this.hideChild();CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur();this.element.setStyle("display", "none");this.visible = 0;this.element.getFirst().removeCustomData("activePanel");if (c = c && this._.returnFocus) CKEDITOR.env.webkit && c.type && c.getWindow().$.focus(), c.focus();delete this._.lastFocused;this._.showBlockParams = null;this._.editor.fire("panelHide", this);
              }
            }, allowBlur: function (c) {
              var a = this._.panel;void 0 !== c && (a.allowBlur = c);return a.allowBlur;
            }, showAsChild: function (c, a, e, h, k, m) {
              if (this._.activeChild != c || c._.panel._.offsetParentId != e.getId()) this.hideChild(), c.onHide = CKEDITOR.tools.bind(function () {
                CKEDITOR.tools.setTimeout(function () {
                  this._.focused || this.hide();
                }, 0, this);
              }, this), this._.activeChild = c, this._.focused = !1, c.showBlock(a, e, h, k, m), this.blur(), (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) && setTimeout(function () {
                c.element.getChild(0).$.style.cssText += "";
              }, 100);
            }, hideChild: function (c) {
              var a = this._.activeChild;a && (delete a.onHide, delete this._.activeChild, a.hide(), c && this.focus());
            } } });CKEDITOR.on("instanceDestroyed", function () {
          var c = CKEDITOR.tools.isEmpty(CKEDITOR.instances),
              a;for (a in h) {
            var e = h[a];c ? e.destroy() : e.element.hide();
          }c && (h = {});
        });
      }(), function () {
        var c, h, g;CKEDITOR.plugins.add("colorbutton", { requires: "panelbutton,floatpanel", init: function (a) {
            function e(f) {
              function e() {
                var b = a.config["colorButton_" + u + "Style"];b.childRule = "back" == u ? function (a) {
                  return k(a);
                } : function (a) {
                  return !(a.is("a") || a.getElementsByTag("a").count()) || k(a);
                };return b;
              }function n(b, d, c) {
                var f = {};b && (f.color = b);d && (f.colorName = d);d = !CKEDITOR.tools.isEmpty(f) && new CKEDITOR.style(e(), f);a.execCommand(x, { newStyle: d });if (b && c) for (c.addColor(b.substr(1).toUpperCase()), b = G.element.find("[role\x3doption]").toArray(), c = 0; c < b.length; c++) b[c].setAttributes({ "aria-posinset": c + 1, "aria-setsize": b.length });
              }var t = f.name,
                  u = f.type,
                  C = f.title,
                  p = f.order,
                  x = f.commandName;f = f.contentTransformations || {};var v = new CKEDITOR.style(b["colorButton_" + u + "Style"]),
                  q = CKEDITOR.tools.getNextId() + "_colorBox",
                  y = { type: u },
                  A = new CKEDITOR.style(b["colorButton_" + u + "Style"], { color: "inherit" }),
                  F = function () {
                return CKEDITOR.tools.addFunction(function (b, d, c) {
                  a.focus();a.fire("saveSnapshot");"?" == b ? a.getColorFromDialog(function (a) {
                    a && n(a, d, B);
                  }, null, y) : n(b && "#" + b, d, B);c && (c.setAttribute("cke_colorlast", !0), a.once("selectionChange", function () {
                    c.removeAttribute("cke_colorlast");
                  }));
                });
              }(),
                  B = g.getRowLimit(a) ? new g(a, "back" == u ? "background-color" : "color", F) : void 0,
                  G;a.addCommand(x, { contextSensitive: !0, exec: function (a, b) {
                  if (!a.readOnly) {
                    var d = b.newStyle;a.removeStyle(A);a.focus();d && a.applyStyle(d);a.fire("saveSnapshot");
                  }
                }, refresh: function (a, b) {
                  A.checkApplicable(b, a, a.activeFilter) ? A.checkActive(b, a) ? this.setState(CKEDITOR.TRISTATE_ON) : this.setState(CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_DISABLED);
                } });a.ui.add(t, CKEDITOR.UI_PANELBUTTON, { label: C, title: C, command: x, editorFocus: 0,
                toolbar: "colors," + p, allowedContent: v, requiredContent: v, contentTransformations: f, panel: { css: [CKEDITOR.skin.getPath("editor")].concat(b.colorButton_contentsCss), attributes: { role: "listbox", "aria-label": d.panelTitle } }, select: function (a) {
                  var d = b.colorButton_colors.split(",");a = CKEDITOR.tools.array.find(d, a);a = c.normalizeColor(a);m(G, a);G._.markFirstDisplayed();
                }, onBlock: function (b, d) {
                  G = d;d.autoSize = !0;d.element.addClass("cke_colorblock");d.element.setHtml(h(q, F, B ? B.getLength() : 0));d.element.getDocument().getBody().setStyle("overflow", "hidden");d.element.getAscendant({ html: 1 }).setStyle("overflow", "hidden");CKEDITOR.ui.fire("ready", this);var c = d.keys,
                      f = "rtl" == a.lang.dir;c[f ? 37 : 39] = "next";c[40] = "next";c[9] = "next";c[f ? 39 : 37] = "prev";c[38] = "prev";c[CKEDITOR.SHIFT + 9] = "prev";c[32] = "click";B && B.setContainer(d.element.findOne(".cke_colorhistory"));
                }, onOpen: function () {
                  var d = a.getSelection(),
                      f = d && d.getStartElement(),
                      e = a.elementPath(f),
                      g = "back" == u ? "background-color" : "color";if (e) {
                    f = e.block || e.blockLimit || a.document.getBody();do e = f && f.getComputedStyle(g) || "transparent"; while ("back" == u && "transparent" == e && f && (f = f.getParent()));e && "transparent" != e || (e = "#ffffff");b.colorButton_enableAutomatic && G.element.findOne("#" + q).setStyle("background-color", e);if (f = d && d.getRanges()[0]) {
                      for (var d = new CKEDITOR.dom.walker(f), h = f.collapsed ? f.startContainer : d.next(), f = ""; h;) {
                        h.type !== CKEDITOR.NODE_ELEMENT && (h = h.getParent());h = c.normalizeColor(h.getComputedStyle(g));f = f || h;if (f !== h) {
                          f = "";break;
                        }h = d.next();
                      }"transparent" == f && (f = "");"fore" == u && (y.automaticTextColor = "#" + c.normalizeColor(e));
                      y.selectionColor = f ? "#" + f : "";m(G, f);
                    }return e;
                  }
                } });
            }function h(f, e, k) {
              var l = [],
                  m = b.colorButton_colors.split(","),
                  n = a.plugins.colordialog && b.colorButton_enableMore;k = m.length + k + (n ? 1 : 0);var p = 1;b.colorButton_enableAutomatic && (k += 1, p += 1, l.push('\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue', ' title\x3d"', d.auto, '"', ' draggable\x3d"false"', ' ondragstart\x3d"return false;"', ' onclick\x3d"CKEDITOR.tools.callFunction(', e, ',null);return false;"', " href\x3d\"javascript:void('", d.auto, "')\"", ' role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"', k, '"\x3e', '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e', "\x3ctr\x3e", '\x3ctd colspan\x3d"', a.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', '\x3cspan class\x3d"cke_colorbox" id\x3d"', f, '"\x3e\x3c/span\x3e', d.auto, "\x3c/td\x3e", "\x3c/tr\x3e", "\x3c/table\x3e", "\x3c/a\x3e"));l.push('\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctbody\x3e');for (f = 0; f < m.length; f++) {
                0 === f % a.config.colorButton_colorsPerRow && l.push("\x3c/tr\x3e\x3ctr\x3e");var x = m[f].split("/"),
                    v = x[0],
                    x = new c(a, { color: x[1] || v, label: x[1] ? v : void 0 }, e);x.setPositionIndex(p + f, k);l.push(x.getHtml());
              }g.getRowLimit(a) && g.renderContainer(l, a);n && l.push("\x3c/tr\x3e", "\x3ctr\x3e", '\x3ctd colspan\x3d"', a.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', '\x3ca class\x3d"cke_colormore" _cke_focus\x3d1 hidefocus\x3dtrue', ' title\x3d"', d.more, '"', ' draggable\x3d"false"', ' ondragstart\x3d"return false;"', ' onclick\x3d"CKEDITOR.tools.callFunction(', e, ",'?');return false;\"", " href\x3d\"javascript:void('", d.more, "')\"", ' role\x3d"option" aria-posinset\x3d"', k, '" aria-setsize\x3d"', k, '"\x3e', d.more, "\x3c/a\x3e", "\x3c/td\x3e");l.push("\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e");return l.join("");
            }function k(a) {
              return "false" == a.getAttribute("contentEditable") || a.getAttribute("data-nostyle");
            }function m(a, b) {
              var d = a._.getItems(),
                  f = a.element.findOne("[aria-selected]"),
                  e = a.element.findOne("[cke_colorlast]");
              f && f.removeAttribute("aria-selected");if (e) e.setAttribute("aria-selected", !0);else for (f = 0; f < d.count(); f++) if (e = d.getItem(f), b && b == c.normalizeColor(e.getAttribute("data-value"))) {
                e.setAttribute("aria-selected", !0);break;
              }
            }var b = a.config,
                d = a.lang.colorbutton;if (!CKEDITOR.env.hc) {
              e({ name: "TextColor", type: "fore", commandName: "textColor", title: d.textColorTitle, order: 10, contentTransformations: [[{ element: "font", check: "span{color}", left: function (a) {
                    return !!a.attributes.color;
                  }, right: function (a) {
                    a.name = "span";
                    a.attributes.color && (a.styles.color = a.attributes.color);delete a.attributes.color;
                  } }]] });var f,
                  n = a.config.colorButton_normalizeBackground;if (void 0 === n || n) f = [[{ element: "span", left: function (a) {
                  var b = CKEDITOR.tools;if ("span" != a.name || !a.styles || !a.styles.background) return !1;a = b.style.parse.background(a.styles.background);return a.color && 1 === b.object.keys(a).length;
                }, right: function (b) {
                  var d = new CKEDITOR.style(a.config.colorButton_backStyle, { color: b.styles.background }).getDefinition();b.name = d.element;
                  b.styles = d.styles;b.attributes = d.attributes || {};return b;
                } }]];e({ name: "BGColor", type: "back", commandName: "bgColor", title: d.bgColorTitle, order: 20, contentTransformations: f });
            }
          } });c = CKEDITOR.tools.createClass({ $: function (a, e, g) {
            this.$ = new CKEDITOR.dom.element("td");this.color = CKEDITOR.tools._isValidColorFormat(e.color) ? e.color : "";this.clickFn = g;this.label = e.label || c.colorNames(a)[this.color] || this.color;this.setHtml();
          }, statics: { colorNames: function (a) {
              return a.lang.colorbutton.colors;
            }, normalizeColor: function (a) {
              var c = /^(rgb|hsl)a\(/g.test(a),
                  g = /^rgba\((\s*0\s*,?){4}\)$/g.test(a);return c && !g ? (a = new CKEDITOR.tools.color(a), CKEDITOR.tools.normalizeHex(a.getHex() || "").replace(/#/g, "")) : CKEDITOR.tools.normalizeHex("#" + CKEDITOR.tools.convertRgbToHex(a || "")).replace(/#/g, "");
            } }, proto: { getElement: function () {
              return this.$;
            }, getHtml: function () {
              return this.getElement().getOuterHtml();
            }, setHtml: function () {
              this.getElement().setHtml('\x3ca class\x3d"cke_colorbox" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"' + this.label + '" draggable\x3d"false" ondragstart\x3d"return false;" onclick\x3d"CKEDITOR.tools.callFunction(' + this.clickFn + ",'" + this.color + "','" + this.label + "', this); return false;\" href\x3d\"javascript:void('" + this.color + '\')" data-value\x3d"' + this.color + '" role\x3d"option"\x3e\x3cspan class\x3d"cke_colorbox" style\x3d"background-color:#' + this.color + '"\x3e\x3c/span\x3e\x3c/a\x3e');
            }, setPositionIndex: function (a, c) {
              this.getElement().getChild(0).setAttributes({ "aria-posinset": a, "aria-setsize": c });
            } } });h = CKEDITOR.tools.createClass({ $: function () {
            this.$ = new CKEDITOR.dom.element("tr");this.$.addClass("cke_colorhistory_row");
            this.boxes = [];
          }, proto: { getElement: function () {
              return this.$;
            }, removeLastColor: function () {
              this.getElement().getLast().remove();return this.boxes.pop();
            }, addNewColor: function (a) {
              this.boxes.unshift(a);this.getElement().append(a.getElement(), !0);
            }, extractColorBox: function (a) {
              var c = CKEDITOR.tools.getIndex(this.boxes, function (c) {
                return c.color === a;
              });if (0 > c) return null;this.boxes[c].getElement().remove();return this.boxes.splice(c, 1)[0];
            } } });g = CKEDITOR.tools.createClass({ $: function (a, c, g) {
            this.editor = a;this.cssProperty = c;this.clickFn = g;this.rows = [];this._.addNewRow();if (this.editor.config.colorButton_renderContentColors) this.editor.once("instanceReady", function () {
              this.renderContentColors();
            }, this);
          }, statics: { renderContainer: function (a, c) {
              a.push('\x3c/tbody\x3e\x3ctbody class\x3d"cke_colorhistory" style\x3d"display:none;"\x3e', "\x3ctr\x3e", '\x3ctd colspan\x3d"', c.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', "\x3cspan\x3e\x3chr\x3e\x3c/span\x3e", "\x3c/td\x3e", "\x3c/tr\x3e", "\x3c/tbody\x3e\x3ctbody\x3e");
            },
            getRowLimit: function (a) {
              return a.config.colorButton_historyRowLimit;
            }, getCapacity: function (a) {
              return g.getRowLimit(a) * a.config.colorButton_colorsPerRow;
            }, colorList: CKEDITOR.tools.style.parse._colors }, _: { countColors: function () {
              var a = CKEDITOR.tools.getStyledSpans(this.cssProperty, this.editor.editable());return CKEDITOR.tools.array.reduce(a, function (a, c) {
                var h = this._.getHexCode(c, this.cssProperty, g.colorList);a[h] = a[h] || 0;a[h] += 1;return a;
              }, {}, this);
            }, getHexCode: function (a, e, g) {
              var h = a.getStyle(e);return h in g ? g[h].substr(1) : c.normalizeColor(a.getComputedStyle(e)).toUpperCase();
            }, sortByOccurrencesAscending: function (a, c) {
              var g = [],
                  h;for (h in a) {
                var m = {};m[c] = h;m.frequency = a[h];g.push(m);
              }g.sort(function (a, d) {
                return d.frequency - a.frequency;
              });this._.trimToCapacity(g);return g.reverse();
            }, trimToCapacity: function (a) {
              a.splice(g.getCapacity(this.editor));
            }, addColors: function (a) {
              CKEDITOR.tools.array.forEach(a, function (a) {
                this.addColor(a.colorCode);
              }, this);
            }, extractColorBox: function (a) {
              for (var c = 0; c < this.rows.length; c++) {
                var g = this.rows[c].extractColorBox(a);if (g) return g;
              }return null;
            }, moveToBeginning: function (a) {
              this.rows[0].addNewColor(a);
            }, createAtBeginning: function (a) {
              this._.moveToBeginning(new c(this.editor, { color: a }, this.clickFn));
            }, addNewRow: function () {
              this.rows.push(new h());this.container && this.container.append(this.rows[this.rows.length - 1].getElement());
            }, alignRows: function () {
              for (var a = 0; a < g.getRowLimit(this.editor) && !(this.rows[a].boxes.length <= this.editor.config.colorButton_colorsPerRow); a++) this.rows[a + 1] ? this._.moveLastBoxToNextRow(a) : a < g.getRowLimit(this.editor) - 1 ? (this._.addNewRow(), this._.moveLastBoxToNextRow(a)) : this.rows[a].removeLastColor();
            }, moveLastBoxToNextRow: function (a) {
              this.rows[a + 1].addNewColor(this.rows[a].removeLastColor());
            }, refreshPositions: function () {
              var a = this._.countPanelElements(),
                  c = this._.calculateFirstPosition(a);CKEDITOR.tools.array.forEach(this.rows, function (g) {
                CKEDITOR.tools.array.forEach(g.boxes, function (g) {
                  g.setPositionIndex(c, a);c += 1;
                });
              });
            }, countPanelElements: function () {
              var a = this.editor.config.colorButton_colors.split(",").length + this.getLength();this.editor.plugins.colordialog && this.editor.config.colorButton_enableMore && (a += 1);this.editor.config.colorButton_enableAutomatic && (a += 1);return a;
            }, calculateFirstPosition: function (a) {
              return this.editor.plugins.colordialog && this.editor.config.colorButton_enableMore ? a - this.getLength() : a - this.getLength() + 1;
            }, attachRows: function () {
              CKEDITOR.tools.array.forEach(this.rows, function (a) {
                this.container.append(a.getElement());
              }, this);
            } }, proto: { setContainer: function (a) {
              this.container = a;this._.attachRows();
              this.getLength() && this.show();
            }, show: function () {
              this.container && this.container.show();
            }, renderContentColors: function () {
              var a = this._.countColors();CKEDITOR.tools.isEmpty(a) || (a = this._.sortByOccurrencesAscending(a, "colorCode"), this._.addColors(a), this._.refreshPositions());
            }, addColor: function (a) {
              var c = this._.extractColorBox(a);this.container && !this.container.isVisible() && this.show();c ? this._.moveToBeginning(c) : this._.createAtBeginning(a);this._.alignRows();
            }, getLength: function () {
              return CKEDITOR.tools.array.reduce(this.rows, function (a, c) {
                return a + c.boxes.length;
              }, 0);
            } } });
      }(), CKEDITOR.config.colorButton_enableMore = !0, CKEDITOR.config.colorButton_colors = "1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,D35400,C0392B,BDC3C7,7F8C8D,999,000", CKEDITOR.config.colorButton_foreStyle = { element: "span", styles: { color: "#(color)" }, overrides: [{ element: "font", attributes: { color: null } }] }, CKEDITOR.config.colorButton_backStyle = { element: "span", styles: { "background-color": "#(color)" } }, CKEDITOR.config.colorButton_enableAutomatic = !0, CKEDITOR.config.colorButton_colorsPerRow = 6, CKEDITOR.config.colorButton_historyRowLimit = 1, CKEDITOR.config.colorButton_renderContentColors = !0, CKEDITOR.config.colorButton_contentsCss = [], CKEDITOR.plugins.add("menu", { requires: "floatpanel", beforeInit: function (c) {
          for (var h = c.config.menu_groups.split(","), g = c._.menuGroups = {}, a = c._.menuItems = {}, e = 0; e < h.length; e++) g[h[e]] = e + 1;c.addMenuGroup = function (a, c) {
            g[a] = c || 100;
          };c.addMenuItem = function (c, e) {
            g[e.group] && (a[c] = new CKEDITOR.menuItem(this, c, e));
          };c.addMenuItems = function (a) {
            for (var c in a) this.addMenuItem(c, a[c]);
          };c.getMenuItem = function (c) {
            return a[c];
          };c.removeMenuItem = function (c) {
            delete a[c];
          };
        } }), function () {
        function c(a) {
          a.sort(function (a, b) {
            return a.group < b.group ? -1 : a.group > b.group ? 1 : a.order < b.order ? -1 : a.order > b.order ? 1 : 0;
          });
        }var h = '\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{attrLabel}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"',
            g = "";CKEDITOR.env.gecko && CKEDITOR.env.mac && (h += ' onkeypress\x3d"return false;"');CKEDITOR.env.gecko && (h += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;" ondragstart\x3d"return false;"');CKEDITOR.env.ie && (g = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var h = h + (' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" onclick\x3d"' + g + 'CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e') + '\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{shortcutHtml}{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_voice_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e\x3c/span\x3e',
            a = CKEDITOR.addTemplate("menuItem", h),
            e = CKEDITOR.addTemplate("menuArrow", '\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e'),
            l = CKEDITOR.addTemplate("menuShortcut", '\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e');CKEDITOR.menu = CKEDITOR.tools.createClass({ $: function (a, c) {
            c = this._.definition = c || {};this.id = CKEDITOR.tools.getNextId();this.editor = a;this.items = [];this._.listeners = [];this._.level = c.level || 1;var b = CKEDITOR.tools.extend({}, c.panel, { css: [CKEDITOR.skin.getPath("editor")], level: this._.level - 1, block: {} }),
                d = b.block.attributes = b.attributes || {};!d.role && (d.role = "menu");this._.panelDefinition = b;
          }, _: { onShow: function () {
              var a = this.editor.getSelection(),
                  c = a && a.getStartElement(),
                  b = this.editor.elementPath(),
                  d = this._.listeners;this.removeAll();for (var f = 0; f < d.length; f++) {
                var e = d[f](c, a, b);if (e) for (var g in e) {
                  var h = this.editor.getMenuItem(g);!h || h.command && !this.editor.getCommand(h.command).state || (h.state = e[g], this.add(h));
                }
              }
            }, onClick: function (a) {
              this.hide();if (a.onClick) a.onClick();else a.command && this.editor.execCommand(a.command);
            }, onEscape: function (a) {
              var c = this.parent;c ? c._.panel.hideChild(1) : 27 == a && this.hide(1);return !1;
            }, onHide: function () {
              this.onHide && this.onHide();
            }, showSubMenu: function (a) {
              var c = this._.subMenu,
                  b = this.items[a];if (b = b.getItems && b.getItems()) {
                c ? c.removeAll() : (c = this._.subMenu = new CKEDITOR.menu(this.editor, CKEDITOR.tools.extend({}, this._.definition, { level: this._.level + 1 }, !0)), c.parent = this, c._.onClick = CKEDITOR.tools.bind(this._.onClick, this));for (var d in b) {
                  var f = this.editor.getMenuItem(d);
                  f && (f.state = b[d], c.add(f));
                }var e = this._.panel.getBlock(this.id).element.getDocument().getById(this.id + String(a));setTimeout(function () {
                  c.show(e, 2);
                }, 0);
              } else this._.panel.hideChild(1);
            } }, proto: { add: function (a) {
              a.order || (a.order = this.items.length);this.items.push(a);
            }, removeAll: function () {
              this.items = [];
            }, show: function (a, e, b, d) {
              if (!this.parent && (this._.onShow(), !this.items.length)) return;e = e || ("rtl" == this.editor.lang.dir ? 2 : 1);var f = this.items,
                  g = this.editor,
                  h = this._.panel,
                  l = this._.element;if (!h) {
                h = this._.panel = new CKEDITOR.ui.floatPanel(this.editor, CKEDITOR.document.getBody(), this._.panelDefinition, this._.level);h.onEscape = CKEDITOR.tools.bind(function (a) {
                  if (!1 === this._.onEscape(a)) return !1;
                }, this);h.onShow = function () {
                  h._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all");
                };h.onHide = CKEDITOR.tools.bind(function () {
                  this._.onHide && this._.onHide();
                }, this);l = h.addBlock(this.id, this._.panelDefinition.block);l.autoSize = !0;var r = l.keys;r[40] = "next";r[9] = "next";r[38] = "prev";r[CKEDITOR.SHIFT + 9] = "prev";r["rtl" == g.lang.dir ? 37 : 39] = CKEDITOR.env.ie ? "mouseup" : "click";r[32] = CKEDITOR.env.ie ? "mouseup" : "click";CKEDITOR.env.ie && (r[13] = "mouseup");l = this._.element = l.element;r = l.getDocument();r.getBody().setStyle("overflow", "hidden");r.getElementsByTag("html").getItem(0).setStyle("overflow", "hidden");this._.itemOverFn = CKEDITOR.tools.addFunction(function (a) {
                  clearTimeout(this._.showSubTimeout);this._.showSubTimeout = CKEDITOR.tools.setTimeout(this._.showSubMenu, g.config.menu_subMenuDelay || 400, this, [a]);
                }, this);this._.itemOutFn = CKEDITOR.tools.addFunction(function () {
                  clearTimeout(this._.showSubTimeout);
                }, this);this._.itemClickFn = CKEDITOR.tools.addFunction(function (a) {
                  var b = this.items[a];if (b.state == CKEDITOR.TRISTATE_DISABLED) this.hide(1);else if (b.getItems) this._.showSubMenu(a);else this._.onClick(b);
                }, this);
              }c(f);for (var r = g.elementPath(), r = ['\x3cdiv class\x3d"cke_menu' + (r && r.direction() != g.lang.dir ? " cke_mixed_dir_content" : "") + '" role\x3d"presentation"\x3e'], t = f.length, u = t && f[0].group, C = 0; C < t; C++) {
                var p = f[C];u != p.group && (r.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'), u = p.group);p.render(this, C, r);
              }r.push("\x3c/div\x3e");l.setHtml(r.join(""));CKEDITOR.ui.fire("ready", this);this.parent ? this.parent._.panel.showAsChild(h, this.id, a, e, b, d) : h.showBlock(this.id, a, e, b, d);g.fire("menuShow", [h]);
            }, addListener: function (a) {
              this._.listeners.push(a);
            }, hide: function (a) {
              this._.onHide && this._.onHide();this._.panel && this._.panel.hide(a);
            }, findItemByCommandName: function (a) {
              var c = CKEDITOR.tools.array.filter(this.items, function (b) {
                return a === b.command;
              });return c.length ? (c = c[0], { item: c, element: this._.element.findOne("." + c.className) }) : null;
            } } });CKEDITOR.menuItem = CKEDITOR.tools.createClass({ $: function (a, c, b) {
            CKEDITOR.tools.extend(this, b, { order: 0, className: "cke_menubutton__" + c });this.group = a._.menuGroups[this.group];this.editor = a;this.name = c;
          }, proto: { render: function (c, g, b) {
              var d = c.id + String(g),
                  f = "undefined" == typeof this.state ? CKEDITOR.TRISTATE_OFF : this.state,
                  h = "",
                  w = this.editor,
                  z,
                  r,
                  t = f == CKEDITOR.TRISTATE_ON ? "on" : f == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off";this.role in { menuitemcheckbox: 1, menuitemradio: 1 } && (h = ' aria-checked\x3d"' + (f == CKEDITOR.TRISTATE_ON ? "true" : "false") + '"');var u = this.getItems,
                  C = "\x26#" + ("rtl" == this.editor.lang.dir ? "9668" : "9658") + ";",
                  p = this.name;this.icon && !/\./.test(this.icon) && (p = this.icon);this.command && (z = w.getCommand(this.command), (z = w.getCommandKeystroke(z)) && (r = CKEDITOR.tools.keystrokeToString(w.lang.common.keyboard, z)));z = CKEDITOR.tools.htmlEncodeAttr(this.label);c = { id: d, name: this.name, iconName: p, label: this.label,
                attrLabel: z, cls: this.className || "", state: t, hasPopup: u ? "true" : "false", disabled: f == CKEDITOR.TRISTATE_DISABLED, title: z + (r ? " (" + r.display + ")" : ""), ariaShortcut: r ? w.lang.common.keyboardShortcut + " " + r.aria : "", href: "javascript:void('" + (z || "").replace("'") + "')", hoverFn: c._.itemOverFn, moveOutFn: c._.itemOutFn, clickFn: c._.itemClickFn, index: g, iconStyle: CKEDITOR.skin.getIconStyle(p, "rtl" == this.editor.lang.dir, p == this.icon ? null : this.icon, this.iconOffset), shortcutHtml: r ? l.output({ shortcut: r.display }) : "", arrowHtml: u ? e.output({ label: C }) : "", role: this.role ? this.role : "menuitem", ariaChecked: h };a.output(c, b);
            } } });
      }(), CKEDITOR.config.menu_groups = "clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div", CKEDITOR.plugins.add("contextmenu", { requires: "menu", onLoad: function () {
          CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass({ base: CKEDITOR.menu, $: function (c) {
              this.base.call(this, c, { panel: { css: c.config.contextmenu_contentsCss,
                  className: "cke_menu_panel", attributes: { "aria-label": c.lang.contextmenu.options } } });
            }, proto: { addTarget: function (c, h) {
                function g() {
                  e = !1;
                }var a, e;c.on("contextmenu", function (c) {
                  c = c.data;var g = CKEDITOR.env.webkit ? a : CKEDITOR.env.mac ? c.$.metaKey : c.$.ctrlKey;if (!h || !g) if (c.preventDefault(), !e) {
                    if (CKEDITOR.env.mac && CKEDITOR.env.webkit) {
                      var g = this.editor,
                          b = new CKEDITOR.dom.elementPath(c.getTarget(), g.editable()).contains(function (a) {
                        return a.hasAttribute("contenteditable");
                      }, !0);b && "false" == b.getAttribute("contenteditable") && g.getSelection().fake(b);
                    }var b = c.getTarget().getDocument(),
                        d = c.getTarget().getDocument().getDocumentElement(),
                        g = !b.equals(CKEDITOR.document),
                        b = b.getWindow().getScrollPosition(),
                        f = g ? c.$.clientX : c.$.pageX || b.x + c.$.clientX,
                        l = g ? c.$.clientY : c.$.pageY || b.y + c.$.clientY;CKEDITOR.tools.setTimeout(function () {
                      this.open(d, null, f, l);
                    }, CKEDITOR.env.ie ? 200 : 0, this);
                  }
                }, this);if (CKEDITOR.env.webkit) {
                  var l = function () {
                    a = 0;
                  };c.on("keydown", function (c) {
                    a = CKEDITOR.env.mac ? c.data.$.metaKey : c.data.$.ctrlKey;
                  });c.on("keyup", l);
                  c.on("contextmenu", l);
                }CKEDITOR.env.gecko && !CKEDITOR.env.mac && (c.on("keydown", function (a) {
                  a.data.$.shiftKey && 121 === a.data.$.keyCode && (e = !0);
                }, null, null, 0), c.on("keyup", g), c.on("contextmenu", g));
              }, open: function (c, h, g, a) {
                !1 !== this.editor.config.enableContextMenu && this.editor.getSelection().getType() !== CKEDITOR.SELECTION_NONE && (this.editor.focus(), c = c || CKEDITOR.document.getDocumentElement(), this.editor.selectionChange(1), this.show(c, h, g, a));
              } } });
        }, beforeInit: function (c) {
          var h = c.contextMenu = new CKEDITOR.plugins.contextMenu(c);
          c.on("contentDom", function () {
            h.addTarget(c.editable(), !1 !== c.config.browserContextMenuOnCtrl);
          });c.addCommand("contextMenu", { exec: function (c) {
              var a = 0,
                  e = 0,
                  h = c.getSelection().getRanges(),
                  h = h[h.length - 1].getClientRects(c.editable().isInline());if (h = h[h.length - 1]) a = h["rtl" === c.lang.dir ? "left" : "right"], e = h.bottom;c.contextMenu.open(c.document.getBody().getParent(), null, a, e);
            } });c.setKeystroke(CKEDITOR.SHIFT + 121, "contextMenu");c.setKeystroke(CKEDITOR.CTRL + CKEDITOR.SHIFT + 121, "contextMenu");
        } }), function () {
        function c(a) {
          var c = this.att;a = a && a.hasAttribute(c) && a.getAttribute(c) || "";void 0 !== a && this.setValue(a);
        }function h() {
          for (var a, c = 0; c < arguments.length; c++) if (arguments[c] instanceof CKEDITOR.dom.element) {
            a = arguments[c];break;
          }if (a) {
            var c = this.att,
                g = this.getValue();g ? a.setAttribute(c, g) : a.removeAttribute(c, g);
          }
        }var g = { id: 1, dir: 1, classes: 1, styles: 1 };CKEDITOR.plugins.add("dialogadvtab", { requires: "dialog", allowedContent: function (a) {
            a || (a = g);var c = [];a.id && c.push("id");a.dir && c.push("dir");var h = "";c.length && (h += "[" + c.join(",") + "]");a.classes && (h += "(*)");a.styles && (h += "{*}");return h;
          }, createAdvancedTab: function (a, e, l) {
            e || (e = g);var k = a.lang.common,
                m = { id: "advanced", label: k.advancedTab, title: k.advancedTab, elements: [{ type: "vbox", padding: 1, children: [] }] },
                b = [];if (e.id || e.dir) e.id && b.push({ id: "advId", att: "id", type: "text", requiredContent: l ? l + "[id]" : null, label: k.id, setup: c, commit: h }), e.dir && b.push({ id: "advLangDir", att: "dir", type: "select", requiredContent: l ? l + "[dir]" : null, label: k.langDir, "default": "", style: "width:100%", items: [[k.notSet, ""], [k.langDirLTR, "ltr"], [k.langDirRTL, "rtl"]], setup: c, commit: h }), m.elements[0].children.push({ type: "hbox", widths: ["50%", "50%"], children: [].concat(b) });if (e.styles || e.classes) b = [], e.styles && b.push({ id: "advStyles", att: "style", type: "text", requiredContent: l ? l + "{cke-xyz}" : null, label: k.styles, "default": "", validate: CKEDITOR.dialog.validate.inlineStyle(k.invalidInlineStyle), onChange: function () {}, getStyle: function (a, b) {
                var c = this.getValue().match(new RegExp("(?:^|;)\\s*" + a + "\\s*:\\s*([^;]*)", "i"));return c ? c[1] : b;
              }, updateStyle: function (b, c) {
                var e = this.getValue(),
                    g = a.document.createElement("span");g.setAttribute("style", e);g.setStyle(b, c);e = CKEDITOR.tools.normalizeCssText(g.getAttribute("style"));this.setValue(e, 1);
              }, setup: c, commit: h }), e.classes && b.push({ type: "hbox", widths: ["45%", "55%"], children: [{ id: "advCSSClasses", att: "class", type: "text", requiredContent: l ? l + "(cke-xyz)" : null, label: k.cssClasses, "default": "", setup: c, commit: h }] }), m.elements[0].children.push({ type: "hbox", widths: ["50%", "50%"], children: [].concat(b) });
            return m;
          } });
      }(), function () {
        function c(a, b, c) {
          c = a.config.forceEnterMode || c;if ("wysiwyg" == a.mode) {
            b || (b = a.activeEnterMode);var e = a.elementPath();e && !e.isContextFor("p") && (b = CKEDITOR.ENTER_BR, c = 1);a.fire("saveSnapshot");b == CKEDITOR.ENTER_BR ? k(a, b, null, c) : m(a, b, null, c);a.fire("saveSnapshot");
          }
        }function h(a) {
          a = a.getSelection().getRanges(!0);for (var b = a.length - 1; 0 < b; b--) a[b].deleteContents();return a[0];
        }function g(a) {
          var b = a.startContainer.getAscendant(function (a) {
            return a.type == CKEDITOR.NODE_ELEMENT && "true" == a.getAttribute("contenteditable");
          }, !0);if (a.root.equals(b)) return a;b = new CKEDITOR.dom.range(b);b.moveToRange(a);return b;
        }CKEDITOR.plugins.add("enterkey", { init: function (a) {
            a.addCommand("enter", { modes: { wysiwyg: 1 }, editorFocus: !1, exec: function (a) {
                c(a);
              } });a.addCommand("shiftEnter", { modes: { wysiwyg: 1 }, editorFocus: !1, exec: function (a) {
                c(a, a.activeShiftEnterMode, 1);
              } });a.setKeystroke([[13, "enter"], [CKEDITOR.SHIFT + 13, "shiftEnter"]]);
          } });var a = CKEDITOR.dom.walker.whitespaces(),
            e = CKEDITOR.dom.walker.bookmark(),
            l,
            k,
            m,
            b;CKEDITOR.plugins.enterkey = { enterBlock: function (d, c, l, m) {
            function z(a) {
              var b;if (a === CKEDITOR.ENTER_BR || -1 === CKEDITOR.tools.indexOf(["td", "th"], C.lastElement.getName()) || 1 !== C.lastElement.getChildCount()) return !1;a = C.lastElement.getChild(0).clone(!0);(b = a.getBogus()) && b.remove();return a.getText().length ? !1 : !0;
            }if (l = l || h(d)) {
              l = g(l);var r = l.document,
                  t = l.checkStartOfBlock(),
                  u = l.checkEndOfBlock(),
                  C = d.elementPath(l.startContainer),
                  p = C.block,
                  x = c == CKEDITOR.ENTER_DIV ? "div" : "p",
                  v;if (p && t && u) {
                t = p.getParent();
                if (t.is("li") && 1 < t.getChildCount()) {
                  r = new CKEDITOR.dom.element("li");v = d.createRange();r.insertAfter(t);p.remove();v.setStart(r, 0);d.getSelection().selectRanges([v]);return;
                }if (p.is("li") || p.getParent().is("li")) {
                  p.is("li") || (p = p.getParent(), t = p.getParent());v = t.getParent();l = !p.hasPrevious();var q = !p.hasNext();m = d.getSelection();var x = m.createBookmarks(),
                      y = p.getDirection(1),
                      u = p.getAttribute("class"),
                      A = p.getAttribute("style"),
                      F = v.getDirection(1) != y;d = d.enterMode != CKEDITOR.ENTER_BR || F || A || u;if (v.is("li")) l || q ? (l && q && t.remove(), p[q ? "insertAfter" : "insertBefore"](v)) : p.breakParent(v);else {
                    if (d) {
                      if (C.block.is("li") ? (v = r.createElement(c == CKEDITOR.ENTER_P ? "p" : "div"), F && v.setAttribute("dir", y), A && v.setAttribute("style", A), u && v.setAttribute("class", u), p.moveChildren(v)) : v = C.block, l || q) v[l ? "insertBefore" : "insertAfter"](t);else p.breakParent(t), v.insertAfter(t);
                    } else if (p.appendBogus(!0), l || q) for (; r = p[l ? "getFirst" : "getLast"]();) r[l ? "insertBefore" : "insertAfter"](t);else for (p.breakParent(t); r = p.getLast();) r.insertAfter(t);
                    p.remove();
                  }m.selectBookmarks(x);return;
                }if (p && p.getParent().is("blockquote")) {
                  p.breakParent(p.getParent());p.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1)) || p.getPrevious().remove();p.getNext().getFirst(CKEDITOR.dom.walker.invisible(1)) || p.getNext().remove();l.moveToElementEditStart(p);l.select();return;
                }
              } else if (p && p.is("pre") && !u) {
                k(d, c, l, m);return;
              }if (A = l.splitBlock(x)) {
                d = A.previousBlock;p = A.nextBlock;t = A.wasStartOfBlock;u = A.wasEndOfBlock;p ? (q = p.getParent(), q.is("li") && (p.breakParent(q), p.move(p.getNext(), 1))) : d && (q = d.getParent()) && q.is("li") && (d.breakParent(q), q = d.getNext(), l.moveToElementEditStart(q), d.move(d.getPrevious()));if (t || u) {
                  if (z(c)) l.moveToElementEditStart(l.getTouchedStartNode());else {
                    if (d) {
                      if (d.is("li") || !b.test(d.getName()) && !d.is("pre")) v = d.clone();
                    } else p && (v = p.clone());v ? m && !v.is("li") && v.renameNode(x) : q && q.is("li") ? v = q : (v = r.createElement(x), d && (y = d.getDirection()) && v.setAttribute("dir", y));if (r = A.elementPath) for (c = 0, m = r.elements.length; c < m; c++) {
                      x = r.elements[c];if (x.equals(r.block) || x.equals(r.blockLimit)) break;CKEDITOR.dtd.$removeEmpty[x.getName()] && (x = x.clone(), v.moveChildren(x), v.append(x));
                    }v.appendBogus();v.getParent() || l.insertNode(v);v.is("li") && v.removeAttribute("value");!CKEDITOR.env.ie || !t || u && d.getChildCount() || (l.moveToElementEditStart(u ? d : v), l.select());l.moveToElementEditStart(t && !u ? p : v);
                  }
                } else p.is("li") && (v = l.clone(), v.selectNodeContents(p), v = new CKEDITOR.dom.walker(v), v.evaluator = function (b) {
                  return !(e(b) || a(b) || b.type == CKEDITOR.NODE_ELEMENT && b.getName() in CKEDITOR.dtd.$inline && !(b.getName() in CKEDITOR.dtd.$empty));
                }, (q = v.next()) && q.type == CKEDITOR.NODE_ELEMENT && q.is("ul", "ol") && (CKEDITOR.env.needsBrFiller ? r.createElement("br") : r.createText(" ")).insertBefore(q)), p && l.moveToElementEditStart(p);l.select();l.scrollIntoView();
              }
            }
          }, enterBr: function (a, c, e, g) {
            if (e = e || h(a)) {
              var k = e.document,
                  l = e.checkEndOfBlock(),
                  t = new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()),
                  u = t.block,
                  C = u && t.block.getName();g || "li" != C ? (!g && l && b.test(C) ? (l = u.getDirection()) ? (k = k.createElement("div"), k.setAttribute("dir", l), k.insertAfter(u), e.setStart(k, 0)) : (k.createElement("br").insertAfter(u), CKEDITOR.env.gecko && k.createText("").insertAfter(u), e.setStartAt(u.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START)) : (a = "pre" == C && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? k.createText("\r") : k.createElement("br"), e.deleteContents(), e.insertNode(a), CKEDITOR.env.needsBrFiller ? (k.createText("﻿").insertAfter(a), l && (u || t.blockLimit).appendBogus(), a.getNext().$.nodeValue = "", e.setStartAt(a.getNext(), CKEDITOR.POSITION_AFTER_START)) : e.setStartAt(a, CKEDITOR.POSITION_AFTER_END)), e.collapse(!0), e.select(), e.scrollIntoView()) : m(a, c, e, g);
            }
          } };l = CKEDITOR.plugins.enterkey;k = l.enterBr;m = l.enterBlock;b = /^h[1-6]$/;
      }(), CKEDITOR.plugins.add("listblock", { requires: "panel", onLoad: function () {
          var c = CKEDITOR.addTemplate("panel-list", '\x3cul role\x3d"presentation" class\x3d"cke_panel_list"\x3e{items}\x3c/ul\x3e'),
              h = CKEDITOR.addTemplate("panel-list-item", '\x3cli id\x3d"{id}" class\x3d"cke_panel_listItem" role\x3dpresentation\x3e\x3ca id\x3d"{id}_option" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"{title}" draggable\x3d"false" ondragstart\x3d"return false;" href\x3d"javascript:void(\'{val}\')"  onclick\x3d"{onclick}CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role\x3d"option"\x3e{text}\x3c/a\x3e\x3c/li\x3e'),
              g = CKEDITOR.addTemplate("panel-list-group", '\x3ch1 id\x3d"{id}" draggable\x3d"false" ondragstart\x3d"return false;" class\x3d"cke_panel_grouptitle" role\x3d"presentation" \x3e{label}\x3c/h1\x3e'),
              a = /\'/g;CKEDITOR.ui.panel.prototype.addListBlock = function (a, c) {
            return this.addBlock(a, new CKEDITOR.ui.listBlock(this.getHolderElement(), c));
          };CKEDITOR.ui.listBlock = CKEDITOR.tools.createClass({ base: CKEDITOR.ui.panel.block, $: function (a, c) {
              c = c || {};var g = c.attributes || (c.attributes = {});(this.multiSelect = !!c.multiSelect) && (g["aria-multiselectable"] = !0);!g.role && (g.role = "listbox");this.base.apply(this, arguments);this.element.setAttribute("role", g.role);g = this.keys;g[40] = "next";g[9] = "next";g[38] = "prev";g[CKEDITOR.SHIFT + 9] = "prev";g[32] = CKEDITOR.env.ie ? "mouseup" : "click";CKEDITOR.env.ie && (g[13] = "mouseup");this._.pendingHtml = [];this._.pendingList = [];this._.items = {};this._.groups = {};
            }, _: { close: function () {
                if (this._.started) {
                  var a = c.output({ items: this._.pendingList.join("") });this._.pendingList = [];this._.pendingHtml.push(a);
                  delete this._.started;
                }
              }, getClick: function () {
                this._.click || (this._.click = CKEDITOR.tools.addFunction(function (a) {
                  var c = this.toggle(a);if (this.onClick) this.onClick(a, c);
                }, this));return this._.click;
              } }, proto: { add: function (c, g, k) {
                var m = CKEDITOR.tools.getNextId();this._.started || (this._.started = 1, this._.size = this._.size || 0);this._.items[c] = m;var b = CKEDITOR.tools.htmlEncodeAttr(c).replace(a, "\\'");c = { id: m, val: b, onclick: CKEDITOR.env.ie ? 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26' : "", clickFn: this._.getClick(), title: CKEDITOR.tools.htmlEncodeAttr(k || c), text: g || c };this._.pendingList.push(h.output(c));
              }, startGroup: function (a) {
                this._.close();var c = CKEDITOR.tools.getNextId();this._.groups[a] = c;this._.pendingHtml.push(g.output({ id: c, label: a }));
              }, commit: function () {
                this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml = [];
              }, toggle: function (a) {
                var c = this.isMarked(a);c ? this.unmark(a) : this.mark(a);return !c;
              }, hideGroup: function (a) {
                var c = (a = this.element.getDocument().getById(this._.groups[a])) && a.getNext();a && (a.setStyle("display", "none"), c && "ul" == c.getName() && c.setStyle("display", "none"));
              }, hideItem: function (a) {
                this.element.getDocument().getById(this._.items[a]).setStyle("display", "none");
              }, showAll: function () {
                var a = this._.items,
                    c = this._.groups,
                    g = this.element.getDocument(),
                    h;for (h in a) g.getById(a[h]).setStyle("display", "");for (var b in c) a = g.getById(c[b]), h = a.getNext(), a.setStyle("display", ""), h && "ul" == h.getName() && h.setStyle("display", "");
              }, mark: function (a) {
                this.multiSelect || this.unmarkAll();a = this._.items[a];var c = this.element.getDocument().getById(a);c.addClass("cke_selected");this.element.getDocument().getById(a + "_option").setAttribute("aria-selected", !0);this.onMark && this.onMark(c);
              }, markFirstDisplayed: function () {
                var a = this;this._.markFirstDisplayed(function () {
                  a.multiSelect || a.unmarkAll();
                });
              }, unmark: function (a) {
                var c = this.element.getDocument();a = this._.items[a];var g = c.getById(a);g.removeClass("cke_selected");c.getById(a + "_option").removeAttribute("aria-selected");
                this.onUnmark && this.onUnmark(g);
              }, unmarkAll: function () {
                var a = this._.items,
                    c = this.element.getDocument(),
                    g;for (g in a) {
                  var h = a[g];c.getById(h).removeClass("cke_selected");c.getById(h + "_option").removeAttribute("aria-selected");
                }this.onUnmark && this.onUnmark();
              }, isMarked: function (a) {
                return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected");
              }, focus: function (a) {
                this._.focusIndex = -1;var c = this.element.getElementsByTag("a"),
                    g,
                    h = -1;if (a) for (g = this.element.getDocument().getById(this._.items[a]).getFirst(); a = c.getItem(++h);) {
                  if (a.equals(g)) {
                    this._.focusIndex = h;break;
                  }
                } else this.element.focus();g && setTimeout(function () {
                  g.focus();
                }, 0);
              } } });
        } }), CKEDITOR.plugins.add("richcombo", { requires: "floatpanel,listblock,button", beforeInit: function (c) {
          c.ui.addHandler(CKEDITOR.UI_RICHCOMBO, CKEDITOR.ui.richCombo.handler);
        } }), function () {
        var c = '\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"listbox"',
            h = "";CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"');CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');CKEDITOR.env.ie && (h = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var c = c + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"' + h + 'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e' + (CKEDITOR.env.hc ? "\x26#9660;" : CKEDITOR.env.air ? "\x26nbsp;" : "") + "\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"),
            g = CKEDITOR.addTemplate("combo", c);CKEDITOR.UI_RICHCOMBO = "richcombo";CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass({ $: function (a) {
            CKEDITOR.tools.extend(this, a, { canGroup: !1, title: a.label, modes: { wysiwyg: 1 }, editorFocus: 1 });a = this.panel || {};delete this.panel;this.id = CKEDITOR.tools.getNextNumber();this.document = a.parent && a.parent.getDocument() || CKEDITOR.document;a.className = "cke_combopanel";a.block = { multiSelect: a.multiSelect, attributes: a.attributes };a.toolbarRelated = !0;this._ = { panelDefinition: a, items: {}, listeners: [] };
          }, proto: { renderHtml: function (a) {
              var c = [];this.render(a, c);return c.join("");
            }, render: function (a, c) {
              function h() {
                if (this.getState() != CKEDITOR.TRISTATE_ON) {
                  var b = this.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;a.readOnly && !this.readOnly && (b = CKEDITOR.TRISTATE_DISABLED);this.setState(b);this.setValue("");b != CKEDITOR.TRISTATE_DISABLED && this.refresh && this.refresh();
                }
              }var k = CKEDITOR.env,
                  m,
                  b,
                  d = "cke_" + this.id,
                  f = CKEDITOR.tools.addFunction(function (d) {
                b && (a.unlockSelection(1), b = 0);m.execute(d);
              }, this),
                  n = this;m = { id: d, combo: this, focus: function () {
                  CKEDITOR.document.getById(d).getChild(1).focus();
                }, execute: function (b) {
                  var d = n._;if (d.state != CKEDITOR.TRISTATE_DISABLED) if (n.createPanel(a), d.on) d.panel.hide();else {
                    n.commit();var c = n.getValue();c ? d.list.mark(c) : d.list.unmarkAll();d.panel.showBlock(n.id, new CKEDITOR.dom.element(b), 4);
                  }
                }, clickFn: f };this._.listeners.push(a.on("activeFilterChange", h, this));this._.listeners.push(a.on("mode", h, this));this._.listeners.push(a.on("selectionChange", h, this));!this.readOnly && this._.listeners.push(a.on("readOnly", h, this));var w = CKEDITOR.tools.addFunction(function (a, b) {
                a = new CKEDITOR.dom.event(a);var d = a.getKeystroke();switch (d) {case 13:case 32:case 40:
                    CKEDITOR.tools.callFunction(f, b);break;default:
                    m.onkey(m, d);}a.preventDefault();
              }),
                  z = CKEDITOR.tools.addFunction(function () {
                m.onfocus && m.onfocus();
              });b = 0;m.keyDownFn = w;k = { id: d, name: this.name || this.command, label: this.label, title: this.title, cls: this.className || "", titleJs: k.gecko && !k.hc ? "" : (this.title || "").replace("'", ""), keydownFn: w, focusFn: z, clickFn: f };g.output(k, c);if (this.onRender) this.onRender();return m;
            }, createPanel: function (a) {
              if (!this._.panel) {
                var c = this._.panelDefinition,
                    g = this._.panelDefinition.block,
                    h = c.parent || CKEDITOR.document.getBody(),
                    m = "cke_combopanel__" + this.name,
                    b = new CKEDITOR.ui.floatPanel(a, h, c),
                    c = b.addListBlock(this.id, g),
                    d = this;b.onShow = function () {
                  this.element.addClass(m);d.setState(CKEDITOR.TRISTATE_ON);d._.on = 1;d.editorFocus && !a.focusManager.hasFocus && a.focus();if (d.onOpen) d.onOpen();
                };b.onHide = function (b) {
                  this.element.removeClass(m);d.setState(d.modes && d.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);d._.on = 0;if (!b && d.onClose) d.onClose();
                };b.onEscape = function () {
                  b.hide(1);
                };c.onClick = function (a, c) {
                  d.onClick && d.onClick.call(d, a, c);b.hide();
                };this._.panel = b;this._.list = c;b.getBlock(this.id).onHide = function () {
                  d._.on = 0;d.setState(CKEDITOR.TRISTATE_OFF);
                };this.init && this.init();
              }
            }, setValue: function (a, c) {
              this._.value = a;var g = this.document.getById("cke_" + this.id + "_text");g && (a || c ? g.removeClass("cke_combo_inlinelabel") : (c = this.label, g.addClass("cke_combo_inlinelabel")), g.setText("undefined" != typeof c ? c : a));var g = "undefined" != typeof c ? c : a,
                  h = this.label,
                  g = g === h ? g : g + ", " + h;(h = this.document.getById("cke_" + this.id + "_label")) && h.setText(g);
            }, getValue: function () {
              return this._.value || "";
            }, unmarkAll: function () {
              this._.list.unmarkAll();
            }, mark: function (a) {
              this._.list.mark(a);
            }, hideItem: function (a) {
              this._.list.hideItem(a);
            }, hideGroup: function (a) {
              this._.list.hideGroup(a);
            }, showAll: function () {
              this._.list.showAll();
            }, add: function (a, c, g) {
              this._.items[a] = g || a;this._.list.add(a, c, g);
            }, startGroup: function (a) {
              this._.list.startGroup(a);
            }, commit: function () {
              this._.committed || (this._.list.commit(), this._.committed = 1, CKEDITOR.ui.fire("ready", this));
              this._.committed = 1;
            }, setState: function (a) {
              if (this._.state != a) {
                var c = this.document.getById("cke_" + this.id),
                    g = c.getElementsByTag("a").getItem(0);c.setState(a, "cke_combo");a == CKEDITOR.TRISTATE_DISABLED ? c.setAttribute("aria-disabled", !0) : c.removeAttribute("aria-disabled");g && g.setAttribute("aria-expanded", a == CKEDITOR.TRISTATE_ON);this._.state = a;
              }
            }, getState: function () {
              return this._.state;
            }, enable: function () {
              this._.state == CKEDITOR.TRISTATE_DISABLED && this.setState(this._.lastState);
            }, disable: function () {
              this._.state != CKEDITOR.TRISTATE_DISABLED && (this._.lastState = this._.state, this.setState(CKEDITOR.TRISTATE_DISABLED));
            }, destroy: function () {
              CKEDITOR.tools.array.forEach(this._.listeners, function (a) {
                a.removeListener();
              });this._.listeners = [];
            }, select: function (a) {
              if (!CKEDITOR.tools.isEmpty(this._.items)) for (var c in this._.items) if (a({ value: c, text: this._.items[c] })) {
                this.setValue(c);break;
              }
            } }, statics: { handler: { create: function (a) {
                return new CKEDITOR.ui.richCombo(a);
              } } } });CKEDITOR.ui.prototype.addRichCombo = function (a, c) {
          this.add(a, CKEDITOR.UI_RICHCOMBO, c);
        };
      }(), function () {
        function c(a, c) {
          var m = a.config,
              b = c.lang,
              d = new CKEDITOR.style(c.styleDefinition),
              f = new e({ entries: c.entries, styleVariable: c.styleVariable, styleDefinition: c.styleDefinition }),
              n;a.addCommand(c.commandName, { exec: function (a, b) {
              var c = b.newStyle,
                  d = b.oldStyle,
                  f = a.getSelection().getRanges()[0];if (d || c) d && f.collapsed && g({ editor: a, range: f, style: d }), void 0 === c ? a.removeStyle(d) : (d && !h(d, c) && a.removeStyle(d), a.applyStyle(c));
            }, refresh: function (a, b) {
              d.checkApplicable(b, a, a.activeFilter) || this.setState(CKEDITOR.TRISTATE_DISABLED);
            } });n = a.getCommand(c.commandName);a.ui.addRichCombo(c.comboName, { label: b.label, title: b.panelTitle, command: c.commandName, toolbar: "styles," + c.order, defaultValue: "cke-default", allowedContent: d, requiredContent: d, contentTransformations: "span" === c.styleDefinition.element ? [[{ element: "font", check: "span", left: function (a) {
                return !!a.attributes.size || !!a.attributes.align || !!a.attributes.face;
              }, right: function (a) {
                var b = " x-small small medium large x-large xx-large 48px".split(" ");
                a.name = "span";a.attributes.size && (a.styles["font-size"] = b[a.attributes.size], delete a.attributes.size);a.attributes.align && (a.styles["text-align"] = a.attributes.align, delete a.attributes.align);a.attributes.face && (a.styles["font-family"] = a.attributes.face, delete a.attributes.face);
              } }]] : null, panel: { css: [CKEDITOR.skin.getPath("editor")].concat(m.contentsCss), multiSelect: !1, attributes: { "aria-label": b.panelTitle } }, init: function () {
              var c = "(" + a.lang.common.optionDefault + ")";this.startGroup(b.panelTitle);this.add(this.defaultValue, c, c);f.addToCombo(this);
            }, onClick: function (b) {
              var d = this.getValue();a.focus();a.fire("saveSnapshot");a.execCommand(c.commandName, { newStyle: f.getStyle(b), oldStyle: f.getStyle(d) });a.fire("saveSnapshot");
            }, onRender: function () {
              a.on("selectionChange", function (b) {
                var d = this.getValue();(b = f.getMatchingValue(a, b.data.path)) ? b != d && this.setValue(b) : this.setValue("", c.defaultLabel);
              }, this);n.on("state", function () {
                this.setState(n.state);
              }, this);
            }, refresh: function () {
              this.setState(n.state);
            } });
        }function h(a, c) {
          if (!(a instanceof CKEDITOR.style && c instanceof CKEDITOR.style)) return !1;var e = function (a, b) {
            var c = a.getDefinition().attributes,
                e = b.getDefinition().attributes;return CKEDITOR.tools.objectCompare(c, e);
          }(a, c),
              b = function (a, b) {
            return CKEDITOR.style.getStyleText(a.getDefinition()) === CKEDITOR.style.getStyleText(b.getDefinition());
          }(a, c);return e && b;
        }function g(c) {
          var e = c.editor,
              g = c.range,
              b = c.style,
              d,
              f,
              h;d = e.elementPath();if (c = d.contains(function (a) {
            return b.checkElementRemovable(a);
          })) {
            f = g.checkBoundaryOfElement(c, CKEDITOR.START);
            h = g.checkBoundaryOfElement(c, CKEDITOR.END);if (f && h) {
              for (f = g.createBookmark(); d = c.getFirst();) d.insertBefore(c);c.remove();g.moveToBookmark(f);
            } else f || h ? g.moveToPosition(c, f ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_END) : (g.splitElement(c), g.moveToPosition(c, CKEDITOR.POSITION_AFTER_END)), a(g, d.elements.slice(), c);e.getSelection().selectRanges([g]);
          }
        }function a(c, e, g) {
          var b = e.pop();if (b) {
            if (g) return a(c, e, b.equals(g) ? null : g);g = b.clone();c.insertNode(g);c.moveToPosition(g, CKEDITOR.POSITION_AFTER_START);
            a(c, e);
          }
        }var e = CKEDITOR.tools.createClass({ $: function (a) {
            var c = a.entries.split(";");this._.data = {};this._.names = [];for (var e = 0; e < c.length; e++) {
              var b = c[e],
                  d,
                  f;b ? (b = b.split("/"), d = b[0], b = b[1], f = {}, f[a.styleVariable] = b || d, this._.data[d] = new CKEDITOR.style(a.styleDefinition, f), this._.data[d]._.definition.name = d, this._.names.push(d)) : (c.splice(e, 1), e--);
            }
          }, proto: { getStyle: function (a) {
              return this._.data[a];
            }, addToCombo: function (a) {
              for (var c = 0; c < this._.names.length; c++) {
                var e = this._.names[c];a.add(e, this.getStyle(e).buildPreview(), e);
              }
            }, getMatchingValue: function (a, c) {
              for (var e = c.elements, b = 0, d; b < e.length; b++) if (d = e[b], d = this._.findMatchingStyleName(a, d)) return d;return null;
            } }, _: { findMatchingStyleName: function (a, c) {
              return CKEDITOR.tools.array.find(this._.names, function (e) {
                return this.getStyle(e).checkElementMatch(c, !0, a);
              }, this);
            } } });CKEDITOR.plugins.add("font", { requires: "richcombo", init: function (a) {
            var e = a.config;c(a, { comboName: "Font", commandName: "font", styleVariable: "family", lang: a.lang.font, entries: e.font_names, defaultLabel: e.font_defaultLabel,
              styleDefinition: e.font_style, order: 30 });c(a, { comboName: "FontSize", commandName: "fontSize", styleVariable: "size", lang: a.lang.font.fontSize, entries: e.fontSize_sizes, defaultLabel: e.fontSize_defaultLabel, styleDefinition: e.fontSize_style, order: 40 });
          } });
      }(), CKEDITOR.config.font_names = "Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif", CKEDITOR.config.font_defaultLabel = "", CKEDITOR.config.font_style = { element: "span", styles: { "font-family": "#(family)" }, overrides: [{ element: "font", attributes: { face: null } }] }, CKEDITOR.config.fontSize_sizes = "8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px", CKEDITOR.config.fontSize_defaultLabel = "", CKEDITOR.config.fontSize_style = { element: "span", styles: { "font-size": "#(size)" }, overrides: [{ element: "font", attributes: { size: null } }] }, CKEDITOR.plugins.add("format", { requires: "richcombo", init: function (c) {
          if (!c.blockless) {
            for (var h = c.config, g = c.lang.format, a = h.format_tags.split(";"), e = {}, l = 0, k = [], m = 0; m < a.length; m++) {
              var b = a[m],
                  d = new CKEDITOR.style(h["format_" + b]);if (!c.filter.customConfig || c.filter.check(d)) l++, e[b] = d, e[b]._.enterMode = c.config.enterMode, k.push(d);
            }0 !== l && c.ui.addRichCombo("Format", { label: g.label, title: g.panelTitle, toolbar: "styles,20", allowedContent: k, panel: { css: [CKEDITOR.skin.getPath("editor")].concat(h.contentsCss), multiSelect: !1, attributes: { "aria-label": g.panelTitle } },
              init: function () {
                this.startGroup(g.panelTitle);for (var a in e) {
                  var b = g["tag_" + a];this.add(a, e[a].buildPreview(b), b);
                }
              }, onClick: function (a) {
                c.focus();c.fire("saveSnapshot");a = e[a];var b = c.elementPath();c.fire("stylesRemove", { type: CKEDITOR.STYLE_BLOCK });a.checkActive(b, c) || c.applyStyle(a);setTimeout(function () {
                  c.fire("saveSnapshot");
                }, 0);
              }, onRender: function () {
                c.on("selectionChange", function (a) {
                  var b = this.getValue();a = a.data.path;this.refresh();for (var d in e) if (e[d].checkActive(a, c)) {
                    d != b && this.setValue(d, c.lang.format["tag_" + d]);return;
                  }this.setValue("");
                }, this);
              }, onOpen: function () {
                this.showAll();for (var a in e) c.activeFilter.check(e[a]) || this.hideItem(a);
              }, refresh: function () {
                var a = c.elementPath();if (a) {
                  if (a.isContextFor("p")) for (var b in e) if (c.activeFilter.check(e[b])) return;this.setState(CKEDITOR.TRISTATE_DISABLED);
                }
              } });
          }
        } }), CKEDITOR.config.format_tags = "p;h1;h2;h3;h4;h5;h6;pre;address;div", CKEDITOR.config.format_p = { element: "p" }, CKEDITOR.config.format_div = { element: "div" }, CKEDITOR.config.format_pre = { element: "pre" }, CKEDITOR.config.format_address = { element: "address" }, CKEDITOR.config.format_h1 = { element: "h1" }, CKEDITOR.config.format_h2 = { element: "h2" }, CKEDITOR.config.format_h3 = { element: "h3" }, CKEDITOR.config.format_h4 = { element: "h4" }, CKEDITOR.config.format_h5 = { element: "h5" }, CKEDITOR.config.format_h6 = { element: "h6" }, function () {
        var c = { canUndo: !1, exec: function (c) {
            var g = c.document.createElement("hr");c.insertElement(g);
          }, allowedContent: "hr", requiredContent: "hr" };CKEDITOR.plugins.add("horizontalrule", { init: function (h) {
            h.blockless || (h.addCommand("horizontalrule", c), h.ui.addButton && h.ui.addButton("HorizontalRule", { label: h.lang.horizontalrule.toolbar, command: "horizontalrule", toolbar: "insert,40" }));
          } });
      }(), CKEDITOR.plugins.add("htmlwriter", { init: function (c) {
          var h = new CKEDITOR.htmlWriter();h.forceSimpleAmpersand = c.config.forceSimpleAmpersand;h.indentationChars = "string" === typeof c.config.dataIndentationChars ? c.config.dataIndentationChars : "\t";c.dataProcessor.writer = h;
        } }), CKEDITOR.htmlWriter = CKEDITOR.tools.createClass({ base: CKEDITOR.htmlParser.basicWriter,
        $: function () {
          this.base();this.indentationChars = "\t";this.selfClosingEnd = " /\x3e";this.lineBreakChars = "\n";this.sortAttributes = 1;this._.indent = 0;this._.indentation = "";this._.inPre = 0;this._.rules = {};var c = CKEDITOR.dtd,
              h;for (h in CKEDITOR.tools.extend({}, c.$nonBodyContent, c.$block, c.$listItem, c.$tableContent)) this.setRules(h, { indent: !c[h]["#"], breakBeforeOpen: 1, breakBeforeClose: !c[h]["#"], breakAfterClose: 1, needsSpace: h in c.$block && !(h in { li: 1, dt: 1, dd: 1 }) });this.setRules("br", { breakAfterOpen: 1 });this.setRules("title", { indent: 0, breakAfterOpen: 0 });this.setRules("style", { indent: 0, breakBeforeClose: 1 });this.setRules("pre", { breakAfterOpen: 1, indent: 0 });
        }, proto: { openTag: function (c) {
            var h = this._.rules[c];this._.afterCloser && h && h.needsSpace && this._.needsSpace && this._.output.push("\n");this._.indent ? this.indentation() : h && h.breakBeforeOpen && (this.lineBreak(), this.indentation());this._.output.push("\x3c", c);this._.afterCloser = 0;
          }, openTagClose: function (c, h) {
            var g = this._.rules[c];h ? (this._.output.push(this.selfClosingEnd), g && g.breakAfterClose && (this._.needsSpace = g.needsSpace)) : (this._.output.push("\x3e"), g && g.indent && (this._.indentation += this.indentationChars));g && g.breakAfterOpen && this.lineBreak();"pre" == c && (this._.inPre = 1);
          }, attribute: function (c, h) {
            "string" == typeof h && (h = CKEDITOR.tools.htmlEncodeAttr(h), this.forceSimpleAmpersand && (h = h.replace(/&amp;/g, "\x26")));this._.output.push(" ", c, '\x3d"', h, '"');
          }, closeTag: function (c) {
            var h = this._.rules[c];h && h.indent && (this._.indentation = this._.indentation.substr(this.indentationChars.length));
            this._.indent ? this.indentation() : h && h.breakBeforeClose && (this.lineBreak(), this.indentation());this._.output.push("\x3c/", c, "\x3e");"pre" == c && (this._.inPre = 0);h && h.breakAfterClose && (this.lineBreak(), this._.needsSpace = h.needsSpace);this._.afterCloser = 1;
          }, text: function (c) {
            this._.indent && (this.indentation(), !this._.inPre && (c = CKEDITOR.tools.ltrim(c)));this._.output.push(c);
          }, comment: function (c) {
            this._.indent && this.indentation();this._.output.push("\x3c!--", c, "--\x3e");
          }, lineBreak: function () {
            !this._.inPre && 0 < this._.output.length && this._.output.push(this.lineBreakChars);this._.indent = 1;
          }, indentation: function () {
            !this._.inPre && this._.indentation && this._.output.push(this._.indentation);this._.indent = 0;
          }, reset: function () {
            this._.output = [];this._.indent = 0;this._.indentation = "";this._.afterCloser = 0;this._.inPre = 0;this._.needsSpace = 0;
          }, setRules: function (c, h) {
            var g = this._.rules[c];g ? CKEDITOR.tools.extend(g, h, !0) : this._.rules[c] = h;
          } } }), "use strict", function () {
        function c(a, c) {
          CKEDITOR.tools.extend(this, { editor: a, editable: a.editable(),
            doc: a.document, win: a.window }, c, !0);this.inline = this.editable.isInline();this.inline || (this.frame = this.win.getFrame());this.target = this[this.inline ? "editable" : "doc"];
        }function h(a, c) {
          CKEDITOR.tools.extend(this, c, { editor: a }, !0);
        }function g(a, c) {
          var f = a.editable();CKEDITOR.tools.extend(this, { editor: a, editable: f, inline: f.isInline(), doc: a.document, win: a.window, container: CKEDITOR.document.getBody(), winTop: CKEDITOR.document.getWindow() }, c, !0);this.hidden = {};this.visible = {};this.inline || (this.frame = this.win.getFrame());
          this.queryViewport();var g = CKEDITOR.tools.bind(this.queryViewport, this),
              h = CKEDITOR.tools.bind(this.hideVisible, this),
              k = CKEDITOR.tools.bind(this.removeAll, this);f.attachListener(this.winTop, "resize", g);f.attachListener(this.winTop, "scroll", g);f.attachListener(this.winTop, "resize", h);f.attachListener(this.win, "scroll", h);f.attachListener(this.inline ? f : this.frame, "mouseout", function (a) {
            var b = a.data.$.clientX;a = a.data.$.clientY;this.queryViewport();(b <= this.rect.left || b >= this.rect.right || a <= this.rect.top || a >= this.rect.bottom) && this.hideVisible();(0 >= b || b >= this.winTopPane.width || 0 >= a || a >= this.winTopPane.height) && this.hideVisible();
          }, this);f.attachListener(a, "resize", g);f.attachListener(a, "mode", k);a.on("destroy", k);this.lineTpl = new CKEDITOR.template('\x3cdiv data-cke-lineutils-line\x3d"1" class\x3d"cke_reset_all" style\x3d"{lineStyle}"\x3e\x3cspan style\x3d"{tipLeftStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3cspan style\x3d"{tipRightStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3c/div\x3e').output({ lineStyle: CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, l, this.lineStyle, !0)), tipLeftStyle: CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, e, { left: "0px", "border-left-color": "red", "border-width": "6px 0 6px 6px" }, this.tipCss, this.tipLeftStyle, !0)), tipRightStyle: CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, e, { right: "0px", "border-right-color": "red", "border-width": "6px 6px 6px 0" }, this.tipCss, this.tipRightStyle, !0)) });
        }function a(a) {
          var c;if (c = a && a.type == CKEDITOR.NODE_ELEMENT) c = !(k[a.getComputedStyle("float")] || k[a.getAttribute("align")]);return c && !m[a.getComputedStyle("position")];
        }CKEDITOR.plugins.add("lineutils");CKEDITOR.LINEUTILS_BEFORE = 1;CKEDITOR.LINEUTILS_AFTER = 2;CKEDITOR.LINEUTILS_INSIDE = 4;c.prototype = { start: function (a) {
            var c = this,
                f = this.editor,
                e = this.doc,
                g,
                h,
                k,
                l,
                m = CKEDITOR.tools.eventsBuffer(50, function () {
              f.readOnly || "wysiwyg" != f.mode || (c.relations = {}, (h = e.$.elementFromPoint(k, l)) && h.nodeType && (g = new CKEDITOR.dom.element(h), c.traverseSearch(g), isNaN(k + l) || c.pixelSearch(g, k, l), a && a(c.relations, k, l)));
            });this.listener = this.editable.attachListener(this.target, "mousemove", function (a) {
              k = a.data.$.clientX;l = a.data.$.clientY;m.input();
            });this.editable.attachListener(this.inline ? this.editable : this.frame, "mouseout", function () {
              m.reset();
            });
          }, stop: function () {
            this.listener && this.listener.removeListener();
          }, getRange: function () {
            var a = {};a[CKEDITOR.LINEUTILS_BEFORE] = CKEDITOR.POSITION_BEFORE_START;a[CKEDITOR.LINEUTILS_AFTER] = CKEDITOR.POSITION_AFTER_END;a[CKEDITOR.LINEUTILS_INSIDE] = CKEDITOR.POSITION_AFTER_START;return function (c) {
              var f = this.editor.createRange();f.moveToPosition(this.relations[c.uid].element, a[c.type]);return f;
            };
          }(), store: function () {
            function b(a, b, c) {
              var e = a.getUniqueId();e in c ? c[e].type |= b : c[e] = { element: a, type: b };
            }return function (c, f) {
              var e;f & CKEDITOR.LINEUTILS_AFTER && a(e = c.getNext()) && e.isVisible() && (b(e, CKEDITOR.LINEUTILS_BEFORE, this.relations), f ^= CKEDITOR.LINEUTILS_AFTER);f & CKEDITOR.LINEUTILS_INSIDE && a(e = c.getFirst()) && e.isVisible() && (b(e, CKEDITOR.LINEUTILS_BEFORE, this.relations), f ^= CKEDITOR.LINEUTILS_INSIDE);b(c, f, this.relations);
            };
          }(), traverseSearch: function (b) {
            var c, f, e;do if (e = b.$["data-cke-expando"], !(e && e in this.relations)) {
              if (b.equals(this.editable)) break;if (a(b)) for (c in this.lookups) (f = this.lookups[c](b)) && this.store(b, f);
            } while ((!b || b.type != CKEDITOR.NODE_ELEMENT || "true" != b.getAttribute("contenteditable")) && (b = b.getParent()));
          }, pixelSearch: function () {
            function b(b, e, g, h, k) {
              for (var l = 0, m; k(g);) {
                g += h;if (25 == ++l) break;if (m = this.doc.$.elementFromPoint(e, g)) if (m == b) l = 0;else if (c(b, m) && (l = 0, a(m = new CKEDITOR.dom.element(m)))) return m;
              }
            }var c = CKEDITOR.env.ie || CKEDITOR.env.webkit ? function (a, b) {
              return a.contains(b);
            } : function (a, b) {
              return !!(a.compareDocumentPosition(b) & 16);
            };return function (c, d, e) {
              var g = this.win.getViewPaneSize().height,
                  h = b.call(this, c.$, d, e, -1, function (a) {
                return 0 < a;
              });d = b.call(this, c.$, d, e, 1, function (a) {
                return a < g;
              });if (h) for (this.traverseSearch(h); !h.getParent().equals(c);) h = h.getParent();if (d) for (this.traverseSearch(d); !d.getParent().equals(c);) d = d.getParent();for (; h || d;) {
                h && (h = h.getNext(a));if (!h || h.equals(d)) break;this.traverseSearch(h);d && (d = d.getPrevious(a));if (!d || d.equals(h)) break;this.traverseSearch(d);
              }
            };
          }(),
          greedySearch: function () {
            this.relations = {};for (var b = this.editable.getElementsByTag("*"), c = 0, f, e, g; f = b.getItem(c++);) if (!f.equals(this.editable) && f.type == CKEDITOR.NODE_ELEMENT && (f.hasAttribute("contenteditable") || !f.isReadOnly()) && a(f) && f.isVisible()) for (g in this.lookups) (e = this.lookups[g](f)) && this.store(f, e);return this.relations;
          } };h.prototype = { locate: function () {
            function b(b, c) {
              var e = b.element[c === CKEDITOR.LINEUTILS_BEFORE ? "getPrevious" : "getNext"]();return e && a(e) ? (b.siblingRect = e.getClientRect(), c == CKEDITOR.LINEUTILS_BEFORE ? (b.siblingRect.bottom + b.elementRect.top) / 2 : (b.elementRect.bottom + b.siblingRect.top) / 2) : c == CKEDITOR.LINEUTILS_BEFORE ? b.elementRect.top : b.elementRect.bottom;
            }return function (a) {
              var c;this.locations = {};for (var e in a) c = a[e], c.elementRect = c.element.getClientRect(), c.type & CKEDITOR.LINEUTILS_BEFORE && this.store(e, CKEDITOR.LINEUTILS_BEFORE, b(c, CKEDITOR.LINEUTILS_BEFORE)), c.type & CKEDITOR.LINEUTILS_AFTER && this.store(e, CKEDITOR.LINEUTILS_AFTER, b(c, CKEDITOR.LINEUTILS_AFTER)), c.type & CKEDITOR.LINEUTILS_INSIDE && this.store(e, CKEDITOR.LINEUTILS_INSIDE, (c.elementRect.top + c.elementRect.bottom) / 2);return this.locations;
            };
          }(), sort: function () {
            var a, c, f, e;return function (g, h) {
              a = this.locations;c = [];for (var k in a) for (var l in a[k]) if (f = Math.abs(g - a[k][l]), c.length) {
                for (e = 0; e < c.length; e++) if (f < c[e].dist) {
                  c.splice(e, 0, { uid: +k, type: l, dist: f });break;
                }e == c.length && c.push({ uid: +k, type: l, dist: f });
              } else c.push({ uid: +k, type: l, dist: f });return "undefined" != typeof h ? c.slice(0, h) : c;
            };
          }(), store: function (a, c, e) {
            this.locations[a] || (this.locations[a] = {});this.locations[a][c] = e;
          } };var e = { display: "block", width: "0px", height: "0px", "border-color": "transparent", "border-style": "solid", position: "absolute", top: "-6px" },
            l = { height: "0px", "border-top": "1px dashed red", position: "absolute", "z-index": 9999 };g.prototype = { removeAll: function () {
            for (var a in this.hidden) this.hidden[a].remove(), delete this.hidden[a];for (a in this.visible) this.visible[a].remove(), delete this.visible[a];
          }, hideLine: function (a) {
            var c = a.getUniqueId();
            a.hide();this.hidden[c] = a;delete this.visible[c];
          }, showLine: function (a) {
            var c = a.getUniqueId();a.show();this.visible[c] = a;delete this.hidden[c];
          }, hideVisible: function () {
            for (var a in this.visible) this.hideLine(this.visible[a]);
          }, placeLine: function (a, c) {
            var e, g, h;if (e = this.getStyle(a.uid, a.type)) {
              for (h in this.visible) if (this.visible[h].getCustomData("hash") !== this.hash) {
                g = this.visible[h];break;
              }if (!g) for (h in this.hidden) if (this.hidden[h].getCustomData("hash") !== this.hash) {
                this.showLine(g = this.hidden[h]);
                break;
              }g || this.showLine(g = this.addLine());g.setCustomData("hash", this.hash);this.visible[g.getUniqueId()] = g;g.setStyles(e);c && c(g);
            }
          }, getStyle: function (a, c) {
            var e = this.relations[a],
                g = this.locations[a][c],
                h = {};h.width = e.siblingRect ? Math.max(e.siblingRect.width, e.elementRect.width) : e.elementRect.width;h.top = this.inline ? g + this.winTopScroll.y - this.rect.relativeY : this.rect.top + this.winTopScroll.y + g;if (h.top - this.winTopScroll.y < this.rect.top || h.top - this.winTopScroll.y > this.rect.bottom) return !1;this.inline ? h.left = e.elementRect.left - this.rect.relativeX : (0 < e.elementRect.left ? h.left = this.rect.left + e.elementRect.left : (h.width += e.elementRect.left, h.left = this.rect.left), 0 < (e = h.left + h.width - (this.rect.left + this.winPane.width)) && (h.width -= e));h.left += this.winTopScroll.x;for (var k in h) h[k] = CKEDITOR.tools.cssLength(h[k]);return h;
          }, addLine: function () {
            var a = CKEDITOR.dom.element.createFromHtml(this.lineTpl);a.appendTo(this.container);return a;
          }, prepare: function (a, c) {
            this.relations = a;this.locations = c;this.hash = Math.random();
          },
          cleanup: function () {
            var a, c;for (c in this.visible) a = this.visible[c], a.getCustomData("hash") !== this.hash && this.hideLine(a);
          }, queryViewport: function () {
            this.winPane = this.win.getViewPaneSize();this.winTopScroll = this.winTop.getScrollPosition();this.winTopPane = this.winTop.getViewPaneSize();this.rect = this.getClientRect(this.inline ? this.editable : this.frame);
          }, getClientRect: function (a) {
            a = a.getClientRect();var c = this.container.getDocumentPosition(),
                e = this.container.getComputedStyle("position");a.relativeX = a.relativeY = 0;"static" != e && (a.relativeY = c.y, a.relativeX = c.x, a.top -= a.relativeY, a.bottom -= a.relativeY, a.left -= a.relativeX, a.right -= a.relativeX);return a;
          } };var k = { left: 1, right: 1, center: 1 },
            m = { absolute: 1, fixed: 1 };CKEDITOR.plugins.lineutils = { finder: c, locator: h, liner: g };
      }(), function () {
        function c(c) {
          return c.getName && !c.hasAttribute("data-cke-temp");
        }CKEDITOR.plugins.add("widgetselection", { init: function (c) {
            if (CKEDITOR.env.webkit) {
              var g = CKEDITOR.plugins.widgetselection;c.on("contentDom", function (a) {
                a = a.editor;var c = a.editable();
                c.attachListener(c, "keydown", function (a) {
                  a.data.getKeystroke() == CKEDITOR.CTRL + 65 && CKEDITOR.tools.setTimeout(function () {
                    g.addFillers(c) || g.removeFillers(c);
                  }, 0);
                }, null, null, -1);a.on("selectionCheck", function (a) {
                  g.removeFillers(a.editor.editable());
                });a.on("paste", function (a) {
                  a.data.dataValue = g.cleanPasteData(a.data.dataValue);
                });"selectall" in a.plugins && g.addSelectAllIntegration(a);
              });
            }
          } });CKEDITOR.plugins.widgetselection = { startFiller: null, endFiller: null, fillerAttribute: "data-cke-filler-webkit", fillerContent: "\x26nbsp;",
          fillerTagName: "div", addFillers: function (h) {
            var g = h.editor;if (!this.isWholeContentSelected(h) && 0 < h.getChildCount()) {
              var a = h.getFirst(c),
                  e = h.getLast(c);a && a.type == CKEDITOR.NODE_ELEMENT && !a.isEditable() && (this.startFiller = this.createFiller(), h.append(this.startFiller, 1));e && e.type == CKEDITOR.NODE_ELEMENT && !e.isEditable() && (this.endFiller = this.createFiller(!0), h.append(this.endFiller, 0));if (this.hasFiller(h)) return g = g.createRange(), g.selectNodeContents(h), g.select(), !0;
            }return !1;
          }, removeFillers: function (c) {
            if (this.hasFiller(c) && !this.isWholeContentSelected(c)) {
              var g = c.findOne(this.fillerTagName + "[" + this.fillerAttribute + "\x3dstart]"),
                  a = c.findOne(this.fillerTagName + "[" + this.fillerAttribute + "\x3dend]");this.startFiller && g && this.startFiller.equals(g) ? this.removeFiller(this.startFiller, c) : this.startFiller = g;this.endFiller && a && this.endFiller.equals(a) ? this.removeFiller(this.endFiller, c) : this.endFiller = a;
            }
          }, cleanPasteData: function (c) {
            c && c.length && (c = c.replace(this.createFillerRegex(), "").replace(this.createFillerRegex(!0), ""));
            return c;
          }, isWholeContentSelected: function (c) {
            var g = c.editor.getSelection().getRanges()[0];return !g || g && g.collapsed ? !1 : (g = g.clone(), g.enlarge(CKEDITOR.ENLARGE_ELEMENT), !!(g && c && g.startContainer && g.endContainer && 0 === g.startOffset && g.endOffset === c.getChildCount() && g.startContainer.equals(c) && g.endContainer.equals(c)));
          }, hasFiller: function (c) {
            return 0 < c.find(this.fillerTagName + "[" + this.fillerAttribute + "]").count();
          }, createFiller: function (c) {
            var g = new CKEDITOR.dom.element(this.fillerTagName);g.setHtml(this.fillerContent);
            g.setAttribute(this.fillerAttribute, c ? "end" : "start");g.setAttribute("data-cke-temp", 1);g.setStyles({ display: "block", width: 0, height: 0, padding: 0, border: 0, margin: 0, position: "absolute", top: 0, left: "-9999px", opacity: 0, overflow: "hidden" });return g;
          }, removeFiller: function (c, g) {
            if (c) {
              var a = g.editor,
                  e = g.editor.getSelection().getRanges()[0].startPath(),
                  l = a.createRange(),
                  k,
                  m;e.contains(c) && (k = c.getHtml(), m = !0);e = "start" == c.getAttribute(this.fillerAttribute);c.remove();k && 0 < k.length && k != this.fillerContent ? (g.insertHtmlIntoRange(k, a.getSelection().getRanges()[0]), l.setStartAt(g.getChild(g.getChildCount() - 1), CKEDITOR.POSITION_BEFORE_END), a.getSelection().selectRanges([l])) : m && (e ? l.setStartAt(g.getFirst().getNext(), CKEDITOR.POSITION_AFTER_START) : l.setEndAt(g.getLast().getPrevious(), CKEDITOR.POSITION_BEFORE_END), g.editor.getSelection().selectRanges([l]));
            }
          }, createFillerRegex: function (c) {
            var g = this.createFiller(c).getOuterHtml().replace(/style="[^"]*"/gi, 'style\x3d"[^"]*"').replace(/>[^<]*</gi, "\x3e[^\x3c]*\x3c");return new RegExp((c ? "" : "^") + g + (c ? "$" : ""));
          }, addSelectAllIntegration: function (c) {
            var g = this;c.editable().attachListener(c, "beforeCommandExec", function (a) {
              var e = c.editable();"selectAll" == a.data.name && e && g.addFillers(e);
            }, null, null, 9999);
          } };
      }(), "use strict", function () {
        function c(a) {
          this.editor = a;this.registered = {};this.instances = {};this.selected = [];this.widgetHoldingFocusedEditable = this.focused = null;this._ = { nextId: 0, upcasts: [], upcastCallbacks: [], filters: {} };B(this);F(this);this.on("checkWidgets", k);this.editor.on("contentDomInvalidated", this.checkWidgets, this);A(this);v(this);q(this);x(this);y(this);
        }function h(a, b, c, d, e) {
          var f = a.editor;CKEDITOR.tools.extend(this, d, { editor: f, id: b, inline: "span" == c.getParent().getName(), element: c, data: CKEDITOR.tools.extend({}, "function" == typeof d.defaults ? d.defaults() : d.defaults), dataReady: !1, inited: !1, ready: !1, edit: h.prototype.edit, focusedEditable: null, definition: d, repository: a, draggable: !1 !== d.draggable, _: { downcastFn: d.downcast && "string" == typeof d.downcast ? d.downcasts[d.downcast] : d.downcast } }, !0);
          a.fire("instanceCreated", this);N(this, d);this.init && this.init();this.inited = !0;(a = this.element.data("cke-widget-data")) && this.setData(JSON.parse(decodeURIComponent(a)));e && this.setData(e);this.data.classes || this.setData("classes", this.getClasses());this.dataReady = !0;Z(this);this.fire("data", this.data);this.isInited() && f.editable().contains(this.wrapper) && (this.ready = !0, this.fire("ready"));
        }function g(a, b, c) {
          CKEDITOR.dom.element.call(this, b.$);this.editor = a;this._ = {};b = this.filter = c.filter;CKEDITOR.dtd[this.getName()].p ? (this.enterMode = b ? b.getAllowedEnterMode(a.enterMode) : a.enterMode, this.shiftEnterMode = b ? b.getAllowedEnterMode(a.shiftEnterMode, !0) : a.shiftEnterMode) : this.enterMode = this.shiftEnterMode = CKEDITOR.ENTER_BR;
        }function a(a, b) {
          a.addCommand(b.name, { exec: function (a, c) {
              function d() {
                a.widgets.finalizeCreation(h);
              }var e = a.widgets.focused;if (e && e.name == b.name) e.edit();else if (b.insert) b.insert({ editor: a, commandData: c });else if (b.template) {
                var e = "function" == typeof b.defaults ? b.defaults() : b.defaults,
                    e = CKEDITOR.tools.object.merge(e || {}, c && c.startupData || {}),
                    e = CKEDITOR.dom.element.createFromHtml(b.template.output(e), a.document),
                    f,
                    g = a.widgets.wrapElement(e, b.name),
                    h = new CKEDITOR.dom.documentFragment(g.getDocument());h.append(g);(f = a.widgets.initOn(e, b, c && c.startupData)) ? (e = f.once("edit", function (b) {
                  if (b.data.dialog) f.once("dialog", function (b) {
                    b = b.data;var c, e;c = b.once("ok", d, null, null, 20);e = b.once("cancel", function (b) {
                      b.data && !1 === b.data.hide || a.widgets.destroy(f, !0);
                    });b.once("hide", function () {
                      c.removeListener();e.removeListener();
                    });
                  });else d();
                }, null, null, 999), f.edit(), e.removeListener()) : d();
              }
            }, allowedContent: b.allowedContent, requiredContent: b.requiredContent, contentForms: b.contentForms, contentTransformations: b.contentTransformations });
        }function e(a, b) {
          function d(b, c, e) {
            var f = CKEDITOR.tools.getIndex(a._.upcasts, function (a) {
              return a[2] > e;
            });0 > f && (f = a._.upcasts.length);a._.upcasts.splice(f, 0, [CKEDITOR.tools.bind(b, c), c.name, e]);
          }var e = b.upcast,
              f = b.upcastPriority || 10;e && ("string" == typeof e ? d(function c(a, d) {
            var e = b.upcast.split(","),
                f,
                g;for (g = 0; g < e.length; g++) if (f = e[g], f === a.name) return b.upcasts[f].call(this, a, d);return !1;
          }, b, f) : d(e, b, f));
        }function l(a, b) {
          a.focused = null;if (b.isInited()) {
            var c = b.editor.checkDirty();a.fire("widgetBlurred", { widget: b });b.setFocused(!1);!c && b.editor.resetDirty();
          }
        }function k(a) {
          a = a.data;if ("wysiwyg" == this.editor.mode) {
            var b = this.editor.editable(),
                c = this.instances,
                d,
                e,
                f,
                g;if (b) {
              for (d in c) c[d].isReady() && !b.contains(c[d].wrapper) && this.destroy(c[d], !0);if (a && a.initOnlyNew) c = this.initOnAll();else {
                var k = b.find(".cke_widget_wrapper"),
                    c = [];d = 0;for (e = k.count(); d < e; d++) {
                  f = k.getItem(d);if (g = !this.getByElement(f, !0)) {
                    a: {
                      g = t;for (var l = f; l = l.getParent();) if (g(l)) {
                        g = !0;break a;
                      }g = !1;
                    }g = !g;
                  }g && b.contains(f) && (f.addClass("cke_widget_new"), c.push(this.initOn(f.getFirst(h.isDomWidgetElement))));
                }
              }a && a.focusInited && 1 == c.length && c[0].focus();
            }
          }
        }function m(a) {
          if ("undefined" != typeof a.attributes && a.attributes["data-widget"]) {
            var c = b(a),
                e = d(a),
                f = !1;c && c.value && c.value.match(/^\s/g) && (c.parent.attributes["data-cke-white-space-first"] = 1, c.value = c.value.replace(/^\s/g, "\x26nbsp;"), f = !0);e && e.value && e.value.match(/\s$/g) && (e.parent.attributes["data-cke-white-space-last"] = 1, e.value = e.value.replace(/\s$/g, "\x26nbsp;"), f = !0);f && (a.attributes["data-cke-widget-white-space"] = 1);
          }
        }function b(a) {
          return a.find(function (a) {
            return 3 === a.type;
          }, !0).shift();
        }function d(a) {
          return a.find(function (a) {
            return 3 === a.type;
          }, !0).pop();
        }function f(a, b, c) {
          if (!c.allowedContent && !c.disallowedContent) return null;var d = this._.filters[a];d || (this._.filters[a] = d = {});a = d[b];a || (a = c.allowedContent ? new CKEDITOR.filter(c.allowedContent) : this.editor.filter.clone(), d[b] = a, c.disallowedContent && a.disallow(c.disallowedContent));return a;
        }function n(a) {
          var b = [],
              c = a._.upcasts,
              d = a._.upcastCallbacks;return { toBeWrapped: b, iterator: function (a) {
              var e, f, g, k, l;if ("data-cke-widget-wrapper" in a.attributes) return (a = a.getFirst(h.isParserWidgetElement)) && b.push([a]), !1;if ("data-widget" in a.attributes) return b.push([a]), !1;if (l = c.length) {
                if (a.attributes["data-cke-widget-upcasted"]) return !1;k = 0;for (e = d.length; k < e; ++k) if (!1 === d[k](a)) return;for (k = 0; k < l; ++k) if (e = c[k], g = {}, f = e[0](a, g)) return f instanceof CKEDITOR.htmlParser.element && (a = f), a.attributes["data-cke-widget-data"] = encodeURIComponent(JSON.stringify(g)), a.attributes["data-cke-widget-upcasted"] = 1, b.push([a, e[1]]), !1;
              }
            } };
        }function w(a, b) {
          return { tabindex: -1, contenteditable: "false", "data-cke-widget-wrapper": 1, "data-cke-filter": "off", "class": "cke_widget_wrapper cke_widget_new cke_widget_" + (a ? "inline" : "block") + (b ? " cke_widget_" + b : "") };
        }function z(a, b, c) {
          if (a.type == CKEDITOR.NODE_ELEMENT) {
            var d = CKEDITOR.dtd[a.name];if (d && !d[c.name]) {
              var d = a.split(b),
                  e = a.parent;b = d.getIndex();a.children.length || (--b, a.remove());d.children.length || d.remove();return z(e, b, c);
            }
          }a.add(c, b);
        }function r(a, b) {
          return "boolean" == typeof a.inline ? a.inline : !!CKEDITOR.dtd.$inline[b];
        }function t(a) {
          return a.hasAttribute("data-cke-temp");
        }function u(a, b, c, d) {
          var e = a.editor;e.fire("lockSnapshot");c ? (d = c.data("cke-widget-editable"), d = b.editables[d], a.widgetHoldingFocusedEditable = b, b.focusedEditable = d, c.addClass("cke_widget_editable_focused"), d.filter && e.setActiveFilter(d.filter), e.setActiveEnterMode(d.enterMode, d.shiftEnterMode)) : (d || b.focusedEditable.removeClass("cke_widget_editable_focused"), b.focusedEditable = null, a.widgetHoldingFocusedEditable = null, e.setActiveFilter(null), e.setActiveEnterMode(null, null));e.fire("unlockSnapshot");
        }function C(a) {
          a.contextMenu && a.contextMenu.addListener(function (b) {
            if (b = a.widgets.getByElement(b, !0)) return b.fire("contextMenu", {});
          });
        }function p(a, b) {
          return CKEDITOR.tools.trim(b);
        }function x(a) {
          var b = a.editor,
              c = CKEDITOR.plugins.lineutils;b.on("dragstart", function (c) {
            var d = c.data.target;h.isDomDragHandler(d) && (d = a.getByElement(d), c.data.dataTransfer.setData("cke/widget-id", d.id), b.focus(), d.focus());
          });b.on("drop", function (c) {
            var e = c.data.dataTransfer,
                f = e.getData("cke/widget-id"),
                g = e.getTransferType(b),
                e = b.createRange(),
                h = function (a) {
              a = a.getBoundaryNodes().startNode;a.type !== CKEDITOR.NODE_ELEMENT && (a = a.getParent());
              return b.widgets.getByElement(a);
            }(c.data.dropRange);if ("" !== f && g === CKEDITOR.DATA_TRANSFER_CROSS_EDITORS) c.cancel();else if (g == CKEDITOR.DATA_TRANSFER_INTERNAL) if ("" === f && 0 < b.widgets.selected.length) c.data.dataTransfer.setData("text/html", O(b));else if (f = a.instances[f]) (function d(a, b) {
              return a && b ? a.wrapper.equals(b.wrapper) || a.wrapper.contains(b.wrapper) : !1;
            })(f, h) ? c.cancel() : (e.setStartBefore(f.wrapper), e.setEndAfter(f.wrapper), c.data.dragRange = e, delete CKEDITOR.plugins.clipboard.dragStartContainerChildCount, delete CKEDITOR.plugins.clipboard.dragEndContainerChildCount, c.data.dataTransfer.setData("text/html", f.getClipboardHtml()), b.widgets.destroy(f, !0));
          });b.on("contentDom", function () {
            var d = b.editable();CKEDITOR.tools.extend(a, { finder: new c.finder(b, { lookups: { "default": function (b) {
                    if (!b.is(CKEDITOR.dtd.$listItem) && b.is(CKEDITOR.dtd.$block) && !h.isDomNestedEditable(b) && !a._.draggedWidget.wrapper.contains(b)) {
                      var c = h.getNestedEditable(d, b);if (c) {
                        b = a._.draggedWidget;if (a.getByElement(c) == b) return;c = CKEDITOR.filter.instances[c.data("cke-filter")];b = b.requiredContent;if (c && b && !c.check(b)) return;
                      }return CKEDITOR.LINEUTILS_BEFORE | CKEDITOR.LINEUTILS_AFTER;
                    }
                  } } }), locator: new c.locator(b), liner: new c.liner(b, { lineStyle: { cursor: "move !important", "border-top-color": "#666" }, tipLeftStyle: { "border-left-color": "#666" }, tipRightStyle: { "border-right-color": "#666" } }) }, !0);
          });
        }function v(a) {
          var b = a.editor;b.on("contentDom", function () {
            var c = b.editable(),
                d = c.isInline() ? c : b.document,
                e,
                f;c.attachListener(d, "mousedown", function (c) {
              var d = c.data.getTarget();e = d instanceof CKEDITOR.dom.element ? a.getByElement(d) : null;f = 0;e && (e.inline && d.type == CKEDITOR.NODE_ELEMENT && d.hasAttribute("data-cke-widget-drag-handler") ? (f = 1, a.focused != e && b.getSelection().removeAllRanges()) : h.getNestedEditable(e.wrapper, d) ? e = null : (c.data.preventDefault(), CKEDITOR.env.ie || e.focus()));
            });c.attachListener(d, "mouseup", function () {
              f && e && e.wrapper && (f = 0, e.focus());
            });CKEDITOR.env.ie && c.attachListener(d, "mouseup", function () {
              setTimeout(function () {
                e && e.wrapper && c.contains(e.wrapper) && (e.focus(), e = null);
              });
            });
          });b.on("doubleclick", function (b) {
            var c = a.getByElement(b.data.element);if (c && !h.getNestedEditable(c.wrapper, b.data.element)) return c.fire("doubleclick", { element: b.data.element });
          }, null, null, 1);
        }function q(a) {
          a.editor.on("key", function (b) {
            var c = a.focused,
                d = a.widgetHoldingFocusedEditable,
                e;c ? e = c.fire("key", { keyCode: b.data.keyCode }) : d && (c = b.data.keyCode, b = d.focusedEditable, c == CKEDITOR.CTRL + 65 ? (c = b.getBogus(), d = d.editor.createRange(), d.selectNodeContents(b), c && d.setEndAt(c, CKEDITOR.POSITION_BEFORE_START), d.select(), e = !1) : 8 == c || 46 == c ? (e = d.editor.getSelection().getRanges(), d = e[0], e = !(1 == e.length && d.collapsed && d.checkBoundaryOfElement(b, CKEDITOR[8 == c ? "START" : "END"]))) : e = void 0);return e;
          }, null, null, 1);
        }function y(a) {
          function b(d) {
            1 > a.selected.length || I(c, "cut" === d.name);
          }var c = a.editor;c.on("contentDom", function () {
            var a = c.editable();a.attachListener(a, "copy", b);a.attachListener(a, "cut", b);
          });
        }function A(a) {
          function c(a) {
            return a ? a.type == CKEDITOR.NODE_TEXT ? c(a.getParent()) : e.widgets.getByElement(a) : null;
          }function d() {
            a.fire("checkSelection");
          }var e = a.editor;e.on("selectionCheck", d);e.on("contentDom", function () {
            e.editable().attachListener(e, "key", function () {
              setTimeout(d, 10);
            });
          });if (!CKEDITOR.env.ie) a.on("checkSelection", function b() {
            var a = e.getSelection();if (a && (a = a.getRanges()[0]) && !a.collapsed) {
              var d = c(a.startContainer),
                  f = c(a.endContainer);!d && f ? (a.setEndBefore(f.wrapper), a.select()) : d && !f && (a.setStartAfter(d.wrapper), a.select());
            }
          });a.on("checkSelection", a.checkSelection, a);e.on("selectionChange", function (b) {
            var c = (b = h.getNestedEditable(e.editable(), b.data.selection.getStartElement())) && a.getByElement(b),
                d = a.widgetHoldingFocusedEditable;d ? d === c && d.focusedEditable.equals(b) || (u(a, d, null), c && b && u(a, c, b)) : c && b && u(a, c, b);
          });e.on("dataReady", function () {
            G(a).commit();
          });e.on("blur", function () {
            var b;(b = a.focused) && l(a, b);(b = a.widgetHoldingFocusedEditable) && u(a, b, null);
          });
        }function F(a) {
          var c = a.editor,
              e = {};c.on("toDataFormat", function (c) {
            var f = CKEDITOR.tools.getNextNumber(),
                g = [];c.data.downcastingSessionId = f;e[f] = g;c.data.dataValue.forEach(function (c) {
              var e = c.attributes,
                  f;if ("data-cke-widget-white-space" in e) {
                f = b(c);var k = d(c);f.parent.attributes["data-cke-white-space-first"] && (f.value = f.value.replace(/^&nbsp;/g, " "));k.parent.attributes["data-cke-white-space-last"] && (k.value = k.value.replace(/&nbsp;$/g, " "));
              }if ("data-cke-widget-id" in e) {
                if (e = a.instances[e["data-cke-widget-id"]]) f = c.getFirst(h.isParserWidgetElement), g.push({ wrapper: c, element: f, widget: e, editables: {} }), f && "1" != f.attributes["data-cke-widget-keep-attr"] && delete f.attributes["data-widget"];
              } else if ("data-cke-widget-editable" in e) return 0 < g.length && (g[g.length - 1].editables[e["data-cke-widget-editable"]] = c), !1;
            }, CKEDITOR.NODE_ELEMENT, !0);
          }, null, null, 8);c.on("toDataFormat", function (a) {
            if (a.data.downcastingSessionId) for (var b = e[a.data.downcastingSessionId], c, d, f, g, h, k; c = b.shift();) {
              d = c.widget;f = c.element;g = d._.downcastFn && d._.downcastFn.call(d, f);a.data.widgetsCopy && d.getClipboardHtml && (g = CKEDITOR.htmlParser.fragment.fromHtml(d.getClipboardHtml()), g = g.children[0]);for (k in c.editables) h = c.editables[k], delete h.attributes.contenteditable, h.setHtml(d.editables[k].getData());
              g || (g = f);g ? c.wrapper.replaceWith(g) : c.wrapper.remove();
            }
          }, null, null, 13);c.on("contentDomUnload", function () {
            a.destroyAll(!0);
          });
        }function B(a) {
          var b = a.editor,
              c,
              d;b.on("toHtml", function (b) {
            var d = n(a),
                e;for (b.data.dataValue.forEach(d.iterator, CKEDITOR.NODE_ELEMENT, !0); e = d.toBeWrapped.pop();) {
              var f = e[0],
                  g = f.parent;g.type == CKEDITOR.NODE_ELEMENT && g.attributes["data-cke-widget-wrapper"] && g.replaceWith(f);a.wrapElement(e[0], e[1]);
            }c = b.data.protectedWhitespaces ? 3 == b.data.dataValue.children.length && h.isParserWidgetWrapper(b.data.dataValue.children[1]) : 1 == b.data.dataValue.children.length && h.isParserWidgetWrapper(b.data.dataValue.children[0]);
          }, null, null, 8);b.on("dataReady", function () {
            if (d) for (var c = b.editable().find(".cke_widget_wrapper"), e, f, g = 0, k = c.count(); g < k; ++g) e = c.getItem(g), f = e.getFirst(h.isDomWidgetElement), f.type == CKEDITOR.NODE_ELEMENT && f.data("widget") ? (f.replace(e), a.wrapElement(f)) : e.remove();d = 0;a.destroyAll(!0);a.initOnAll();
          });b.on("loadSnapshot", function (b) {
            /data-cke-widget/.test(b.data) && (d = 1);a.destroyAll(!0);
          }, null, null, 9);b.on("paste", function (a) {
            a = a.data;a.dataValue = a.dataValue.replace(ca, p);a.range && (a = h.getNestedEditable(b.editable(), a.range.startContainer)) && (a = CKEDITOR.filter.instances[a.data("cke-filter")]) && b.setActiveFilter(a);
          });b.on("afterInsertHtml", function (d) {
            d.data.intoRange ? a.checkWidgets({ initOnlyNew: !0 }) : (b.fire("lockSnapshot"), a.checkWidgets({ initOnlyNew: !0, focusInited: c }), b.fire("unlockSnapshot"));
          });
        }function G(a) {
          var b = a.selected,
              c = [],
              d = b.slice(0),
              e = null;return { select: function (a) {
              0 > CKEDITOR.tools.indexOf(b, a) && c.push(a);a = CKEDITOR.tools.indexOf(d, a);0 <= a && d.splice(a, 1);return this;
            }, focus: function (a) {
              e = a;return this;
            }, commit: function () {
              var f = a.focused !== e,
                  g,
                  h;a.editor.fire("lockSnapshot");for (f && (g = a.focused) && l(a, g); g = d.pop();) b.splice(CKEDITOR.tools.indexOf(b, g), 1), g.isInited() && (h = g.editor.checkDirty(), g.setSelected(!1), !h && g.editor.resetDirty());f && e && (h = a.editor.checkDirty(), a.focused = e, a.fire("widgetFocused", { widget: e }), e.setFocused(!0), !h && a.editor.resetDirty());for (; g = c.pop();) b.push(g), g.setSelected(!0);
              a.editor.fire("unlockSnapshot");
            } };
        }function E(a) {
          a && a.addFilterRule(function (a) {
            return a.replace(/\s*cke_widget_selected/g, "").replace(/\s*cke_widget_focused/g, "");
          });
        }function K(a, b, c) {
          var d = 0;b = D(b);var e = a.data.classes || {},
              f;if (b) {
            for (e = CKEDITOR.tools.clone(e); f = b.pop();) c ? e[f] || (d = e[f] = 1) : e[f] && (delete e[f], d = 1);d && a.setData("classes", e);
          }
        }function H(a) {
          a.cancel();
        }function M(a, b) {
          var c = function (a) {
            return a == CKEDITOR.ENTER_BR ? "br" : a == CKEDITOR.ENTER_DIV ? "div" : "p";
          }(a.editor.config.enterMode),
              d = new CKEDITOR.dom.element(c);
          "br" !== c && d.appendBogus();"after" === b ? d.insertAfter(a.wrapper) : d.insertBefore(a.wrapper);(function (b) {
            var c = a.editor.createRange();c.setStart(b, 0);a.editor.getSelection().selectRanges([c]);
          })(d);
        }function I(a, b) {
          var c = a.widgets.focused,
              d,
              e,
              f;Q.hasCopyBin(a) || (e = new Q(a, { beforeDestroy: function () {
              !b && c && c.focus();f && a.getSelection().selectBookmarks(f);d && CKEDITOR.plugins.widgetselection.addFillers(a.editable());
            }, afterDestroy: function () {
              b && !a.readOnly && (c ? a.widgets.del(c) : a.extractSelectedHtml(), a.fire("saveSnapshot"));
            } }), c || (d = CKEDITOR.env.webkit && CKEDITOR.plugins.widgetselection.isWholeContentSelected(a.editable()), f = a.getSelection().createBookmarks(!0)), e.handle(O(a)));
        }function D(a) {
          return (a = (a = a.getDefinition().attributes) && a["class"]) ? a.split(/\s+/) : null;
        }function P() {
          var a = CKEDITOR.document.getActive(),
              b = this.editor,
              c = b.editable();(c.isInline() ? c : b.document.getWindow().getFrame()).equals(a) && b.focusManager.focus(c);
        }function L() {
          CKEDITOR.env.gecko && this.editor.unlockSelection();CKEDITOR.env.webkit || (this.editor.forceNextSelectionCheck(), this.editor.selectionChange(1));
        }function O(a) {
          var b = a.getSelectedHtml(!0);if (a.widgets.focused) return a.widgets.focused.getClipboardHtml();a.once("toDataFormat", function (a) {
            a.data.widgetsCopy = !0;
          }, null, null, -1);return a.dataProcessor.toDataFormat(b);
        }function N(a, b) {
          var c = a.editor.config.widget_keystrokeInsertLineBefore,
              d = a.editor.config.widget_keystrokeInsertLineAfter;V(a);S(a);U(a);da(a);fa(a);ka(a);W(a);if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) a.wrapper.on("dragstart", function (b) {
            var c = b.data.getTarget();
            h.getNestedEditable(a, c) || a.inline && h.isDomDragHandler(c) || b.data.preventDefault();
          });a.wrapper.removeClass("cke_widget_new");a.element.addClass("cke_widget_element");a.on("key", function (b) {
            b = b.data.keyCode;if (b == c) M(a, "before"), a.editor.fire("saveSnapshot");else if (b == d) M(a, "after"), a.editor.fire("saveSnapshot");else if (13 == b) a.edit();else {
              if (b == CKEDITOR.CTRL + 67 || b == CKEDITOR.CTRL + 88) {
                I(a.editor, b == CKEDITOR.CTRL + 88);return;
              }if (b in X || CKEDITOR.CTRL & b || CKEDITOR.ALT & b) return;
            }return !1;
          }, null, null, 999);
          a.on("doubleclick", function (b) {
            a.edit() && b.cancel();
          });if (b.data) a.on("data", b.data);if (b.edit) a.on("edit", b.edit);
        }function V(a) {
          (a.wrapper = a.element.getParent()).setAttribute("data-cke-widget-id", a.id);
        }function S(a, b) {
          a.partSelectors || (a.partSelectors = a.parts);if (a.parts) {
            var c = {},
                d,
                e;for (e in a.partSelectors) b || !a.parts[e] || "string" == typeof a.parts[e] ? (d = a.wrapper.findOne(a.partSelectors[e]), c[e] = d) : c[e] = a.parts[e];a.parts = c;
          }
        }function U(a) {
          var b = a.editables,
              c,
              d;a.editables = {};if (a.editables) for (c in b) d = b[c], a.initEditable(c, "string" == typeof d ? { selector: d } : d);
        }function da(a) {
          if (!0 === a.mask) T(a);else if (a.mask) {
            var b = new CKEDITOR.tools.buffers.throttle(250, ea, a),
                c = CKEDITOR.env.gecko ? 300 : 0,
                d,
                e;a.on("focus", function () {
              b.input();d = a.editor.on("change", b.input);e = a.on("blur", function () {
                d.removeListener();e.removeListener();
              });
            });a.editor.on("instanceReady", function () {
              setTimeout(function () {
                b.input();
              }, c);
            });a.editor.on("mode", function () {
              setTimeout(function () {
                b.input();
              }, c);
            });if (CKEDITOR.env.gecko) {
              var f = a.element.find("img");
              CKEDITOR.tools.array.forEach(f.toArray(), function (a) {
                a.on("load", function () {
                  b.input();
                });
              });
            }for (var g in a.editables) a.editables[g].on("focus", function () {
              a.editor.on("change", b.input);e && e.removeListener();
            }), a.editables[g].on("blur", function () {
              a.editor.removeListener("change", b.input);
            });b.input();
          }
        }function T(a) {
          var b = a.wrapper.findOne(".cke_widget_mask");b || (b = new CKEDITOR.dom.element("img", a.editor.document), b.setAttributes({ src: CKEDITOR.tools.transparentImageData, "class": "cke_reset cke_widget_mask" }), a.wrapper.append(b));a.mask = b;
        }function ea() {
          if (this.wrapper) {
            this.maskPart = this.maskPart || this.mask;var a = this.parts[this.maskPart],
                b;if (a && "string" != typeof a) {
              b = this.wrapper.findOne(".cke_widget_partial_mask");b || (b = new CKEDITOR.dom.element("img", this.editor.document), b.setAttributes({ src: CKEDITOR.tools.transparentImageData, "class": "cke_reset cke_widget_partial_mask" }), this.wrapper.append(b));this.mask = b;var c = b.$,
                  d = a.$,
                  e = !(c.offsetTop == d.offsetTop && c.offsetLeft == d.offsetLeft);if (c.offsetWidth != d.offsetWidth || c.offsetHeight != d.offsetHeight || e) c = a.getParent(), d = CKEDITOR.plugins.widget.isDomWidget(c), b.setStyles({ top: a.$.offsetTop + (d ? 0 : c.$.offsetTop) + "px", left: a.$.offsetLeft + (d ? 0 : c.$.offsetLeft) + "px", width: a.$.offsetWidth + "px", height: a.$.offsetHeight + "px" });
            }
          }
        }function fa(a) {
          if (a.draggable) {
            var b = a.editor,
                c = a.wrapper.getLast(h.isDomDragHandlerContainer),
                d;c ? d = c.findOne("img") : (c = new CKEDITOR.dom.element("span", b.document), c.setAttributes({ "class": "cke_reset cke_widget_drag_handler_container",
              style: "background:rgba(220,220,220,0.5);background-image:url(" + b.plugins.widget.path + "images/handle.png);display:none;" }), d = new CKEDITOR.dom.element("img", b.document), d.setAttributes({ "class": "cke_reset cke_widget_drag_handler", "data-cke-widget-drag-handler": "1", src: CKEDITOR.tools.transparentImageData, width: 15, title: b.lang.widget.move, height: 15, role: "presentation" }), a.inline && d.setAttribute("draggable", "true"), c.append(d), a.wrapper.append(c));a.wrapper.on("dragover", function (a) {
              a.data.preventDefault();
            });
            a.wrapper.on("mouseenter", a.updateDragHandlerPosition, a);setTimeout(function () {
              a.on("data", a.updateDragHandlerPosition, a);
            }, 50);if (!a.inline && (d.on("mousedown", ia, a), CKEDITOR.env.ie && 9 > CKEDITOR.env.version)) d.on("dragstart", function (a) {
              a.data.preventDefault(!0);
            });a.dragHandlerContainer = c;
          }
        }function ia(a) {
          function b() {
            var c;for (q.reset(); c = h.pop();) c.removeListener();var d = k;c = a.sender;var e = this.repository.finder,
                f = this.repository.liner,
                g = this.editor,
                l = this.editor.editable();CKEDITOR.tools.isEmpty(f.visible) || (d = e.getRange(d[0]), this.focus(), g.fire("drop", { dropRange: d, target: d.startContainer }));l.removeClass("cke_widget_dragging");f.hideVisible();g.fire("dragend", { target: c });
          }if (CKEDITOR.tools.getMouseButton(a) === CKEDITOR.MOUSE_BUTTON_LEFT) {
            var c = this.repository.finder,
                d = this.repository.locator,
                e = this.repository.liner,
                f = this.editor,
                g = f.editable(),
                h = [],
                k = [],
                l,
                m;this.repository._.draggedWidget = this;var p = c.greedySearch(),
                q = CKEDITOR.tools.eventsBuffer(50, function () {
              l = d.locate(p);k = d.sort(m, 1);k.length && (e.prepare(p, l), e.placeLine(k[0]), e.cleanup());
            });g.addClass("cke_widget_dragging");h.push(g.on("mousemove", function (a) {
              m = a.data.$.clientY;q.input();
            }));f.fire("dragstart", { target: a.sender });h.push(f.document.once("mouseup", b, this));g.isInline() || h.push(CKEDITOR.document.once("mouseup", b, this));
          }
        }function ka(a) {
          var b = null;a.on("data", function () {
            var a = this.data.classes,
                c;if (b != a) {
              for (c in b) a && a[c] || this.removeClass(c);for (c in a) this.addClass(c);b = a;
            }
          });
        }function W(a) {
          a.on("data", function () {
            if (a.wrapper) {
              var b = this.getLabel ? this.getLabel() : this.editor.lang.widget.label.replace(/%1/, this.pathName || this.element.getName());a.wrapper.setAttribute("role", "region");a.wrapper.setAttribute("aria-label", b);
            }
          }, null, null, 9999);
        }function Z(a) {
          a.element.data("cke-widget-data", encodeURIComponent(JSON.stringify(a.data)));
        }function aa() {
          function a() {}function b(a, c, d) {
            return d && this.checkElement(a) ? (a = d.widgets.getByElement(a, !0)) && a.checkStyleActive(this) : !1;
          }function c(a) {
            function b(a, c, d) {
              for (var e = a.length, f = 0; f < e;) {
                if (c.call(d, a[f], f, a)) return a[f];f++;
              }
            }function e(a) {
              function b(a, c) {
                var d = CKEDITOR.tools.object.keys(a),
                    e = CKEDITOR.tools.object.keys(c);if (d.length !== e.length) return !1;for (var f in a) if (("object" !== typeof a[f] || "object" !== typeof c[f] || !b(a[f], c[f])) && a[f] !== c[f]) return !1;return !0;
              }return function (c) {
                return b(a.getDefinition(), c.getDefinition());
              };
            }var f = a.widget,
                g;d[f] || (d[f] = {});for (var h = 0, k = a.group.length; h < k; h++) g = a.group[h], d[f][g] || (d[f][g] = []), g = d[f][g], b(g, e(a)) || g.push(a);
          }var d = {};CKEDITOR.style.addCustomHandler({ type: "widget",
            setup: function (a) {
              this.widget = a.widget;(this.group = "string" == typeof a.group ? [a.group] : a.group) && c(this);
            }, apply: function (a) {
              var b;a instanceof CKEDITOR.editor && this.checkApplicable(a.elementPath(), a) && (b = a.widgets.focused, this.group && this.removeStylesFromSameGroup(a), b.applyStyle(this));
            }, remove: function (a) {
              a instanceof CKEDITOR.editor && this.checkApplicable(a.elementPath(), a) && a.widgets.focused.removeStyle(this);
            }, removeStylesFromSameGroup: function (a) {
              var b = !1,
                  c,
                  e;if (!(a instanceof CKEDITOR.editor)) return !1;
              e = a.elementPath();if (this.checkApplicable(e, a)) for (var f = 0, g = this.group.length; f < g; f++) {
                c = d[this.widget][this.group[f]];for (var h = 0; h < c.length; h++) c[h] !== this && c[h].checkActive(e, a) && (a.widgets.focused.removeStyle(c[h]), b = !0);
              }return b;
            }, checkActive: function (a, b) {
              return this.checkElementMatch(a.lastElement, 0, b);
            }, checkApplicable: function (a, b) {
              return b instanceof CKEDITOR.editor ? this.checkElement(a.lastElement) : !1;
            }, checkElementMatch: b, checkElementRemovable: b, checkElement: function (a) {
              return h.isDomWidgetWrapper(a) ? (a = a.getFirst(h.isDomWidgetElement)) && a.data("widget") == this.widget : !1;
            }, buildPreview: function (a) {
              return a || this._.definition.name;
            }, toAllowedContentRules: function (a) {
              if (!a) return null;a = a.widgets.registered[this.widget];var b,
                  c = {};if (!a) return null;if (a.styleableElements) {
                b = this.getClassesArray();if (!b) return null;c[a.styleableElements] = { classes: b, propertiesOnly: !0 };return c;
              }return a.styleToAllowedContentRules ? a.styleToAllowedContentRules(this) : null;
            }, getClassesArray: function () {
              var a = this._.definition.attributes && this._.definition.attributes["class"];return a ? CKEDITOR.tools.trim(a).split(/\s+/) : null;
            }, applyToRange: a, removeFromRange: a, applyToObject: a });
        }CKEDITOR.plugins.add("widget", { requires: "lineutils,clipboard,widgetselection", onLoad: function () {
            void 0 !== CKEDITOR.document.$.querySelectorAll && (CKEDITOR.addCss('.cke_widget_wrapper{position:relative;outline:none}.cke_widget_inline{display:inline-block}.cke_widget_wrapper:hover\x3e.cke_widget_element{outline:2px solid #ffd25c;cursor:default}.cke_widget_wrapper:hover .cke_widget_editable{outline:2px solid #ffd25c}.cke_widget_wrapper.cke_widget_focused\x3e.cke_widget_element,.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{outline:2px solid #47a4f5}.cke_widget_editable{cursor:text}.cke_widget_drag_handler_container{position:absolute;width:15px;height:0;display:block;opacity:0.75;transition:height 0s 0.2s;line-height:0}.cke_widget_wrapper:hover\x3e.cke_widget_drag_handler_container{height:15px;transition:none}.cke_widget_drag_handler_container:hover{opacity:1}.cke_editable[contenteditable\x3d"false"] .cke_widget_drag_handler_container{display:none;}img.cke_widget_drag_handler{cursor:move;width:15px;height:15px;display:inline-block}.cke_widget_mask{position:absolute;top:0;left:0;width:100%;height:100%;display:block}.cke_widget_partial_mask{position:absolute;display:block}.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{cursor:move !important}'), aa());
          }, beforeInit: function (a) {
            void 0 !== CKEDITOR.document.$.querySelectorAll && (a.widgets = new c(a));
          }, afterInit: function (a) {
            if (void 0 !== CKEDITOR.document.$.querySelectorAll) {
              var b = a.widgets.registered,
                  c,
                  d,
                  e;for (d in b) c = b[d], (e = c.button) && a.ui.addButton && a.ui.addButton(CKEDITOR.tools.capitalize(c.name, !0), { label: e, command: c.name, toolbar: "insert,10" });C(a);E(a.undoManager);
            }
          } });c.prototype = { MIN_SELECTION_CHECK_INTERVAL: 500, add: function (b, c) {
            var d = this.editor;c = CKEDITOR.tools.prototypedCopy(c);c.name = b;
            c._ = c._ || {};d.fire("widgetDefinition", c);c.template && (c.template = new CKEDITOR.template(c.template));a(d, c);e(this, c);this.registered[b] = c;if (c.dialog && d.plugins.dialog) var f = CKEDITOR.on("dialogDefinition", function (a) {
              a = a.data.definition;var b = a.dialog;a.getMode || b.getName() !== c.dialog || (a.getMode = function () {
                var a = b.getModel(d);return a && a instanceof CKEDITOR.plugins.widget && a.ready ? CKEDITOR.dialog.EDITING_MODE : CKEDITOR.dialog.CREATION_MODE;
              });f.removeListener();
            });return c;
          }, addUpcastCallback: function (a) {
            this._.upcastCallbacks.push(a);
          },
          checkSelection: function () {
            if (this.editor.getSelection()) {
              var a = this.editor.getSelection(),
                  b = a.getSelectedElement(),
                  c = G(this),
                  d;if (b && (d = this.getByElement(b, !0))) return c.focus(d).select(d).commit();a = a.getRanges()[0];if (!a || a.collapsed) return c.commit();a = new CKEDITOR.dom.walker(a);for (a.evaluator = h.isDomWidgetWrapper; b = a.next();) c.select(this.getByElement(b));c.commit();
            }
          }, checkWidgets: function (a) {
            this.fire("checkWidgets", CKEDITOR.tools.copy(a || {}));
          }, del: function (a) {
            if (this.focused === a) {
              var b = a.editor,
                  c = b.createRange(),
                  d;(d = c.moveToClosestEditablePosition(a.wrapper, !0)) || (d = c.moveToClosestEditablePosition(a.wrapper, !1));d && b.getSelection().selectRanges([c]);
            }a.wrapper.remove();this.destroy(a, !0);
          }, destroy: function (a, b) {
            this.widgetHoldingFocusedEditable === a && u(this, a, null, b);a.destroy(b);delete this.instances[a.id];this.fire("instanceDestroyed", a);
          }, destroyAll: function (a, b) {
            var c,
                d,
                e = this.instances;if (b && !a) {
              d = b.find(".cke_widget_wrapper");for (var e = d.count(), f = 0; f < e; ++f) (c = this.getByElement(d.getItem(f), !0)) && this.destroy(c);
            } else for (d in e) c = e[d], this.destroy(c, a);
          }, finalizeCreation: function (a) {
            (a = a.getFirst()) && h.isDomWidgetWrapper(a) && (this.editor.insertElement(a), a = this.getByElement(a), a.ready = !0, a.fire("ready"), a.focus());
          }, getByElement: function () {
            function a(c) {
              return c.is(b) && c.data("cke-widget-id");
            }var b = { div: 1, span: 1 };return function (b, c) {
              if (!b) return null;var d = a(b);if (!c && !d) {
                var e = this.editor.editable();do b = b.getParent(); while (b && !b.equals(e) && !(d = a(b)));
              }return this.instances[d] || null;
            };
          }(),
          initOn: function (a, b, c) {
            b ? "string" == typeof b && (b = this.registered[b]) : b = this.registered[a.data("widget")];if (!b) return null;var d = this.wrapElement(a, b.name);return d ? d.hasClass("cke_widget_new") ? (a = new h(this, this._.nextId++, a, b, c), a.isInited() ? this.instances[a.id] = a : null) : this.getByElement(a) : null;
          }, initOnAll: function (a) {
            a = (a || this.editor.editable()).find(".cke_widget_new");for (var b = [], c, d = a.count(); d--;) (c = this.initOn(a.getItem(d).getFirst(h.isDomWidgetElement))) && b.push(c);return b;
          }, onWidget: function (a) {
            var b = Array.prototype.slice.call(arguments);b.shift();for (var c in this.instances) {
              var d = this.instances[c];d.name == a && d.on.apply(d, b);
            }this.on("instanceCreated", function (c) {
              c = c.data;c.name == a && c.on.apply(c, b);
            });
          }, parseElementClasses: function (a) {
            if (!a) return null;a = CKEDITOR.tools.trim(a).split(/\s+/);for (var b, c = {}, d = 0; b = a.pop();) -1 == b.indexOf("cke_") && (c[b] = d = 1);return d ? c : null;
          }, wrapElement: function (a, b) {
            var c = null,
                d,
                e;if (a instanceof CKEDITOR.dom.element) {
              b = b || a.data("widget");d = this.registered[b];if (!d) return null;
              if ((c = a.getParent()) && c.type == CKEDITOR.NODE_ELEMENT && c.data("cke-widget-wrapper")) return c;a.hasAttribute("data-cke-widget-keep-attr") || a.data("cke-widget-keep-attr", a.data("widget") ? 1 : 0);a.data("widget", b);(e = r(d, a.getName())) && m(a);c = new CKEDITOR.dom.element(e ? "span" : "div", a.getDocument());c.setAttributes(w(e, b));c.data("cke-display-name", d.pathName ? d.pathName : a.getName());a.getParent(!0) && c.replace(a);a.appendTo(c);
            } else if (a instanceof CKEDITOR.htmlParser.element) {
              b = b || a.attributes["data-widget"];
              d = this.registered[b];if (!d) return null;if ((c = a.parent) && c.type == CKEDITOR.NODE_ELEMENT && c.attributes["data-cke-widget-wrapper"]) return c;"data-cke-widget-keep-attr" in a.attributes || (a.attributes["data-cke-widget-keep-attr"] = a.attributes["data-widget"] ? 1 : 0);b && (a.attributes["data-widget"] = b);(e = r(d, a.name)) && m(a);c = new CKEDITOR.htmlParser.element(e ? "span" : "div", w(e, b));c.attributes["data-cke-display-name"] = d.pathName ? d.pathName : a.name;d = a.parent;var f;d && (f = a.getIndex(), a.remove());c.add(a);d && z(d, f, c);
            }return c;
          }, _tests_createEditableFilter: f };CKEDITOR.event.implementOn(c.prototype);h.prototype = { addClass: function (a) {
            this.element.addClass(a);this.wrapper.addClass(h.WRAPPER_CLASS_PREFIX + a);
          }, applyStyle: function (a) {
            K(this, a, 1);
          }, checkStyleActive: function (a) {
            a = D(a);var b;if (!a) return !1;for (; b = a.pop();) if (!this.hasClass(b)) return !1;return !0;
          }, destroy: function (a) {
            this.fire("destroy");if (this.editables) for (var b in this.editables) this.destroyEditable(b, a);a || ("0" == this.element.data("cke-widget-keep-attr") && this.element.removeAttribute("data-widget"), this.element.removeAttributes(["data-cke-widget-data", "data-cke-widget-keep-attr"]), this.element.removeClass("cke_widget_element"), this.element.replace(this.wrapper));this.wrapper = null;
          }, destroyEditable: function (a, b) {
            var c = this.editables[a],
                d = !0;c.removeListener("focus", L);c.removeListener("blur", P);this.editor.focusManager.remove(c);if (c.filter) {
              for (var e in this.repository.instances) {
                var f = this.repository.instances[e];f.editables && (f = f.editables[a]) && f !== c && c.filter === f.filter && (d = !1);
              }d && (c.filter.destroy(), (d = this.repository._.filters[this.name]) && delete d[a]);
            }b || (this.repository.destroyAll(!1, c), c.removeClass("cke_widget_editable"), c.removeClass("cke_widget_editable_focused"), c.removeAttributes(["contenteditable", "data-cke-widget-editable", "data-cke-enter-mode"]));delete this.editables[a];
          }, edit: function () {
            var a = { dialog: this.dialog },
                b = this;if (!1 === this.fire("edit", a) || !a.dialog) return !1;this.editor.openDialog(a.dialog, function (a) {
              var c, d;!1 !== b.fire("dialog", a) && (c = a.on("show", function () {
                a.setupContent(b);
              }), d = a.on("ok", function () {
                var c,
                    d = b.on("data", function (a) {
                  c = 1;a.cancel();
                }, null, null, 0);b.editor.fire("saveSnapshot");a.commitContent(b);d.removeListener();c && (b.fire("data", b.data), b.editor.fire("saveSnapshot"));
              }), a.once("hide", function () {
                c.removeListener();d.removeListener();
              }));
            }, b);return !0;
          }, getClasses: function () {
            return this.repository.parseElementClasses(this.element.getAttribute("class"));
          }, getClipboardHtml: function () {
            var a = this.editor.createRange();
            a.setStartBefore(this.wrapper);a.setEndAfter(this.wrapper);return this.editor.editable().getHtmlFromRange(a).getHtml();
          }, hasClass: function (a) {
            return this.element.hasClass(a);
          }, initEditable: function (a, b) {
            var c = this._findOneNotNested(b.selector);return c && c.is(CKEDITOR.dtd.$editable) ? (c = new g(this.editor, c, { filter: f.call(this.repository, this.name, a, b) }), this.editables[a] = c, c.setAttributes({ contenteditable: "true", "data-cke-widget-editable": a, "data-cke-enter-mode": c.enterMode }), c.filter && c.data("cke-filter", c.filter.id), c.addClass("cke_widget_editable"), c.removeClass("cke_widget_editable_focused"), b.pathName && c.data("cke-display-name", b.pathName), this.editor.focusManager.add(c), c.on("focus", L, this), CKEDITOR.env.ie && c.on("blur", P, this), c._.initialSetData = !0, c.setData(c.getHtml()), !0) : !1;
          }, _findOneNotNested: function (a) {
            a = this.wrapper.find(a);for (var b, c, d = 0; d < a.count(); d++) if (b = a.getItem(d), c = b.getAscendant(h.isDomWidgetWrapper), this.wrapper.equals(c)) return b;return null;
          }, isInited: function () {
            return !(!this.wrapper || !this.inited);
          }, isReady: function () {
            return this.isInited() && this.ready;
          }, focus: function () {
            var a = this.editor.getSelection();if (a) {
              var b = this.editor.checkDirty();a.fake(this.wrapper);!b && this.editor.resetDirty();
            }this.editor.focus();
          }, refreshMask: function () {
            da(this);
          }, refreshParts: function (a) {
            S(this, "undefined" !== typeof a ? a : !0);
          }, removeClass: function (a) {
            this.element.removeClass(a);this.wrapper.removeClass(h.WRAPPER_CLASS_PREFIX + a);
          }, removeStyle: function (a) {
            K(this, a, 0);
          }, setData: function (a, b) {
            var c = this.data,
                d = 0;if ("string" == typeof a) c[a] !== b && (c[a] = b, d = 1);else {
              var e = a;for (a in e) c[a] !== e[a] && (d = 1, c[a] = e[a]);
            }d && this.dataReady && (Z(this), this.fire("data", c));return this;
          }, setFocused: function (a) {
            this.wrapper[a ? "addClass" : "removeClass"]("cke_widget_focused");this.fire(a ? "focus" : "blur");return this;
          }, setSelected: function (a) {
            this.wrapper[a ? "addClass" : "removeClass"]("cke_widget_selected");this.fire(a ? "select" : "deselect");return this;
          }, updateDragHandlerPosition: function () {
            var a = this.editor,
                b = this.element.$,
                c = this._.dragHandlerOffset,
                b = { x: b.offsetLeft, y: b.offsetTop - 15 };CKEDITOR.env.ie && (b.y = 0);c && b.x == c.x && b.y == c.y || (c = a.checkDirty(), a.fire("lockSnapshot"), this.dragHandlerContainer.setStyles({ top: b.y + "px", left: b.x + "px" }), this.dragHandlerContainer.removeStyle("display"), a.fire("unlockSnapshot"), !c && a.resetDirty(), this._.dragHandlerOffset = b);
          } };CKEDITOR.event.implementOn(h.prototype);h.getNestedEditable = function (a, b) {
          return !b || b.equals(a) ? null : h.isDomNestedEditable(b) ? b : h.getNestedEditable(a, b.getParent());
        };h.isDomDragHandler = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-cke-widget-drag-handler");
        };h.isDomDragHandlerContainer = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasClass("cke_widget_drag_handler_container");
        };h.isDomNestedEditable = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-cke-widget-editable");
        };h.isDomWidgetElement = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-widget");
        };h.isDomWidgetWrapper = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-cke-widget-wrapper");
        };
        h.isDomWidget = function (a) {
          return a ? this.isDomWidgetWrapper(a) || this.isDomWidgetElement(a) : !1;
        };h.isParserWidgetElement = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && !!a.attributes["data-widget"];
        };h.isParserWidgetWrapper = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && !!a.attributes["data-cke-widget-wrapper"];
        };h.WRAPPER_CLASS_PREFIX = "cke_widget_wrapper_";g.prototype = CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.dom.element.prototype), { setData: function (a) {
            this._.initialSetData || this.editor.widgets.destroyAll(!1, this);this._.initialSetData = !1;a = this.editor.dataProcessor.unprotectRealComments(a);a = this.editor.dataProcessor.unprotectSource(a);a = this.editor.dataProcessor.toHtml(a, { context: this.getName(), filter: this.filter, enterMode: this.enterMode });this.setHtml(a);this.editor.widgets.initOnAll(this);
          }, getData: function () {
            return this.editor.dataProcessor.toDataFormat(this.getHtml(), { context: this.getName(), filter: this.filter, enterMode: this.enterMode });
          } });var ca = /^(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?(?:<(?:div|span)(?: style="[^"]+")?>)?<span [^>]*data-cke-copybin-start="1"[^>]*>.?<\/span>([\s\S]+)<span [^>]*data-cke-copybin-end="1"[^>]*>.?<\/span>(?:<\/(?:div|span)>)?(?:<\/(?:div|span)>)?$/i,
            X = { 37: 1, 38: 1, 39: 1, 40: 1, 8: 1, 46: 1 };X[CKEDITOR.SHIFT + 121] = 1;var Q = CKEDITOR.tools.createClass({ $: function (a, b) {
            this._.createCopyBin(a, b);this._.createListeners(b);
          }, _: { createCopyBin: function (a) {
              var b = a.document,
                  c = CKEDITOR.env.edge && 16 <= CKEDITOR.env.version,
                  d = !a.blockless && !CKEDITOR.env.ie || c ? "div" : "span",
                  c = b.createElement(d),
                  b = b.createElement(d);b.setAttributes({ id: "cke_copybin", "data-cke-temp": "1" });c.setStyles({ position: "absolute", width: "1px", height: "1px", overflow: "hidden" });c.setStyle("ltr" == a.config.contentsLangDirection ? "left" : "right", "-5000px");this.editor = a;this.copyBin = c;this.container = b;
            }, createListeners: function (a) {
              a && (a.beforeDestroy && (this.beforeDestroy = a.beforeDestroy), a.afterDestroy && (this.afterDestroy = a.afterDestroy));
            } }, proto: { handle: function (a) {
              var b = this.copyBin,
                  c = this.editor,
                  d = this.container,
                  e = CKEDITOR.env.ie && 9 > CKEDITOR.env.version,
                  f = c.document.getDocumentElement().$,
                  g = c.createRange(),
                  h = this,
                  k = CKEDITOR.env.mac && CKEDITOR.env.webkit,
                  l = k ? 100 : 0,
                  m = window.requestAnimationFrame && !k ? requestAnimationFrame : setTimeout,
                  p,
                  q,
                  v;b.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e' + a + '\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("lockSnapshot");d.append(b);c.editable().append(d);p = c.on("selectionChange", H, null, null, 0);q = c.widgets.on("checkSelection", H, null, null, 0);e && (v = f.scrollTop);g.selectNodeContents(b);g.select();e && (f.scrollTop = v);return new CKEDITOR.tools.promise(function (a) {
                m(function () {
                  h.beforeDestroy && h.beforeDestroy();d.remove();p.removeListener();q.removeListener();c.fire("unlockSnapshot");
                  h.afterDestroy && h.afterDestroy();a();
                }, l);
              });
            } }, statics: { hasCopyBin: function (a) {
              return !!Q.getCopyBin(a);
            }, getCopyBin: function (a) {
              return a.document.getById("cke_copybin");
            } } });CKEDITOR.plugins.widget = h;h.repository = c;h.nestedEditable = g;
      }(), CKEDITOR.config.widget_keystrokeInsertLineBefore = CKEDITOR.SHIFT + CKEDITOR.ALT + 13, CKEDITOR.config.widget_keystrokeInsertLineAfter = CKEDITOR.SHIFT + 13, "use strict", function () {
        function c(a) {
          function b() {
            this.deflated || (a.widgets.focused == this.widget && (this.focused = !0), a.widgets.destroy(this.widget), this.deflated = !0);
          }function c() {
            var b = a.editable(),
                d = a.document;if (this.deflated) this.widget = a.widgets.initOn(this.element, "image", this.widget.data), this.widget.inline && !new CKEDITOR.dom.elementPath(this.widget.wrapper, b).block && (b = d.createElement(a.activeEnterMode == CKEDITOR.ENTER_P ? "p" : "div"), b.replace(this.widget.wrapper), this.widget.wrapper.move(b)), this.focused && (this.widget.focus(), delete this.focused), delete this.deflated;else {
              var f = this.widget,
                  b = e,
                  d = f.wrapper,
                  g = f.data.align,
                  f = f.data.hasCaption;
              if (b) {
                for (var h = 3; h--;) d.removeClass(b[h]);"center" == g ? f && d.addClass(b[1]) : "none" != g && d.addClass(b[z[g]]);
              } else "center" == g ? (f ? d.setStyle("text-align", "center") : d.removeStyle("text-align"), d.removeStyle("float")) : ("none" == g ? d.removeStyle("float") : d.setStyle("float", g), d.removeStyle("text-align"));
            }
          }var e = a.config.image2_alignClasses,
              k = a.config.image2_captionedClass;return { allowedContent: d(a), requiredContent: "img[src,alt]", features: f(a), styleableElements: "img figure", contentTransformations: [["img[width]: sizeToAttribute"]],
            editables: { caption: { selector: "figcaption", allowedContent: "br em strong sub sup u s; a[!href,target]" } }, parts: { image: "img", caption: "figcaption" }, dialog: "image2", template: '\x3cimg alt\x3d"" src\x3d"" /\x3e', data: function () {
              var d = this.features;this.data.hasCaption && !a.filter.checkFeature(d.caption) && (this.data.hasCaption = !1);"none" == this.data.align || a.filter.checkFeature(d.align) || (this.data.align = "none");this.shiftState({ widget: this, element: this.element, oldData: this.oldData, newData: this.data, deflate: b,
                inflate: c });this.data.link ? this.parts.link || (this.parts.link = this.parts.image.getParent()) : this.parts.link && delete this.parts.link;this.parts.image.setAttributes({ src: this.data.src, "data-cke-saved-src": this.data.src, alt: this.data.alt });if (this.oldData && !this.oldData.hasCaption && this.data.hasCaption) for (var e in this.data.classes) this.parts.image.removeClass(e);if (a.filter.checkFeature(d.dimension)) {
                d = this.data;d = { width: d.width, height: d.height };e = this.parts.image;for (var f in d) d[f] ? e.setAttribute(f, d[f]) : e.removeAttribute(f), e.$.style.removeProperty(f);
              }this.oldData = CKEDITOR.tools.extend({}, this.data);
            }, init: function () {
              var b = CKEDITOR.plugins.image2,
                  c = this.parts.image,
                  d = this.ready ? b.checkHasNaturalRatio(c) : !0,
                  d = { hasCaption: !!this.parts.caption, src: c.getAttribute("src"), alt: c.getAttribute("alt") || "", width: c.$.style.width && parseInt(c.$.style.width) || c.getAttribute("width") || "", height: c.$.style.height && parseInt(c.$.style.height) || c.getAttribute("height") || "", lock: void 0 !== a.config.image2_defaultLockRatio ? a.config.image2_defaultLockRatio : d },
                  f = c.getAscendant("a");f && this.wrapper.contains(f) && (this.parts.link = f);d.align || (c = d.hasCaption ? this.element : c, e ? (c.hasClass(e[0]) ? d.align = "left" : c.hasClass(e[2]) && (d.align = "right"), d.align ? c.removeClass(e[z[d.align]]) : d.align = "none") : (d.align = c.getStyle("float") || "none", c.removeStyle("float")));a.plugins.link && this.parts.link && (d.link = b.getLinkAttributesParser()(a, this.parts.link), (c = d.link.advanced) && c.advCSSClasses && (c.advCSSClasses = CKEDITOR.tools.trim(c.advCSSClasses.replace(/cke_\S+/, ""))));this.wrapper[(d.hasCaption ? "remove" : "add") + "Class"]("cke_image_nocaption");this.setData(d);a.filter.checkFeature(this.features.dimension) && !0 !== a.config.image2_disableResizer && l(this);this.shiftState = b.stateShifter(this.editor);this.on("contextMenu", function (a) {
                a.data.image = CKEDITOR.TRISTATE_OFF;if (this.parts.link || this.wrapper.getAscendant("a")) a.data.link = a.data.unlink = CKEDITOR.TRISTATE_OFF;
              });
            }, addClass: function (a) {
              n(this).addClass(a);
            }, hasClass: function (a) {
              return n(this).hasClass(a);
            }, removeClass: function (a) {
              n(this).removeClass(a);
            },
            getClasses: function () {
              var a = new RegExp("^(" + [].concat(k, e).join("|") + ")$");return function () {
                var b = this.repository.parseElementClasses(n(this).getAttribute("class")),
                    c;for (c in b) a.test(c) && delete b[c];return b;
              };
            }(), upcast: h(a), downcast: g(a), getLabel: function () {
              return this.editor.lang.widget.label.replace(/%1/, (this.data.alt || "") + " " + this.pathName);
            } };
        }function h(b) {
          var c = a(b),
              d = b.config.image2_captionedClass;return function (a, b) {
            var f = { width: 1, height: 1 },
                g = a.name,
                h;if (!a.attributes["data-cke-realelement"] && (c(a) ? ("div" == g && (h = a.getFirst("figure")) && (a.replaceWith(h), a = h), b.align = "center", h = a.getFirst("img") || a.getFirst("a").getFirst("img")) : "figure" == g && a.hasClass(d) ? h = a.find(function (a) {
              return "img" === a.name && -1 !== CKEDITOR.tools.array.indexOf(["figure", "a"], a.parent.name);
            }, !0)[0] : e(a) && (h = "a" == a.name ? a.children[0] : a), h)) {
              for (var k in f) (f = h.attributes[k]) && f.match(r) && delete h.attributes[k];return a;
            }
          };
        }function g(a) {
          var b = a.config.image2_alignClasses;return function (a) {
            var c = "a" == a.name ? a.getFirst() : a,
                d = c.attributes,
                e = this.data.align;if (!this.inline) {
              var f = a.getFirst("span");f && f.replaceWith(f.getFirst({ img: 1, a: 1 }));
            }e && "none" != e && (f = CKEDITOR.tools.parseCssText(d.style || ""), "center" == e && "figure" == a.name ? a = a.wrapWith(new CKEDITOR.htmlParser.element("div", b ? { "class": b[1] } : { style: "text-align:center" })) : e in { left: 1, right: 1 } && (b ? c.addClass(b[z[e]]) : f["float"] = e), b || CKEDITOR.tools.isEmpty(f) || (d.style = CKEDITOR.tools.writeCssText(f)));return a;
          };
        }function a(a) {
          var b = a.config.image2_captionedClass,
              c = a.config.image2_alignClasses,
              d = { figure: 1, a: 1, img: 1 };return function (f) {
            if (!(f.name in { div: 1, p: 1 })) return !1;var g = f.children;if (1 !== g.length) return !1;g = g[0];if (!(g.name in d)) return !1;if ("p" == f.name) {
              if (!e(g)) return !1;
            } else if ("figure" == g.name) {
              if (!g.hasClass(b)) return !1;
            } else if (a.enterMode == CKEDITOR.ENTER_P || !e(g)) return !1;return (c ? f.hasClass(c[1]) : "center" == CKEDITOR.tools.parseCssText(f.attributes.style || "", !0)["text-align"]) ? !0 : !1;
          };
        }function e(a) {
          return "img" == a.name ? !0 : "a" == a.name ? 1 == a.children.length && a.getFirst("img") : !1;
        }function l(a) {
          var b = a.editor,
              c = b.editable(),
              d = b.document,
              e = a.resizer = d.createElement("span");e.addClass("cke_image_resizer");e.setAttribute("title", b.lang.image2.resizer);e.append(new CKEDITOR.dom.text("​", d));if (a.inline) a.wrapper.append(e);else {
            var f = a.parts.link || a.parts.image,
                g = f.getParent(),
                h = d.createElement("span");h.addClass("cke_image_resizer_wrapper");h.append(f);h.append(e);a.element.append(h, !0);g.is("span") && g.remove();
          }e.on("mousedown", function (f) {
            function g(a, b, c) {
              var e = CKEDITOR.document,
                  f = [];d.equals(e) || f.push(e.on(a, b));f.push(d.on(a, b));if (c) for (a = f.length; a--;) c.push(f.pop());
            }function h() {
              S = y + q * T;U = Math.round(S / r);
            }function k() {
              U = w - ea;S = Math.round(U * r);
            }var l = a.parts.image,
                m = function () {
              var a = b.config.image2_maxSize,
                  c;if (!a) return null;a = CKEDITOR.tools.copy(a);c = CKEDITOR.plugins.image2.getNatural(l);a.width = Math.max("natural" === a.width ? c.width : a.width, 15);a.height = Math.max("natural" === a.height ? c.height : a.height, 15);return a;
            }(),
                q = "right" == a.data.align ? -1 : 1,
                v = f.data.$.screenX,
                n = f.data.$.screenY,
                y = l.$.clientWidth,
                w = l.$.clientHeight,
                r = y / w,
                z = [],
                N = "cke_image_s" + (~q ? "e" : "w"),
                V,
                S,
                U,
                da,
                T,
                ea,
                fa;l.$.style.height && (l.setAttribute("height", parseInt(l.$.style.height)), l.$.style.removeProperty("height"));l.$.style.width && (l.setAttribute("width", parseInt(l.$.style.width)), l.$.style.removeProperty("width"));b.fire("saveSnapshot");g("mousemove", function (a) {
              V = a.data.$;T = V.screenX - v;ea = n - V.screenY;fa = Math.abs(T / ea);1 == q ? 0 >= T ? 0 >= ea ? h() : fa >= r ? h() : k() : 0 >= ea ? fa >= r ? k() : h() : k() : 0 >= T ? 0 >= ea ? fa >= r ? k() : h() : k() : 0 >= ea ? h() : fa >= r ? h() : k();a = m && (S > m.width || U > m.height);15 > S || 15 > U || a || (da = { width: S, height: U }, l.setAttributes(da));
            }, z);g("mouseup", function () {
              for (var d; d = z.pop();) d.removeListener();c.removeClass(N);e.removeClass("cke_image_resizing");da && (a.setData(da), b.fire("saveSnapshot"));da = !1;
            }, z);c.addClass(N);e.addClass("cke_image_resizing");
          });a.on("data", function () {
            e["right" == a.data.align ? "addClass" : "removeClass"]("cke_image_resizer_left");
          });
        }function k(a) {
          var c = [],
              d;return function (e) {
            var f = a.getCommand("justify" + e);if (f) {
              c.push(function () {
                f.refresh(a, a.elementPath());
              });if (e in { right: 1, left: 1, center: 1 }) f.on("exec", function (d) {
                var f = b(a);if (f) {
                  f.setData("align", e);for (f = c.length; f--;) c[f]();d.cancel();
                }
              });f.on("refresh", function (c) {
                var f = b(a);f && (void 0 === d && (d = a.filter.checkFeature(a.widgets.registered.image.features.align)), d ? this.setState(f.data.align == e ? CKEDITOR.TRISTATE_ON : e in { right: 1, left: 1, center: 1 } ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED) : this.setState(CKEDITOR.TRISTATE_DISABLED), c.cancel());
              });
            }
          };
        }
        function m(a) {
          if (a.plugins.link) {
            var c = CKEDITOR.on("dialogDefinition", function (c) {
              c = c.data;if ("link" == c.name) {
                c = c.definition;var d = c.onShow,
                    e = c.onOk;c.onShow = function () {
                  var c = b(a),
                      e = this.getContentElement("info", "linkDisplayText").getElement().getParent().getParent();c && (c.inline ? !c.wrapper.getAscendant("a") : 1) ? (this.setupContent(c.data.link || {}), e.hide()) : (e.show(), d.apply(this, arguments));
                };c.onOk = function () {
                  var c = b(a);if (c && (c.inline ? !c.wrapper.getAscendant("a") : 1)) {
                    var d = {};this.commitContent(d);
                    c.setData("link", d);
                  } else e.apply(this, arguments);
                };
              }
            });a.on("destroy", function () {
              c.removeListener();
            });a.getCommand("unlink").on("exec", function (c) {
              var d = b(a);d && d.parts.link && (d.setData("link", null), this.refresh(a, a.elementPath()), c.cancel());
            });a.getCommand("unlink").on("refresh", function (c) {
              var d = b(a);d && (this.setState(d.data.link || d.wrapper.getAscendant("a") ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED), c.cancel());
            });
          }
        }function b(a) {
          return (a = a.widgets.focused) && "image" == a.name ? a : null;
        }function d(b) {
          var c = b.config.image2_alignClasses;b = { div: { match: a(b) }, p: { match: a(b) }, img: { attributes: "!src,alt,width,height" }, figure: { classes: "!" + b.config.image2_captionedClass }, figcaption: !0 };c ? (b.div.classes = c[1], b.p.classes = b.div.classes, b.img.classes = c[0] + "," + c[2], b.figure.classes += "," + b.img.classes) : (b.div.styles = "text-align", b.p.styles = "text-align", b.img.styles = "float", b.figure.styles = "float,display");return b;
        }function f(a) {
          a = a.config.image2_alignClasses;return { dimension: { requiredContent: "img[width,height]" }, align: { requiredContent: "img" + (a ? "(" + a[0] + ")" : "{float}") }, caption: { requiredContent: "figcaption" } };
        }function n(a) {
          return a.data.hasCaption ? a.element : a.parts.image;
        }var w = new CKEDITOR.template('\x3cfigure class\x3d"{captionedClass}"\x3e\x3cimg alt\x3d"" src\x3d"" /\x3e\x3cfigcaption\x3e{captionPlaceholder}\x3c/figcaption\x3e\x3c/figure\x3e'),
            z = { left: 0, center: 1, right: 2 },
            r = /^\s*(\d+\%)\s*$/i;CKEDITOR.plugins.add("image2", { requires: "widget,dialog", icons: "image", hidpi: !0, onLoad: function () {
            CKEDITOR.addCss('.cke_image_nocaption{line-height:0}.cke_editable.cke_image_sw, .cke_editable.cke_image_sw *{cursor:sw-resize !important}.cke_editable.cke_image_se, .cke_editable.cke_image_se *{cursor:se-resize !important}.cke_image_resizer{display:none;position:absolute;width:10px;height:10px;bottom:-5px;right:-5px;background:#000;outline:1px solid #fff;line-height:0;cursor:se-resize;}.cke_image_resizer_wrapper{position:relative;display:inline-block;line-height:0;}.cke_image_resizer.cke_image_resizer_left{right:auto;left:-5px;cursor:sw-resize;}.cke_widget_wrapper:hover .cke_image_resizer,.cke_image_resizer.cke_image_resizing{display:block}.cke_editable[contenteditable\x3d"false"] .cke_image_resizer{display:none;}.cke_widget_wrapper\x3ea{display:inline-block}');
          },
          init: function (a) {
            if (!a.plugins.detectConflict("image2", ["easyimage"])) {
              var b = a.config,
                  d = a.lang.image2,
                  e = c(a);b.filebrowserImage2BrowseUrl = b.filebrowserImageBrowseUrl;b.filebrowserImage2UploadUrl = b.filebrowserImageUploadUrl;e.pathName = d.pathName;e.editables.caption.pathName = d.pathNameCaption;a.widgets.add("image", e);a.ui.addButton && a.ui.addButton("Image", { label: a.lang.common.image, command: "image", toolbar: "insert,10" });a.contextMenu && (a.addMenuGroup("image", 10), a.addMenuItem("image", { label: d.menu, command: "image",
                group: "image" }));CKEDITOR.dialog.add("image2", this.path + "dialogs/image2.js");
            }
          }, afterInit: function (a) {
            var b = { left: 1, right: 1, center: 1, block: 1 },
                c = k(a),
                d;for (d in b) c(d);m(a);
          } });CKEDITOR.plugins.image2 = { stateShifter: function (a) {
            function b(a, f) {
              var g = {};e ? g.attributes = { "class": e[1] } : g.styles = { "text-align": "center" };g = d.createElement(a.activeEnterMode == CKEDITOR.ENTER_P ? "p" : "div", g);c(g, f);f.move(g);return g;
            }function c(b, d) {
              if (d.getParent()) {
                var e = a.createRange();e.moveToPosition(d, CKEDITOR.POSITION_BEFORE_START);
                d.remove();g.insertElementIntoRange(b, e);
              } else b.replace(d);
            }var d = a.document,
                e = a.config.image2_alignClasses,
                f = a.config.image2_captionedClass,
                g = a.editable(),
                h = ["hasCaption", "align", "link"],
                k = { align: function (c, d, f) {
                var g = c.element;c.changed.align ? c.newData.hasCaption || ("center" == f && (c.deflate(), c.element = b(a, g)), c.changed.hasCaption || "center" != d || "center" == f || (c.deflate(), d = g.findOne("a,img"), d.replace(g), c.element = d)) : "center" == f && c.changed.hasCaption && !c.newData.hasCaption && (c.deflate(), c.element = b(a, g));!e && g.is("figure") && ("center" == f ? g.setStyle("display", "inline-block") : g.removeStyle("display"));
              }, hasCaption: function (b, e, g) {
                b.changed.hasCaption && (e = b.element.is({ img: 1, a: 1 }) ? b.element : b.element.findOne("a,img"), b.deflate(), g ? (g = CKEDITOR.dom.element.createFromHtml(w.output({ captionedClass: f, captionPlaceholder: a.lang.image2.captionPlaceholder }), d), c(g, b.element), e.replace(g.findOne("img")), b.element = g) : (e.replace(b.element), b.element = e));
              }, link: function (b, c, e) {
                if (b.changed.link) {
                  var f = b.element.is("img") ? b.element : b.element.findOne("img"),
                      g = b.element.is("a") ? b.element : b.element.findOne("a"),
                      h = b.element.is("a") && !e || b.element.is("img") && e,
                      k;h && b.deflate();e ? (c || (k = d.createElement("a", { attributes: { href: b.newData.link.url } }), k.replace(f), f.move(k)), e = CKEDITOR.plugins.image2.getLinkAttributesGetter()(a, e), CKEDITOR.tools.isEmpty(e.set) || (k || g).setAttributes(e.set), e.removed.length && (k || g).removeAttributes(e.removed)) : (e = g.findOne("img"), e.replace(g), k = e);h && (b.element = k);
                }
              } };return function (a) {
              var b, c;
              a.changed = {};for (c = 0; c < h.length; c++) b = h[c], a.changed[b] = a.oldData ? a.oldData[b] !== a.newData[b] : !1;for (c = 0; c < h.length; c++) b = h[c], k[b](a, a.oldData ? a.oldData[b] : null, a.newData[b]);a.inflate();
            };
          }, checkHasNaturalRatio: function (a) {
            var b = a.$;a = this.getNatural(a);return Math.round(b.clientWidth / a.width * a.height) == b.clientHeight || Math.round(b.clientHeight / a.height * a.width) == b.clientWidth;
          }, getNatural: function (a) {
            if (a.$.naturalWidth) a = { width: a.$.naturalWidth, height: a.$.naturalHeight };else {
              var b = new Image();b.src = a.getAttribute("src");a = { width: b.width, height: b.height };
            }return a;
          }, getLinkAttributesGetter: function () {
            return CKEDITOR.plugins.link.getLinkAttributes;
          }, getLinkAttributesParser: function () {
            return CKEDITOR.plugins.link.parseLinkAttributes;
          } };
      }(), CKEDITOR.config.image2_captionedClass = "image", function () {
        CKEDITOR.plugins.add("imagespacingbox", { init: function (c) {
            CKEDITOR.on("dialogDefinition", function (h) {
              var g = h.data.definition;"image2" === h.data.dialog.getName() && (h = g.getContents("info"), h.get("spacingBox") || (g = { children: [{ children: [{ onShow: function () {
                      var a = this.getDialog().getParentEditor().widgets.focused;if (a) {
                        var c = a.parts.image.$.style,
                            g = "";c && (g = parseInt(c.marginLeft, 10) || parseInt(c.marginRight, 10));a.setData("hspace", g);
                      }
                    }, commit: function (a) {
                      a.setData("hspace", this.getValue());var c = a.data.hspace ? a.data.hspace : 0;(a = a.parts.image) && a.setStyles({ "margin-left": c + "px", "margin-right": c + "px" });
                    }, id: "hspace", label: c.lang.image.hSpace, requiredContent: "img{margin-left,margin-right}", setup: function (a) {
                      this.setValue(a.data.hspace);
                    },
                    type: "text", validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace) }], type: "hbox" }, { children: [{ onShow: function () {
                      var a = this.getDialog().getParentEditor().widgets.focused;if (a) {
                        var c = a.parts.image.$.style,
                            g = "";c && (g = parseInt(c.marginTop, 10) || parseInt(c.marginBottom, 10));a.setData("vspace", g);
                      }
                    }, commit: function (a) {
                      a.setData("vspace", this.getValue());var c = a.data.vspace ? a.data.vspace : 0;(a = a.parts.image) && a.setStyles({ "margin-bottom": c + "px", "margin-top": c + "px" });
                    }, id: "vspace", label: c.lang.image.vSpace,
                    requiredContent: "img{margin-top,margin-bottom}", setup: function (a) {
                      this.setValue(a.data.vspace);
                    }, type: "text", validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace) }], type: "hbox" }], id: "spacingBox", type: "hbox" }, h.add(g)));
            });
          } });
      }(), function () {
        function c(a, c) {
          var l, k;c.on("refresh", function (a) {
            var b = [h],
                c;for (c in a.data.states) b.push(a.data.states[c]);this.setState(CKEDITOR.tools.search(b, g) ? g : h);
          }, c, null, 100);c.on("exec", function (c) {
            l = a.getSelection();k = l.createBookmarks(1);c.data || (c.data = {});c.data.done = !1;
          }, c, null, 0);c.on("exec", function () {
            a.forceNextSelectionCheck();l.selectBookmarks(k);
          }, c, null, 100);
        }var h = CKEDITOR.TRISTATE_DISABLED,
            g = CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent", { init: function (a) {
            var e = CKEDITOR.plugins.indent.genericDefinition;c(a, a.addCommand("indent", new e(!0)));c(a, a.addCommand("outdent", new e()));a.ui.addButton && (a.ui.addButton("Indent", { label: a.lang.indent.indent, command: "indent", directional: !0, toolbar: "indent,20" }), a.ui.addButton("Outdent", { label: a.lang.indent.outdent,
              command: "outdent", directional: !0, toolbar: "indent,10" }));a.on("dirChanged", function (c) {
              var e = a.createRange(),
                  g = c.data.node;e.setStartBefore(g);e.setEndAfter(g);for (var b = new CKEDITOR.dom.walker(e), d; d = b.next();) if (d.type == CKEDITOR.NODE_ELEMENT) if (!d.equals(g) && d.getDirection()) e.setStartAfter(d), b = new CKEDITOR.dom.walker(e);else {
                var f = a.config.indentClasses;if (f) for (var h = "ltr" == c.data.dir ? ["_rtl", ""] : ["", "_rtl"], w = 0; w < f.length; w++) d.hasClass(f[w] + h[0]) && (d.removeClass(f[w] + h[0]), d.addClass(f[w] + h[1]));
                f = d.getStyle("margin-right");h = d.getStyle("margin-left");f ? d.setStyle("margin-left", f) : d.removeStyle("margin-left");h ? d.setStyle("margin-right", h) : d.removeStyle("margin-right");
              }
            });
          } });CKEDITOR.plugins.indent = { genericDefinition: function (a) {
            this.isIndent = !!a;this.startDisabled = !this.isIndent;
          }, specificDefinition: function (a, c, g) {
            this.name = c;this.editor = a;this.jobs = {};this.enterBr = a.config.enterMode == CKEDITOR.ENTER_BR;this.isIndent = !!g;this.relatedGlobal = g ? "indent" : "outdent";this.indentKey = g ? 9 : CKEDITOR.SHIFT + 9;this.database = {};
          }, registerCommands: function (a, c) {
            a.on("pluginsLoaded", function () {
              for (var a in c) (function (a, c) {
                var b = a.getCommand(c.relatedGlobal),
                    d;for (d in c.jobs) b.on("exec", function (b) {
                  b.data.done || (a.fire("lockSnapshot"), c.execJob(a, d) && (b.data.done = !0), a.fire("unlockSnapshot"), CKEDITOR.dom.element.clearAllMarkers(c.database));
                }, this, null, d), b.on("refresh", function (b) {
                  b.data.states || (b.data.states = {});b.data.states[c.name + "@" + d] = c.refreshJob(a, d, b.data.path);
                }, this, null, d);a.addFeature(c);
              })(this, c[a]);
            });
          } };CKEDITOR.plugins.indent.genericDefinition.prototype = { context: "p", exec: function () {} };CKEDITOR.plugins.indent.specificDefinition.prototype = { execJob: function (a, c) {
            var g = this.jobs[c];if (g.state != h) return g.exec.call(this, a);
          }, refreshJob: function (a, c, g) {
            c = this.jobs[c];a.activeFilter.checkFeature(this) ? c.state = c.refresh.call(this, a, g) : c.state = h;return c.state;
          }, getContext: function (a) {
            return a.contains(this.context);
          } };
      }(), function () {
        function c(a) {
          function b(b) {
            for (var h = l.startContainer, p = l.endContainer; h && !h.getParent().equals(b);) h = h.getParent();for (; p && !p.getParent().equals(b);) p = p.getParent();if (!h || !p) return !1;for (var x = [], v = !1; !v;) h.equals(p) && (v = !0), x.push(h), h = h.getNext();if (1 > x.length) return !1;h = b.getParents(!0);for (p = 0; p < h.length; p++) if (h[p].getName && k[h[p].getName()]) {
              b = h[p];break;
            }for (var h = c.isIndent ? 1 : -1, p = x[0], x = x[x.length - 1], v = CKEDITOR.plugins.list.listToArray(b, e), q = v[x.getCustomData("listarray_index")].indent, p = p.getCustomData("listarray_index"); p <= x.getCustomData("listarray_index"); p++) if (v[p].indent += h, 0 < h) {
              for (var y = v[p].parent, t = p - 1; 0 <= t; t--) if (v[t].indent === h) {
                y = v[t].parent;break;
              }v[p].parent = new CKEDITOR.dom.element(y.getName(), y.getDocument());
            }for (p = x.getCustomData("listarray_index") + 1; p < v.length && v[p].indent > q; p++) v[p].indent += h;h = CKEDITOR.plugins.list.arrayToList(v, e, null, a.config.enterMode, b.getDirection());if (!c.isIndent) {
              var r;if ((r = b.getParent()) && r.is("li")) for (var x = h.listNode.getChildren(), B = [], z, p = x.count() - 1; 0 <= p; p--) (z = x.getItem(p)) && z.is && z.is("li") && B.push(z);
            }h && h.listNode.replace(b);
            if (B && B.length) for (p = 0; p < B.length; p++) {
              for (z = b = B[p]; (z = z.getNext()) && z.is && z.getName() in k;) CKEDITOR.env.needsNbspFiller && !b.getFirst(g) && b.append(l.document.createText(" ")), b.append(z);b.insertAfter(r);
            }h && a.fire("contentDomInvalidated");return !0;
          }for (var c = this, e = this.database, k = this.context, l, z = a.getSelection(), z = (z && z.getRanges()).createIterator(); l = z.getNextRange();) {
            for (var r = l.getCommonAncestor(); r && (r.type != CKEDITOR.NODE_ELEMENT || !k[r.getName()]);) {
              if (a.editable().equals(r)) {
                r = !1;break;
              }r = r.getParent();
            }r || (r = l.startPath().contains(k)) && l.setEndAt(r, CKEDITOR.POSITION_BEFORE_END);if (!r) {
              var t = l.getEnclosedNode();t && t.type == CKEDITOR.NODE_ELEMENT && t.getName() in k && (l.setStartAt(t, CKEDITOR.POSITION_AFTER_START), l.setEndAt(t, CKEDITOR.POSITION_BEFORE_END), r = t);
            }r && l.startContainer.type == CKEDITOR.NODE_ELEMENT && l.startContainer.getName() in k && (t = new CKEDITOR.dom.walker(l), t.evaluator = h, l.startContainer = t.next());r && l.endContainer.type == CKEDITOR.NODE_ELEMENT && l.endContainer.getName() in k && (t = new CKEDITOR.dom.walker(l), t.evaluator = h, l.endContainer = t.previous());if (r) return b(r);
          }return 0;
        }function h(a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.is("li");
        }function g(c) {
          return a(c) && e(c);
        }var a = CKEDITOR.dom.walker.whitespaces(!0),
            e = CKEDITOR.dom.walker.bookmark(!1, !0),
            l = CKEDITOR.TRISTATE_DISABLED,
            k = CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist", { requires: "indent", init: function (a) {
            function b(a) {
              d.specificDefinition.apply(this, arguments);this.requiredContent = ["ul", "ol"];a.on("key", function (b) {
                var c = a.elementPath();
                if ("wysiwyg" == a.mode && b.data.keyCode == this.indentKey && c) {
                  var d = this.getContext(c);!d || this.isIndent && CKEDITOR.plugins.indentList.firstItemInPath(this.context, c, d) || (a.execCommand(this.relatedGlobal), b.cancel());
                }
              }, this);this.jobs[this.isIndent ? 10 : 30] = { refresh: this.isIndent ? function (a, b) {
                  var c = this.getContext(b),
                      d = CKEDITOR.plugins.indentList.firstItemInPath(this.context, b, c);return c && this.isIndent && !d ? k : l;
                } : function (a, b) {
                  return !this.getContext(b) || this.isIndent ? l : k;
                }, exec: CKEDITOR.tools.bind(c, this) };
            }
            var d = CKEDITOR.plugins.indent;d.registerCommands(a, { indentlist: new b(a, "indentlist", !0), outdentlist: new b(a, "outdentlist") });CKEDITOR.tools.extend(b.prototype, d.specificDefinition.prototype, { context: { ol: 1, ul: 1 } });
          } });CKEDITOR.plugins.indentList = {};CKEDITOR.plugins.indentList.firstItemInPath = function (a, b, c) {
          var e = b.contains(h);c || (c = b.contains(a));return c && e && e.equals(c.getFirst(h));
        };
      }(), function () {
        function c(a, c, b) {
          if (!a.getCustomData("indent_processed")) {
            var d = this.editor,
                e = this.isIndent;if (c) {
              d = a.$.className.match(this.classNameRegex);b = 0;d && (d = d[1], b = CKEDITOR.tools.indexOf(c, d) + 1);if (0 > (b += e ? 1 : -1)) return;b = Math.min(b, c.length);b = Math.max(b, 0);a.$.className = CKEDITOR.tools.ltrim(a.$.className.replace(this.classNameRegex, ""));0 < b && a.addClass(c[b - 1]);
            } else {
              c = h(a, b);b = parseInt(a.getStyle(c), 10);var g = d.config.indentOffset || 40;isNaN(b) && (b = 0);b += (e ? 1 : -1) * g;if (0 > b) return;b = Math.max(b, 0);b = Math.ceil(b / g) * g;a.setStyle(c, b ? b + (d.config.indentUnit || "px") : "");"" === a.getAttribute("style") && a.removeAttribute("style");
            }CKEDITOR.dom.element.setMarker(this.database, a, "indent_processed", 1);
          }
        }function h(a, c) {
          return "ltr" == (c || a.getComputedStyle("direction")) ? "margin-left" : "margin-right";
        }var g = CKEDITOR.dtd.$listItem,
            a = CKEDITOR.dtd.$list,
            e = CKEDITOR.TRISTATE_DISABLED,
            l = CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentblock", { requires: "indent", init: function (k) {
            function m() {
              b.specificDefinition.apply(this, arguments);this.allowedContent = { "div h1 h2 h3 h4 h5 h6 ol p pre ul": { propertiesOnly: !0, styles: d ? null : "margin-left,margin-right", classes: d || null } };this.contentTransformations = [["div: splitMarginShorthand"], ["h1: splitMarginShorthand"], ["h2: splitMarginShorthand"], ["h3: splitMarginShorthand"], ["h4: splitMarginShorthand"], ["h5: splitMarginShorthand"], ["h6: splitMarginShorthand"], ["ol: splitMarginShorthand"], ["p: splitMarginShorthand"], ["pre: splitMarginShorthand"], ["ul: splitMarginShorthand"]];this.enterBr && (this.allowedContent.div = !0);this.requiredContent = (this.enterBr ? "div" : "p") + (d ? "(" + d.join(",") + ")" : "{margin-left}");this.jobs = { 20: { refresh: function (a, b) {
                    var c = b.block || b.blockLimit;if (!c.is(g)) var k = c.getAscendant(g),
                        c = k && b.contains(k) || c;c.is(g) && (c = c.getParent());if (this.enterBr || this.getContext(b)) {
                      if (d) {
                        var k = d,
                            c = c.$.className.match(this.classNameRegex),
                            m = this.isIndent,
                            k = c ? m ? c[1] != k.slice(-1) : !0 : m;return k ? l : e;
                      }return this.isIndent ? l : c ? CKEDITOR[0 >= (parseInt(c.getStyle(h(c)), 10) || 0) ? "TRISTATE_DISABLED" : "TRISTATE_OFF"] : e;
                    }return e;
                  }, exec: function (b) {
                    var e = b.getSelection(),
                        e = e && e.getRanges()[0],
                        g;if (g = b.elementPath().contains(a)) c.call(this, g, d);else for (e = e.createIterator(), b = b.config.enterMode, e.enforceRealBlocks = !0, e.enlargeBr = b != CKEDITOR.ENTER_BR; g = e.getNextParagraph(b == CKEDITOR.ENTER_P ? "p" : "div");) g.isReadOnly() || c.call(this, g, d);return !0;
                  } } };
            }var b = CKEDITOR.plugins.indent,
                d = k.config.indentClasses;b.registerCommands(k, { indentblock: new m(k, "indentblock", !0), outdentblock: new m(k, "outdentblock") });CKEDITOR.tools.extend(m.prototype, b.specificDefinition.prototype, { context: { div: 1, dl: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, ul: 1, ol: 1, p: 1, pre: 1, table: 1 }, classNameRegex: d ? new RegExp("(?:^|\\s+)(" + d.join("|") + ")(?\x3d$|\\s)") : null });
          } });
      }(), function () {
        function c(a, c) {
          var g;if (c) g = a.getComputedStyle("text-align");else {
            for (; !a.hasAttribute || !a.hasAttribute("align") && !a.getStyle("text-align");) {
              g = a.getParent();if (!g) break;a = g;
            }g = a.getStyle("text-align") || a.getAttribute("align") || "";
          }g && (g = g.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i, ""));!g && c && (g = "rtl" == a.getComputedStyle("direction") ? "right" : "left");return g;
        }function h(a, c, g) {
          this.editor = a;this.name = c;this.value = g;this.context = "p";c = a.config.justifyClasses;
          var h = a.config.enterMode == CKEDITOR.ENTER_P ? "p" : "div";if (c) {
            switch (g) {case "left":
                this.cssClassName = c[0];break;case "center":
                this.cssClassName = c[1];break;case "right":
                this.cssClassName = c[2];break;case "justify":
                this.cssClassName = c[3];}this.cssClassRegex = new RegExp("(?:^|\\s+)(?:" + c.join("|") + ")(?\x3d$|\\s)");this.requiredContent = h + "(" + this.cssClassName + ")";
          } else this.requiredContent = h + "{text-align}";this.allowedContent = { "caption div h1 h2 h3 h4 h5 h6 p pre td th li": { propertiesOnly: !0, styles: this.cssClassName ? null : "text-align", classes: this.cssClassName || null } };a.config.enterMode == CKEDITOR.ENTER_BR && (this.allowedContent.div = !0);
        }function g(a) {
          var c = a.editor,
              g = c.createRange();g.setStartBefore(a.data.node);g.setEndAfter(a.data.node);for (var h = new CKEDITOR.dom.walker(g), m; m = h.next();) if (m.type == CKEDITOR.NODE_ELEMENT) if (!m.equals(a.data.node) && m.getDirection()) g.setStartAfter(m), h = new CKEDITOR.dom.walker(g);else {
            var b = c.config.justifyClasses;b && (m.hasClass(b[0]) ? (m.removeClass(b[0]), m.addClass(b[2])) : m.hasClass(b[2]) && (m.removeClass(b[2]), m.addClass(b[0])));b = m.getStyle("text-align");"left" == b ? m.setStyle("text-align", "right") : "right" == b && m.setStyle("text-align", "left");
          }
        }h.prototype = { exec: function (a) {
            var e = a.getSelection(),
                g = a.config.enterMode;if (e) {
              for (var h = e.createBookmarks(), m = e.getRanges(), b = this.cssClassName, d, f, n = a.config.useComputedState, w = m.length - 1; 0 <= w; w--) for (d = m[w].createIterator(), d.enlargeBr = g != CKEDITOR.ENTER_BR; f = d.getNextParagraph(g == CKEDITOR.ENTER_P ? "p" : "div");) if (!f.isReadOnly()) {
                var z = f.getName(),
                    r;r = a.activeFilter.check(z + "{text-align}");if ((z = a.activeFilter.check(z + "(" + b + ")")) || r) {
                  f.removeAttribute("align");f.removeStyle("text-align");var t = b && (f.$.className = CKEDITOR.tools.ltrim(f.$.className.replace(this.cssClassRegex, ""))),
                      u = this.state == CKEDITOR.TRISTATE_OFF && (!n || c(f, !0) != this.value);b && z ? u ? f.addClass(b) : t || f.removeAttribute("class") : u && r && f.setStyle("text-align", this.value);
                }
              }a.focus();a.forceNextSelectionCheck();e.selectBookmarks(h);
            }
          }, refresh: function (a, e) {
            var g = e.block || e.blockLimit,
                h = g.getName(),
                m = g.equals(a.editable()),
                h = this.cssClassName ? a.activeFilter.check(h + "(" + this.cssClassName + ")") : a.activeFilter.check(h + "{text-align}");m && !CKEDITOR.dtd.$list[e.lastElement.getName()] ? this.setState(CKEDITOR.TRISTATE_OFF) : !m && h ? this.setState(c(g, this.editor.config.useComputedState) == this.value ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_DISABLED);
          } };CKEDITOR.plugins.add("justify", { init: function (a) {
            if (!a.blockless) {
              var c = new h(a, "justifyleft", "left"),
                  l = new h(a, "justifycenter", "center"),
                  k = new h(a, "justifyright", "right"),
                  m = new h(a, "justifyblock", "justify");a.addCommand("justifyleft", c);a.addCommand("justifycenter", l);a.addCommand("justifyright", k);a.addCommand("justifyblock", m);a.ui.addButton && (a.ui.addButton("JustifyLeft", { isToggle: !0, label: a.lang.common.alignLeft, command: "justifyleft", toolbar: "align,10" }), a.ui.addButton("JustifyCenter", { isToggle: !0, label: a.lang.common.center, command: "justifycenter", toolbar: "align,20" }), a.ui.addButton("JustifyRight", { isToggle: !0,
                label: a.lang.common.alignRight, command: "justifyright", toolbar: "align,30" }), a.ui.addButton("JustifyBlock", { isToggle: !0, label: a.lang.common.justify, command: "justifyblock", toolbar: "align,40" }));a.on("dirChanged", g);
            }
          } });
      }(), function () {
        function c(a, c) {
          var b = l.exec(a),
              d = l.exec(c);if (b) {
            if (!b[2] && "px" == d[2]) return d[1];if ("px" == b[2] && !d[2]) return d[1] + "px";
          }return c;
        }function h(e) {
          return { elements: { $: function (h) {
                var b = h.attributes,
                    b = b && b["data-cke-realelement"],
                    d = g(e, decodeURIComponent(b));if ((b = (b = b && new CKEDITOR.htmlParser.fragment.fromHtml(d)) && b.children[0]) && h.attributes["data-cke-resizable"]) {
                  var f = new a(h).rules;h = b.attributes;d = f.width;f = f.height;d && (h.width = c(h.width, d));f && (h.height = c(h.height, f));
                }return b;
              } } };
        }function g(a, c) {
          var b = [],
              d = /^cke:/i,
              e = new CKEDITOR.htmlParser.filter({ elements: { "^": function (a) {
                d.test(a.name) && (a.name = a.name.replace(d, ""), b.push(a));
              }, iframe: function (a) {
                a.children = [];
              } } }),
              g = a.activeFilter,
              h = new CKEDITOR.htmlParser.basicWriter(),
              l = CKEDITOR.htmlParser.fragment.fromHtml(c);e.applyTo(l);g.applyTo(l);CKEDITOR.tools.array.forEach(b, function (a) {
            a.name = "cke:" + a.name;
          });l.writeHtml(h);return h.getHtml();
        }var a = CKEDITOR.htmlParser.cssStyle,
            e = CKEDITOR.tools.cssLength,
            l = /^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i;CKEDITOR.plugins.add("fakeobjects", { init: function (a) {
            a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}", "fakeobjects");
          }, afterInit: function (a) {
            var c = a.dataProcessor;(c = c && c.htmlFilter) && c.addRules(h(a), { applyToAll: !0 });
          } });CKEDITOR.editor.prototype.createFakeElement = function (c, g, b, d) {
          var f = this.lang.fakeobjects,
              f = f[b] || f.unknown;g = { "class": g, "data-cke-realelement": encodeURIComponent(c.getOuterHtml()), "data-cke-real-node-type": c.type, alt: f, title: f, align: c.getAttribute("align") || "" };CKEDITOR.env.hc || (g.src = CKEDITOR.tools.transparentImageData);b && (g["data-cke-real-element-type"] = b);d && (g["data-cke-resizable"] = d, b = new a(), d = c.getAttribute("width"), c = c.getAttribute("height"), d && (b.rules.width = e(d)), c && (b.rules.height = e(c)), b.populate(g));return this.document.createElement("img", { attributes: g });
        };CKEDITOR.editor.prototype.createFakeParserElement = function (c, g, b, d) {
          var f = this.lang.fakeobjects,
              f = f[b] || f.unknown,
              h;h = new CKEDITOR.htmlParser.basicWriter();c.writeHtml(h);h = h.getHtml();g = { "class": g, "data-cke-realelement": encodeURIComponent(h), "data-cke-real-node-type": c.type, alt: f, title: f, align: c.attributes.align || "" };CKEDITOR.env.hc || (g.src = CKEDITOR.tools.transparentImageData);b && (g["data-cke-real-element-type"] = b);d && (g["data-cke-resizable"] = d, d = c.attributes, c = new a(), b = d.width, d = d.height, void 0 !== b && (c.rules.width = e(b)), void 0 !== d && (c.rules.height = e(d)), c.populate(g));return new CKEDITOR.htmlParser.element("img", g);
        };CKEDITOR.editor.prototype.restoreRealElement = function (a) {
          if (a.data("cke-real-node-type") != CKEDITOR.NODE_ELEMENT) return null;var e = decodeURIComponent(a.data("cke-realelement")),
              e = g(this, e),
              e = CKEDITOR.dom.element.createFromHtml(e, this.document);if (a.data("cke-resizable")) {
            var b = a.getStyle("width");a = a.getStyle("height");b && e.setAttribute("width", c(e.getAttribute("width"), b));a && e.setAttribute("height", c(e.getAttribute("height"), a));
          }return e;
        };
      }(), "use strict", function () {
        function c(a) {
          return a.replace(/'/g, "\\$\x26");
        }function h(a) {
          for (var b = a.length, c = [], d, e = 0; e < b; e++) d = a.charCodeAt(e), c.push(d);return "String.fromCharCode(" + c.join(",") + ")";
        }function g(a, b) {
          for (var d = a.plugins.link, e = d.compiledProtectionFunction.params, d = [d.compiledProtectionFunction.name, "("], f, g, h = 0; h < e.length; h++) f = e[h].toLowerCase(), g = b[f], 0 < h && d.push(","), d.push("'", g ? c(encodeURIComponent(b[f])) : "", "'");d.push(")");return d.join("");
        }function a(a) {
          a = a.config.emailProtection || "";var b;a && "encode" != a && (b = {}, a.replace(/^([^(]+)\(([^)]+)\)$/, function (a, c, d) {
            b.name = c;b.params = [];d.replace(/[^,\s]+/g, function (a) {
              b.params.push(a);
            });
          }));return b;
        }CKEDITOR.plugins.add("link", { requires: "dialog,fakeobjects", onLoad: function () {
            function a(b) {
              return c.replace(/%1/g, "rtl" == b ? "right" : "left").replace(/%2/g, "cke_contents_" + b);
            }var b = "background:url(" + CKEDITOR.getUrl(this.path + "images" + (CKEDITOR.env.hidpi ? "/hidpi" : "") + "/anchor.png") + ") no-repeat %1 center;border:1px dotted #00f;background-size:16px;",
                c = ".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{" + b + "padding-%1:18px;cursor:auto;}.%2 img.cke_anchor{" + b + "width:16px;min-height:15px;height:1.15em;vertical-align:text-bottom;}";CKEDITOR.addCss(a("ltr") + a("rtl"));
          }, init: function (b) {
            var c = "a[!href]";CKEDITOR.dialog.isTabEnabled(b, "link", "advanced") && (c = c.replace("]", ",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type,download]{*}(*)"));CKEDITOR.dialog.isTabEnabled(b, "link", "target") && (c = c.replace("]", ",target,onclick]"));b.addCommand("link", new CKEDITOR.dialogCommand("link", { allowedContent: c, requiredContent: "a[href]" }));b.addCommand("anchor", new CKEDITOR.dialogCommand("anchor", { allowedContent: "a[!name,id]", requiredContent: "a[name]" }));b.addCommand("unlink", new CKEDITOR.unlinkCommand());b.addCommand("removeAnchor", new CKEDITOR.removeAnchorCommand());b.setKeystroke(CKEDITOR.CTRL + 76, "link");b.setKeystroke(CKEDITOR.CTRL + 75, "link");b.ui.addButton && (b.ui.addButton("Link", { label: b.lang.link.toolbar,
              command: "link", toolbar: "links,10" }), b.ui.addButton("Unlink", { label: b.lang.link.unlink, command: "unlink", toolbar: "links,20" }), b.ui.addButton("Anchor", { label: b.lang.link.anchor.toolbar, command: "anchor", toolbar: "links,30" }));CKEDITOR.dialog.add("link", this.path + "dialogs/link.js");CKEDITOR.dialog.add("anchor", this.path + "dialogs/anchor.js");b.on("doubleclick", function (a) {
              var c = a.data.element.getAscendant({ a: 1, img: 1 }, !0);c && !c.isReadOnly() && (c.is("a") ? (a.data.dialog = !c.getAttribute("name") || c.getAttribute("href") && c.getChildCount() ? "link" : "anchor", a.data.link = c) : CKEDITOR.plugins.link.tryRestoreFakeAnchor(b, c) && (a.data.dialog = "anchor"));
            }, null, null, 0);b.on("doubleclick", function (a) {
              a.data.dialog in { link: 1, anchor: 1 } && a.data.link && b.getSelection().selectElement(a.data.link);
            }, null, null, 20);b.addMenuItems && b.addMenuItems({ anchor: { label: b.lang.link.anchor.menu, command: "anchor", group: "anchor", order: 1 }, removeAnchor: { label: b.lang.link.anchor.remove, command: "removeAnchor", group: "anchor", order: 5 }, link: { label: b.lang.link.menu,
                command: "link", group: "link", order: 1 }, unlink: { label: b.lang.link.unlink, command: "unlink", group: "link", order: 5 } });b.contextMenu && b.contextMenu.addListener(function (a) {
              if (!a || a.isReadOnly()) return null;a = CKEDITOR.plugins.link.tryRestoreFakeAnchor(b, a);if (!a && !(a = CKEDITOR.plugins.link.getSelectedLink(b))) return null;var c = {};a.getAttribute("href") && a.getChildCount() && (c = { link: CKEDITOR.TRISTATE_OFF, unlink: CKEDITOR.TRISTATE_OFF });a && a.hasAttribute("name") && (c.anchor = c.removeAnchor = CKEDITOR.TRISTATE_OFF);
              return c;
            });this.compiledProtectionFunction = a(b);
          }, afterInit: function (a) {
            a.dataProcessor.dataFilter.addRules({ elements: { a: function (b) {
                  return b.attributes.name ? b.children.length ? null : a.createFakeParserElement(b, "cke_anchor", "anchor") : null;
                } } });var b = a._.elementsPath && a._.elementsPath.filters;b && b.push(function (b, c) {
              if ("a" == c && (CKEDITOR.plugins.link.tryRestoreFakeAnchor(a, b) || b.getAttribute("name") && (!b.getAttribute("href") || !b.getChildCount()))) return "anchor";
            });
          } });var e = /^javascript:/,
            l = /^(?:mailto)(?:(?!\?(subject|body)=).)+/i,
            k = /subject=([^;?:@&=$,\/]*)/i,
            m = /body=([^;?:@&=$,\/]*)/i,
            b = /^#(.*)$/,
            d = /^((?:http|https|ftp|news):\/\/)?(.*)$/,
            f = /^(_(?:self|top|parent|blank))$/,
            n = /^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,
            w = /^javascript:([^(]+)\(([^)]+)\)$/,
            z = /\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,
            r = /(?:^|,)([^=]+)=(\d+|yes|no)/gi,
            t = /^tel:(.*)$/,
            u = { id: "advId", dir: "advLangDir", accessKey: "advAccessKey", name: "advName",
          lang: "advLangCode", tabindex: "advTabIndex", title: "advTitle", type: "advContentType", "class": "advCSSClasses", charset: "advCharset", style: "advStyles", rel: "advRel" };CKEDITOR.plugins.link = { getSelectedLink: function (a, b) {
            var c = a.getSelection(),
                d = c.getSelectedElement(),
                e = c.getRanges(),
                f = [],
                g;if (!b && d && d.is("a")) return d;for (d = 0; d < e.length; d++) if (g = c.getRanges()[d], g.shrink(CKEDITOR.SHRINK_ELEMENT, !0, { skipBogus: !0 }), (g = a.elementPath(g.getCommonAncestor()).contains("a", 1)) && b) f.push(g);else if (g) return g;return b ? f : null;
          }, getEditorAnchors: function (a) {
            for (var b = a.editable(), c = b.isInline() && !a.plugins.divarea ? a.document : b, b = c.getElementsByTag("a"), c = c.getElementsByTag("img"), d = [], e = 0, f; f = b.getItem(e++);) (f.data("cke-saved-name") || f.hasAttribute("name")) && d.push({ name: f.data("cke-saved-name") || f.getAttribute("name"), id: f.getAttribute("id") });for (e = 0; f = c.getItem(e++);) (f = this.tryRestoreFakeAnchor(a, f)) && d.push({ name: f.getAttribute("name"), id: f.getAttribute("id") });return d;
          }, fakeAnchor: !0, tryRestoreFakeAnchor: function (a, b) {
            if (b && b.data("cke-real-element-type") && "anchor" == b.data("cke-real-element-type")) {
              var c = a.restoreRealElement(b);if (c.data("cke-saved-name")) return c;
            }
          }, parseLinkAttributes: function (a, c) {
            var g = c && (c.data("cke-saved-href") || c.getAttribute("href")) || "",
                h = a.plugins.link.compiledProtectionFunction,
                q = a.config.emailProtection,
                y = {},
                A;g.match(e) && ("encode" == q ? g = g.replace(n, function (a, b, c) {
              c = c || "";return "mailto:" + String.fromCharCode.apply(String, b.split(",")) + c.replace(/\\'/g, "'");
            }) : q && g.replace(w, function (a, b, c) {
              if (b == h.name) {
                y.type = "email";a = y.email = {};b = /(^')|('$)/g;c = c.match(/[^,\s]+/g);for (var d = c.length, e, f, g = 0; g < d; g++) e = decodeURIComponent, f = c[g].replace(b, "").replace(/\\'/g, "'"), f = e(f), e = h.params[g].toLowerCase(), a[e] = f;a.address = [a.name, a.domain].join("@");
              }
            }));if (!y.type) if (q = g.match(b)) y.type = "anchor", y.anchor = {}, y.anchor.name = y.anchor.id = q[1];else if (q = g.match(t)) y.type = "tel", y.tel = q[1];else if (q = g.match(l)) {
              A = g.match(k);var g = g.match(m),
                  F = y.email = {};y.type = "email";F.address = q[0].replace("mailto:", "");A && (F.subject = decodeURIComponent(A[1]));g && (F.body = decodeURIComponent(g[1]));
            } else g && (A = g.match(d)) && (y.type = "url", y.url = {}, y.url.protocol = A[1], y.url.url = A[2]);if (c) {
              if (g = c.getAttribute("target")) y.target = { type: g.match(f) ? g : "frame", name: g };else if (g = (g = c.data("cke-pa-onclick") || c.getAttribute("onclick")) && g.match(z)) for (y.target = { type: "popup", name: g[1] }; q = r.exec(g[2]);) "yes" != q[2] && "1" != q[2] || q[1] in { height: 1, width: 1, top: 1, left: 1 } ? isFinite(q[2]) && (y.target[q[1]] = q[2]) : y.target[q[1]] = !0;null !== c.getAttribute("download") && (y.download = !0);var g = {},
                  B;for (B in u) (q = c.getAttribute(B)) && (g[u[B]] = q);if (B = c.data("cke-saved-name") || g.advName) g.advName = B;CKEDITOR.tools.isEmpty(g) || (y.advanced = g);
            }return y;
          }, getLinkAttributes: function (a, b) {
            var d = a.config.emailProtection || "",
                e = {};switch (b.type) {case "url":
                var d = b.url && void 0 !== b.url.protocol ? b.url.protocol : "http://",
                    f = b.url && CKEDITOR.tools.trim(b.url.url) || "";e["data-cke-saved-href"] = 0 === f.indexOf("/") ? f : d + f;break;case "anchor":
                d = b.anchor && b.anchor.id;
                e["data-cke-saved-href"] = "#" + (b.anchor && b.anchor.name || d || "");break;case "email":
                var k = b.email,
                    f = k.address;switch (d) {case "":case "encode":
                    var l = encodeURIComponent(k.subject || ""),
                        m = encodeURIComponent(k.body || ""),
                        k = [];l && k.push("subject\x3d" + l);m && k.push("body\x3d" + m);k = k.length ? "?" + k.join("\x26") : "";"encode" == d ? (d = ["javascript:void(location.href\x3d'mailto:'+", h(f)], k && d.push("+'", c(k), "'"), d.push(")")) : d = ["mailto:", f, k];break;default:
                    d = f.split("@", 2), k.name = d[0], k.domain = d[1], d = ["javascript:", g(a, k)];}e["data-cke-saved-href"] = d.join("");break;case "tel":
                e["data-cke-saved-href"] = "tel:" + b.tel;}if (b.target) if ("popup" == b.target.type) {
              for (var d = ["window.open(this.href, '", b.target.name || "", "', '"], t = "resizable status location toolbar menubar fullscreen scrollbars dependent".split(" "), f = t.length, l = function (a) {
                b.target[a] && t.push(a + "\x3d" + b.target[a]);
              }, k = 0; k < f; k++) t[k] += b.target[t[k]] ? "\x3dyes" : "\x3dno";l("width");l("left");l("height");l("top");d.push(t.join(","), "'); return false;");e["data-cke-pa-onclick"] = d.join("");
            } else "notSet" != b.target.type && b.target.name && (e.target = b.target.name);b.download && (e.download = "");if (b.advanced) {
              for (var n in u) (d = b.advanced[u[n]]) && (e[n] = d);e.name && (e["data-cke-saved-name"] = e.name);
            }e["data-cke-saved-href"] && (e.href = e["data-cke-saved-href"]);n = { target: 1, onclick: 1, "data-cke-pa-onclick": 1, "data-cke-saved-name": 1, download: 1 };b.advanced && CKEDITOR.tools.extend(n, u);for (var w in e) delete n[w];return { set: e, removed: CKEDITOR.tools.object.keys(n) };
          }, showDisplayTextForElement: function (a, b) {
            var d = b.getSelection();return b.widgets && b.widgets.focused || d && 1 < d.getRanges().length ? !1 : !a || !a.getName || !a.is({ img: 1, table: 1, tbody: 1, thead: 1, tfoot: 1, input: 1, select: 1, textarea: 1 });
          } };CKEDITOR.unlinkCommand = function () {};CKEDITOR.unlinkCommand.prototype = { exec: function (a) {
            if (CKEDITOR.env.ie) {
              var b = a.getSelection().getRanges()[0],
                  c = b.getPreviousEditableNode() && b.getPreviousEditableNode().getAscendant("a", !0) || b.getNextEditableNode() && b.getNextEditableNode().getAscendant("a", !0),
                  d;b.collapsed && c && (d = b.createBookmark(), b.selectNodeContents(c), b.select());
            }c = new CKEDITOR.style({ element: "a", type: CKEDITOR.STYLE_INLINE, alwaysRemoveElement: 1 });a.removeStyle(c);d && (b.moveToBookmark(d), b.select());
          }, refresh: function (a, b) {
            var c = b.lastElement && b.lastElement.getAscendant("a", !0);c && "a" == c.getName() && c.getAttribute("href") && c.getChildCount() ? this.setState(CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_DISABLED);
          }, contextSensitive: 1, startDisabled: 1, requiredContent: "a[href]", editorFocus: 1 };CKEDITOR.removeAnchorCommand = function () {};CKEDITOR.removeAnchorCommand.prototype = { exec: function (a) {
            var b = a.getSelection(),
                c = b.createBookmarks(),
                d;if (b && (d = b.getSelectedElement()) && (d.getChildCount() ? d.is("a") : CKEDITOR.plugins.link.tryRestoreFakeAnchor(a, d))) d.remove(1);else if (d = CKEDITOR.plugins.link.getSelectedLink(a)) d.hasAttribute("href") ? (d.removeAttributes({ name: 1, "data-cke-saved-name": 1 }), d.removeClass("cke_anchor")) : d.remove(1);b.selectBookmarks(c);
          }, requiredContent: "a[name]" };CKEDITOR.tools.extend(CKEDITOR.config, { linkShowAdvancedTab: !0,
          linkShowTargetTab: !0, linkDefaultProtocol: "http://" });
      }(), function () {
        function c(a, b, c, d) {
          for (var e = CKEDITOR.plugins.list.listToArray(b.root, c), f = [], g = 0; g < b.contents.length; g++) {
            var h = b.contents[g];(h = h.getAscendant("li", !0)) && !h.getCustomData("list_item_processed") && (f.push(h), CKEDITOR.dom.element.setMarker(c, h, "list_item_processed", !0));
          }for (var h = b.root.getDocument(), k, l, g = 0; g < f.length; g++) {
            var m = f[g].getCustomData("listarray_index");k = e[m].parent;k.is(this.type) || (l = h.createElement(this.type), k.copyAttributes(l, { start: 1, type: 1 }), l.removeStyle("list-style-type"), e[m].parent = l);
          }c = CKEDITOR.plugins.list.arrayToList(e, c, null, a.config.enterMode);for (var t, e = c.listNode.getChildCount(), g = 0; g < e && (t = c.listNode.getChild(g)); g++) t.getName() == this.type && d.push(t);c.listNode.replace(b.root);a.fire("contentDomInvalidated");
        }function h(a, b, c) {
          var d = b.contents,
              e = b.root.getDocument(),
              f = [];if (1 == d.length && d[0].equals(b.root)) {
            var g = e.createElement("div");d[0].moveChildren && d[0].moveChildren(g);d[0].append(g);d[0] = g;
          }b = b.contents[0].getParent();
          for (g = 0; g < d.length; g++) b = b.getCommonAncestor(d[g].getParent());a = a.config.useComputedState;for (var h, k, g = 0; g < d.length; g++) for (var l = d[g], m; m = l.getParent();) {
            if (m.equals(b)) {
              f.push(l);!k && l.getDirection() && (k = 1);l = l.getDirection(a);null !== h && (h = h && h != l ? null : l);break;
            }l = m;
          }if (!(1 > f.length)) {
            d = f[f.length - 1].getNext();g = e.createElement(this.type);for (c.push(g); f.length;) c = f.shift(), a = e.createElement("li"), l = c, l.is("pre") || r.test(l.getName()) || "false" == l.getAttribute("contenteditable") ? c.appendTo(a) : (c.copyAttributes(a), h && c.getDirection() && (a.removeStyle("direction"), a.removeAttribute("dir")), c.moveChildren(a), c.remove()), a.appendTo(g);h && k && g.setAttribute("dir", h);d ? g.insertBefore(d) : g.appendTo(b);
          }
        }function g(a, b, c) {
          function d(c) {
            if (!(!(l = k[c ? "getFirst" : "getLast"]()) || l.is && l.isBlockBoundary() || !(m = b.root[c ? "getPrevious" : "getNext"](CKEDITOR.dom.walker.invisible(!0))) || m.is && m.isBlockBoundary({ br: 1 }))) a.document.createElement("br")[c ? "insertBefore" : "insertAfter"](l);
          }for (var e = CKEDITOR.plugins.list.listToArray(b.root, c), f = [], g = 0; g < b.contents.length; g++) {
            var h = b.contents[g];(h = h.getAscendant("li", !0)) && !h.getCustomData("list_item_processed") && (f.push(h), CKEDITOR.dom.element.setMarker(c, h, "list_item_processed", !0));
          }h = null;for (g = 0; g < f.length; g++) h = f[g].getCustomData("listarray_index"), e[h].indent = -1;for (g = h + 1; g < e.length; g++) if (e[g].indent > e[g - 1].indent + 1) {
            f = e[g - 1].indent + 1 - e[g].indent;for (h = e[g].indent; e[g] && e[g].indent >= h;) e[g].indent += f, g++;g--;
          }var k = CKEDITOR.plugins.list.arrayToList(e, c, null, a.config.enterMode, b.root.getAttribute("dir")).listNode,
              l,
              m;d(!0);d();k.replace(b.root);a.fire("contentDomInvalidated");
        }function a(a, b) {
          this.name = a;this.context = this.type = b;this.allowedContent = b + " li";this.requiredContent = b;
        }function e(a, b, c, d) {
          for (var e, f; e = a[d ? "getLast" : "getFirst"](t);) (f = e.getDirection(1)) !== b.getDirection(1) && e.setAttribute("dir", f), e.remove(), c ? e[d ? "insertBefore" : "insertAfter"](c) : b.append(e, d), c = e;
        }function l(a) {
          function b(c) {
            var d = a[c ? "getPrevious" : "getNext"](w);d && d.type == CKEDITOR.NODE_ELEMENT && d.is(a.getName()) && (e(a, d, null, !c), a.remove(), a = d);
          }b();b(1);
        }function k(a) {
          return a.type == CKEDITOR.NODE_ELEMENT && (a.getName() in CKEDITOR.dtd.$block || a.getName() in CKEDITOR.dtd.$listItem) && CKEDITOR.dtd[a.getName()]["#"];
        }function m(a, c, d) {
          a.fire("saveSnapshot");d.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var f = d.extractContents();c.trim(!1, !0);var g = c.createBookmark(),
              h = new CKEDITOR.dom.elementPath(c.startContainer),
              k = h.block,
              h = h.lastElement.getAscendant("li", 1) || k,
              m = new CKEDITOR.dom.elementPath(d.startContainer),
              t = m.contains(CKEDITOR.dtd.$listItem),
              m = m.contains(CKEDITOR.dtd.$list);k ? (k = k.getBogus()) && k.remove() : m && (k = m.getPrevious(w)) && z(k) && k.remove();(k = f.getLast()) && k.type == CKEDITOR.NODE_ELEMENT && k.is("br") && k.remove();(k = c.startContainer.getChild(c.startOffset)) ? f.insertBefore(k) : c.startContainer.append(f);t && (f = b(t)) && (h.contains(t) ? (e(f, t.getParent(), t), f.remove()) : h.append(f));for (; d.checkStartOfBlock() && d.checkEndOfBlock();) {
            m = d.startPath();f = m.block;if (!f) break;f.is("li") && (h = f.getParent(), f.equals(h.getLast(w)) && f.equals(h.getFirst(w)) && (f = h));d.moveToPosition(f, CKEDITOR.POSITION_BEFORE_START);f.remove();
          }d = d.clone();f = a.editable();d.setEndAt(f, CKEDITOR.POSITION_BEFORE_END);d = new CKEDITOR.dom.walker(d);d.evaluator = function (a) {
            return w(a) && !z(a);
          };(d = d.next()) && d.type == CKEDITOR.NODE_ELEMENT && d.getName() in CKEDITOR.dtd.$list && l(d);c.moveToBookmark(g);c.select();a.fire("saveSnapshot");
        }function b(a) {
          return (a = a.getLast(w)) && a.type == CKEDITOR.NODE_ELEMENT && a.getName() in d ? a : null;
        }var d = { ol: 1, ul: 1 },
            f = CKEDITOR.dom.walker.whitespaces(),
            n = CKEDITOR.dom.walker.bookmark(),
            w = function (a) {
          return !(f(a) || n(a));
        },
            z = CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list = { listToArray: function (a, b, c, e, f) {
            if (!d[a.getName()]) return [];e || (e = 0);c || (c = []);for (var g = 0, h = a.getChildCount(); g < h; g++) {
              var k = a.getChild(g);k.type == CKEDITOR.NODE_ELEMENT && k.getName() in CKEDITOR.dtd.$list && CKEDITOR.plugins.list.listToArray(k, b, c, e + 1);if ("li" == k.$.nodeName.toLowerCase()) {
                var l = { parent: a, indent: e, element: k, contents: [] };f ? l.grandparent = f : (l.grandparent = a.getParent(), l.grandparent && "li" == l.grandparent.$.nodeName.toLowerCase() && (l.grandparent = l.grandparent.getParent()));b && CKEDITOR.dom.element.setMarker(b, k, "listarray_index", c.length);c.push(l);for (var m = 0, t = k.getChildCount(), n; m < t; m++) n = k.getChild(m), n.type == CKEDITOR.NODE_ELEMENT && d[n.getName()] ? CKEDITOR.plugins.list.listToArray(n, b, c, e + 1, l.grandparent) : l.contents.push(n);
              }
            }return c;
          }, arrayToList: function (a, b, c, e, f) {
            c || (c = 0);if (!a || a.length < c + 1) return null;for (var g, h = a[c].parent.getDocument(), k = new CKEDITOR.dom.documentFragment(h), l = null, m = c, t = Math.max(a[c].indent, 0), r = null, z, H, M = e == CKEDITOR.ENTER_P ? "p" : "div";;) {
              var I = a[m];g = I.grandparent;z = I.element.getDirection(1);if (I.indent == t) {
                l && a[m].parent.getName() == l.getName() || (l = a[m].parent.clone(!1, 1), f && l.setAttribute("dir", f), k.append(l));r = l.append(I.element.clone(0, 1));z != l.getDirection(1) && r.setAttribute("dir", z);for (g = 0; g < I.contents.length; g++) r.append(I.contents[g].clone(1, 1));m++;
              } else if (I.indent == Math.max(t, 0) + 1) I = a[m - 1].element.getDirection(1), m = CKEDITOR.plugins.list.arrayToList(a, null, m, e, I != z ? z : null), !r.getChildCount() && CKEDITOR.env.needsNbspFiller && 7 >= h.$.documentMode && r.append(h.createText(" ")), r.append(m.listNode), m = m.nextIndex;else if (-1 == I.indent && !c && g) {
                d[g.getName()] ? (r = I.element.clone(!1, !0), z != g.getDirection(1) && r.setAttribute("dir", z)) : r = new CKEDITOR.dom.documentFragment(h);var l = g.getDirection(1) != z,
                    D = I.element,
                    P = D.getAttribute("class"),
                    L = D.getAttribute("style"),
                    O = r.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT && (e != CKEDITOR.ENTER_BR || l || L || P),
                    N,
                    V = I.contents.length,
                    S;
                for (g = 0; g < V; g++) if (N = I.contents[g], n(N) && 1 < V) O ? S = N.clone(1, 1) : r.append(N.clone(1, 1));else if (N.type == CKEDITOR.NODE_ELEMENT && N.isBlockBoundary()) {
                  l && !N.getDirection() && N.setAttribute("dir", z);H = N;var U = D.getAttribute("style");U && H.setAttribute("style", U.replace(/([^;])$/, "$1;") + (H.getAttribute("style") || ""));P && N.addClass(P);H = null;S && (r.append(S), S = null);r.append(N.clone(1, 1));
                } else O ? (H || (H = h.createElement(M), r.append(H), l && H.setAttribute("dir", z)), L && H.setAttribute("style", L), P && H.setAttribute("class", P), S && (H.append(S), S = null), H.append(N.clone(1, 1))) : r.append(N.clone(1, 1));S && ((H || r).append(S), S = null);r.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT && m != a.length - 1 && (CKEDITOR.env.needsBrFiller && (z = r.getLast()) && z.type == CKEDITOR.NODE_ELEMENT && z.is("br") && z.remove(), (z = r.getLast(w)) && z.type == CKEDITOR.NODE_ELEMENT && z.is(CKEDITOR.dtd.$block) || r.append(h.createElement("br")));z = r.$.nodeName.toLowerCase();"div" != z && "p" != z || r.appendBogus();k.append(r);l = null;m++;
              } else return null;H = null;if (a.length <= m || Math.max(a[m].indent, 0) < t) break;
            }if (b) for (a = k.getFirst(); a;) {
              if (a.type == CKEDITOR.NODE_ELEMENT && (CKEDITOR.dom.element.clearMarkers(b, a), a.getName() in CKEDITOR.dtd.$listItem && (c = a, h = f = e = void 0, e = c.getDirection()))) {
                for (f = c.getParent(); f && !(h = f.getDirection());) f = f.getParent();e == h && c.removeAttribute("dir");
              }a = a.getNextSourceNode();
            }return { listNode: k, nextIndex: m };
          } };var r = /^h[1-6]$/,
            t = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);a.prototype = { exec: function (a) {
            function b(a) {
              return d[a.root.getName()] && !e(a.root, [CKEDITOR.NODE_COMMENT]);
            }
            function e(a, b) {
              return CKEDITOR.tools.array.filter(a.getChildren().toArray(), function (a) {
                return -1 === CKEDITOR.tools.array.indexOf(b, a.type);
              }).length;
            }function f(a) {
              var b = !0;if (0 === a.getChildCount()) return !1;a.forEach(function (a) {
                if (a.type !== CKEDITOR.NODE_COMMENT) return b = !1;
              }, null, !0);return b;
            }this.refresh(a, a.elementPath());var k = a.config,
                m = a.getSelection(),
                t = m && m.getRanges();if (this.state == CKEDITOR.TRISTATE_OFF) {
              var n = a.editable();if (n.getFirst(w)) {
                var r = 1 == t.length && t[0];(k = r && r.getEnclosedNode()) && k.is && this.type == k.getName() && this.setState(CKEDITOR.TRISTATE_ON);
              } else k.enterMode == CKEDITOR.ENTER_BR ? n.appendBogus() : t[0].fixBlock(1, k.enterMode == CKEDITOR.ENTER_P ? "p" : "div"), m.selectRanges(t);
            }for (var k = m.createBookmarks(!0), n = [], B = {}, t = t.createIterator(), z = 0; (r = t.getNextRange()) && ++z;) {
              var E = r.getBoundaryNodes(),
                  K = E.startNode,
                  H = E.endNode;K.type == CKEDITOR.NODE_ELEMENT && "td" == K.getName() && r.setStartAt(E.startNode, CKEDITOR.POSITION_AFTER_START);H.type == CKEDITOR.NODE_ELEMENT && "td" == H.getName() && r.setEndAt(E.endNode, CKEDITOR.POSITION_BEFORE_END);r = r.createIterator();for (r.forceBrBreak = this.state == CKEDITOR.TRISTATE_OFF; E = r.getNextParagraph();) if (!E.getCustomData("list_block") && !f(E)) {
                CKEDITOR.dom.element.setMarker(B, E, "list_block", 1);for (var M = a.elementPath(E), K = M.elements, H = 0, M = M.blockLimit, I, D = K.length - 1; 0 <= D && (I = K[D]); D--) if (d[I.getName()] && M.contains(I)) {
                  M.removeCustomData("list_group_object_" + z);(K = I.getCustomData("list_group_object")) ? K.contents.push(E) : (K = { root: I, contents: [E] }, n.push(K), CKEDITOR.dom.element.setMarker(B, I, "list_group_object", K));H = 1;break;
                }H || (H = M, H.getCustomData("list_group_object_" + z) ? H.getCustomData("list_group_object_" + z).contents.push(E) : (K = { root: H, contents: [E] }, CKEDITOR.dom.element.setMarker(B, H, "list_group_object_" + z, K), n.push(K)));
              }
            }for (I = []; 0 < n.length;) K = n.shift(), this.state == CKEDITOR.TRISTATE_OFF ? b(K) || (d[K.root.getName()] ? c.call(this, a, K, B, I) : h.call(this, a, K, I)) : this.state == CKEDITOR.TRISTATE_ON && d[K.root.getName()] && !b(K) && g.call(this, a, K, B);for (D = 0; D < I.length; D++) l(I[D]);CKEDITOR.dom.element.clearAllMarkers(B);
            m.selectBookmarks(k);a.focus();
          }, refresh: function (a, b) {
            var c = b.contains(d, 1),
                e = b.blockLimit || b.root;c && e.contains(c) ? this.setState(c.is(this.type) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_OFF);
          } };CKEDITOR.plugins.add("list", { requires: "indentlist", init: function (c) {
            c.blockless || (c.addCommand("numberedlist", new a("numberedlist", "ol")), c.addCommand("bulletedlist", new a("bulletedlist", "ul")), c.ui.addButton && (c.ui.addButton("NumberedList", { isToggle: !0, label: c.lang.list.numberedlist,
              command: "numberedlist", directional: !0, toolbar: "list,10" }), c.ui.addButton("BulletedList", { isToggle: !0, label: c.lang.list.bulletedlist, command: "bulletedlist", directional: !0, toolbar: "list,20" })), c.on("key", function (a) {
              var e = a.data.domEvent.getKey(),
                  f;if ("wysiwyg" == c.mode && e in { 8: 1, 46: 1 }) {
                var g = c.getSelection().getRanges()[0],
                    h = g && g.startPath();if (g && g.collapsed) {
                  var l = 8 == e,
                      t = c.editable(),
                      n = new CKEDITOR.dom.walker(g.clone());n.evaluator = function (a) {
                    return w(a) && !z(a);
                  };n.guard = function (a, b) {
                    return !(b && a.type == CKEDITOR.NODE_ELEMENT && a.is("table"));
                  };e = g.clone();if (l) {
                    var r;(r = h.contains(d)) && g.checkBoundaryOfElement(r, CKEDITOR.START) && (r = r.getParent()) && r.is("li") && (r = b(r)) ? (f = r, r = r.getPrevious(w), e.moveToPosition(r && z(r) ? r : f, CKEDITOR.POSITION_BEFORE_START)) : (n.range.setStartAt(t, CKEDITOR.POSITION_AFTER_START), n.range.setEnd(g.startContainer, g.startOffset), (r = n.previous()) && r.type == CKEDITOR.NODE_ELEMENT && (r.getName() in d || r.is("li")) && (r.is("li") || (n.range.selectNodeContents(r), n.reset(), n.evaluator = k, r = n.previous()), f = r, e.moveToElementEditEnd(f), e.moveToPosition(e.endPath().block, CKEDITOR.POSITION_BEFORE_END)));if (f) m(c, e, g), a.cancel();else {
                      var G = h.contains(d);G && g.checkBoundaryOfElement(G, CKEDITOR.START) && (f = G.getFirst(w), g.checkBoundaryOfElement(f, CKEDITOR.START) && (r = G.getPrevious(w), b(f) ? r && (g.moveToElementEditEnd(r), g.select()) : c.execCommand("outdent"), a.cancel()));
                    }
                  } else if (f = h.contains("li")) {
                    if (n.range.setEndAt(t, CKEDITOR.POSITION_BEFORE_END), l = (t = f.getLast(w)) && k(t) ? t : f, h = 0, (r = n.next()) && r.type == CKEDITOR.NODE_ELEMENT && r.getName() in d && r.equals(t) ? (h = 1, r = n.next()) : g.checkBoundaryOfElement(l, CKEDITOR.END) && (h = 2), h && r) {
                      g = g.clone();g.moveToElementEditStart(r);if (1 == h && (e.optimize(), !e.startContainer.equals(f))) {
                        for (f = e.startContainer; f.is(CKEDITOR.dtd.$inline);) G = f, f = f.getParent();G && e.moveToPosition(G, CKEDITOR.POSITION_AFTER_END);
                      }2 == h && (e.moveToPosition(e.endPath().block, CKEDITOR.POSITION_BEFORE_END), g.endPath().block && g.moveToPosition(g.endPath().block, CKEDITOR.POSITION_AFTER_START));
                      m(c, e, g);a.cancel();
                    }
                  } else n.range.setEndAt(t, CKEDITOR.POSITION_BEFORE_END), (r = n.next()) && r.type == CKEDITOR.NODE_ELEMENT && r.is(d) && (r = r.getFirst(w), h.block && g.checkStartOfBlock() && g.checkEndOfBlock() ? (h.block.remove(), g.moveToElementEditStart(r), g.select()) : b(r) ? (g.moveToElementEditStart(r), g.select()) : (g = g.clone(), g.moveToElementEditStart(r), m(c, e, g)), a.cancel());setTimeout(function () {
                    c.selectionChange(1);
                  });
                }
              }
            }));
          } });
      }(), function () {
        CKEDITOR.plugins.liststyle = { requires: "dialog,contextmenu", init: function (c) {
            if (!c.blockless) {
              var h = new CKEDITOR.dialogCommand("numberedListStyle", { requiredContent: "ol", allowedContent: "ol{list-style-type}[start]; li{list-style-type}[value]", contentTransformations: [["ol: listTypeToStyle"]] });
              h = c.addCommand("numberedListStyle", h);c.addFeature(h);CKEDITOR.dialog.add("numberedListStyle", this.path + "dialogs/liststyle.js");h = new CKEDITOR.dialogCommand("bulletedListStyle", { requiredContent: "ul", allowedContent: "ul{list-style-type}", contentTransformations: [["ul: listTypeToStyle"]] });h = c.addCommand("bulletedListStyle", h);c.addFeature(h);CKEDITOR.dialog.add("bulletedListStyle", this.path + "dialogs/liststyle.js");c.addMenuGroup("list", 108);c.addMenuItems({ numberedlist: { label: c.lang.liststyle.numberedTitle, group: "list", command: "numberedListStyle" }, bulletedlist: { label: c.lang.liststyle.bulletedTitle, group: "list", command: "bulletedListStyle" } });c.contextMenu.addListener(function (c) {
                if (!c || c.isReadOnly()) return null;for (; c;) {
                  var a = c.getName();if ("ol" == a) return { numberedlist: CKEDITOR.TRISTATE_OFF };if ("ul" == a) return { bulletedlist: CKEDITOR.TRISTATE_OFF };
                  c = c.getParent();
                }return null;
              });
            }
          } };CKEDITOR.plugins.add("liststyle", CKEDITOR.plugins.liststyle);
      }(), "use strict", function () {
        function c(a, b, c) {
          return n(b) && n(c) && c.equals(b.getNext(function (a) {
            return !(aa(a) || ca(a) || w(a));
          }));
        }function h(a) {
          this.upper = a[0];this.lower = a[1];this.set.apply(this, a.slice(2));
        }function g(a) {
          var b = a.element;if (b && n(b) && (b = b.getAscendant(a.triggers, !0)) && a.editable.contains(b)) {
            var c = k(b);if ("true" == c.getAttribute("contenteditable")) return b;if (c.is(a.triggers)) return c;
          }return null;
        }
        function a(a, b, c) {
          v(a, b);v(a, c);a = b.size.bottom;c = c.size.top;return a && c ? 0 | (a + c) / 2 : a || c;
        }function e(a, b, c) {
          return b = b[c ? "getPrevious" : "getNext"](function (b) {
            return b && b.type == CKEDITOR.NODE_TEXT && !aa(b) || n(b) && !w(b) && !f(a, b);
          });
        }function l(a, b, c) {
          return a > b && a < c;
        }function k(a, b) {
          if (a.data("cke-editable")) return null;for (b || (a = a.getParent()); a && !a.data("cke-editable");) {
            if (a.hasAttribute("contenteditable")) return a;a = a.getParent();
          }return null;
        }function m(a) {
          var c = a.doc,
              d = G('\x3cspan contenteditable\x3d"false" data-cke-magic-line\x3d"1" style\x3d"' + ia + "position:absolute;border-top:1px dashed " + a.boxColor + '"\x3e\x3c/span\x3e', c),
              e = CKEDITOR.getUrl(this.path + "images/" + (E.hidpi ? "hidpi/" : "") + "icon" + (a.rtl ? "-rtl" : "") + ".png");F(d, { attach: function () {
              this.wrap.getParent() || this.wrap.appendTo(a.editable, !0);return this;
            }, lineChildren: [F(G('\x3cspan title\x3d"' + a.editor.lang.magicline.title + '" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e', c), { base: ia + "height:17px;width:17px;" + (a.rtl ? "left" : "right") + ":17px;background:url(" + e + ") center no-repeat " + a.boxColor + ";cursor:pointer;" + (E.hc ? "font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;" : "") + (E.hidpi ? "background-size: 9px 10px;" : ""), looks: ["top:-8px; border-radius: 2px;", "top:-17px; border-radius: 2px 2px 0px 0px;", "top:-1px; border-radius: 0px 0px 2px 2px;"] }), F(G(W, c), { base: ka + "left:0px;border-left-color:" + a.boxColor + ";", looks: ["border-width:8px 0 8px 8px;top:-8px", "border-width:8px 0 0 8px;top:-8px", "border-width:0 0 8px 8px;top:0px"] }), F(G(W, c), { base: ka + "right:0px;border-right-color:" + a.boxColor + ";", looks: ["border-width:8px 8px 8px 0;top:-8px", "border-width:8px 8px 0 0;top:-8px", "border-width:0 8px 8px 0;top:0px"] })], detach: function () {
              this.wrap.getParent() && this.wrap.remove();return this;
            }, mouseNear: function () {
              v(a, this);var b = a.holdDistance,
                  c = this.size;return c && l(a.mouse.y, c.top - b, c.bottom + b) && l(a.mouse.x, c.left - b, c.right + b) ? !0 : !1;
            }, place: function () {
              var b = a.view,
                  c = a.editable,
                  d = a.trigger,
                  e = d.upper,
                  f = d.lower,
                  g = e || f,
                  h = g.getParent(),
                  k = {};this.trigger = d;e && v(a, e, !0);f && v(a, f, !0);v(a, h, !0);a.inInlineMode && q(a, !0);h.equals(c) ? (k.left = b.scroll.x, k.right = -b.scroll.x, k.width = "") : (k.left = g.size.left - g.size.margin.left + b.scroll.x - (a.inInlineMode ? b.editable.left + b.editable.border.left : 0), k.width = g.size.outerWidth + g.size.margin.left + g.size.margin.right + b.scroll.x, k.right = "");e && f ? k.top = e.size.margin.bottom === f.size.margin.top ? 0 | e.size.bottom + e.size.margin.bottom / 2 : e.size.margin.bottom < f.size.margin.top ? e.size.bottom + e.size.margin.bottom : e.size.bottom + e.size.margin.bottom - f.size.margin.top : e ? f || (k.top = e.size.bottom + e.size.margin.bottom) : k.top = f.size.top - f.size.margin.top;d.is(O) || l(k.top, b.scroll.y - 15, b.scroll.y + 5) ? (k.top = a.inInlineMode ? 0 : b.scroll.y, this.look(O)) : d.is(N) || l(k.top, b.pane.bottom - 5, b.pane.bottom + 15) ? (k.top = a.inInlineMode ? b.editable.height + b.editable.padding.top + b.editable.padding.bottom : b.pane.bottom - 1, this.look(N)) : (a.inInlineMode && (k.top -= b.editable.top + b.editable.border.top), this.look(V));a.inInlineMode && (k.top--, k.top += b.editable.scroll.top, k.left += b.editable.scroll.left);
              for (var m in k) k[m] = CKEDITOR.tools.cssLength(k[m]);this.setStyles(k);
            }, look: function (a) {
              if (this.oldLook != a) {
                for (var b = this.lineChildren.length, c; b--;) (c = this.lineChildren[b]).setAttribute("style", c.base + c.looks[0 | a / 2]);this.oldLook = a;
              }
            }, wrap: new B("span", a.doc) });for (c = d.lineChildren.length; c--;) d.lineChildren[c].appendTo(d);d.look(V);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on("mouseup", function (c) {
            d.detach();b(a, function (b) {
              var c = a.line.trigger;b[c.is(I) ? "insertBefore" : "insertAfter"](c.is(I) ? c.lower : c.upper);
            }, !0);a.editor.focus();E.ie || a.enterMode == CKEDITOR.ENTER_BR || a.hotNode.scrollIntoView();c.data.preventDefault(!0);
          });d.on("mousedown", function (a) {
            a.data.preventDefault(!0);
          });a.line = d;
        }function b(a, b, c) {
          var d = new CKEDITOR.dom.range(a.doc),
              e = a.editor,
              f;E.ie && a.enterMode == CKEDITOR.ENTER_BR ? f = a.doc.createText(S) : (f = (f = k(a.element, !0)) && f.data("cke-enter-mode") || a.enterMode, f = new B(M[f], a.doc), f.is("br") || a.doc.createText(S).appendTo(f));c && e.fire("saveSnapshot");b(f);d.moveToPosition(f, CKEDITOR.POSITION_AFTER_START);e.getSelection().selectRanges([d]);a.hotNode = f;c && e.fire("saveSnapshot");
        }function d(a, c) {
          return { canUndo: !0, modes: { wysiwyg: 1 }, exec: function () {
              function d(e) {
                var f = E.ie && 9 > E.version ? " " : S,
                    g = a.hotNode && a.hotNode.getText() == f && a.element.equals(a.hotNode) && a.lastCmdDirection === !!c;b(a, function (b) {
                  g && a.hotNode && a.hotNode.remove();b[c ? "insertAfter" : "insertBefore"](e);b.setAttributes({ "data-cke-magicline-hot": 1, "data-cke-magicline-dir": !!c });a.lastCmdDirection = !!c;
                });E.ie || a.enterMode == CKEDITOR.ENTER_BR || a.hotNode.scrollIntoView();a.line.detach();
              }return function (b) {
                b = b.getSelection().getStartElement();var f;b = b.getAscendant(ea, 1);if (!t(a, b) && b && !b.equals(a.editable) && !b.contains(a.editable)) {
                  (f = k(b)) && "false" == f.getAttribute("contenteditable") && (b = f);a.element = b;f = e(a, b, !c);var h;n(f) && f.is(a.triggers) && f.is(T) && (!e(a, f, !c) || (h = e(a, f, !c)) && n(h) && h.is(a.triggers)) ? d(f) : (h = g(a, b), n(h) && (e(a, h, !c) ? (b = e(a, h, !c)) && n(b) && b.is(a.triggers) && d(h) : d(h)));
                }
              };
            }() };
        }function f(a, b) {
          if (!b || b.type != CKEDITOR.NODE_ELEMENT || !b.$) return !1;var c = a.line;return c.wrap.equals(b) || c.wrap.contains(b);
        }function n(a) {
          return a && a.type == CKEDITOR.NODE_ELEMENT && a.$;
        }function w(a) {
          if (!n(a)) return !1;var b;(b = z(a)) || (n(a) ? (b = { left: 1, right: 1, center: 1 }, b = !(!b[a.getComputedStyle("float")] && !b[a.getAttribute("align")])) : b = !1);return b;
        }function z(a) {
          return !!{ absolute: 1, fixed: 1 }[a.getComputedStyle("position")];
        }function r(a, b) {
          return n(b) ? b.is(a.triggers) : null;
        }function t(a, b) {
          if (!b) return !1;for (var c = b.getParents(1), d = c.length; d--;) for (var e = a.tabuList.length; e--;) if (c[d].hasAttribute(a.tabuList[e])) return !0;return !1;
        }function u(a, b, c) {
          b = b[c ? "getLast" : "getFirst"](function (b) {
            return a.isRelevant(b) && !b.is(da);
          });if (!b) return !1;v(a, b);return c ? b.size.top > a.mouse.y : b.size.bottom < a.mouse.y;
        }function C(a) {
          var b = a.editable,
              c = a.mouse,
              d = a.view,
              e = a.triggerOffset;q(a);var g = c.y > (a.inInlineMode ? d.editable.top + d.editable.height / 2 : Math.min(d.editable.height, d.pane.height) / 2),
              b = b[g ? "getLast" : "getFirst"](function (a) {
            return !(aa(a) || ca(a));
          });if (!b) return null;f(a, b) && (b = a.line.wrap[g ? "getPrevious" : "getNext"](function (a) {
            return !(aa(a) || ca(a));
          }));if (!n(b) || w(b) || !r(a, b)) return null;v(a, b);return !g && 0 <= b.size.top && l(c.y, 0, b.size.top + e) ? (a = a.inInlineMode || 0 === d.scroll.y ? O : V, new h([null, b, I, L, a])) : g && b.size.bottom <= d.pane.height && l(c.y, b.size.bottom - e, d.pane.height) ? (a = a.inInlineMode || l(b.size.bottom, d.pane.height - e, d.pane.height) ? N : V, new h([b, null, D, L, a])) : null;
        }function p(a) {
          var b = a.mouse,
              c = a.view,
              d = a.triggerOffset,
              f = g(a);if (!f) return null;
          v(a, f);var d = Math.min(d, 0 | f.size.outerHeight / 2),
              k = [],
              m,
              p;if (l(b.y, f.size.top - 1, f.size.top + d)) p = !1;else if (l(b.y, f.size.bottom - d, f.size.bottom + 1)) p = !0;else return null;if (w(f) || u(a, f, p) || f.getParent().is(U)) return null;var t = e(a, f, !p);if (t) {
            if (t && t.type == CKEDITOR.NODE_TEXT) return null;if (n(t)) {
              if (w(t) || !r(a, t) || t.getParent().is(U)) return null;k = [t, f][p ? "reverse" : "concat"]().concat([P, L]);
            }
          } else f.equals(a.editable[p ? "getLast" : "getFirst"](a.isRelevant)) ? (q(a), p && l(b.y, f.size.bottom - d, c.pane.height) && l(f.size.bottom, c.pane.height - d, c.pane.height) ? m = N : l(b.y, 0, f.size.top + d) && (m = O)) : m = V, k = [null, f][p ? "reverse" : "concat"]().concat([p ? D : I, L, m, f.equals(a.editable[p ? "getLast" : "getFirst"](a.isRelevant)) ? p ? N : O : V]);return 0 in k ? new h(k) : null;
        }function x(a, b, c, d) {
          for (var e = b.getDocumentPosition(), f = {}, g = {}, h = {}, k = {}, l = Q.length; l--;) f[Q[l]] = parseInt(b.getComputedStyle.call(b, "border-" + Q[l] + "-width"), 10) || 0, h[Q[l]] = parseInt(b.getComputedStyle.call(b, "padding-" + Q[l]), 10) || 0, g[Q[l]] = parseInt(b.getComputedStyle.call(b, "margin-" + Q[l]), 10) || 0;c && !d || y(a, d);k.top = e.y - (c ? 0 : a.view.scroll.y);k.left = e.x - (c ? 0 : a.view.scroll.x);k.outerWidth = b.$.offsetWidth;k.outerHeight = b.$.offsetHeight;k.height = k.outerHeight - (h.top + h.bottom + f.top + f.bottom);k.width = k.outerWidth - (h.left + h.right + f.left + f.right);k.bottom = k.top + k.outerHeight;k.right = k.left + k.outerWidth;a.inInlineMode && (k.scroll = { top: b.$.scrollTop, left: b.$.scrollLeft });return F({ border: f, padding: h, margin: g, ignoreScroll: c }, k, !0);
        }function v(a, b, c) {
          if (!n(b)) return b.size = null;if (!b.size) b.size = {};else if (b.size.ignoreScroll == c && b.size.date > new Date() - fa) return null;return F(b.size, x(a, b, c), { date: +new Date() }, !0);
        }function q(a, b) {
          a.view.editable = x(a, a.editable, b, !0);
        }function y(a, b) {
          a.view || (a.view = {});var c = a.view;if (!(!b && c && c.date > new Date() - fa)) {
            var d = a.win,
                c = d.getScrollPosition(),
                d = d.getViewPaneSize();F(a.view, { scroll: { x: c.x, y: c.y, width: a.doc.$.documentElement.scrollWidth - d.width, height: a.doc.$.documentElement.scrollHeight - d.height }, pane: { width: d.width, height: d.height, bottom: d.height + c.y },
              date: +new Date() }, !0);
          }
        }function A(a, b, c, d) {
          for (var e = d, f = d, g = 0, k = !1, l = !1, m = a.view.pane.height, q = a.mouse; q.y + g < m && 0 < q.y - g;) {
            k || (k = b(e, d));l || (l = b(f, d));!k && 0 < q.y - g && (e = c(a, { x: q.x, y: q.y - g }));!l && q.y + g < m && (f = c(a, { x: q.x, y: q.y + g }));if (k && l) break;g += 2;
          }return new h([e, f, null, null]);
        }CKEDITOR.plugins.add("magicline", { init: function (a) {
            var c = a.config,
                k = c.magicline_triggerOffset || 30,
                l = { editor: a, enterMode: c.enterMode, triggerOffset: k, holdDistance: 0 | k * (c.magicline_holdDistance || .5), boxColor: c.magicline_color || "#ff0000",
              rtl: "rtl" == c.contentsLangDirection, tabuList: ["data-cke-hidden-sel"].concat(c.magicline_tabuList || []), triggers: c.magicline_everywhere ? ea : { table: 1, hr: 1, div: 1, ul: 1, ol: 1, dl: 1, form: 1, blockquote: 1 } },
                u,
                v,
                r;l.isRelevant = function (a) {
              return n(a) && !f(l, a) && !w(a);
            };a.on("contentDom", function () {
              var k = a.editable(),
                  n = a.document,
                  w = a.window;F(l, { editable: k, inInlineMode: k.isInline(), doc: n, win: w, hotNode: null }, !0);l.boundary = l.inInlineMode ? l.editable : l.doc.getDocumentElement();k.is(H.$inline) || (l.inInlineMode && !z(k) && k.setStyles({ position: "relative", top: null, left: null }), m.call(this, l), y(l), k.attachListener(a, "beforeUndoImage", function () {
                l.line.detach();
              }), k.attachListener(a, "beforeGetData", function () {
                l.line.wrap.getParent() && (l.line.detach(), a.once("getData", function () {
                  l.line.attach();
                }, null, null, 1E3));
              }, null, null, 0), k.attachListener(l.inInlineMode ? n : n.getWindow().getFrame(), "mouseout", function (b) {
                if ("wysiwyg" == a.mode) if (l.inInlineMode) {
                  var c = b.data.$.clientX;b = b.data.$.clientY;y(l);q(l, !0);var d = l.view.editable,
                      e = l.view.scroll;c > d.left - e.x && c < d.right - e.x && b > d.top - e.y && b < d.bottom - e.y || (clearTimeout(r), r = null, l.line.detach());
                } else clearTimeout(r), r = null, l.line.detach();
              }), k.attachListener(k, "keyup", function () {
                l.hiddenMode = 0;
              }), k.attachListener(k, "keydown", function (b) {
                if ("wysiwyg" == a.mode) switch (b.data.getKeystroke()) {case 2228240:case 16:
                    l.hiddenMode = 1, l.line.detach();}
              }), k.attachListener(l.inInlineMode ? k : n, "mousemove", function (b) {
                v = !0;if ("wysiwyg" == a.mode && !a.readOnly && !r) {
                  var c = { x: b.data.$.clientX, y: b.data.$.clientY };
                  r = setTimeout(function () {
                    l.mouse = c;r = l.trigger = null;y(l);v && !l.hiddenMode && a.focusManager.hasFocus && !l.line.mouseNear() && (l.element = Z(l, !0)) && ((l.trigger = C(l) || p(l) || X(l)) && !t(l, l.trigger.upper || l.trigger.lower) ? l.line.attach().place() : (l.trigger = null, l.line.detach()), v = !1);
                  }, 30);
                }
              }), k.attachListener(w, "scroll", function () {
                "wysiwyg" == a.mode && (l.line.detach(), E.webkit && (l.hiddenMode = 1, clearTimeout(u), u = setTimeout(function () {
                  l.mouseDown || (l.hiddenMode = 0);
                }, 50)));
              }), k.attachListener(K ? n : w, "mousedown", function () {
                "wysiwyg" == a.mode && (l.line.detach(), l.hiddenMode = 1, l.mouseDown = 1);
              }), k.attachListener(K ? n : w, "mouseup", function () {
                l.hiddenMode = 0;l.mouseDown = 0;
              }), a.addCommand("accessPreviousSpace", d(l)), a.addCommand("accessNextSpace", d(l, !0)), a.setKeystroke([[c.magicline_keystrokePrevious, "accessPreviousSpace"], [c.magicline_keystrokeNext, "accessNextSpace"]]), a.on("loadSnapshot", function () {
                var b, c, d, e;for (e in { p: 1, br: 1, div: 1 }) for (b = a.document.getElementsByTag(e), d = b.count(); d--;) if ((c = b.getItem(d)).data("cke-magicline-hot")) {
                  l.hotNode = c;l.lastCmdDirection = "true" === c.data("cke-magicline-dir") ? !0 : !1;return;
                }
              }), a._.magiclineBackdoor = { accessFocusSpace: b, boxTrigger: h, isLine: f, getAscendantTrigger: g, getNonEmptyNeighbour: e, getSize: x, that: l, triggerEdge: p, triggerEditable: C, triggerExpand: X });
            }, this);
          } });var F = CKEDITOR.tools.extend,
            B = CKEDITOR.dom.element,
            G = B.createFromHtml,
            E = CKEDITOR.env,
            K = CKEDITOR.env.ie && 9 > CKEDITOR.env.version,
            H = CKEDITOR.dtd,
            M = {},
            I = 128,
            D = 64,
            P = 32,
            L = 16,
            O = 4,
            N = 2,
            V = 1,
            S = " ",
            U = H.$listItem,
            da = H.$tableContent,
            T = F({}, H.$nonEditable, H.$empty),
            ea = H.$block,
            fa = 100,
            ia = "width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;",
            ka = ia + "border-color:transparent;display:block;border-style:solid;",
            W = "\x3cspan\x3e" + S + "\x3c/span\x3e";M[CKEDITOR.ENTER_BR] = "br";M[CKEDITOR.ENTER_P] = "p";M[CKEDITOR.ENTER_DIV] = "div";h.prototype = { set: function (a, b, c) {
            this.properties = a + b + (c || V);return this;
          }, is: function (a) {
            return (this.properties & a) == a;
          } };var Z = function () {
          function a(b, c) {
            var d = b.$.elementFromPoint(c.x, c.y);return d && d.nodeType ? new CKEDITOR.dom.element(d) : null;
          }return function (b, c, d) {
            if (!b.mouse) return null;var e = b.doc,
                g = b.line.wrap;d = d || b.mouse;var h = a(e, d);c && f(b, h) && (g.hide(), h = a(e, d), g.show());return !h || h.type != CKEDITOR.NODE_ELEMENT || !h.$ || E.ie && 9 > E.version && !b.boundary.equals(h) && !b.boundary.contains(h) ? null : h;
          };
        }(),
            aa = CKEDITOR.dom.walker.whitespaces(),
            ca = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT),
            X = function () {
          function b(e) {
            var f = e.element,
                g,
                h,
                k;if (!n(f) || f.contains(e.editable) || f.isReadOnly()) return null;k = A(e, function (a, b) {
              return !b.equals(a);
            }, function (a, b) {
              return Z(a, !0, b);
            }, f);g = k.upper;h = k.lower;if (c(e, g, h)) return k.set(P, 8);if (g && f.contains(g)) for (; !g.getParent().equals(f);) g = g.getParent();else g = f.getFirst(function (a) {
              return d(e, a);
            });if (h && f.contains(h)) for (; !h.getParent().equals(f);) h = h.getParent();else h = f.getLast(function (a) {
              return d(e, a);
            });if (!g || !h) return null;v(e, g);v(e, h);if (!l(e.mouse.y, g.size.top, h.size.bottom)) return null;for (var f = Number.MAX_VALUE, m, q, p, t; h && !h.equals(g) && (q = g.getNext(e.isRelevant));) m = Math.abs(a(e, g, q) - e.mouse.y), m < f && (f = m, p = g, t = q), g = q, v(e, g);if (!p || !t || !l(e.mouse.y, p.size.top, t.size.bottom)) return null;k.upper = p;k.lower = t;return k.set(P, 8);
          }function d(a, b) {
            return !(b && b.type == CKEDITOR.NODE_TEXT || ca(b) || w(b) || f(a, b) || b.type == CKEDITOR.NODE_ELEMENT && b.$ && b.is("br"));
          }return function (a) {
            var d = b(a),
                e;if (e = d) {
              e = d.upper;var f = d.lower;e = !e || !f || w(f) || w(e) || f.equals(e) || e.equals(f) || f.contains(e) || e.contains(f) ? !1 : r(a, e) && r(a, f) && c(a, e, f) ? !0 : !1;
            }return e ? d : null;
          };
        }(),
            Q = ["top", "left", "right", "bottom"];
      }(), CKEDITOR.config.magicline_keystrokePrevious = CKEDITOR.CTRL + CKEDITOR.SHIFT + 51, CKEDITOR.config.magicline_keystrokeNext = CKEDITOR.CTRL + CKEDITOR.SHIFT + 52, "use strict", function () {
        function c(c) {
          return { "aria-label": c, "class": "cke_pagebreak", contenteditable: "false", "data-cke-display-name": "pagebreak", "data-cke-pagebreak": 1, style: "page-break-after: always", title: c };
        }CKEDITOR.plugins.add("pagebreak", { requires: "fakeobjects", onLoad: function () {
            var c = ("background:url(" + CKEDITOR.getUrl(this.path + "images/pagebreak.gif") + ") no-repeat center center;clear:both;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;padding:0;height:7px;cursor:default;").replace(/;/g, " !important;");CKEDITOR.addCss("div.cke_pagebreak{" + c + "}");
          }, init: function (c) {
            c.blockless || (c.addCommand("pagebreak", CKEDITOR.plugins.pagebreakCmd), c.ui.addButton && c.ui.addButton("PageBreak", { label: c.lang.pagebreak.toolbar, command: "pagebreak", toolbar: "insert,70" }), CKEDITOR.env.webkit && c.on("contentDom", function () {
              c.document.on("click", function (g) {
                g = g.data.getTarget();g.is("div") && g.hasClass("cke_pagebreak") && c.getSelection().selectElement(g);
              });
            }));
          }, afterInit: function (h) {
            function g(a) {
              CKEDITOR.tools.extend(a.attributes, c(h.lang.pagebreak.alt), !0);a.children.length = 0;
            }var a = h.dataProcessor,
                e = a && a.dataFilter,
                a = a && a.htmlFilter,
                l = /page-break-after\s*:\s*always/i,
                k = /display\s*:\s*none/i;a && a.addRules({ attributes: { "class": function (a, b) {
                  var c = a.replace("cke_pagebreak", "");if (c != a) {
                    var e = CKEDITOR.htmlParser.fragment.fromHtml('\x3cspan style\x3d"display: none;"\x3e\x26nbsp;\x3c/span\x3e').children[0];
                    b.children.length = 0;b.add(e);e = b.attributes;delete e["aria-label"];delete e.contenteditable;delete e.title;
                  }return c;
                } } }, { applyToAll: !0, priority: 5 });e && e.addRules({ elements: { div: function (a) {
                  if (a.attributes["data-cke-pagebreak"]) g(a);else if (l.test(a.attributes.style)) {
                    var b = a.children[0];b && "span" == b.name && k.test(b.attributes.style) && g(a);
                  }
                } } });
          } });CKEDITOR.plugins.pagebreakCmd = { exec: function (c) {
            c.insertElement(CKEDITOR.plugins.pagebreak.createElement(c));
          }, context: "div", allowedContent: { div: { styles: "!page-break-after" },
            span: { match: function (c) {
                return (c = c.parent) && "div" == c.name && c.styles && c.styles["page-break-after"];
              }, styles: "display" } }, requiredContent: "div{page-break-after}" };CKEDITOR.plugins.pagebreak = { createElement: function (h) {
            return h.document.createElement("div", { attributes: c(h.lang.pagebreak.alt) });
          } };
      }(), function () {
        CKEDITOR.plugins.add("pastefromword", { requires: "pastetools", init: function (c) {
            var h = 0,
                g = CKEDITOR.plugins.getPath("pastetools"),
                a = this.path,
                e = void 0 === c.config.pasteFromWord_inlineImages ? !0 : c.config.pasteFromWord_inlineImages,
                g = [CKEDITOR.getUrl(g + "filter/common.js"), CKEDITOR.getUrl(g + "filter/image.js"), CKEDITOR.getUrl(a + "filter/default.js")];c.addCommand("pastefromword", { canUndo: !1, async: !0, exec: function (a, c) {
                h = 1;a.execCommand("paste", { type: "html", notification: c && "undefined" !== typeof c.notification ? c.notification : !0 });
              } });CKEDITOR.plugins.clipboard.addPasteButton(c, "PasteFromWord", { label: c.lang.pastefromword.toolbar, command: "pastefromword", toolbar: "clipboard,50" });c.pasteTools.register({ filters: c.config.pasteFromWordCleanupFile ? [c.config.pasteFromWordCleanupFile] : g, canHandle: function (a) {
                a = CKEDITOR.plugins.pastetools.getClipboardData(a.data, "text/html");var c = CKEDITOR.plugins.pastetools.getContentGeneratorName(a),
                    e = /(class="?Mso|style=["'][^"]*?\bmso\-|w:WordDocument|<o:\w+>|<\/font>)/,
                    c = c ? "microsoft" === c : e.test(a);return a && (h || c);
              }, handle: function (a, g) {
                var m = a.data,
                    b = CKEDITOR.plugins.pastetools.getClipboardData(m, "text/html"),
                    d = CKEDITOR.plugins.pastetools.getClipboardData(m, "text/rtf"),
                    b = { dataValue: b, dataTransfer: { "text/rtf": d } };
                if (!1 !== c.fire("pasteFromWord", b) || h) {
                  m.dontFilter = !0;if (h || !c.config.pasteFromWordPromptCleanup || confirm(c.lang.pastefromword.confirmCleanup)) b.dataValue = CKEDITOR.cleanWord(b.dataValue, c), CKEDITOR.plugins.clipboard.isCustomDataTypesSupported && e && CKEDITOR.pasteFilters.image && (b.dataValue = CKEDITOR.pasteFilters.image(b.dataValue, c, d)), c.fire("afterPasteFromWord", b), m.dataValue = b.dataValue, !0 === c.config.forcePasteAsPlainText ? m.type = "text" : CKEDITOR.plugins.clipboard.isCustomCopyCutSupported || "allow-word" !== c.config.forcePasteAsPlainText || (m.type = "html");h = 0;g();
                }
              } });
          } });
      }(), function () {
        var c = { canUndo: !1, async: !0, exec: function (c, g) {
            var a = c.lang,
                e = CKEDITOR.tools.keystrokeToString(a.common.keyboard, c.getCommandKeystroke(CKEDITOR.env.ie ? c.commands.paste : this)),
                l = g && "undefined" !== typeof g.notification ? g.notification : !g || !g.from || "keystrokeHandler" === g.from && CKEDITOR.env.ie,
                a = l && "string" === typeof l ? l : a.pastetext.pasteNotification.replace(/%1/, '\x3ckbd aria-label\x3d"' + e.aria + '"\x3e' + e.display + "\x3c/kbd\x3e");
            c.execCommand("paste", { type: "text", notification: l ? a : !1 });
          } };CKEDITOR.plugins.add("pastetext", { requires: "clipboard", init: function (h) {
            var g = CKEDITOR.env.safari ? CKEDITOR.CTRL + CKEDITOR.ALT + CKEDITOR.SHIFT + 86 : CKEDITOR.CTRL + CKEDITOR.SHIFT + 86;h.addCommand("pastetext", c);h.setKeystroke(g, "pastetext");CKEDITOR.plugins.clipboard.addPasteButton(h, "PasteText", { label: h.lang.pastetext.button, command: "pastetext", toolbar: "clipboard,40" });if (h.config.forcePasteAsPlainText) h.on("beforePaste", function (a) {
              "html" != a.data.type && (a.data.type = "text");
            });h.on("pasteState", function (a) {
              h.getCommand("pastetext").setState(a.data);
            });
          } });
      }(), function () {
        CKEDITOR.plugins.add("xml", {});CKEDITOR.xml = function (c) {
          var h = null;if ("object" == typeof c) h = c;else if (c = (c || "").replace(/&nbsp;/g, " "), "ActiveXObject" in window) {
            try {
              h = new ActiveXObject("MSXML2.DOMDocument");
            } catch (g) {
              try {
                h = new ActiveXObject("Microsoft.XmlDom");
              } catch (a) {}
            }h && (h.async = !1, h.resolveExternals = !1, h.validateOnParse = !1, h.loadXML(c));
          } else window.DOMParser && (h = new DOMParser().parseFromString(c, "text/xml"));this.baseXml = h;
        };CKEDITOR.xml.prototype = { selectSingleNode: function (c, h) {
            var g = this.baseXml;if (h || (h = g)) {
              if ("selectSingleNode" in h) return h.selectSingleNode(c);if (g.evaluate) return (g = g.evaluate(c, h, null, 9, null)) && g.singleNodeValue || null;
            }return null;
          }, selectNodes: function (c, h) {
            var g = this.baseXml,
                a = [];if (h || (h = g)) {
              if ("selectNodes" in h) return h.selectNodes(c);if (g.evaluate && (g = g.evaluate(c, h, null, 5, null))) for (var e; e = g.iterateNext();) a.push(e);
            }return a;
          }, getInnerXml: function (c, h) {
            var g = this.selectSingleNode(c, h),
                a = [];if (g) for (g = g.firstChild; g;) g.xml ? a.push(g.xml) : window.XMLSerializer && a.push(new XMLSerializer().serializeToString(g)), g = g.nextSibling;return a.length ? a.join("") : null;
          } };
      }(), function () {
        CKEDITOR.plugins.add("ajax", { requires: "xml" });CKEDITOR.ajax = function () {
          function c() {
            if (!CKEDITOR.env.ie || "file:" != location.protocol) try {
              return new XMLHttpRequest();
            } catch (a) {}try {
              return new ActiveXObject("Msxml2.XMLHTTP");
            } catch (c) {}try {
              return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (g) {}return null;
          }function h(a, c) {
            if (4 != a.readyState || !(200 <= a.status && 300 > a.status || 304 == a.status || 0 === a.status || 1223 == a.status)) return null;switch (c) {case "text":
                return a.responseText;case "xml":
                var g = a.responseXML;return new CKEDITOR.xml(g && g.firstChild ? g : a.responseText);case "arraybuffer":
                return a.response;default:
                return null;}
          }function g(a, g, k) {
            var m = !!g,
                b = c();if (!b) return null;m && "text" !== k && "xml" !== k && (b.responseType = k);b.open("GET", a, m);m && (b.onreadystatechange = function () {
              4 == b.readyState && (g(h(b, k)), b = null);
            });b.send(null);
            return m ? "" : h(b, k);
          }function a(a, g, k, m, b) {
            var d = c();if (!d) return null;d.open("POST", a, !0);d.onreadystatechange = function () {
              4 == d.readyState && (m && m(h(d, b)), d = null);
            };d.setRequestHeader("Content-type", k || "application/x-www-form-urlencoded; charset\x3dUTF-8");d.send(g);
          }return { load: function (a, c, h) {
              return g(a, c, h || "text");
            }, post: function (c, g, h, m) {
              return a(c, g, h, m, "text");
            }, loadXml: function (a, c) {
              return g(a, c, "xml");
            }, loadText: function (a, c) {
              return g(a, c, "text");
            }, loadBinary: function (a, c) {
              return g(a, c, "arraybuffer");
            } };
        }();
      }(), function () {
        function c(a, c) {
          return CKEDITOR.tools.array.filter(a, function (a) {
            return a.canHandle(c);
          }).sort(function (a, c) {
            return a.priority === c.priority ? 0 : a.priority - c.priority;
          });
        }function h(a, c) {
          var b = a.shift();b && b.handle(c, function () {
            h(a, c);
          });
        }function g(a) {
          var c = CKEDITOR.tools.array.reduce(a, function (a, c) {
            return CKEDITOR.tools.array.isArray(c.filters) ? a.concat(c.filters) : a;
          }, []);return CKEDITOR.tools.array.filter(c, function (a, d) {
            return CKEDITOR.tools.array.indexOf(c, a) === d;
          });
        }function a(a, c) {
          var b = 0,
              d,
              f;if (!CKEDITOR.tools.array.isArray(a) || 0 === a.length) return !0;d = CKEDITOR.tools.array.filter(a, function (a) {
            return -1 === CKEDITOR.tools.array.indexOf(e, a);
          });if (0 < d.length) for (f = 0; f < d.length; f++) (function (a) {
            CKEDITOR.scriptLoader.queue(a, function (f) {
              f && e.push(a);++b === d.length && c();
            });
          })(d[f]);return 0 === d.length;
        }var e = [],
            l = CKEDITOR.tools.createClass({ $: function () {
            this.handlers = [];
          }, proto: { register: function (a) {
              "number" !== typeof a.priority && (a.priority = 10);this.handlers.push(a);
            }, addPasteListener: function (e) {
              e.on("paste", function (l) {
                var b = c(this.handlers, l),
                    d;if (0 !== b.length) {
                  d = g(b);d = a(d, function () {
                    return e.fire("paste", l.data);
                  });if (!d) return l.cancel();h(b, l);
                }
              }, this, null, 3);
            } } });CKEDITOR.plugins.add("pastetools", { requires: ["clipboard", "ajax"], beforeInit: function (a) {
            a.pasteTools = new l();a.pasteTools.addPasteListener(a);
          } });CKEDITOR.plugins.pastetools = { filters: {}, loadFilters: a, createFilter: function (a) {
            var c = CKEDITOR.tools.array.isArray(a.rules) ? a.rules : [a.rules],
                b = a.additionalTransforms;return function (a, e) {
              var g = new CKEDITOR.htmlParser.basicWriter(),
                  h = new CKEDITOR.htmlParser.filter(),
                  k;b && (a = b(a, e));CKEDITOR.tools.array.forEach(c, function (b) {
                h.addRules(b(a, e, h));
              });k = CKEDITOR.htmlParser.fragment.fromHtml(a);h.applyTo(k);k.writeHtml(g);return g.getHtml();
            };
          }, getClipboardData: function (a, c) {
            var b;return CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || "text/html" === c ? (b = a.dataTransfer.getData(c, !0)) || "text/html" !== c ? b : a.dataValue : null;
          }, getConfigValue: function (a, c) {
            if (a && a.config) {
              var b = CKEDITOR.tools,
                  d = a.config,
                  e = b.object.keys(d),
                  g = ["pasteTools_" + c, "pasteFromWord_" + c, "pasteFromWord" + b.capitalize(c, !0)],
                  g = b.array.find(g, function (a) {
                return -1 !== b.array.indexOf(e, a);
              });return d[g];
            }
          }, getContentGeneratorName: function (a) {
            if ((a = /<meta\s+name=["']?generator["']?\s+content=["']?(\w+)/gi.exec(a)) && a.length) return a = a[1].toLowerCase(), 0 === a.indexOf("microsoft") ? "microsoft" : 0 === a.indexOf("libreoffice") ? "libreoffice" : "unknown";
          } };CKEDITOR.pasteFilters = CKEDITOR.plugins.pastetools.filters;
      }(), CKEDITOR.plugins.add("removeformat", { init: function (c) {
          c.addCommand("removeFormat", CKEDITOR.plugins.removeformat.commands.removeformat);c.ui.addButton && c.ui.addButton("RemoveFormat", { label: c.lang.removeformat.toolbar, command: "removeFormat", toolbar: "cleanup,10" });
        } }), CKEDITOR.plugins.removeformat = { commands: { removeformat: { exec: function (c) {
              for (var h = c._.removeFormatRegex || (c._.removeFormatRegex = new RegExp("^(?:" + c.config.removeFormatTags.replace(/,/g, "|") + ")$", "i")), g = c._.removeAttributes || (c._.removeAttributes = c.config.removeFormatAttributes.split(",")), a = CKEDITOR.plugins.removeformat.filter, e = c.getSelection().getRanges(), l = e.createIterator(), k = function (a) {
                return a.type == CKEDITOR.NODE_ELEMENT;
              }, m; m = l.getNextRange();) {
                m.enlarge(CKEDITOR.ENLARGE_INLINE);var b = m.createBookmark(),
                    d = b.startNode,
                    f = b.endNode,
                    n = function (b) {
                  for (var d = c.elementPath(b), e = d.elements, f = 1, g; (g = e[f]) && !g.equals(d.block) && !g.equals(d.blockLimit); f++) h.test(g.getName()) && a(c, g) && b.breakParent(g);
                };n(d);if (f) for (n(f), d = d.getNextSourceNode(!0, CKEDITOR.NODE_ELEMENT); d && !d.equals(f);) if (d.isReadOnly()) {
                  if (d.getPosition(f) & CKEDITOR.POSITION_CONTAINS) break;d = d.getNext(k);
                } else n = d.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT), "img" == d.getName() && d.data("cke-realelement") || !a(c, d) || (h.test(d.getName()) ? d.remove(1) : (d.removeAttributes(g), c.fire("removeFormatCleanup", d))), d = n;m.moveToBookmark(b);
              }c.forceNextSelectionCheck();c.getSelection().selectRanges(e);
            } } }, filter: function (c, h) {
          for (var g = c._.removeFormatFilters || [], a = 0; a < g.length; a++) if (!1 === g[a](h)) return !1;return !0;
        } }, CKEDITOR.editor.prototype.addRemoveFormatFilter = function (c) {
        this._.removeFormatFilters || (this._.removeFormatFilters = []);this._.removeFormatFilters.push(c);
      }, CKEDITOR.config.removeFormatTags = "b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var", CKEDITOR.config.removeFormatAttributes = "class,style,lang,width,height,align,hspace,valign", CKEDITOR.plugins.add("resize", { init: function (c) {
          function h(e) {
            var g = b.width,
                h = b.height,
                k = g + (e.data.$.screenX - m.x) * ("rtl" == l ? -1 : 1);e = h + (e.data.$.screenY - m.y);d && (g = Math.max(a.resize_minWidth, Math.min(k, a.resize_maxWidth)));
            f && (h = Math.max(a.resize_minHeight, Math.min(e, a.resize_maxHeight)));c.resize(d ? g : null, h);
          }function g() {
            CKEDITOR.document.removeListener("mousemove", h);CKEDITOR.document.removeListener("mouseup", g);c.document && (c.document.removeListener("mousemove", h), c.document.removeListener("mouseup", g));
          }var a = c.config,
              e = c.ui.spaceId("resizer"),
              l = c.element ? c.element.getDirection(1) : "ltr";!a.resize_dir && (a.resize_dir = "vertical");void 0 === a.resize_maxWidth && (a.resize_maxWidth = 3E3);void 0 === a.resize_maxHeight && (a.resize_maxHeight = 3E3);void 0 === a.resize_minWidth && (a.resize_minWidth = 750);void 0 === a.resize_minHeight && (a.resize_minHeight = 250);if (!1 !== a.resize_enabled) {
            var k = null,
                m,
                b,
                d = ("both" == a.resize_dir || "horizontal" == a.resize_dir) && a.resize_minWidth != a.resize_maxWidth,
                f = ("both" == a.resize_dir || "vertical" == a.resize_dir) && a.resize_minHeight != a.resize_maxHeight,
                n = CKEDITOR.tools.addFunction(function (d) {
              k || (k = c.getResizable());b = { width: k.$.offsetWidth || 0, height: k.$.offsetHeight || 0 };m = { x: d.screenX, y: d.screenY };a.resize_minWidth > b.width && (a.resize_minWidth = b.width);a.resize_minHeight > b.height && (a.resize_minHeight = b.height);CKEDITOR.document.on("mousemove", h);CKEDITOR.document.on("mouseup", g);c.document && (c.document.on("mousemove", h), c.document.on("mouseup", g));d.preventDefault && d.preventDefault();
            });c.on("destroy", function () {
              CKEDITOR.tools.removeFunction(n);
            });c.on("uiSpace", function (a) {
              if ("bottom" == a.data.space) {
                var b = "";d && !f && (b = " cke_resizer_horizontal");!d && f && (b = " cke_resizer_vertical");var g = '\x3cspan id\x3d"' + e + '" class\x3d"cke_resizer' + b + " cke_resizer_" + l + '" title\x3d"' + CKEDITOR.tools.htmlEncode(c.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + n + ', event)"\x3e' + ("ltr" == l ? "◢" : "◣") + "\x3c/span\x3e";"ltr" == l && "ltr" == b ? a.data.html += g : a.data.html = g + a.data.html;
              }
            }, c, null, 100);c.on("maximize", function (a) {
              c.ui.space("resizer")[a.data == CKEDITOR.TRISTATE_ON ? "hide" : "show"]();
            });
          }
        } }), function () {
        function c(a) {
          return { editorFocus: !1, canUndo: !0, modes: { wysiwyg: 1 }, exec: function (c) {
              if (c.editable().hasFocus) {
                var g = c.getSelection(),
                    h;if (h = new CKEDITOR.dom.elementPath(g.getStartElement(), g.root).contains({ td: 1, th: 1 }, 1)) {
                  var g = c.createRange(),
                      b = CKEDITOR.tools.tryThese(function () {
                    var b = h.getParent().$.cells[h.$.cellIndex + (a ? -1 : 1)];b.parentNode.parentNode;return b;
                  }, function () {
                    var b = h.getParent(),
                        b = b.getAscendant("table").$.rows[b.$.rowIndex + (a ? -1 : 1)];return b.cells[a ? b.cells.length - 1 : 0];
                  });if (b || a) {
                    if (b) b = new CKEDITOR.dom.element(b), g.moveToElementEditStart(b), g.checkStartOfBlock() && g.checkEndOfBlock() || g.selectNodeContents(b);else return !0;
                  } else {
                    for (var d = h.getAscendant("table").$, b = h.getParent().$.cells, d = new CKEDITOR.dom.element(d.insertRow(-1), c.document), f = 0, n = b.length; f < n; f++) d.append(new CKEDITOR.dom.element(b[f], c.document).clone(!1, !1)).appendBogus();g.moveToElementEditStart(d);
                  }g.select(!0);return !0;
                }
              }return !1;
            } };
        }var h = { editorFocus: !1, modes: { wysiwyg: 1, source: 1 } },
            g = { exec: function (a) {
            a.container.focusNext(!0, a.tabIndex);
          } },
            a = { exec: function (a) {
            a.container.focusPrevious(!0, a.tabIndex);
          } };CKEDITOR.plugins.add("tab", { init: function (e) {
            for (var l = !1 !== e.config.enableTabKeyTools, k = e.config.tabSpaces || 0, m = ""; k--;) m += " ";if (m) e.on("key", function (a) {
              9 == a.data.keyCode && (e.insertText(m), a.cancel());
            });if (l) e.on("key", function (a) {
              (9 == a.data.keyCode && e.execCommand("selectNextCell") || a.data.keyCode == CKEDITOR.SHIFT + 9 && e.execCommand("selectPreviousCell")) && a.cancel();
            });e.addCommand("blur", CKEDITOR.tools.extend(g, h));e.addCommand("blurBack", CKEDITOR.tools.extend(a, h));e.addCommand("selectNextCell", c());e.addCommand("selectPreviousCell", c(!0));
          } });
      }(), CKEDITOR.dom.element.prototype.focusNext = function (c, h) {
        var g = void 0 === h ? this.getTabIndex() : h,
            a,
            e,
            l,
            k,
            m,
            b;if (0 >= g) for (m = this.getNextSourceNode(c, CKEDITOR.NODE_ELEMENT); m;) {
          if (m.isVisible() && 0 === m.getTabIndex()) {
            l = m;break;
          }m = m.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT);
        } else for (m = this.getDocument().getBody().getFirst(); m = m.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT);) {
          if (!a) if (!e && m.equals(this)) {
            if (e = !0, c) {
              if (!(m = m.getNextSourceNode(!0, CKEDITOR.NODE_ELEMENT))) break;a = 1;
            }
          } else e && !this.contains(m) && (a = 1);if (m.isVisible() && !(0 > (b = m.getTabIndex()))) {
            if (a && b == g) {
              l = m;break;
            }b > g && (!l || !k || b < k) ? (l = m, k = b) : l || 0 !== b || (l = m, k = b);
          }
        }l && l.focus();
      }, CKEDITOR.dom.element.prototype.focusPrevious = function (c, h) {
        for (var g = void 0 === h ? this.getTabIndex() : h, a, e, l, k = 0, m, b = this.getDocument().getBody().getLast(); b = b.getPreviousSourceNode(!1, CKEDITOR.NODE_ELEMENT);) {
          if (!a) if (!e && b.equals(this)) {
            if (e = !0, c) {
              if (!(b = b.getPreviousSourceNode(!0, CKEDITOR.NODE_ELEMENT))) break;a = 1;
            }
          } else e && !this.contains(b) && (a = 1);if (b.isVisible() && !(0 > (m = b.getTabIndex()))) if (0 >= g) {
            if (a && 0 === m) {
              l = b;break;
            }m > k && (l = b, k = m);
          } else {
            if (a && m == g) {
              l = b;break;
            }m < g && (!l || m > k) && (l = b, k = m);
          }
        }l && l.focus();
      }, CKEDITOR.plugins.add("table", { requires: "dialog", init: function (c) {
          function h(a) {
            return CKEDITOR.tools.extend(a || {}, { contextSensitive: 1, refresh: function (a, c) {
                this.setState(c.contains("table", 1) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
              } });
          }if (!c.blockless) {
            var g = c.lang.table;c.addCommand("table", new CKEDITOR.dialogCommand("table", { context: "table", allowedContent: "table{width,height,border-collapse}[align,border,cellpadding,cellspacing];caption tbody thead tfoot;th td tr[scope];td{border*,background-color,vertical-align,width,height}[colspan,rowspan];" + (c.plugins.dialogadvtab ? "table" + c.plugins.dialogadvtab.allowedContent() : ""), requiredContent: "table", contentTransformations: [["table{width}: sizeToStyle", "table[width]: sizeToAttribute"], ["td: splitBorderShorthand"], [{ element: "table", right: function (a) {
                  if (a.styles) {
                    var c;if (a.styles.border) c = CKEDITOR.tools.style.parse.border(a.styles.border);else if (CKEDITOR.env.ie && 8 === CKEDITOR.env.version) {
                      var g = a.styles;g["border-left"] && g["border-left"] === g["border-right"] && g["border-right"] === g["border-top"] && g["border-top"] === g["border-bottom"] && (c = CKEDITOR.tools.style.parse.border(g["border-top"]));
                    }c && c.style && "solid" === c.style && c.width && 0 !== parseFloat(c.width) && (a.attributes.border = 1);"collapse" == a.styles["border-collapse"] && (a.attributes.cellspacing = 0);
                  }
                } }]] }));c.addCommand("tableProperties", new CKEDITOR.dialogCommand("tableProperties", h()));c.addCommand("tableDelete", h({ exec: function (a) {
                var c = a.elementPath().contains("table", 1);if (c) {
                  var g = c.getParent(),
                      h = a.editable();1 != g.getChildCount() || g.is("td", "th") || g.equals(h) || (c = g);a = a.createRange();a.moveToPosition(c, CKEDITOR.POSITION_BEFORE_START);c.remove();a.select();
                }
              } }));c.ui.addButton && c.ui.addButton("Table", { label: g.toolbar, command: "table", toolbar: "insert,30" });CKEDITOR.dialog.add("table", this.path + "dialogs/table.js");CKEDITOR.dialog.add("tableProperties", this.path + "dialogs/table.js");c.addMenuItems && c.addMenuItems({ table: { label: g.menu, command: "tableProperties", group: "table", order: 5 }, tabledelete: { label: g.deleteTable, command: "tableDelete", group: "table",
                order: 1 } });c.on("doubleclick", function (a) {
              a.data.element.is("table") && (a.data.dialog = "tableProperties");
            });c.contextMenu && c.contextMenu.addListener(function () {
              return { tabledelete: CKEDITOR.TRISTATE_OFF, table: CKEDITOR.TRISTATE_OFF };
            });
          }
        } }), function () {
        function c(a, b) {
          function c(a) {
            return b ? b.contains(a) && a.getAscendant("table", !0).equals(b) : !0;
          }function d(a) {
            var b = /^(?:td|th)$/;0 < e.length || a.type != CKEDITOR.NODE_ELEMENT || !b.test(a.getName()) || a.getCustomData("selected_cell") || (CKEDITOR.dom.element.setMarker(f, a, "selected_cell", !0), e.push(a));
          }var e = [],
              f = {};if (!a) return e;for (var g = a.getRanges(), h = 0; h < g.length; h++) {
            var k = g[h];if (k.collapsed) (k = k.getCommonAncestor().getAscendant({ td: 1, th: 1 }, !0)) && c(k) && e.push(k);else {
              var k = new CKEDITOR.dom.walker(k),
                  l;for (k.guard = d; l = k.next();) l.type == CKEDITOR.NODE_ELEMENT && l.is(CKEDITOR.dtd.table) || (l = l.getAscendant({ td: 1, th: 1 }, !0)) && !l.getCustomData("selected_cell") && c(l) && (CKEDITOR.dom.element.setMarker(f, l, "selected_cell", !0), e.push(l));
            }
          }CKEDITOR.dom.element.clearAllMarkers(f);
          return e;
        }function h(a, b) {
          for (var d = r(a) ? a : c(a), e = d[0], f = e.getAscendant("table"), e = e.getDocument(), g = d[0].getParent(), h = g.$.rowIndex, d = d[d.length - 1], k = d.getParent().$.rowIndex + d.$.rowSpan - 1, d = new CKEDITOR.dom.element(f.$.rows[k]), h = b ? h : k, g = b ? g : d, d = CKEDITOR.tools.buildTableMap(f), f = d[h], h = b ? d[h - 1] : d[h + 1], d = d[0].length, e = e.createElement("tr"), k = 0; f[k] && k < d; k++) {
            var l;1 < f[k].rowSpan && h && f[k] == h[k] ? (l = f[k], l.rowSpan += 1) : (l = new CKEDITOR.dom.element(f[k]).clone(), l.removeAttribute("rowSpan"), l.appendBogus(), e.append(l), l = l.$);k += l.colSpan - 1;
          }b ? e.insertBefore(g) : e.insertAfter(g);return e;
        }function g(a) {
          if (a instanceof CKEDITOR.dom.selection) {
            var b = a.getRanges(),
                d = c(a),
                e = d[0].getAscendant("table"),
                f = CKEDITOR.tools.buildTableMap(e),
                h = d[0].getParent().$.rowIndex,
                d = d[d.length - 1],
                k = d.getParent().$.rowIndex + d.$.rowSpan - 1,
                d = [];a.reset();for (a = h; a <= k; a++) {
              for (var l = f[a], m = new CKEDITOR.dom.element(e.$.rows[a]), n = 0; n < l.length; n++) {
                var r = new CKEDITOR.dom.element(l[n]),
                    w = r.getParent().$.rowIndex;1 == r.$.rowSpan ? r.remove() : (--r.$.rowSpan, w == a && (w = f[a + 1], w[n - 1] ? r.insertAfter(new CKEDITOR.dom.element(w[n - 1])) : new CKEDITOR.dom.element(e.$.rows[a + 1]).append(r, 1)));n += r.$.colSpan - 1;
              }d.push(m);
            }f = e.$.rows;b[0].moveToPosition(e, CKEDITOR.POSITION_BEFORE_START);h = new CKEDITOR.dom.element(f[k + 1] || (0 < h ? f[h - 1] : null) || e.$.parentNode);for (a = d.length; 0 <= a; a--) g(d[a]);return e.$.parentNode ? h : (b[0].select(), null);
          }a instanceof CKEDITOR.dom.element && (e = a.getAscendant("table"), 1 == e.$.rows.length ? e.remove() : a.remove());return null;
        }function a(a) {
          for (var b = a.getParent().$.cells, c = 0, d = 0; d < b.length; d++) {
            var e = b[d],
                c = c + e.colSpan;if (e == a.$) break;
          }return c - 1;
        }function e(b, c) {
          for (var d = c ? Infinity : 0, e = 0; e < b.length; e++) {
            var f = a(b[e]);if (c ? f < d : f > d) d = f;
          }return d;
        }function l(a, b) {
          for (var d = r(a) ? a : c(a), f = d[0].getAscendant("table"), g = e(d, 1), d = e(d), h = b ? g : d, k = CKEDITOR.tools.buildTableMap(f), f = [], g = [], d = [], l = k.length, m = 0; m < l; m++) {
            var n = b ? k[m][h - 1] : k[m][h + 1];f.push(k[m][h]);g.push(n);
          }for (m = 0; m < l; m++) f[m] && (1 < f[m].colSpan && g[m] == f[m] ? (k = f[m], k.colSpan += 1) : (h = new CKEDITOR.dom.element(f[m]), k = h.clone(), k.removeAttribute("colSpan"), k.appendBogus(), k[b ? "insertBefore" : "insertAfter"].call(k, h), d.push(k), k = k.$), m += k.rowSpan - 1);return d;
        }function k(a) {
          function b(a) {
            var c = a.getRanges(),
                d,
                e;if (1 !== c.length) return a;c = c[0];if (c.collapsed || 0 !== c.endOffset) return a;d = c.endContainer;e = d.getName().toLowerCase();if ("td" !== e && "th" !== e) return a;for ((e = d.getPrevious()) || (e = d.getParent().getPrevious().getLast()); e.type !== CKEDITOR.NODE_TEXT && "br" !== e.getName().toLowerCase();) if (e = e.getLast(), !e) return a;
            c.setEndAt(e, CKEDITOR.POSITION_BEFORE_END);return c.select();
          }CKEDITOR.env.webkit && !a.isFake && (a = b(a));var d = a.getRanges(),
              e = c(a),
              f = e[0],
              g = e[e.length - 1],
              e = f.getAscendant("table"),
              h = CKEDITOR.tools.buildTableMap(e),
              k,
              l,
              m = [];a.reset();var n = 0;for (a = h.length; n < a; n++) for (var r = 0, w = h[n].length; r < w; r++) void 0 === k && h[n][r] == f.$ && (k = r), h[n][r] == g.$ && (l = r);for (n = k; n <= l; n++) for (r = 0; r < h.length; r++) g = h[r], f = new CKEDITOR.dom.element(e.$.rows[r]), g = new CKEDITOR.dom.element(g[n]), g.$ && (1 == g.$.colSpan ? g.remove() : --g.$.colSpan, r += g.$.rowSpan - 1, f.$.cells.length || m.push(f));k = h[0].length - 1 > l ? new CKEDITOR.dom.element(h[0][l + 1]) : k && -1 !== h[0][k - 1].cellIndex ? new CKEDITOR.dom.element(h[0][k - 1]) : new CKEDITOR.dom.element(e.$.parentNode);m.length == a && (d[0].moveToPosition(e, CKEDITOR.POSITION_AFTER_END), d[0].select(), e.remove());return k;
        }function m(a, b) {
          var c = a.getStartElement().getAscendant({ td: 1, th: 1 }, !0);if (c) {
            var d = c.clone();d.appendBogus();b ? d.insertBefore(c) : d.insertAfter(c);
          }
        }function b(a) {
          if (a instanceof CKEDITOR.dom.selection) {
            var e = a.getRanges(),
                f = c(a),
                g = f[0] && f[0].getAscendant("table"),
                h;a: {
              var k = 0;h = f.length - 1;for (var l = {}, m, n; m = f[k++];) CKEDITOR.dom.element.setMarker(l, m, "delete_cell", !0);for (k = 0; m = f[k++];) if ((n = m.getPrevious()) && !n.getCustomData("delete_cell") || (n = m.getNext()) && !n.getCustomData("delete_cell")) {
                CKEDITOR.dom.element.clearAllMarkers(l);h = n;break a;
              }CKEDITOR.dom.element.clearAllMarkers(l);k = f[0].getParent();(k = k.getPrevious()) ? h = k.getLast() : (k = f[h].getParent(), h = (k = k.getNext()) ? k.getChild(0) : null);
            }a.reset();for (a = f.length - 1; 0 <= a; a--) b(f[a]);h ? d(h, !0) : g && (e[0].moveToPosition(g, CKEDITOR.POSITION_BEFORE_START), e[0].select(), g.remove());
          } else a instanceof CKEDITOR.dom.element && (e = a.getParent(), 1 == e.getChildCount() ? e.remove() : a.remove());
        }function d(a, b) {
          var c = a.getDocument(),
              d = CKEDITOR.document;CKEDITOR.env.ie && 10 == CKEDITOR.env.version && (d.focus(), c.focus());c = new CKEDITOR.dom.range(c);c["moveToElementEdit" + (b ? "End" : "Start")](a) || (c.selectNodeContents(a), c.collapse(b ? !1 : !0));c.select(!0);
        }function f(a, b, c) {
          a = a[b];
          if ("undefined" == typeof c) return a;for (b = 0; a && b < a.length; b++) {
            if (c.is && a[b] == c.$) return b;if (b == c) return new CKEDITOR.dom.element(a[b]);
          }return c.is ? -1 : null;
        }function n(a, b, d) {
          var e = c(a),
              g;if ((b ? 1 != e.length : 2 > e.length) || (g = a.getCommonAncestor()) && g.type == CKEDITOR.NODE_ELEMENT && g.is("table")) return !1;a = e[0];g = a.getAscendant("table");var h = CKEDITOR.tools.buildTableMap(g),
              k = h.length,
              l = h[0].length,
              m = a.getParent().$.rowIndex,
              n = f(h, m, a),
              r;if (b) {
            var w;try {
              var z = parseInt(a.getAttribute("rowspan"), 10) || 1;r = parseInt(a.getAttribute("colspan"), 10) || 1;w = h["up" == b ? m - z : "down" == b ? m + z : m]["left" == b ? n - r : "right" == b ? n + r : n];
            } catch (K) {
              return !1;
            }if (!w || a.$ == w) return !1;e["up" == b || "left" == b ? "unshift" : "push"](new CKEDITOR.dom.element(w));
          }b = a.getDocument();var H = m,
              z = w = 0,
              M = !d && new CKEDITOR.dom.documentFragment(b),
              I = 0;for (b = 0; b < e.length; b++) {
            r = e[b];var D = r.getParent(),
                P = r.getFirst(),
                L = r.$.colSpan,
                O = r.$.rowSpan,
                D = D.$.rowIndex,
                N = f(h, D, r),
                I = I + L * O,
                z = Math.max(z, N - n + L);w = Math.max(w, D - m + O);d || (L = r, (O = L.getBogus()) && O.remove(), L.trim(), r.getChildren().count() && (D == H || !P || P.isBlockBoundary && P.isBlockBoundary({ br: 1 }) || (H = M.getLast(CKEDITOR.dom.walker.whitespaces(!0)), !H || H.is && H.is("br") || M.append("br")), r.moveChildren(M)), b ? r.remove() : r.setHtml(""));H = D;
          }if (d) return w * z == I;M.moveChildren(a);a.appendBogus();z >= l ? a.removeAttribute("rowSpan") : a.$.rowSpan = w;w >= k ? a.removeAttribute("colSpan") : a.$.colSpan = z;d = new CKEDITOR.dom.nodeList(g.$.rows);e = d.count();for (b = e - 1; 0 <= b; b--) g = d.getItem(b), g.$.cells.length || (g.remove(), e++);return a;
        }function w(a, b) {
          var d = c(a);if (1 < d.length) return !1;if (b) return !0;var d = d[0],
              e = d.getParent(),
              g = e.getAscendant("table"),
              h = CKEDITOR.tools.buildTableMap(g),
              k = e.$.rowIndex,
              l = f(h, k, d),
              m = d.$.rowSpan,
              n;if (1 < m) {
            n = Math.ceil(m / 2);for (var m = Math.floor(m / 2), e = k + n, g = new CKEDITOR.dom.element(g.$.rows[e]), h = f(h, e), r, e = d.clone(), k = 0; k < h.length; k++) if (r = h[k], r.parentNode == g.$ && k > l) {
              e.insertBefore(new CKEDITOR.dom.element(r));break;
            } else r = null;r || g.append(e);
          } else for (m = n = 1, g = e.clone(), g.insertAfter(e), g.append(e = d.clone()), r = f(h, k), l = 0; l < r.length; l++) r[l].rowSpan++;
          e.appendBogus();d.$.rowSpan = n;e.$.rowSpan = m;1 == n && d.removeAttribute("rowSpan");1 == m && e.removeAttribute("rowSpan");return e;
        }function z(a, b) {
          var d = c(a);if (1 < d.length) return !1;if (b) return !0;var d = d[0],
              e = d.getParent(),
              g = e.getAscendant("table"),
              g = CKEDITOR.tools.buildTableMap(g),
              h = f(g, e.$.rowIndex, d),
              k = d.$.colSpan;if (1 < k) e = Math.ceil(k / 2), k = Math.floor(k / 2);else {
            for (var k = e = 1, l = [], m = 0; m < g.length; m++) {
              var n = g[m];l.push(n[h]);1 < n[h].rowSpan && (m += n[h].rowSpan - 1);
            }for (g = 0; g < l.length; g++) l[g].colSpan++;
          }g = d.clone();
          g.insertAfter(d);g.appendBogus();d.$.colSpan = e;g.$.colSpan = k;1 == e && d.removeAttribute("colSpan");1 == k && g.removeAttribute("colSpan");return g;
        }var r = CKEDITOR.tools.isArray;CKEDITOR.plugins.tabletools = { requires: "table,dialog,contextmenu", init: function (a) {
            function e(a) {
              return CKEDITOR.tools.extend(a || {}, { contextSensitive: 1, refresh: function (a, b) {
                  this.setState(b.contains({ td: 1, th: 1 }, 1) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
                } });
            }function f(b, c) {
              var d = a.addCommand(b, c);a.addFeature(d);
            }var p = a.lang.table,
                r = CKEDITOR.tools.style.parse,
                v = "td{width} td{height} td{border-color} td{background-color} td{white-space} td{vertical-align} td{text-align} td[colspan] td[rowspan] th".split(" ");f("cellProperties", new CKEDITOR.dialogCommand("cellProperties", e({ allowedContent: "td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]", requiredContent: v, contentTransformations: [[{ element: "td", left: function (a) {
                  return a.styles.background && r.background(a.styles.background).color;
                },
                right: function (a) {
                  a.styles["background-color"] = r.background(a.styles.background).color;
                } }, { element: "td", check: "td{vertical-align}", left: function (a) {
                  return a.attributes && a.attributes.valign;
                }, right: function (a) {
                  a.styles["vertical-align"] = a.attributes.valign;delete a.attributes.valign;
                } }], [{ element: "tr", check: "td{height}", left: function (a) {
                  return a.styles && a.styles.height;
                }, right: function (a) {
                  CKEDITOR.tools.array.forEach(a.children, function (b) {
                    b.name in { td: 1, th: 1 } && (b.attributes["cke-row-height"] = a.styles.height);
                  });
                  delete a.styles.height;
                } }], [{ element: "td", check: "td{height}", left: function (a) {
                  return (a = a.attributes) && a["cke-row-height"];
                }, right: function (a) {
                  a.styles.height = a.attributes["cke-row-height"];delete a.attributes["cke-row-height"];
                } }]] })));CKEDITOR.dialog.add("cellProperties", this.path + "dialogs/tableCell.js");f("rowDelete", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();(a = g(a)) && d(a);
              } }));f("rowInsertBefore", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);h(a, !0);
              } }));
            f("rowInsertAfter", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);h(a);
              } }));f("columnDelete", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();(a = k(a)) && d(a, !0);
              } }));f("columnInsertBefore", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);l(a, !0);
              } }));f("columnInsertAfter", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);l(a);
              } }));f("cellDelete", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();b(a);
              } }));f("cellMerge", e({ allowedContent: "td[colspan,rowspan]", requiredContent: "td[colspan,rowspan]", exec: function (a, b) {
                b.cell = n(a.getSelection());d(b.cell, !0);
              } }));f("cellMergeRight", e({ allowedContent: "td[colspan]", requiredContent: "td[colspan]", exec: function (a, b) {
                b.cell = n(a.getSelection(), "right");d(b.cell, !0);
              } }));f("cellMergeDown", e({ allowedContent: "td[rowspan]", requiredContent: "td[rowspan]", exec: function (a, b) {
                b.cell = n(a.getSelection(), "down");d(b.cell, !0);
              } }));f("cellVerticalSplit", e({ allowedContent: "td[rowspan]", requiredContent: "td[rowspan]",
              exec: function (a) {
                d(z(a.getSelection()));
              } }));f("cellHorizontalSplit", e({ allowedContent: "td[colspan]", requiredContent: "td[colspan]", exec: function (a) {
                d(w(a.getSelection()));
              } }));f("cellInsertBefore", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();m(a, !0);
              } }));f("cellInsertAfter", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();m(a);
              } }));a.addMenuItems && a.addMenuItems({ tablecell: { label: p.cell.menu, group: "tablecell", order: 1, getItems: function () {
                  var b = a.getSelection(),
                      d = c(b),
                      b = { tablecell_insertBefore: CKEDITOR.TRISTATE_OFF, tablecell_insertAfter: CKEDITOR.TRISTATE_OFF, tablecell_delete: CKEDITOR.TRISTATE_OFF, tablecell_merge: n(b, null, !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_merge_right: n(b, "right", !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_merge_down: n(b, "down", !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_split_vertical: z(b, !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_split_horizontal: w(b, !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED };a.filter.check(v) && (b.tablecell_properties = 0 < d.length ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);return b;
                } }, tablecell_insertBefore: { label: p.cell.insertBefore, group: "tablecell", command: "cellInsertBefore", order: 5 }, tablecell_insertAfter: { label: p.cell.insertAfter, group: "tablecell", command: "cellInsertAfter", order: 10 }, tablecell_delete: { label: p.cell.deleteCell, group: "tablecell", command: "cellDelete", order: 15 }, tablecell_merge: { label: p.cell.merge, group: "tablecell", command: "cellMerge",
                order: 16 }, tablecell_merge_right: { label: p.cell.mergeRight, group: "tablecell", command: "cellMergeRight", order: 17 }, tablecell_merge_down: { label: p.cell.mergeDown, group: "tablecell", command: "cellMergeDown", order: 18 }, tablecell_split_horizontal: { label: p.cell.splitHorizontal, group: "tablecell", command: "cellHorizontalSplit", order: 19 }, tablecell_split_vertical: { label: p.cell.splitVertical, group: "tablecell", command: "cellVerticalSplit", order: 20 }, tablecell_properties: { label: p.cell.title, group: "tablecellproperties", command: "cellProperties",
                order: 21 }, tablerow: { label: p.row.menu, group: "tablerow", order: 1, getItems: function () {
                  return { tablerow_insertBefore: CKEDITOR.TRISTATE_OFF, tablerow_insertAfter: CKEDITOR.TRISTATE_OFF, tablerow_delete: CKEDITOR.TRISTATE_OFF };
                } }, tablerow_insertBefore: { label: p.row.insertBefore, group: "tablerow", command: "rowInsertBefore", order: 5 }, tablerow_insertAfter: { label: p.row.insertAfter, group: "tablerow", command: "rowInsertAfter", order: 10 }, tablerow_delete: { label: p.row.deleteRow, group: "tablerow", command: "rowDelete", order: 15 },
              tablecolumn: { label: p.column.menu, group: "tablecolumn", order: 1, getItems: function () {
                  return { tablecolumn_insertBefore: CKEDITOR.TRISTATE_OFF, tablecolumn_insertAfter: CKEDITOR.TRISTATE_OFF, tablecolumn_delete: CKEDITOR.TRISTATE_OFF };
                } }, tablecolumn_insertBefore: { label: p.column.insertBefore, group: "tablecolumn", command: "columnInsertBefore", order: 5 }, tablecolumn_insertAfter: { label: p.column.insertAfter, group: "tablecolumn", command: "columnInsertAfter", order: 10 }, tablecolumn_delete: { label: p.column.deleteColumn, group: "tablecolumn",
                command: "columnDelete", order: 15 } });a.contextMenu && a.contextMenu.addListener(function (a, b, c) {
              return (a = c.contains({ td: 1, th: 1 }, 1)) && !a.isReadOnly() ? { tablecell: CKEDITOR.TRISTATE_OFF, tablerow: CKEDITOR.TRISTATE_OFF, tablecolumn: CKEDITOR.TRISTATE_OFF } : null;
            });
          }, getCellColIndex: a, insertRow: h, insertColumn: l, getSelectedCells: c };CKEDITOR.plugins.add("tabletools", CKEDITOR.plugins.tabletools);
      }(), CKEDITOR.tools.buildTableMap = function (c, h, g, a, e) {
        c = c.$.rows;g = g || 0;a = "number" === typeof a ? a : c.length - 1;e = "number" === typeof e ? e : -1;var l = -1,
            k = [];for (h = h || 0; h <= a; h++) {
          l++;!k[l] && (k[l] = []);for (var m = -1, b = g; b <= (-1 === e ? c[h].cells.length - 1 : e); b++) {
            var d = c[h].cells[b];if (!d) break;for (m++; k[l][m];) m++;for (var f = isNaN(d.colSpan) ? 1 : d.colSpan, d = isNaN(d.rowSpan) ? 1 : d.rowSpan, n = 0; n < d && !(h + n > a); n++) {
              k[l + n] || (k[l + n] = []);for (var w = 0; w < f; w++) k[l + n][m + w] = c[h].cells[b];
            }m += f - 1;if (-1 !== e && m >= e) break;
          }
        }return k;
      }, CKEDITOR.config.tabletools_scopedHeaders = !1, "use strict", function () {
        function c(a, c) {
          return CKEDITOR.tools.array.reduce(c, function (a, b) {
            return b(a);
          }, a);
        }var h = [CKEDITOR.CTRL + 90, CKEDITOR.CTRL + 89, CKEDITOR.CTRL + CKEDITOR.SHIFT + 90],
            g = { 8: 1, 46: 1 };CKEDITOR.plugins.add("undo", { init: function (b) {
            function c(a) {
              g.enabled && !1 !== a.data.command.canUndo && g.save();
            }function e() {
              g.enabled = b.readOnly ? !1 : "wysiwyg" == b.mode;g.onChange();
            }var g = b.undoManager = new a(b),
                l = g.editingHandler = new k(g),
                m = b.addCommand("undo", { exec: function () {
                g.undo() && (b.selectionChange(), this.fire("afterUndo"));
              }, startDisabled: !0, canUndo: !1 }),
                r = b.addCommand("redo", { exec: function () {
                g.redo() && (b.selectionChange(), this.fire("afterRedo"));
              }, startDisabled: !0, canUndo: !1 });b.setKeystroke([[h[0], "undo"], [h[1], "redo"], [h[2], "redo"]]);g.onChange = function () {
              m.setState(g.undoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);r.setState(g.redoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
            };b.on("beforeCommandExec", c);b.on("afterCommandExec", c);b.on("saveSnapshot", function (a) {
              g.save(a.data && a.data.contentOnly);
            });b.on("contentDom", l.attachListeners, l);b.on("instanceReady", function () {
              b.fire("saveSnapshot");
            });
            b.on("beforeModeUnload", function () {
              "wysiwyg" == b.mode && g.save(!0);
            });b.on("mode", e);b.on("readOnly", e);b.ui.addButton && (b.ui.addButton("Undo", { label: b.lang.undo.undo, command: "undo", toolbar: "undo,10" }), b.ui.addButton("Redo", { label: b.lang.undo.redo, command: "redo", toolbar: "undo,20" }));b.resetUndo = function () {
              g.reset();b.fire("saveSnapshot");
            };b.on("updateSnapshot", function () {
              g.currentImage && g.update();
            });b.on("lockSnapshot", function (a) {
              a = a.data;g.lock(a && a.dontUpdate, a && a.forceUpdate);
            });b.on("unlockSnapshot", g.unlock, g);
          } });CKEDITOR.plugins.undo = {};var a = CKEDITOR.plugins.undo.UndoManager = function (a) {
          this.strokesRecorded = [0, 0];this.locked = null;this.previousKeyGroup = -1;this.limit = a.config.undoStackSize || 20;this.strokesLimit = 25;this._filterRules = [];this.editor = a;this.reset();CKEDITOR.env.ie && this.addFilterRule(function (a) {
            return a.replace(/\s+data-cke-expando=".*?"/g, "");
          });
        };a.prototype = { type: function (b, c) {
            var e = a.getKeyGroup(b),
                g = this.strokesRecorded[e] + 1;c = c || g >= this.strokesLimit;this.typing || (this.hasUndo = this.typing = !0, this.hasRedo = !1, this.onChange());c ? (g = 0, this.editor.fire("saveSnapshot")) : this.editor.fire("change");this.strokesRecorded[e] = g;this.previousKeyGroup = e;
          }, keyGroupChanged: function (b) {
            return a.getKeyGroup(b) != this.previousKeyGroup;
          }, reset: function () {
            this.snapshots = [];this.index = -1;this.currentImage = null;this.hasRedo = this.hasUndo = !1;this.locked = null;this.resetType();
          }, resetType: function () {
            this.strokesRecorded = [0, 0];this.typing = !1;this.previousKeyGroup = -1;
          }, refreshState: function () {
            this.hasUndo = !!this.getNextImage(!0);this.hasRedo = !!this.getNextImage(!1);this.resetType();this.onChange();
          }, save: function (a, c, f) {
            var g = this.editor;if (this.locked || "ready" != g.status || "wysiwyg" != g.mode) return !1;var h = g.editable();if (!h || "ready" != h.status) return !1;h = this.snapshots;c || (c = new e(g));if (!1 === c.contents) return !1;if (this.currentImage) if (c.equalsContent(this.currentImage)) {
              if (a || c.equalsSelection(this.currentImage)) return !1;
            } else !1 !== f && g.fire("change");h.splice(this.index + 1, h.length - this.index - 1);h.length == this.limit && h.shift();this.index = h.push(c) - 1;this.currentImage = c;!1 !== f && this.refreshState();return !0;
          }, restoreImage: function (a) {
            var c = this.editor,
                e;a.bookmarks && (c.focus(), e = c.getSelection());this.locked = { level: 999 };this.editor.loadSnapshot(a.contents);a.bookmarks ? e.selectBookmarks(a.bookmarks) : CKEDITOR.env.ie && (e = this.editor.document.getBody().$.createTextRange(), e.collapse(!0), e.select());this.locked = null;this.index = a.index;this.currentImage = this.snapshots[this.index];this.update();this.refreshState();
            c.fire("change");
          }, getNextImage: function (a) {
            var c = this.snapshots,
                e = this.currentImage,
                g;if (e) if (a) for (g = this.index - 1; 0 <= g; g--) {
              if (a = c[g], !e.equalsContent(a)) return a.index = g, a;
            } else for (g = this.index + 1; g < c.length; g++) if (a = c[g], !e.equalsContent(a)) return a.index = g, a;return null;
          }, redoable: function () {
            return this.enabled && this.hasRedo;
          }, undoable: function () {
            return this.enabled && this.hasUndo;
          }, undo: function () {
            if (this.undoable()) {
              this.save(!0);var a = this.getNextImage(!0);if (a) return this.restoreImage(a), !0;
            }return !1;
          },
          redo: function () {
            if (this.redoable() && (this.save(!0), this.redoable())) {
              var a = this.getNextImage(!1);if (a) return this.restoreImage(a), !0;
            }return !1;
          }, update: function (a) {
            if (!this.locked) {
              a || (a = new e(this.editor));for (var c = this.index, f = this.snapshots; 0 < c && this.currentImage.equalsContent(f[c - 1]);) --c;f.splice(c, this.index - c + 1, a);this.index = c;this.currentImage = a;
            }
          }, updateSelection: function (a) {
            if (!this.snapshots.length) return !1;var c = this.snapshots,
                e = c[c.length - 1];return e.equalsContent(a) && !e.equalsSelection(a) ? (this.currentImage = c[c.length - 1] = a, !0) : !1;
          }, lock: function (a, c) {
            if (this.locked) this.locked.level++;else if (a) this.locked = { level: 1 };else {
              var f = null;if (c) f = !0;else {
                var g = new e(this.editor, !0);this.currentImage && this.currentImage.equalsContent(g) && (f = g);
              }this.locked = { update: f, level: 1 };
            }
          }, unlock: function () {
            if (this.locked && ! --this.locked.level) {
              var a = this.locked.update;this.locked = null;if (!0 === a) this.update();else if (a) {
                var c = new e(this.editor, !0);a.equalsContent(c) || this.update();
              }
            }
          }, addFilterRule: function (a) {
            this._filterRules.push(a);
          } };
        a.navigationKeyCodes = { 37: 1, 38: 1, 39: 1, 40: 1, 36: 1, 35: 1, 33: 1, 34: 1 };a.keyGroups = { PRINTABLE: 0, FUNCTIONAL: 1 };a.isNavigationKey = function (b) {
          return !!a.navigationKeyCodes[b];
        };a.getKeyGroup = function (b) {
          var c = a.keyGroups;return g[b] ? c.FUNCTIONAL : c.PRINTABLE;
        };a.getOppositeKeyGroup = function (b) {
          var c = a.keyGroups;return b == c.FUNCTIONAL ? c.PRINTABLE : c.FUNCTIONAL;
        };a.ieFunctionalKeysBug = function (b) {
          return CKEDITOR.env.ie && a.getKeyGroup(b) == a.keyGroups.FUNCTIONAL;
        };var e = CKEDITOR.plugins.undo.Image = function (a, d) {
          this.editor = a;a.fire("beforeUndoImage");var e = a.getSnapshot();e && (this.contents = c(e, a.undoManager._filterRules));d || (this.bookmarks = (e = e && a.getSelection()) && e.createBookmarks2(!0));a.fire("afterUndoImage");
        },
            l = /\b(?:href|src|name)="[^"]*?"/gi;e.prototype = { equalsContent: function (a) {
            var c = this.contents;a = a.contents;CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) && (c = c.replace(l, ""), a = a.replace(l, ""));return c != a ? !1 : !0;
          }, equalsSelection: function (a) {
            var c = this.bookmarks;a = a.bookmarks;if (c || a) {
              if (!c || !a || c.length != a.length) return !1;for (var e = 0; e < c.length; e++) {
                var g = c[e],
                    h = a[e];if (g.startOffset != h.startOffset || g.endOffset != h.endOffset || !CKEDITOR.tools.arrayCompare(g.start, h.start) || !CKEDITOR.tools.arrayCompare(g.end, h.end)) return !1;
              }
            }return !0;
          } };var k = CKEDITOR.plugins.undo.NativeEditingHandler = function (a) {
          this.undoManager = a;this.ignoreInputEvent = !1;this.keyEventsStack = new m();this.lastKeydownImage = null;
        };k.prototype = { onKeydown: function (b) {
            var c = b.data.getKey();if (229 !== c) if (-1 < CKEDITOR.tools.indexOf(h, b.data.getKeystroke())) b.data.preventDefault();else if (this.keyEventsStack.cleanUp(b), b = this.undoManager, this.keyEventsStack.getLast(c) || this.keyEventsStack.push(c), this.lastKeydownImage = new e(b.editor), a.isNavigationKey(c) || this.undoManager.keyGroupChanged(c)) if (b.strokesRecorded[0] || b.strokesRecorded[1]) b.save(!1, this.lastKeydownImage, !1), b.resetType();
          }, onInput: function () {
            if (this.ignoreInputEvent) this.ignoreInputEvent = !1;else {
              var a = this.keyEventsStack.getLast();a || (a = this.keyEventsStack.push(0));
              this.keyEventsStack.increment(a.keyCode);this.keyEventsStack.getTotalInputs() >= this.undoManager.strokesLimit && (this.undoManager.type(a.keyCode, !0), this.keyEventsStack.resetInputs());
            }
          }, onKeyup: function (b) {
            var c = this.undoManager;b = b.data.getKey();var f = this.keyEventsStack.getTotalInputs();this.keyEventsStack.remove(b);if (!(a.ieFunctionalKeysBug(b) && this.lastKeydownImage && this.lastKeydownImage.equalsContent(new e(c.editor, !0)))) if (0 < f) c.type(b);else if (a.isNavigationKey(b)) this.onNavigationKey(!0);
          },
          onNavigationKey: function (a) {
            var c = this.undoManager;!a && c.save(!0, null, !1) || c.updateSelection(new e(c.editor));c.resetType();
          }, ignoreInputEventListener: function () {
            this.ignoreInputEvent = !0;
          }, activateInputEventListener: function () {
            this.ignoreInputEvent = !1;
          }, attachListeners: function () {
            var b = this.undoManager.editor,
                c = b.editable(),
                e = this;c.attachListener(c, "keydown", function (b) {
              e.onKeydown(b);if (a.ieFunctionalKeysBug(b.data.getKey())) e.onInput();
            }, null, null, 999);c.attachListener(c, CKEDITOR.env.ie ? "keypress" : "input", e.onInput, e, null, 999);c.attachListener(c, "keyup", e.onKeyup, e, null, 999);c.attachListener(c, "paste", e.ignoreInputEventListener, e, null, 999);c.attachListener(c, "drop", e.ignoreInputEventListener, e, null, 999);b.on("afterPaste", e.activateInputEventListener, e, null, 999);c.attachListener(c.isInline() ? c : b.document.getDocumentElement(), "click", function () {
              e.onNavigationKey();
            }, null, null, 999);c.attachListener(this.undoManager.editor, "blur", function () {
              e.keyEventsStack.remove(9);
            }, null, null, 999);
          } };var m = CKEDITOR.plugins.undo.KeyEventsStack = function () {
          this.stack = [];
        };m.prototype = { push: function (a) {
            a = this.stack.push({ keyCode: a, inputs: 0 });return this.stack[a - 1];
          }, getLastIndex: function (a) {
            if ("number" != typeof a) return this.stack.length - 1;for (var c = this.stack.length; c--;) if (this.stack[c].keyCode == a) return c;return -1;
          }, getLast: function (a) {
            a = this.getLastIndex(a);return -1 != a ? this.stack[a] : null;
          }, increment: function (a) {
            this.getLast(a).inputs++;
          }, remove: function (a) {
            a = this.getLastIndex(a);-1 != a && this.stack.splice(a, 1);
          }, resetInputs: function (a) {
            if ("number" == typeof a) this.getLast(a).inputs = 0;else for (a = this.stack.length; a--;) this.stack[a].inputs = 0;
          }, getTotalInputs: function () {
            for (var a = this.stack.length, c = 0; a--;) c += this.stack[a].inputs;return c;
          }, cleanUp: function (a) {
            a = a.data.$;a.ctrlKey || a.metaKey || this.remove(17);a.shiftKey || this.remove(16);a.altKey || this.remove(18);
          } };
      }(), function () {
        function c(a) {
          function c(a) {
            var b = !1;f.attachListener(f, "keydown", function () {
              var c = m.getBody().getElementsByTag(a);if (!b) {
                for (var d = 0; d < c.count(); d++) c.getItem(d).setCustomData("retain", !0);b = !0;
              }
            }, null, null, 1);f.attachListener(f, "keyup", function () {
              var c = m.getElementsByTag(a);b && (1 == c.count() && !c.getItem(0).getCustomData("retain") && CKEDITOR.tools.isEmpty(c.getItem(0).getAttributes()) && c.getItem(0).remove(1), b = !1);
            });
          }var g = this.editor;if (g && !g.isDetached()) {
            var m = a.document,
                b = m.body,
                d = m.getElementById("cke_actscrpt");d && d.parentNode.removeChild(d);(d = m.getElementById("cke_shimscrpt")) && d.parentNode.removeChild(d);(d = m.getElementById("cke_basetagscrpt")) && d.parentNode.removeChild(d);
            b.contentEditable = !0;CKEDITOR.env.ie && (b.hideFocus = !0, b.disabled = !0, b.removeAttribute("disabled"));delete this._.isLoadingData;this.$ = b;m = new CKEDITOR.dom.document(m);this.setup();this.fixInitialSelection();var f = this;CKEDITOR.env.ie && !CKEDITOR.env.edge && m.getDocumentElement().addClass(m.$.compatMode);CKEDITOR.env.ie && !CKEDITOR.env.edge && g.enterMode != CKEDITOR.ENTER_P ? c("p") : CKEDITOR.env.edge && 15 > CKEDITOR.env.version && g.enterMode != CKEDITOR.ENTER_DIV && c("div");if (CKEDITOR.env.webkit || CKEDITOR.env.ie && 10 < CKEDITOR.env.version) m.getDocumentElement().on("mousedown", function (a) {
              a.data.getTarget().is("html") && setTimeout(function () {
                g.editable().focus();
              });
            });h(g);try {
              g.document.$.execCommand("2D-position", !1, !0);
            } catch (n) {}(CKEDITOR.env.gecko || CKEDITOR.env.ie && "CSS1Compat" == g.document.$.compatMode) && this.attachListener(this, "keydown", function (a) {
              var b = a.data.getKeystroke();if (33 == b || 34 == b) if (CKEDITOR.env.ie) setTimeout(function () {
                g.getSelection().scrollIntoView();
              }, 0);else if (g.window.$.innerHeight > this.$.offsetHeight) {
                var c = g.createRange();c[33 == b ? "moveToElementEditStart" : "moveToElementEditEnd"](this);c.select();a.data.preventDefault();
              }
            });CKEDITOR.env.ie && this.attachListener(m, "blur", function () {
              try {
                m.$.selection.empty();
              } catch (a) {}
            });CKEDITOR.env.iOS && this.attachListener(m, "touchend", function () {
              a.focus();
            });b = g.document.getElementsByTag("title").getItem(0);b.data("cke-title", b.getText());CKEDITOR.env.ie && (g.document.$.title = this._.docTitle);CKEDITOR.tools.setTimeout(function () {
              "unloaded" == this.status && (this.status = "ready");
              g.fire("contentDom");this._.isPendingFocus && (g.focus(), this._.isPendingFocus = !1);setTimeout(function () {
                g.fire("dataReady");
              }, 0);
            }, 0, this);
          }
        }function h(a) {
          function g(a) {
            a.returnValue = !1;
          }if (CKEDITOR.env.gecko) try {
            var h = a.document.$;h.execCommand("enableObjectResizing", !1, !a.config.disableObjectResizing);
            h.execCommand("enableInlineTableEditing", !1, !a.config.disableNativeTableHandles);
          } catch (b) {} else CKEDITOR.env.ie && 11 > CKEDITOR.env.version && a.config.disableObjectResizing && function c() {
            var b;a.editable().attachListener(a, "selectionChange", function () {
              var c = a.getSelection().getSelectedElement();c && (b && (b.detachEvent("onresizestart", g), b = null), c.$.attachEvent("onresizestart", g), b = c.$);
            });
          }();
        }function g() {
          var a = [];if (8 <= CKEDITOR.document.$.documentMode) {
            a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");var c = [],
                g;for (g in CKEDITOR.dtd.$removeEmpty) c.push("html.CSS1Compat " + g + "[contenteditable\x3dfalse]");a.push(c.join(",") + "{display:inline-block}");
          } else CKEDITOR.env.gecko && (a.push("html{height:100% !important}"), a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n");
        }var a;CKEDITOR.plugins.add("wysiwygarea", { init: function (c) {
            c.config.fullPage && c.addFeature({ allowedContent: "html head title; style [media,type]; body (*)[id]; meta link [*]", requiredContent: "body" });c.addMode("wysiwyg", function (g) {
              function h(d) {
                d && d.removeListener();if (!c.isDestroyed() && !c.isDetached() && (c.editable(new a(c, n.getFrameDocument().getBody())), c.setData(c.getData(1), g), C)) {
                  if (u) c.on("mode", m, { iframe: n, editor: c, callback: g });c.on("mode", function () {
                    c.status = "ready";
                  });b();
                }
              }function m(a) {
                a && a.removeListener();n.on("load", function () {
                  t && (t = !1, d());
                });
              }function b() {
                p = new MutationObserver(function (a) {
                  for (var b = 0; b < a.length; b++) {
                    var f = a[b];if ("childList" === f.type && 0 !== f.addedNodes.length) for (var g = 0; g < f.addedNodes.length; g++) {
                      var h = f.addedNodes[g];h.contains && h.contains(c.container.$) && (u ? t = !0 : d());
                    }
                  }
                });
                p.observe(c.config.observableParent, { childList: !0, subtree: !0 });
              }function d() {
                var b = c.getData(!1),
                    d;c.editable().preserveIframe = !0;c.editable(null);d = new a(c, n.getFrameDocument().getBody());c.editable(d);c.status = "recreating";c.setData(b, { callback: g, internal: !1, noSnapshot: !1 });
              }var f = "document.open();" + (CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "") + "document.close();",
                  f = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void(function(){" + encodeURIComponent(f) + "}())" : "",
                  n = CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"' + f + '" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');n.setStyles({ width: "100%", height: "100%" });n.addClass("cke_wysiwyg_frame").addClass("cke_reset");f = c.ui.space("contents") || c.ui.contentsElement;f.append(n);var w = CKEDITOR.env.ie && !CKEDITOR.env.edge || CKEDITOR.env.gecko;if (w) n.on("load", h);var z = c.title,
                  r = c.fire("ariaEditorHelpLabel", {}).label,
                  t = !1,
                  u = CKEDITOR.env.ie && 11 === CKEDITOR.env.version,
                  C = !!window.MutationObserver,
                  p;z && (CKEDITOR.env.ie && r && (z += ", " + r), n.setAttribute("title", z));if (r) {
                var z = CKEDITOR.tools.getNextId(),
                    x = CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"' + z + '" class\x3d"cke_voice_label"\x3e' + r + "\x3c/span\x3e");f.append(x, 1);n.setAttribute("aria-describedby", z);
              }c.on("beforeModeUnload", function (a) {
                a.removeListener();x && x.remove();C && p.disconnect();
              });c.on("destroy", function () {
                p && p.disconnect();
              });n.setAttributes({ tabIndex: c.tabIndex, allowTransparency: "true" });!w && h();c.fire("ariaWidget", n);
            });
          } });CKEDITOR.editor.prototype.addContentsCss = function (a) {
          var c = this.config,
              g = c.contentsCss;CKEDITOR.tools.isArray(g) || (c.contentsCss = g ? [g] : []);c.contentsCss.push(a);
        };a = CKEDITOR.tools.createClass({ $: function () {
            this.base.apply(this, arguments);this._.frameLoadedHandler = CKEDITOR.tools.addFunction(function (a) {
              CKEDITOR.tools.setTimeout(c, 0, this, a);
            }, this);this._.docTitle = this.getWindow().getFrame().getAttribute("title") || " ";
          }, base: CKEDITOR.editable, proto: { preserveIframe: !1, setData: function (a, c) {
              var h = this.editor;if (c) this.setHtml(a), this.fixInitialSelection(), h.fire("dataReady");else {
                this._.isLoadingData = !0;h._.dataStore = { id: 1 };var m = h.config,
                    b = m.fullPage,
                    d = m.docType,
                    f = CKEDITOR.tools.buildStyleHtml(g()).replace(/<style>/, '\x3cstyle data-cke-temp\x3d"1"\x3e');b || (f += CKEDITOR.tools.buildStyleHtml(h.config.contentsCss));var n = m.baseHref ? '\x3cbase href\x3d"' + m.baseHref + '" data-cke-temp\x3d"1" /\x3e' : "";b && (a = a.replace(/<!DOCTYPE[^>]*>/i, function (a) {
                  h.docType = d = a;return "";
                }).replace(/<\?xml\s[^\?]*\?>/i, function (a) {
                  h.xmlDeclaration = a;return "";
                }));a = h.dataProcessor.toHtml(a);
                b ? (/<body[\s|>]/.test(a) || (a = "\x3cbody\x3e" + a), /<html[\s|>]/.test(a) || (a = "\x3chtml\x3e" + a + "\x3c/html\x3e"), /<head[\s|>]/.test(a) ? /<title[\s|>]/.test(a) || (a = a.replace(/<head[^>]*>/, "$\x26\x3ctitle\x3e\x3c/title\x3e")) : a = a.replace(/<html[^>]*>/, "$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e"), n && (a = a.replace(/<head[^>]*?>/, "$\x26" + n)), a = a.replace(/<\/head\s*>/, f + "$\x26"), a = d + a) : a = m.docType + '\x3chtml dir\x3d"' + m.contentsLangDirection + '" lang\x3d"' + (m.contentsLanguage || h.langCode) + '"\x3e\x3chead\x3e\x3ctitle\x3e' + this._.docTitle + "\x3c/title\x3e" + n + f + "\x3c/head\x3e\x3cbody" + (m.bodyId ? ' id\x3d"' + m.bodyId + '"' : "") + (m.bodyClass ? ' class\x3d"' + m.bodyClass + '"' : "") + "\x3e" + a + "\x3c/body\x3e\x3c/html\x3e";CKEDITOR.env.gecko && (a = a.replace(/<body/, '\x3cbody contenteditable\x3d"true" '), 2E4 > CKEDITOR.env.version && (a = a.replace(/<body[^>]*>/, "$\x26\x3c!-- cke-content-start --\x3e")));a = a.replace(/<body/, '\x3cbody role\x3d"textbox" aria-multiline\x3d"true"');h.title && (a = a.replace(/<body/, '\x3cbody aria-label\x3d"' + CKEDITOR.tools.htmlEncodeAttr(h.title) + '"'));CKEDITOR.env.gecko || (a = a.replace("\x3cbody", '\x3cbody tabindex\x3d"0" '));m = '\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"' + (CKEDITOR.env.ie ? ' defer\x3d"defer" ' : "") + "\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR \x26\x26 window.parent.CKEDITOR.tools.callFunction(" + this._.frameLoadedHandler + ",window);wasLoaded\x3d1;}" + (CKEDITOR.env.ie ? "onload();" : 'document.addEventListener("DOMContentLoaded", onload, false );') + "\x3c/script\x3e";CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (m += '\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e');n && CKEDITOR.env.ie && 10 > CKEDITOR.env.version && (m += '\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e');a = a.replace(/(?=\s*<\/(:?head)>)/, m);this.clearCustomData();this.clearListeners();h.fire("contentDomUnload");var w = this.getDocument();try {
                  w.write(a);
                } catch (z) {
                  setTimeout(function () {
                    w.write(a);
                  }, 0);
                }
              }
            }, getData: function (a) {
              if (a) return this.getHtml();a = this.editor;var c = a.config,
                  g = c.fullPage,
                  h = g && a.docType,
                  b = g && a.xmlDeclaration,
                  d = this.getDocument(),
                  d = g ? d.getDocumentElement().getOuterHtml() : d.getBody().getHtml();CKEDITOR.env.gecko && c.enterMode != CKEDITOR.ENTER_BR && (d = d.replace(/<br>(?=\s*(:?$|<\/body>))/, ""));g && (d = d.replace(/<body(.*?)role="?textbox"?/i, "\x3cbody$1").replace(/<body(.*?)aria-multiline="?true"?/i, "\x3cbody$1").replace(/<body(.*?)tabindex="?0"?/i, "\x3cbody$1").replace(/<body(.*?)aria-label="(.+?)"/i, "\x3cbody$1").replace(/<body(.*?)aria-readonly="?(?:true|false)"?/i, "\x3cbody$1"));d = a.dataProcessor.toDataFormat(d);b && (d = b + "\n" + d);h && (d = h + "\n" + d);return d;
            }, focus: function () {
              this._.isLoadingData ? this._.isPendingFocus = !0 : a.baseProto.focus.call(this);
            }, detach: function () {
              if (!this.preserveIframe) {
                var c = this.editor,
                    g = c.document,
                    c = c.container.findOne("iframe.cke_wysiwyg_frame");a.baseProto.detach.call(this);this.clearCustomData(this._.expandoNumber);g.getDocumentElement().clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);
                c && (c.clearCustomData(), (g = c.removeCustomData("onResize")) && g.removeListener(), c.isDetached() || c.remove());
              }
            } } });
      }(), CKEDITOR.config.disableObjectResizing = !1, CKEDITOR.config.disableNativeTableHandles = !0, CKEDITOR.config.disableNativeSpellChecker = !0, CKEDITOR.config.observableParent = CKEDITOR.document.$, CKEDITOR.config.plugins = "dialogui,dialog,a11yhelp,basicstyles,blockquote,notification,button,toolbar,clipboard,codemirror,panelbutton,panel,floatpanel,colorbutton,menu,contextmenu,dialogadvtab,enterkey,listblock,richcombo,font,format,horizontalrule,htmlwriter,lineutils,widgetselection,widget,image2,imagespacingbox,indent,indentlist,indentblock,justify,fakeobjects,link,list,liststyle,magicline,pagebreak,pastefromword,pastetext,xml,ajax,pastetools,removeformat,resize,tab,table,tabletools,undo,wysiwygarea", CKEDITOR.config.skin = "moono-lexicon", function () {
        var c = function (c, g) {
          var a = CKEDITOR.getUrl("plugins/" + g);c = c.split(",");for (var e = 0; e < c.length; e++) CKEDITOR.skin.icons[c[e]] = { path: a, offset: -c[++e], bgsize: c[++e] };
        };CKEDITOR.env.hidpi ? c("about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,codesnippet,384,,bgcolor,408,,textcolor,432,,copyformatting,456,,creatediv,480,,docprops-rtl,504,,docprops,528,,easyimagealigncenter,552,,easyimagealignleft,576,,easyimagealignright,600,,easyimagealt,624,,easyimagefull,648,,easyimageside,672,,easyimageupload,696,,embed,720,,embedsemantic,744,,emojipanel,768,,find-rtl,792,,find,816,,replace,840,,button,864,,checkbox,888,,form,912,,hiddenfield,936,,imagebutton,960,,radio,984,,select-rtl,1008,,select,1032,,textarea-rtl,1056,,textarea,1080,,textfield-rtl,1104,,textfield,1128,,horizontalrule,1152,,iframe,1176,,image,1200,,indent-rtl,1224,,indent,1248,,outdent-rtl,1272,,outdent,1296,,justifyblock,1320,,justifycenter,1344,,justifyleft,1368,,justifyright,1392,,language,1416,,anchor-rtl,1440,,anchor,1464,,link,1488,,unlink,1512,,bulletedlist-rtl,1536,,bulletedlist,1560,,numberedlist-rtl,1584,,numberedlist,1608,,mathjax,1632,,maximize,1656,,newpage-rtl,1680,,newpage,1704,,pagebreak-rtl,1728,,pagebreak,1752,,pastefromword-rtl,1776,,pastefromword,1800,,pastetext-rtl,1824,,pastetext,1848,,placeholder,1872,,preview-rtl,1896,,preview,1920,,print,1944,,removeformat,1968,,save,1992,,scayt,2016,,selectall,2040,,showblocks-rtl,2064,,showblocks,2088,,smiley,2112,,source-rtl,2136,,source,2160,,sourcedialog-rtl,2184,,sourcedialog,2208,,specialchar,2232,,table,2256,,templates-rtl,2280,,templates,2304,,uicolor,2328,,redo-rtl,2352,,redo,2376,,undo-rtl,2400,,undo,2424,,simplebox,4896,auto", "icons_hidpi.png") : c("about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,codesnippet,384,auto,bgcolor,408,auto,textcolor,432,auto,copyformatting,456,auto,creatediv,480,auto,docprops-rtl,504,auto,docprops,528,auto,easyimagealigncenter,552,auto,easyimagealignleft,576,auto,easyimagealignright,600,auto,easyimagealt,624,auto,easyimagefull,648,auto,easyimageside,672,auto,easyimageupload,696,auto,embed,720,auto,embedsemantic,744,auto,emojipanel,768,auto,find-rtl,792,auto,find,816,auto,replace,840,auto,button,864,auto,checkbox,888,auto,form,912,auto,hiddenfield,936,auto,imagebutton,960,auto,radio,984,auto,select-rtl,1008,auto,select,1032,auto,textarea-rtl,1056,auto,textarea,1080,auto,textfield-rtl,1104,auto,textfield,1128,auto,horizontalrule,1152,auto,iframe,1176,auto,image,1200,auto,indent-rtl,1224,auto,indent,1248,auto,outdent-rtl,1272,auto,outdent,1296,auto,justifyblock,1320,auto,justifycenter,1344,auto,justifyleft,1368,auto,justifyright,1392,auto,language,1416,auto,anchor-rtl,1440,auto,anchor,1464,auto,link,1488,auto,unlink,1512,auto,bulletedlist-rtl,1536,auto,bulletedlist,1560,auto,numberedlist-rtl,1584,auto,numberedlist,1608,auto,mathjax,1632,auto,maximize,1656,auto,newpage-rtl,1680,auto,newpage,1704,auto,pagebreak-rtl,1728,auto,pagebreak,1752,auto,pastefromword-rtl,1776,auto,pastefromword,1800,auto,pastetext-rtl,1824,auto,pastetext,1848,auto,placeholder,1872,auto,preview-rtl,1896,auto,preview,1920,auto,print,1944,auto,removeformat,1968,auto,save,1992,auto,scayt,2016,auto,selectall,2040,auto,showblocks-rtl,2064,auto,showblocks,2088,auto,smiley,2112,auto,source-rtl,2136,auto,source,2160,auto,sourcedialog-rtl,2184,auto,sourcedialog,2208,auto,specialchar,2232,auto,table,2256,auto,templates-rtl,2280,auto,templates,2304,auto,uicolor,2328,auto,redo-rtl,2352,auto,redo,2376,auto,undo-rtl,2400,auto,undo,2424,auto,simplebox,2448,auto", "icons.png");
      }());
    })();
  }
});
//# sourceMappingURL=ckeditor.js.map