Liferay.Loader.define("dynamic-data-mapping-form-field-type$liferay-ckeditor@4.16.2-liferay.1/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror", ['module', 'exports', 'require'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    (function (q) {
      if ("object" == typeof exports && "object" == typeof module) module.exports = q();else {
        if ("function" == typeof define && define.amd) return define([], q);this.CodeMirror = q();
      }
    })(function () {
      function q(a, b) {
        if (!(this instanceof q)) return new q(a, b);this.options = b = b ? V(b) : {};V(qf, b, !1);wc(b);var c = b.value;"string" == typeof c && (c = new P(c, b.mode));this.doc = c;var d = new q.inputStyles[b.inputStyle](this),
            d = this.display = new rf(a, c, d);d.wrapper.CodeMirror = this;Ad(this);Bd(this);b.lineWrapping && (this.display.wrapper.className += " CodeMirror-wrap");b.autofocus && !ab && d.input.focus();Cd(this);this.state = { keyMaps: [], overlays: [], modeGen: 0, overwrite: !1, delayingBlurEvent: !1, focused: !1, suppressEdits: !1, pasteIncoming: !1, cutIncoming: !1, draggingText: !1, highlight: new bb(), keySeq: null, specialChars: null };var e = this;B && 11 > C && setTimeout(function () {
          e.display.input.reset(!0);
        }, 20);sf(this);Dd || (tf(), Dd = !0);Ja(this);this.curOp.forceUpdate = !0;Ed(this, c);b.autofocus && !ab || e.hasFocus() ? setTimeout(cb(xc, this), 20) : db(this);for (var f in Ka) if (Ka.hasOwnProperty(f)) Ka[f](this, b[f], Fd);Gd(this);b.finishInit && b.finishInit(this);for (c = 0; c < yc.length; ++c) yc[c](this);La(this);J && b.lineWrapping && "optimizelegibility" == getComputedStyle(d.lineDiv).textRendering && (d.lineDiv.style.textRendering = "auto");
      }function rf(a, b, c) {
        this.input = c;this.scrollbarFiller = t("div", null, "CodeMirror-scrollbar-filler");this.scrollbarFiller.setAttribute("cm-not-content", "true");this.gutterFiller = t("div", null, "CodeMirror-gutter-filler");this.gutterFiller.setAttribute("cm-not-content", "true");this.lineDiv = t("div", null, "CodeMirror-code");this.selectionDiv = t("div", null, null, "position: relative; z-index: 1");this.cursorDiv = t("div", null, "CodeMirror-cursors");this.measure = t("div", null, "CodeMirror-measure");this.lineMeasure = t("div", null, "CodeMirror-measure");this.lineSpace = t("div", [this.measure, this.lineMeasure, this.selectionDiv, this.cursorDiv, this.lineDiv], null, "position: relative; outline: none");this.mover = t("div", [t("div", [this.lineSpace], "CodeMirror-lines")], null, "position: relative");this.sizer = t("div", [this.mover], "CodeMirror-sizer");this.sizerWidth = null;this.heightForcer = t("div", null, null, "position: absolute; height: " + Hd + "px; width: 1px;");this.gutters = t("div", null, "CodeMirror-gutters");this.lineGutter = null;this.scroller = t("div", [this.sizer, this.heightForcer, this.gutters], "CodeMirror-scroll");this.scroller.setAttribute("tabIndex", "-1");this.wrapper = t("div", [this.scrollbarFiller, this.gutterFiller, this.scroller], "CodeMirror");B && 8 > C && (this.gutters.style.zIndex = -1, this.scroller.style.paddingRight = 0);J || wa && ab || (this.scroller.draggable = !0);a && (a.appendChild ? a.appendChild(this.wrapper) : a(this.wrapper));this.reportedViewFrom = this.reportedViewTo = this.viewFrom = this.viewTo = b.first;this.view = [];this.externalMeasured = this.renderedView = null;this.lastWrapHeight = this.lastWrapWidth = this.viewOffset = 0;this.updateLineNumbers = null;this.nativeBarWidth = this.barHeight = this.barWidth = 0;this.scrollbarsClipped = !1;this.lineNumWidth = this.lineNumInnerWidth = this.lineNumChars = null;this.alignWidgets = !1;this.maxLine = this.cachedCharWidth = this.cachedTextHeight = this.cachedPaddingH = null;this.maxLineLength = 0;this.maxLineChanged = !1;this.wheelDX = this.wheelDY = this.wheelStartX = this.wheelStartY = null;this.shift = !1;this.activeTouch = this.selForContextMenu = null;c.init(this);
      }function zc(a) {
        a.doc.mode = q.getMode(a.options, a.doc.modeOption);eb(a);
      }function eb(a) {
        a.doc.iter(function (a) {
          a.stateAfter && (a.stateAfter = null);a.styles && (a.styles = null);
        });a.doc.frontier = a.doc.first;fb(a, 100);a.state.modeGen++;a.curOp && Q(a);
      }function Id(a) {
        var b = xa(a.display),
            c = a.options.lineWrapping,
            d = c && Math.max(5, a.display.scroller.clientWidth / gb(a.display) - 3);return function (e) {
          if (ya(a.doc, e)) return 0;var f = 0;if (e.widgets) for (var g = 0; g < e.widgets.length; g++) e.widgets[g].height && (f += e.widgets[g].height);return c ? f + (Math.ceil(e.text.length / d) || 1) * b : f + b;
        };
      }function Ac(a) {
        var b = a.doc,
            c = Id(a);b.iter(function (a) {
          var b = c(a);b != a.height && ca(a, b);
        });
      }function Bd(a) {
        a.display.wrapper.className = a.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + a.options.theme.replace(/(^|\s)\s*/g, " cm-s-");hb(a);
      }function ib(a) {
        Ad(a);Q(a);setTimeout(function () {
          Bc(a);
        }, 20);
      }function Ad(a) {
        var b = a.display.gutters,
            c = a.options.gutters;za(b);for (var d = 0; d < c.length; ++d) {
          var e = c[d],
              f = b.appendChild(t("div", null, "CodeMirror-gutter " + e));"CodeMirror-linenumbers" == e && (a.display.lineGutter = f, f.style.width = (a.display.lineNumWidth || 1) + "px");
        }b.style.display = d ? "" : "none";Cc(a);
      }function Cc(a) {
        a.display.sizer.style.marginLeft = a.display.gutters.offsetWidth + "px";
      }function Kb(a) {
        if (0 == a.height) return 0;for (var b = a.text.length, c, d = a; c = Aa(d, !0);) c = c.find(0, !0), d = c.from.line, b += c.from.ch - c.to.ch;for (d = a; c = Aa(d, !1);) c = c.find(0, !0), b -= d.text.length - c.from.ch, d = c.to.line, b += d.text.length - c.to.ch;return b;
      }function Dc(a) {
        var b = a.display;a = a.doc;b.maxLine = u(a, a.first);b.maxLineLength = Kb(b.maxLine);b.maxLineChanged = !0;a.iter(function (a) {
          var d = Kb(a);d > b.maxLineLength && (b.maxLineLength = d, b.maxLine = a);
        });
      }function wc(a) {
        var b = D(a.gutters, "CodeMirror-linenumbers");-1 == b && a.lineNumbers ? a.gutters = a.gutters.concat(["CodeMirror-linenumbers"]) : -1 < b && !a.lineNumbers && (a.gutters = a.gutters.slice(0), a.gutters.splice(b, 1));
      }function jb(a) {
        var b = a.display,
            c = b.gutters.offsetWidth,
            d = Math.round(a.doc.height + Ec(a.display));return { clientHeight: b.scroller.clientHeight, viewHeight: b.wrapper.clientHeight, scrollWidth: b.scroller.scrollWidth, clientWidth: b.scroller.clientWidth, viewWidth: b.wrapper.clientWidth, barLeft: a.options.fixedGutter ? c : 0, docHeight: d, scrollHeight: d + da(a) + b.barHeight, nativeBarWidth: b.nativeBarWidth, gutterWidth: c };
      }function Fc(a, b, c) {
        this.cm = c;var d = this.vert = t("div", [t("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"),
            e = this.horiz = t("div", [t("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar");a(d);a(e);v(d, "scroll", function () {
          d.clientHeight && b(d.scrollTop, "vertical");
        });v(e, "scroll", function () {
          e.clientWidth && b(e.scrollLeft, "horizontal");
        });this.checkedOverlay = !1;B && 8 > C && (this.horiz.style.minHeight = this.vert.style.minWidth = "18px");
      }function Gc() {}function Cd(a) {
        a.display.scrollbars && (a.display.scrollbars.clear(), a.display.scrollbars.addClass && kb(a.display.wrapper, a.display.scrollbars.addClass));a.display.scrollbars = new q.scrollbarModel[a.options.scrollbarStyle](function (b) {
          a.display.wrapper.insertBefore(b, a.display.scrollbarFiller);v(b, "mousedown", function () {
            a.state.focused && setTimeout(function () {
              a.display.input.focus();
            }, 0);
          });b.setAttribute("cm-not-content", "true");
        }, function (b, c) {
          "horizontal" == c ? Ma(a, b) : lb(a, b);
        }, a);a.display.scrollbars.addClass && mb(a.display.wrapper, a.display.scrollbars.addClass);
      }function Na(a, b) {
        b || (b = jb(a));var c = a.display.barWidth,
            d = a.display.barHeight;Jd(a, b);for (var e = 0; 4 > e && c != a.display.barWidth || d != a.display.barHeight; e++) c != a.display.barWidth && a.options.lineWrapping && Lb(a), Jd(a, jb(a)), c = a.display.barWidth, d = a.display.barHeight;
      }function Jd(a, b) {
        var c = a.display,
            d = c.scrollbars.update(b);c.sizer.style.paddingRight = (c.barWidth = d.right) + "px";c.sizer.style.paddingBottom = (c.barHeight = d.bottom) + "px";d.right && d.bottom ? (c.scrollbarFiller.style.display = "block", c.scrollbarFiller.style.height = d.bottom + "px", c.scrollbarFiller.style.width = d.right + "px") : c.scrollbarFiller.style.display = "";d.bottom && a.options.coverGutterNextToScrollbar && a.options.fixedGutter ? (c.gutterFiller.style.display = "block", c.gutterFiller.style.height = d.bottom + "px", c.gutterFiller.style.width = b.gutterWidth + "px") : c.gutterFiller.style.display = "";
      }function Hc(a, b, c) {
        var d = c && null != c.top ? Math.max(0, c.top) : a.scroller.scrollTop,
            d = Math.floor(d - a.lineSpace.offsetTop),
            e = c && null != c.bottom ? c.bottom : d + a.wrapper.clientHeight,
            d = Ba(b, d),
            e = Ba(b, e);if (c && c.ensure) {
          var f = c.ensure.from.line;c = c.ensure.to.line;f < d ? (d = f, e = Ba(b, ea(u(b, f)) + a.wrapper.clientHeight)) : Math.min(c, b.lastLine()) >= e && (d = Ba(b, ea(u(b, c)) - a.wrapper.clientHeight), e = c);
        }return { from: d, to: Math.max(e, d + 1) };
      }function Bc(a) {
        var b = a.display,
            c = b.view;if (b.alignWidgets || b.gutters.firstChild && a.options.fixedGutter) {
          for (var d = Ic(b) - b.scroller.scrollLeft + a.doc.scrollLeft, e = b.gutters.offsetWidth, f = d + "px", g = 0; g < c.length; g++) if (!c[g].hidden) {
            a.options.fixedGutter && c[g].gutter && (c[g].gutter.style.left = f);var h = c[g].alignable;if (h) for (var k = 0; k < h.length; k++) h[k].style.left = f;
          }a.options.fixedGutter && (b.gutters.style.left = d + e + "px");
        }
      }function Gd(a) {
        if (!a.options.lineNumbers) return !1;var b = a.doc,
            b = Jc(a.options, b.first + b.size - 1),
            c = a.display;if (b.length != c.lineNumChars) {
          var d = c.measure.appendChild(t("div", [t("div", b)], "CodeMirror-linenumber CodeMirror-gutter-elt")),
              e = d.firstChild.offsetWidth,
              d = d.offsetWidth - e;c.lineGutter.style.width = "";c.lineNumInnerWidth = Math.max(e, c.lineGutter.offsetWidth - d) + 1;c.lineNumWidth = c.lineNumInnerWidth + d;c.lineNumChars = c.lineNumInnerWidth ? b.length : -1;c.lineGutter.style.width = c.lineNumWidth + "px";Cc(a);return !0;
        }return !1;
      }function Jc(a, b) {
        return String(a.lineNumberFormatter(b + a.firstLineNumber));
      }function Ic(a) {
        return a.scroller.getBoundingClientRect().left - a.sizer.getBoundingClientRect().left;
      }function Mb(a, b, c) {
        var d = a.display;this.viewport = b;this.visible = Hc(d, a.doc, b);this.editorIsHidden = !d.wrapper.offsetWidth;this.wrapperHeight = d.wrapper.clientHeight;this.wrapperWidth = d.wrapper.clientWidth;
        this.oldDisplayWidth = pa(a);this.force = c;this.dims = Kc(a);this.events = [];
      }function Lc(a, b) {
        var c = a.display,
            d = a.doc;if (b.editorIsHidden) return qa(a), !1;if (!b.force && b.visible.from >= c.viewFrom && b.visible.to <= c.viewTo && (null == c.updateLineNumbers || c.updateLineNumbers >= c.viewTo) && c.renderedView == c.view && 0 == Kd(a)) return !1;Gd(a) && (qa(a), b.dims = Kc(a));var e = d.first + d.size,
            f = Math.max(b.visible.from - a.options.viewportMargin, d.first),
            g = Math.min(e, b.visible.to + a.options.viewportMargin);c.viewFrom < f && 20 > f - c.viewFrom && (f = Math.max(d.first, c.viewFrom));c.viewTo > g && 20 > c.viewTo - g && (g = Math.min(e, c.viewTo));ra && (f = Mc(a.doc, f), g = Ld(a.doc, g));d = f != c.viewFrom || g != c.viewTo || c.lastWrapHeight != b.wrapperHeight || c.lastWrapWidth != b.wrapperWidth;e = a.display;0 == e.view.length || f >= e.viewTo || g <= e.viewFrom ? (e.view = Nb(a, f, g), e.viewFrom = f) : (e.viewFrom > f ? e.view = Nb(a, f, e.viewFrom).concat(e.view) : e.viewFrom < f && (e.view = e.view.slice(Ca(a, f))), e.viewFrom = f, e.viewTo < g ? e.view = e.view.concat(Nb(a, e.viewTo, g)) : e.viewTo > g && (e.view = e.view.slice(0, Ca(a, g))));e.viewTo = g;c.viewOffset = ea(u(a.doc, c.viewFrom));a.display.mover.style.top = c.viewOffset + "px";g = Kd(a);if (!d && 0 == g && !b.force && c.renderedView == c.view && (null == c.updateLineNumbers || c.updateLineNumbers >= c.viewTo)) return !1;f = fa();4 < g && (c.lineDiv.style.display = "none");uf(a, c.updateLineNumbers, b.dims);4 < g && (c.lineDiv.style.display = "");c.renderedView = c.view;f && fa() != f && f.offsetHeight && f.focus();za(c.cursorDiv);za(c.selectionDiv);c.gutters.style.height = 0;d && (c.lastWrapHeight = b.wrapperHeight, c.lastWrapWidth = b.wrapperWidth, fb(a, 400));c.updateLineNumbers = null;return !0;
      }function Md(a, b) {
        for (var c = b.viewport, d = !0;; d = !1) {
          if (!d || !a.options.lineWrapping || b.oldDisplayWidth == pa(a)) if (c && null != c.top && (c = { top: Math.min(a.doc.height + Ec(a.display) - Nc(a), c.top) }), b.visible = Hc(a.display, a.doc, c), b.visible.from >= a.display.viewFrom && b.visible.to <= a.display.viewTo) break;if (!Lc(a, b)) break;Lb(a);d = jb(a);nb(a);Oc(a, d);Na(a, d);
        }b.signal(a, "update", a);if (a.display.viewFrom != a.display.reportedViewFrom || a.display.viewTo != a.display.reportedViewTo) b.signal(a, "viewportChange", a, a.display.viewFrom, a.display.viewTo), a.display.reportedViewFrom = a.display.viewFrom, a.display.reportedViewTo = a.display.viewTo;
      }function Pc(a, b) {
        var c = new Mb(a, b);if (Lc(a, c)) {
          Lb(a);Md(a, c);var d = jb(a);nb(a);Oc(a, d);Na(a, d);c.finish();
        }
      }function Oc(a, b) {
        a.display.sizer.style.minHeight = b.docHeight + "px";var c = b.docHeight + a.display.barHeight;a.display.heightForcer.style.top = c + "px";a.display.gutters.style.height = Math.max(c + da(a), b.clientHeight) + "px";
      }function Lb(a) {
        a = a.display;for (var b = a.lineDiv.offsetTop, c = 0; c < a.view.length; c++) {
          var d = a.view[c],
              e;if (!d.hidden) {
            if (B && 8 > C) {
              var f = d.node.offsetTop + d.node.offsetHeight;e = f - b;b = f;
            } else e = d.node.getBoundingClientRect(), e = e.bottom - e.top;f = d.line.height - e;2 > e && (e = xa(a));if (.001 < f || -.001 > f) if (ca(d.line, e), Nd(d.line), d.rest) for (e = 0; e < d.rest.length; e++) Nd(d.rest[e]);
          }
        }
      }function Nd(a) {
        if (a.widgets) for (var b = 0; b < a.widgets.length; ++b) a.widgets[b].height = a.widgets[b].node.offsetHeight;
      }function Kc(a) {
        for (var b = a.display, c = {}, d = {}, e = b.gutters.clientLeft, f = b.gutters.firstChild, g = 0; f; f = f.nextSibling, ++g) c[a.options.gutters[g]] = f.offsetLeft + f.clientLeft + e, d[a.options.gutters[g]] = f.clientWidth;return { fixedPos: Ic(b), gutterTotalWidth: b.gutters.offsetWidth, gutterLeft: c, gutterWidth: d, wrapperWidth: b.wrapper.clientWidth };
      }function uf(a, b, c) {
        function d(b) {
          var c = b.nextSibling;J && W && a.display.currentWheelTarget == b ? b.style.display = "none" : b.parentNode.removeChild(b);return c;
        }for (var e = a.display, f = a.options.lineNumbers, g = e.lineDiv, h = g.firstChild, k = e.view, e = e.viewFrom, l = 0; l < k.length; l++) {
          var m = k[l];if (!m.hidden) if (m.node && m.node.parentNode == g) {
            for (; h != m.node;) h = d(h);h = f && null != b && b <= e && m.lineNumber;m.changes && (-1 < D(m.changes, "gutter") && (h = !1), Od(a, m, e, c));h && (za(m.lineNumber), m.lineNumber.appendChild(document.createTextNode(Jc(a.options, e))));h = m.node.nextSibling;
          } else {
            var p = vf(a, m, e, c);g.insertBefore(p, h);
          }e += m.size;
        }for (; h;) h = d(h);
      }function Od(a, b, c, d) {
        for (var e = 0; e < b.changes.length; e++) {
          var f = b.changes[e];if ("text" == f) {
            var f = b,
                g = f.text.className,
                h = Pd(a, f);f.text == f.node && (f.node = h.pre);f.text.parentNode.replaceChild(h.pre, f.text);f.text = h.pre;h.bgClass != f.bgClass || h.textClass != f.textClass ? (f.bgClass = h.bgClass, f.textClass = h.textClass, Qc(f)) : g && (f.text.className = g);
          } else if ("gutter" == f) Qd(a, b, c, d);else if ("class" == f) Qc(b);else if ("widget" == f) {
            f = a;g = b;h = d;g.alignable && (g.alignable = null);for (var k = g.node.firstChild, l = void 0; k; k = l) l = k.nextSibling, "CodeMirror-linewidget" == k.className && g.node.removeChild(k);Rd(f, g, h);
          }
        }b.changes = null;
      }function Ob(a) {
        a.node == a.text && (a.node = t("div", null, null, "position: relative"), a.text.parentNode && a.text.parentNode.replaceChild(a.node, a.text), a.node.appendChild(a.text), B && 8 > C && (a.node.style.zIndex = 2));return a.node;
      }function Pd(a, b) {
        var c = a.display.externalMeasured;return c && c.line == b.line ? (a.display.externalMeasured = null, b.measure = c.measure, c.built) : Sd(a, b);
      }function Qc(a) {
        var b = a.bgClass ? a.bgClass + " " + (a.line.bgClass || "") : a.line.bgClass;b && (b += " CodeMirror-linebackground");if (a.background) b ? a.background.className = b : (a.background.parentNode.removeChild(a.background), a.background = null);else if (b) {
          var c = Ob(a);a.background = c.insertBefore(t("div", null, b), c.firstChild);
        }a.line.wrapClass ? Ob(a).className = a.line.wrapClass : a.node != a.text && (a.node.className = "");a.text.className = (a.textClass ? a.textClass + " " + (a.line.textClass || "") : a.line.textClass) || "";
      }function Qd(a, b, c, d) {
        b.gutter && (b.node.removeChild(b.gutter), b.gutter = null);var e = b.line.gutterMarkers;if (a.options.lineNumbers || e) {
          var f = Ob(b),
              g = b.gutter = t("div", null, "CodeMirror-gutter-wrapper", "left: " + (a.options.fixedGutter ? d.fixedPos : -d.gutterTotalWidth) + "px; width: " + d.gutterTotalWidth + "px");a.display.input.setUneditable(g);f.insertBefore(g, b.text);b.line.gutterClass && (g.className += " " + b.line.gutterClass);!a.options.lineNumbers || e && e["CodeMirror-linenumbers"] || (b.lineNumber = g.appendChild(t("div", Jc(a.options, c), "CodeMirror-linenumber CodeMirror-gutter-elt", "left: " + d.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + a.display.lineNumInnerWidth + "px")));if (e) for (b = 0; b < a.options.gutters.length; ++b) c = a.options.gutters[b], (f = e.hasOwnProperty(c) && e[c]) && g.appendChild(t("div", [f], "CodeMirror-gutter-elt", "left: " + d.gutterLeft[c] + "px; width: " + d.gutterWidth[c] + "px"));
        }
      }function vf(a, b, c, d) {
        var e = Pd(a, b);b.text = b.node = e.pre;e.bgClass && (b.bgClass = e.bgClass);e.textClass && (b.textClass = e.textClass);Qc(b);Qd(a, b, c, d);Rd(a, b, d);return b.node;
      }function Rd(a, b, c) {
        Td(a, b.line, b, c, !0);if (b.rest) for (var d = 0; d < b.rest.length; d++) Td(a, b.rest[d], b, c, !1);
      }function Td(a, b, c, d, e) {
        if (b.widgets) {
          var f = Ob(c),
              g = 0;for (b = b.widgets; g < b.length; ++g) {
            var h = b[g],
                k = t("div", [h.node], "CodeMirror-linewidget");h.handleMouseEvents || k.setAttribute("cm-ignore-events", "true");var l = h,
                m = k,
                p = d;if (l.noHScroll) {
              (c.alignable || (c.alignable = [])).push(m);var n = p.wrapperWidth;m.style.left = p.fixedPos + "px";l.coverGutter || (n -= p.gutterTotalWidth, m.style.paddingLeft = p.gutterTotalWidth + "px");m.style.width = n + "px";
            }l.coverGutter && (m.style.zIndex = 5, m.style.position = "relative", l.noHScroll || (m.style.marginLeft = -p.gutterTotalWidth + "px"));a.display.input.setUneditable(k);e && h.above ? f.insertBefore(k, c.gutter || c.text) : f.appendChild(k);L(h, "redraw");
          }
        }
      }function Rc(a) {
        return r(a.line, a.ch);
      }function Pb(a, b) {
        return 0 > y(a, b) ? b : a;
      }function Qb(a, b) {
        return 0 > y(a, b) ? a : b;
      }function Ud(a) {
        a.state.focused || (a.display.input.focus(), xc(a));
      }function Rb(a) {
        return a.options.readOnly || a.doc.cantEdit;
      }function Sc(a, b, c, d, e) {
        var f = a.doc;a.display.shift = !1;d || (d = f.sel);var g = sa(b),
            h = null;a.state.pasteIncoming && 1 < d.ranges.length && (X && X.join("\n") == b ? h = 0 == d.ranges.length % X.length && ob(X, sa) : g.length == d.ranges.length && (h = ob(g, function (a) {
          return [a];
        })));for (var k = d.ranges.length - 1; 0 <= k; k--) {
          var l = d.ranges[k],
              m = l.from(),
              p = l.to();l.empty() && (c && 0 < c ? m = r(m.line, m.ch - c) : a.state.overwrite && !a.state.pasteIncoming && (p = r(p.line, Math.min(u(f, p.line).text.length, p.ch + A(g).length))));var n = a.curOp.updateInput,
              m = { from: m, to: p, text: h ? h[k % h.length] : g, origin: e || (a.state.pasteIncoming ? "paste" : a.state.cutIncoming ? "cut" : "+input") };Oa(a.doc, m);L(a, "inputRead", a, m);if (b && !a.state.pasteIncoming && a.options.electricChars && a.options.smartIndent && 100 > l.head.ch && (!k || d.ranges[k - 1].head.line != l.head.line)) {
            l = a.getModeAt(l.head);m = ta(m);p = !1;if (l.electricChars) for (var E = 0; E < l.electricChars.length; E++) {
              if (-1 < b.indexOf(l.electricChars.charAt(E))) {
                p = pb(a, m.line, "smart");break;
              }
            } else l.electricInput && l.electricInput.test(u(f, m.line).text.slice(0, m.ch)) && (p = pb(a, m.line, "smart"));p && L(a, "electricInput", a, m.line);
          }
        }Pa(a);a.curOp.updateInput = n;a.curOp.typing = !0;a.state.pasteIncoming = a.state.cutIncoming = !1;
      }function Vd(a) {
        for (var b = [], c = [], d = 0; d < a.doc.sel.ranges.length; d++) {
          var e = a.doc.sel.ranges[d].head.line,
              e = { anchor: r(e, 0), head: r(e + 1, 0) };c.push(e);b.push(a.getRange(e.anchor, e.head));
        }return { text: b, ranges: c };
      }function Wd(a) {
        a.setAttribute("autocorrect", "off");a.setAttribute("autocapitalize", "off");a.setAttribute("spellcheck", "false");
      }function Tc(a) {
        this.cm = a;this.prevInput = "";this.pollingFast = !1;this.polling = new bb();this.hasSelection = this.inaccurateSelection = !1;this.composing = null;
      }function Xd() {
        var a = t("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"),
            b = t("div", [a], null, "overflow: hidden; position: relative; width: 3px; height: 0px;");J ? a.style.width = "1000px" : a.setAttribute("wrap", "off");Qa && (a.style.border = "1px solid black");Wd(a);return b;
      }function Uc(a) {
        this.cm = a;this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;this.polling = new bb();this.gracePeriod = !1;
      }function Yd(a, b) {
        var c = Vc(a, b.line);if (!c || c.hidden) return null;var d = u(a.doc, b.line),
            c = Zd(c, d, b.line);(d = Y(d)) && Sb(d, b.ch);d = $d(c.map, b.ch, "left");d.offset = "right" == d.collapse ? d.end : d.start;return d;
      }function Ra(a, b) {
        b && (a.bad = !0);return a;
      }function Tb(a, b, c) {
        var d;if (b == a.display.lineDiv) {
          d = a.display.lineDiv.childNodes[c];if (!d) return Ra(a.clipPos(r(a.display.viewTo - 1)), !0);b = null;c = 0;
        } else for (d = b;; d = d.parentNode) {
          if (!d || d == a.display.lineDiv) return null;if (d.parentNode && d.parentNode == a.display.lineDiv) break;
        }for (var e = 0; e < a.display.view.length; e++) {
          var f = a.display.view[e];if (f.node == d) return wf(f, b, c);
        }
      }function wf(a, b, c) {
        function d(b, c, d) {
          for (var e = -1; e < (l ? l.length : 0); e++) for (var f = 0 > e ? k.map : l[e], g = 0; g < f.length; g += 3) {
            var h = f[g + 2];if (h == b || h == c) {
              c = F(0 > e ? a.line : a.rest[e]);e = f[g] + d;if (0 > d || h != b) e = f[g + (d ? 1 : 0)];return r(c, e);
            }
          }
        }var e = a.text.firstChild,
            f = !1;if (!b || !Wc(e, b)) return Ra(r(F(a.line), 0), !0);if (b == e && (f = !0, b = e.childNodes[c], c = 0, !b)) return c = a.rest ? A(a.rest) : a.line, Ra(r(F(c), c.text.length), f);var g = 3 == b.nodeType ? b : null,
            h = b;g || 1 != b.childNodes.length || 3 != b.firstChild.nodeType || (g = b.firstChild, c && (c = g.nodeValue.length));for (; h.parentNode != e;) h = h.parentNode;
        var k = a.measure,
            l = k.maps;if (b = d(g, h, c)) return Ra(b, f);e = h.nextSibling;for (g = g ? g.nodeValue.length - c : 0; e; e = e.nextSibling) {
          if (b = d(e, e.firstChild, 0)) return Ra(r(b.line, b.ch - g), f);g += e.textContent.length;
        }h = h.previousSibling;for (g = c; h; h = h.previousSibling) {
          if (b = d(h, h.firstChild, -1)) return Ra(r(b.line, b.ch + g), f);g += e.textContent.length;
        }
      }function xf(a, b, c, d, e) {
        function f(a) {
          return function (b) {
            return b.id == a;
          };
        }function g(b) {
          if (1 == b.nodeType) {
            var c = b.getAttribute("cm-text");if (null != c) "" == c && (c = b.textContent.replace(/\u200b/g, "")), h += c;else {
              var c = b.getAttribute("cm-marker"),
                  p;if (c) b = a.findMarks(r(d, 0), r(e + 1, 0), f(+c)), b.length && (p = b[0].find()) && (h += Da(a.doc, p.from, p.to).join("\n"));else if ("false" != b.getAttribute("contenteditable")) {
                for (p = 0; p < b.childNodes.length; p++) g(b.childNodes[p]);/^(pre|div|p)$/i.test(b.nodeName) && (k = !0);
              }
            }
          } else 3 == b.nodeType && (b = b.nodeValue) && (k && (h += "\n", k = !1), h += b);
        }for (var h = "", k = !1;;) {
          g(b);if (b == c) break;b = b.nextSibling;
        }return h;
      }function la(a, b) {
        this.ranges = a;this.primIndex = b;
      }function z(a, b) {
        this.anchor = a;this.head = b;
      }function Z(a, b) {
        var c = a[b];a.sort(function (a, b) {
          return y(a.from(), b.from());
        });b = D(a, c);for (c = 1; c < a.length; c++) {
          var d = a[c],
              e = a[c - 1];if (0 <= y(e.to(), d.from())) {
            var f = Qb(e.from(), d.from()),
                g = Pb(e.to(), d.to()),
                d = e.empty() ? d.from() == d.head : e.from() == e.head;c <= b && --b;a.splice(--c, 2, new z(d ? g : f, d ? f : g));
          }
        }return new la(a, b);
      }function ga(a, b) {
        return new la([new z(a, b || a)], 0);
      }function w(a, b) {
        if (b.line < a.first) return r(a.first, 0);var c = a.first + a.size - 1;if (b.line > c) return r(c, u(a, c).text.length);var c = u(a, b.line).text.length,
            d = b.ch,
            c = null == d || d > c ? r(b.line, c) : 0 > d ? r(b.line, 0) : b;return c;
      }function qb(a, b) {
        return b >= a.first && b < a.first + a.size;
      }function rb(a, b, c, d) {
        return a.cm && a.cm.display.shift || a.extend ? (a = b.anchor, d && (b = 0 > y(c, a), b != 0 > y(d, a) ? (a = c, c = d) : b != 0 > y(c, d) && (c = d)), new z(a, c)) : new z(d || c, c);
      }function Ub(a, b, c, d) {
        H(a, new la([rb(a, a.sel.primary(), b, c)], 0), d);
      }function ae(a, b, c) {
        for (var d = [], e = 0; e < a.sel.ranges.length; e++) d[e] = rb(a, a.sel.ranges[e], b[e], null);b = Z(d, a.sel.primIndex);H(a, b, c);
      }function Xc(a, b, c, d) {
        var e = a.sel.ranges.slice(0);e[b] = c;H(a, Z(e, a.sel.primIndex), d);
      }function yf(a, b) {
        var c = { ranges: b.ranges, update: function (b) {
            this.ranges = [];for (var c = 0; c < b.length; c++) this.ranges[c] = new z(w(a, b[c].anchor), w(a, b[c].head));
          } };K(a, "beforeSelectionChange", a, c);a.cm && K(a.cm, "beforeSelectionChange", a.cm, c);return c.ranges != b.ranges ? Z(c.ranges, c.ranges.length - 1) : b;
      }function be(a, b, c) {
        var d = a.history.done,
            e = A(d);e && e.ranges ? (d[d.length - 1] = b, Vb(a, b, c)) : H(a, b, c);
      }function H(a, b, c) {
        Vb(a, b, c);b = a.sel;var d = a.cm ? a.cm.curOp.id : NaN,
            e = a.history,
            f = c && c.origin,
            g;if (!(g = d == e.lastSelOp) && (g = f && e.lastSelOrigin == f) && !(g = e.lastModTime == e.lastSelTime && e.lastOrigin == f)) {
          g = A(e.done);var h = f.charAt(0);g = "*" == h || "+" == h && g.ranges.length == b.ranges.length && g.somethingSelected() == b.somethingSelected() && new Date() - a.history.lastSelTime <= (a.cm ? a.cm.options.historyEventDelay : 500);
        }g ? e.done[e.done.length - 1] = b : Wb(b, e.done);e.lastSelTime = +new Date();e.lastSelOrigin = f;e.lastSelOp = d;c && !1 !== c.clearRedo && ce(e.undone);
      }function Vb(a, b, c) {
        if (S(a, "beforeSelectionChange") || a.cm && S(a.cm, "beforeSelectionChange")) b = yf(a, b);var d = c && c.bias || (0 > y(b.primary().head, a.sel.primary().head) ? -1 : 1);de(a, ee(a, b, d, !0));c && !1 === c.scroll || !a.cm || Pa(a.cm);
      }function de(a, b) {
        b.equals(a.sel) || (a.sel = b, a.cm && (a.cm.curOp.updateInput = a.cm.curOp.selectionChanged = !0, fe(a.cm)), L(a, "cursorActivity", a));
      }function ge(a) {
        de(a, ee(a, a.sel, null, !1), ha);
      }function ee(a, b, c, d) {
        for (var e, f = 0; f < b.ranges.length; f++) {
          var g = b.ranges[f],
              h = Xb(a, g.anchor, c, d),
              k = Xb(a, g.head, c, d);if (e || h != g.anchor || k != g.head) e || (e = b.ranges.slice(0, f)), e[f] = new z(h, k);
        }return e ? Z(e, b.primIndex) : b;
      }function Xb(a, b, c, d) {
        var e = !1,
            f = b,
            g = c || 1;a.cantEdit = !1;a: for (;;) {
          var h = u(a, f.line);if (h.markedSpans) for (var k = 0; k < h.markedSpans.length; ++k) {
            var l = h.markedSpans[k],
                m = l.marker;if ((null == l.from || (m.inclusiveLeft ? l.from <= f.ch : l.from < f.ch)) && (null == l.to || (m.inclusiveRight ? l.to >= f.ch : l.to > f.ch))) {
              if (d && (K(m, "beforeCursorEnter"), m.explicitlyCleared)) if (h.markedSpans) {
                --k;continue;
              } else break;if (m.atomic) {
                k = m.find(0 > g ? -1 : 1);if (0 == y(k, f) && (k.ch += g, 0 > k.ch ? k = k.line > a.first ? w(a, r(k.line - 1)) : null : k.ch > h.text.length && (k = k.line < a.first + a.size - 1 ? r(k.line + 1, 0) : null), !k)) {
                  if (e) {
                    if (!d) return Xb(a, b, c, !0);a.cantEdit = !0;return r(a.first, 0);
                  }e = !0;k = b;g = -g;
                }f = k;continue a;
              }
            }
          }return f;
        }
      }function nb(a) {
        a.display.input.showSelection(a.display.input.prepareSelection());
      }function he(a, b) {
        for (var c = a.doc, d = {}, e = d.cursors = document.createDocumentFragment(), f = d.selection = document.createDocumentFragment(), g = 0; g < c.sel.ranges.length; g++) if (!1 !== b || g != c.sel.primIndex) {
          var h = c.sel.ranges[g],
              k = h.empty();if (k || a.options.showCursorWhenSelecting) {
            var l = a,
                m = e,
                p = ma(l, h.head, "div", null, null, !l.options.singleCursorHeightPerLine),
                n = m.appendChild(t("div", " ", "CodeMirror-cursor"));n.style.left = p.left + "px";n.style.top = p.top + "px";n.style.height = Math.max(0, p.bottom - p.top) * l.options.cursorHeight + "px";p.other && (l = m.appendChild(t("div", " ", "CodeMirror-cursor CodeMirror-secondarycursor")), l.style.display = "", l.style.left = p.other.left + "px", l.style.top = p.other.top + "px", l.style.height = .85 * (p.other.bottom - p.other.top) + "px");
          }k || zf(a, h, f);
        }return d;
      }function zf(a, b, c) {
        function d(a, b, c, d) {
          0 > b && (b = 0);b = Math.round(b);d = Math.round(d);h.appendChild(t("div", null, "CodeMirror-selected", "position: absolute; left: " + a + "px; top: " + b + "px; width: " + (null == c ? m - a : c) + "px; height: " + (d - b) + "px"));
        }function e(b, c, e) {
          var f = u(g, b),
              h = f.text.length,
              k,
              p;Af(Y(f), c || 0, null == e ? h : e, function (g, q, t) {
            var u = Yb(a, r(b, g), "div", f, "left"),
                v,
                w;g == q ? (v = u, t = w = u.left) : (v = Yb(a, r(b, q - 1), "div", f, "right"), "rtl" == t && (t = u, u = v, v = t), t = u.left, w = v.right);null == c && 0 == g && (t = l);3 < v.top - u.top && (d(t, u.top, null, u.bottom), t = l, u.bottom < v.top && d(t, u.bottom, null, v.top));null == e && q == h && (w = m);if (!k || u.top < k.top || u.top == k.top && u.left < k.left) k = u;if (!p || v.bottom > p.bottom || v.bottom == p.bottom && v.right > p.right) p = v;t < l + 1 && (t = l);d(t, v.top, w - t, v.bottom);
          });return { start: k, end: p };
        }var f = a.display,
            g = a.doc,
            h = document.createDocumentFragment(),
            k = ie(a.display),
            l = k.left,
            m = Math.max(f.sizerWidth, pa(a) - f.sizer.offsetLeft) - k.right,
            f = b.from();
        b = b.to();if (f.line == b.line) e(f.line, f.ch, b.ch);else {
          var p = u(g, f.line),
              k = u(g, b.line),
              k = ia(p) == ia(k),
              f = e(f.line, f.ch, k ? p.text.length + 1 : null).end;b = e(b.line, k ? 0 : null, b.ch).start;k && (f.top < b.top - 2 ? (d(f.right, f.top, null, f.bottom), d(l, b.top, b.left, b.bottom)) : d(f.right, f.top, b.left - f.right, f.bottom));f.bottom < b.top && d(l, f.bottom, null, b.top);
        }c.appendChild(h);
      }function Yc(a) {
        if (a.state.focused) {
          var b = a.display;clearInterval(b.blinker);var c = !0;b.cursorDiv.style.visibility = "";0 < a.options.cursorBlinkRate ? b.blinker = setInterval(function () {
            b.cursorDiv.style.visibility = (c = !c) ? "" : "hidden";
          }, a.options.cursorBlinkRate) : 0 > a.options.cursorBlinkRate && (b.cursorDiv.style.visibility = "hidden");
        }
      }function fb(a, b) {
        a.doc.mode.startState && a.doc.frontier < a.display.viewTo && a.state.highlight.set(b, cb(Bf, a));
      }function Bf(a) {
        var b = a.doc;b.frontier < b.first && (b.frontier = b.first);if (!(b.frontier >= a.display.viewTo)) {
          var c = +new Date() + a.options.workTime,
              d = Sa(b.mode, sb(a, b.frontier)),
              e = [];b.iter(b.frontier, Math.min(b.first + b.size, a.display.viewTo + 500), function (f) {
            if (b.frontier >= a.display.viewFrom) {
              var g = f.styles,
                  h = je(a, f, d, !0);f.styles = h.styles;var k = f.styleClasses;(h = h.classes) ? f.styleClasses = h : k && (f.styleClasses = null);k = !g || g.length != f.styles.length || k != h && (!k || !h || k.bgClass != h.bgClass || k.textClass != h.textClass);for (h = 0; !k && h < g.length; ++h) k = g[h] != f.styles[h];k && e.push(b.frontier);f.stateAfter = Sa(b.mode, d);
            } else Zc(a, f.text, d), f.stateAfter = 0 == b.frontier % 5 ? Sa(b.mode, d) : null;++b.frontier;if (+new Date() > c) return fb(a, a.options.workDelay), !0;
          });
          e.length && T(a, function () {
            for (var b = 0; b < e.length; b++) na(a, e[b], "text");
          });
        }
      }function Cf(a, b, c) {
        for (var d, e, f = a.doc, g = c ? -1 : b - (a.doc.mode.innerMode ? 1E3 : 100); b > g; --b) {
          if (b <= f.first) return f.first;var h = u(f, b - 1);if (h.stateAfter && (!c || b <= f.frontier)) return b;h = aa(h.text, null, a.options.tabSize);if (null == e || d > h) e = b - 1, d = h;
        }return e;
      }function sb(a, b, c) {
        var d = a.doc,
            e = a.display;if (!d.mode.startState) return !0;var f = Cf(a, b, c),
            g = f > d.first && u(d, f - 1).stateAfter,
            g = g ? Sa(d.mode, g) : Df(d.mode);d.iter(f, b, function (c) {
          Zc(a, c.text, g);c.stateAfter = f == b - 1 || 0 == f % 5 || f >= e.viewFrom && f < e.viewTo ? Sa(d.mode, g) : null;++f;
        });c && (d.frontier = f);return g;
      }function Ec(a) {
        return a.mover.offsetHeight - a.lineSpace.offsetHeight;
      }function ie(a) {
        if (a.cachedPaddingH) return a.cachedPaddingH;var b = U(a.measure, t("pre", "x")),
            b = window.getComputedStyle ? window.getComputedStyle(b) : b.currentStyle,
            b = { left: parseInt(b.paddingLeft), right: parseInt(b.paddingRight) };isNaN(b.left) || isNaN(b.right) || (a.cachedPaddingH = b);return b;
      }function da(a) {
        return Hd - a.display.nativeBarWidth;
      }
      function pa(a) {
        return a.display.scroller.clientWidth - da(a) - a.display.barWidth;
      }function Nc(a) {
        return a.display.scroller.clientHeight - da(a) - a.display.barHeight;
      }function Zd(a, b, c) {
        if (a.line == b) return { map: a.measure.map, cache: a.measure.cache };for (var d = 0; d < a.rest.length; d++) if (a.rest[d] == b) return { map: a.measure.maps[d], cache: a.measure.caches[d] };for (d = 0; d < a.rest.length; d++) if (F(a.rest[d]) > c) return { map: a.measure.maps[d], cache: a.measure.caches[d], before: !0 };
      }function Vc(a, b) {
        if (b >= a.display.viewFrom && b < a.display.viewTo) return a.display.view[Ca(a, b)];var c = a.display.externalMeasured;if (c && b >= c.lineN && b < c.lineN + c.size) return c;
      }function Zb(a, b) {
        var c = F(b),
            d = Vc(a, c);d && !d.text ? d = null : d && d.changes && Od(a, d, c, Kc(a));if (!d) {
          var e = ia(b);d = F(e);e = a.display.externalMeasured = new ke(a.doc, e, d);e.lineN = d;d = e.built = Sd(a, e);e.text = d.pre;U(a.display.lineMeasure, d.pre);d = e;
        }c = Zd(d, b, c);return { line: b, view: d, rect: null, map: c.map, cache: c.cache, before: c.before, hasHeights: !1 };
      }function $c(a, b, c, d, e) {
        b.before && (c = -1);var f = c + (d || "");if (b.cache.hasOwnProperty(f)) a = b.cache[f];else {
          b.rect || (b.rect = b.view.text.getBoundingClientRect());if (!b.hasHeights) {
            var g = b.view,
                h = b.rect,
                k = a.options.lineWrapping,
                l = k && pa(a);if (!g.measure.heights || k && g.measure.width != l) {
              var m = g.measure.heights = [];if (k) for (g.measure.width = l, g = g.text.firstChild.getClientRects(), k = 0; k < g.length - 1; k++) {
                var l = g[k],
                    p = g[k + 1];2 < Math.abs(l.bottom - p.bottom) && m.push((l.bottom + p.top) / 2 - h.top);
              }m.push(h.bottom - h.top);
            }b.hasHeights = !0;
          }g = d;k = $d(b.map, c, g);d = k.node;h = k.start;l = k.end;c = k.collapse;var n;if (3 == d.nodeType) {
            for (m = 0; 4 > m; m++) {
              for (; h && tb(b.line.text.charAt(k.coverStart + h));) --h;for (; k.coverStart + l < k.coverEnd && tb(b.line.text.charAt(k.coverStart + l));) ++l;if (B && 9 > C && 0 == h && l == k.coverEnd - k.coverStart) n = d.parentNode.getBoundingClientRect();else if (B && a.options.lineWrapping) {
                var E = Ea(d, h, l).getClientRects();n = E.length ? E["right" == g ? E.length - 1 : 0] : ad;
              } else n = Ea(d, h, l).getBoundingClientRect() || ad;if (n.left || n.right || 0 == h) break;l = h;--h;c = "right";
            }B && 11 > C && ((E = !window.screen || null == screen.logicalXDPI || screen.logicalXDPI == screen.deviceXDPI) || (null != bd ? E = bd : (m = U(a.display.measure, t("span", "x")), E = m.getBoundingClientRect(), m = Ea(m, 0, 1).getBoundingClientRect(), E = bd = 1 < Math.abs(E.left - m.left)), E = !E), E || (E = screen.logicalXDPI / screen.deviceXDPI, m = screen.logicalYDPI / screen.deviceYDPI, n = { left: n.left * E, right: n.right * E, top: n.top * m, bottom: n.bottom * m }));
          } else 0 < h && (c = g = "right"), n = a.options.lineWrapping && 1 < (E = d.getClientRects()).length ? E["right" == g ? E.length - 1 : 0] : d.getBoundingClientRect();!(B && 9 > C) || h || n && (n.left || n.right) || (n = (n = d.parentNode.getClientRects()[0]) ? { left: n.left, right: n.left + gb(a.display), top: n.top, bottom: n.bottom } : ad);E = n.top - b.rect.top;d = n.bottom - b.rect.top;h = (E + d) / 2;g = b.view.measure.heights;for (m = 0; m < g.length - 1 && !(h < g[m]); m++);c = { left: ("right" == c ? n.right : n.left) - b.rect.left, right: ("left" == c ? n.left : n.right) - b.rect.left, top: m ? g[m - 1] : 0, bottom: g[m] };n.left || n.right || (c.bogus = !0);a.options.singleCursorHeightPerLine || (c.rtop = E, c.rbottom = d);a = c;a.bogus || (b.cache[f] = a);
        }return { left: a.left, right: a.right, top: e ? a.rtop : a.top, bottom: e ? a.rbottom : a.bottom };
      }
      function $d(a, b, c) {
        for (var d, e, f, g, h = 0; h < a.length; h += 3) {
          var k = a[h],
              l = a[h + 1];if (b < k) e = 0, f = 1, g = "left";else if (b < l) e = b - k, f = e + 1;else if (h == a.length - 3 || b == l && a[h + 3] > b) f = l - k, e = f - 1, b >= l && (g = "right");if (null != e) {
            d = a[h + 2];k == l && c == (d.insertLeft ? "left" : "right") && (g = c);if ("left" == c && 0 == e) for (; h && a[h - 2] == a[h - 3] && a[h - 1].insertLeft;) d = a[(h -= 3) + 2], g = "left";if ("right" == c && e == l - k) for (; h < a.length - 3 && a[h + 3] == a[h + 4] && !a[h + 5].insertLeft;) d = a[(h += 3) + 2], g = "right";break;
          }
        }return { node: d, start: e, end: f, collapse: g, coverStart: k,
          coverEnd: l };
      }function le(a) {
        if (a.measure && (a.measure.cache = {}, a.measure.heights = null, a.rest)) for (var b = 0; b < a.rest.length; b++) a.measure.caches[b] = {};
      }function me(a) {
        a.display.externalMeasure = null;za(a.display.lineMeasure);for (var b = 0; b < a.display.view.length; b++) le(a.display.view[b]);
      }function hb(a) {
        me(a);a.display.cachedCharWidth = a.display.cachedTextHeight = a.display.cachedPaddingH = null;a.options.lineWrapping || (a.display.maxLineChanged = !0);a.display.lineNumChars = null;
      }function cd(a, b, c, d) {
        if (b.widgets) for (var e = 0; e < b.widgets.length; ++e) if (b.widgets[e].above) {
          var f = ub(b.widgets[e]);c.top += f;c.bottom += f;
        }if ("line" == d) return c;d || (d = "local");b = ea(b);b = "local" == d ? b + a.display.lineSpace.offsetTop : b - a.display.viewOffset;if ("page" == d || "window" == d) a = a.display.lineSpace.getBoundingClientRect(), b += a.top + ("window" == d ? 0 : window.pageYOffset || (document.documentElement || document.body).scrollTop), d = a.left + ("window" == d ? 0 : window.pageXOffset || (document.documentElement || document.body).scrollLeft), c.left += d, c.right += d;c.top += b;
        c.bottom += b;return c;
      }function ne(a, b, c) {
        if ("div" == c) return b;var d = b.left;b = b.top;"page" == c ? (d -= window.pageXOffset || (document.documentElement || document.body).scrollLeft, b -= window.pageYOffset || (document.documentElement || document.body).scrollTop) : "local" != c && c || (c = a.display.sizer.getBoundingClientRect(), d += c.left, b += c.top);a = a.display.lineSpace.getBoundingClientRect();return { left: d - a.left, top: b - a.top };
      }function Yb(a, b, c, d, e) {
        d || (d = u(a.doc, b.line));var f = d;b = b.ch;d = $c(a, Zb(a, d), b, e);return cd(a, f, d, c);
      }
      function ma(a, b, c, d, e, f) {
        function g(b, g) {
          var h = $c(a, e, b, g ? "right" : "left", f);g ? h.left = h.right : h.right = h.left;return cd(a, d, h, c);
        }function h(a, b) {
          var c = k[b],
              d = c.level % 2;a == dd(c) && b && c.level < k[b - 1].level ? (c = k[--b], a = ed(c) - (c.level % 2 ? 0 : 1), d = !0) : a == ed(c) && b < k.length - 1 && c.level < k[b + 1].level && (c = k[++b], a = dd(c) - c.level % 2, d = !1);return d && a == c.to && a > c.from ? g(a - 1) : g(a, d);
        }d = d || u(a.doc, b.line);e || (e = Zb(a, d));var k = Y(d);b = b.ch;if (!k) return g(b);var l = Sb(k, b),
            l = h(b, l);null != vb && (l.other = h(b, vb));return l;
      }function oe(a, b) {
        var c = 0;b = w(a.doc, b);a.options.lineWrapping || (c = gb(a.display) * b.ch);var d = u(a.doc, b.line),
            e = ea(d) + a.display.lineSpace.offsetTop;return { left: c, right: c, top: e, bottom: e + d.height };
      }function $b(a, b, c, d) {
        a = r(a, b);a.xRel = d;c && (a.outside = !0);return a;
      }function fd(a, b, c) {
        var d = a.doc;c += a.display.viewOffset;if (0 > c) return $b(d.first, 0, !0, -1);var e = Ba(d, c),
            f = d.first + d.size - 1;if (e > f) return $b(d.first + d.size - 1, u(d, f).text.length, !0, 1);0 > b && (b = 0);for (d = u(d, e);;) if (e = Ef(a, d, e, b, c), f = (d = Aa(d, !1)) && d.find(0, !0), d && (e.ch > f.from.ch || e.ch == f.from.ch && 0 < e.xRel)) e = F(d = f.to.line);else return e;
      }function Ef(a, b, c, d, e) {
        function f(d) {
          d = ma(a, r(c, d), "line", b, l);h = !0;if (g > d.bottom) return d.left - k;if (g < d.top) return d.left + k;h = !1;return d.left;
        }var g = e - ea(b),
            h = !1,
            k = 2 * a.display.wrapper.clientWidth,
            l = Zb(a, b),
            m = Y(b),
            p = b.text.length;e = ac(b);var n = bc(b),
            E = f(e),
            q = h,
            t = f(n),
            u = h;if (d > t) return $b(c, n, u, 1);for (;;) {
          if (m ? n == e || n == gd(b, e, 1) : 1 >= n - e) {
            m = d < E || d - E <= t - d ? e : n;for (d -= m == e ? E : t; tb(b.text.charAt(m));) ++m;return $b(c, m, m == e ? q : u, -1 > d ? -1 : 1 < d ? 1 : 0);
          }var v = Math.ceil(p / 2),
              w = e + v;if (m) for (var w = e, x = 0; x < v; ++x) w = gd(b, w, 1);x = f(w);if (x > d) {
            n = w;t = x;if (u = h) t += 1E3;p = v;
          } else e = w, E = x, q = h, p -= v;
        }
      }function xa(a) {
        if (null != a.cachedTextHeight) return a.cachedTextHeight;if (null == Fa) {
          Fa = t("pre");for (var b = 0; 49 > b; ++b) Fa.appendChild(document.createTextNode("x")), Fa.appendChild(t("br"));Fa.appendChild(document.createTextNode("x"));
        }U(a.measure, Fa);b = Fa.offsetHeight / 50;3 < b && (a.cachedTextHeight = b);za(a.measure);return b || 1;
      }function gb(a) {
        if (null != a.cachedCharWidth) return a.cachedCharWidth;
        var b = t("span", "xxxxxxxxxx"),
            c = t("pre", [b]);U(a.measure, c);b = b.getBoundingClientRect();b = (b.right - b.left) / 10;2 < b && (a.cachedCharWidth = b);return b || 10;
      }function Ja(a) {
        a.curOp = { cm: a, viewChanged: !1, startHeight: a.doc.height, forceUpdate: !1, updateInput: null, typing: !1, changeObjs: null, cursorActivityHandlers: null, cursorActivityCalled: 0, selectionChanged: !1, updateMaxLine: !1, scrollLeft: null, scrollTop: null, scrollToPos: null, focus: !1, id: ++Ff };Ta ? Ta.ops.push(a.curOp) : a.curOp.ownsGroup = Ta = { ops: [a.curOp], delayedCallbacks: [] };
      }
      function La(a) {
        if (a = a.curOp.ownsGroup) try {
          var b = a.delayedCallbacks,
              c = 0;do {
            for (; c < b.length; c++) b[c]();for (var d = 0; d < a.ops.length; d++) {
              var e = a.ops[d];if (e.cursorActivityHandlers) for (; e.cursorActivityCalled < e.cursorActivityHandlers.length;) e.cursorActivityHandlers[e.cursorActivityCalled++](e.cm);
            }
          } while (c < b.length);
        } finally {
          Ta = null;for (b = 0; b < a.ops.length; b++) a.ops[b].cm.curOp = null;a = a.ops;for (b = 0; b < a.length; b++) {
            var e = a[b],
                c = e.cm,
                f = d = c.display;!f.scrollbarsClipped && f.scroller.offsetWidth && (f.nativeBarWidth = f.scroller.offsetWidth - f.scroller.clientWidth, f.heightForcer.style.height = da(c) + "px", f.sizer.style.marginBottom = -f.nativeBarWidth + "px", f.sizer.style.borderRightWidth = da(c) + "px", f.scrollbarsClipped = !0);e.updateMaxLine && Dc(c);e.mustUpdate = e.viewChanged || e.forceUpdate || null != e.scrollTop || e.scrollToPos && (e.scrollToPos.from.line < d.viewFrom || e.scrollToPos.to.line >= d.viewTo) || d.maxLineChanged && c.options.lineWrapping;e.update = e.mustUpdate && new Mb(c, e.mustUpdate && { top: e.scrollTop, ensure: e.scrollToPos }, e.forceUpdate);
          }for (b = 0; b < a.length; b++) e = a[b], e.updatedDisplay = e.mustUpdate && Lc(e.cm, e.update);for (b = 0; b < a.length; b++) if (e = a[b], c = e.cm, d = c.display, e.updatedDisplay && Lb(c), e.barMeasure = jb(c), d.maxLineChanged && !c.options.lineWrapping && (f = void 0, f = d.maxLine.text.length, f = $c(c, Zb(c, d.maxLine), f, void 0), e.adjustWidthTo = f.left + 3, c.display.sizerWidth = e.adjustWidthTo, e.barMeasure.scrollWidth = Math.max(d.scroller.clientWidth, d.sizer.offsetLeft + e.adjustWidthTo + da(c) + c.display.barWidth), e.maxScrollLeft = Math.max(0, d.sizer.offsetLeft + e.adjustWidthTo - pa(c))), e.updatedDisplay || e.selectionChanged) e.preparedSelection = d.input.prepareSelection();for (b = 0; b < a.length; b++) e = a[b], c = e.cm, null != e.adjustWidthTo && (c.display.sizer.style.minWidth = e.adjustWidthTo + "px", e.maxScrollLeft < c.doc.scrollLeft && Ma(c, Math.min(c.display.scroller.scrollLeft, e.maxScrollLeft), !0), c.display.maxLineChanged = !1), e.preparedSelection && c.display.input.showSelection(e.preparedSelection), e.updatedDisplay && Oc(c, e.barMeasure), (e.updatedDisplay || e.startHeight != c.doc.height) && Na(c, e.barMeasure), e.selectionChanged && Yc(c), c.state.focused && e.updateInput && c.display.input.reset(e.typing), e.focus && e.focus == fa() && Ud(e.cm);for (b = 0; b < a.length; b++) {
            e = a[b];c = e.cm;d = c.display;f = c.doc;e.updatedDisplay && Md(c, e.update);null == d.wheelStartX || null == e.scrollTop && null == e.scrollLeft && !e.scrollToPos || (d.wheelStartX = d.wheelStartY = null);null == e.scrollTop || d.scroller.scrollTop == e.scrollTop && !e.forceScroll || (f.scrollTop = Math.max(0, Math.min(d.scroller.scrollHeight - d.scroller.clientHeight, e.scrollTop)), d.scrollbars.setScrollTop(f.scrollTop), d.scroller.scrollTop = f.scrollTop);null == e.scrollLeft || d.scroller.scrollLeft == e.scrollLeft && !e.forceScroll || (f.scrollLeft = Math.max(0, Math.min(d.scroller.scrollWidth - pa(c), e.scrollLeft)), d.scrollbars.setScrollLeft(f.scrollLeft), d.scroller.scrollLeft = f.scrollLeft, Bc(c));if (e.scrollToPos) {
              var g = void 0,
                  h = w(f, e.scrollToPos.from),
                  g = w(f, e.scrollToPos.to),
                  k = e.scrollToPos.margin;null == k && (k = 0);for (var l = 0; 5 > l; l++) {
                var m = !1,
                    p = ma(c, h),
                    n = g && g != h ? ma(c, g) : p,
                    n = cc(c, Math.min(p.left, n.left), Math.min(p.top, n.top) - k, Math.max(p.left, n.left), Math.max(p.bottom, n.bottom) + k),
                    q = c.doc.scrollTop,
                    r = c.doc.scrollLeft;null != n.scrollTop && (lb(c, n.scrollTop), 1 < Math.abs(c.doc.scrollTop - q) && (m = !0));null != n.scrollLeft && (Ma(c, n.scrollLeft), 1 < Math.abs(c.doc.scrollLeft - r) && (m = !0));if (!m) break;
              }g = p;e.scrollToPos.isCursor && c.state.focused && (ja(c, "scrollCursorIntoView") || (k = c.display, l = k.sizer.getBoundingClientRect(), h = null, 0 > g.top + l.top ? h = !0 : g.bottom + l.top > (window.innerHeight || document.documentElement.clientHeight) && (h = !1), null == h || Gf || (g = t("div", "​", null, "position: absolute; top: " + (g.top - k.viewOffset - c.display.lineSpace.offsetTop) + "px; height: " + (g.bottom - g.top + da(c) + k.barHeight) + "px; left: " + g.left + "px; width: 2px;"), c.display.lineSpace.appendChild(g), g.scrollIntoView(h), c.display.lineSpace.removeChild(g))));
            }h = e.maybeHiddenMarkers;g = e.maybeUnhiddenMarkers;if (h) for (k = 0; k < h.length; ++k) h[k].lines.length || K(h[k], "hide");if (g) for (k = 0; k < g.length; ++k) g[k].lines.length && K(g[k], "unhide");d.wrapper.offsetHeight && (f.scrollTop = c.display.scroller.scrollTop);e.changeObjs && K(c, "changes", c, e.changeObjs);e.update && e.update.finish();
          }
        }
      }function T(a, b) {
        if (a.curOp) return b();Ja(a);try {
          return b();
        } finally {
          La(a);
        }
      }function G(a, b) {
        return function () {
          if (a.curOp) return b.apply(a, arguments);Ja(a);try {
            return b.apply(a, arguments);
          } finally {
            La(a);
          }
        };
      }function M(a) {
        return function () {
          if (this.curOp) return a.apply(this, arguments);Ja(this);try {
            return a.apply(this, arguments);
          } finally {
            La(this);
          }
        };
      }function N(a) {
        return function () {
          var b = this.cm;if (!b || b.curOp) return a.apply(this, arguments);Ja(b);try {
            return a.apply(this, arguments);
          } finally {
            La(b);
          }
        };
      }function ke(a, b, c) {
        for (var d = this.line = b, e; d = Aa(d, !1);) d = d.find(1, !0).line, (e || (e = [])).push(d);this.size = (this.rest = e) ? F(A(this.rest)) - c + 1 : 1;this.node = this.text = null;this.hidden = ya(a, b);
      }function Nb(a, b, c) {
        var d = [],
            e;for (e = b; e < c;) b = new ke(a.doc, u(a.doc, e), e), e += b.size, d.push(b);return d;
      }function Q(a, b, c, d) {
        null == b && (b = a.doc.first);null == c && (c = a.doc.first + a.doc.size);d || (d = 0);var e = a.display;d && c < e.viewTo && (null == e.updateLineNumbers || e.updateLineNumbers > b) && (e.updateLineNumbers = b);a.curOp.viewChanged = !0;if (b >= e.viewTo) ra && Mc(a.doc, b) < e.viewTo && qa(a);else if (c <= e.viewFrom) ra && Ld(a.doc, c + d) > e.viewFrom ? qa(a) : (e.viewFrom += d, e.viewTo += d);else if (b <= e.viewFrom && c >= e.viewTo) qa(a);else if (b <= e.viewFrom) {
          var f = dc(a, c, c + d, 1);f ? (e.view = e.view.slice(f.index), e.viewFrom = f.lineN, e.viewTo += d) : qa(a);
        } else if (c >= e.viewTo) (f = dc(a, b, b, -1)) ? (e.view = e.view.slice(0, f.index), e.viewTo = f.lineN) : qa(a);else {
          var f = dc(a, b, b, -1),
              g = dc(a, c, c + d, 1);f && g ? (e.view = e.view.slice(0, f.index).concat(Nb(a, f.lineN, g.lineN)).concat(e.view.slice(g.index)), e.viewTo += d) : qa(a);
        }if (a = e.externalMeasured) c < a.lineN ? a.lineN += d : b < a.lineN + a.size && (e.externalMeasured = null);
      }function na(a, b, c) {
        a.curOp.viewChanged = !0;var d = a.display,
            e = a.display.externalMeasured;e && b >= e.lineN && b < e.lineN + e.size && (d.externalMeasured = null);b < d.viewFrom || b >= d.viewTo || (a = d.view[Ca(a, b)], null != a.node && (a = a.changes || (a.changes = []), -1 == D(a, c) && a.push(c)));
      }function qa(a) {
        a.display.viewFrom = a.display.viewTo = a.doc.first;a.display.view = [];a.display.viewOffset = 0;
      }function Ca(a, b) {
        if (b >= a.display.viewTo) return null;b -= a.display.viewFrom;if (0 > b) return null;for (var c = a.display.view, d = 0; d < c.length; d++) if (b -= c[d].size, 0 > b) return d;
      }function dc(a, b, c, d) {
        var e = Ca(a, b),
            f = a.display.view;if (!ra || c == a.doc.first + a.doc.size) return { index: e, lineN: c };for (var g = 0, h = a.display.viewFrom; g < e; g++) h += f[g].size;if (h != b) {
          if (0 < d) {
            if (e == f.length - 1) return null;b = h + f[e].size - b;e++;
          } else b = h - b;c += b;
        }for (; Mc(a.doc, c) != c;) {
          if (e == (0 > d ? 0 : f.length - 1)) return null;c += d * f[e - (0 > d ? 1 : 0)].size;e += d;
        }return { index: e, lineN: c };
      }function Kd(a) {
        a = a.display.view;for (var b = 0, c = 0; c < a.length; c++) {
          var d = a[c];d.hidden || d.node && !d.changes || ++b;
        }return b;
      }function sf(a) {
        function b() {
          d.activeTouch && (e = setTimeout(function () {
            d.activeTouch = null;
          }, 1E3), f = d.activeTouch, f.end = +new Date());
        }function c(a, b) {
          if (null == b.left) return !0;var c = b.left - a.left,
              d = b.top - a.top;return 400 < c * c + d * d;
        }var d = a.display;v(d.scroller, "mousedown", G(a, pe));B && 11 > C ? v(d.scroller, "dblclick", G(a, function (b) {
          if (!ja(a, b)) {
            var c = Ua(a, b);!c || hd(a, b, "gutterClick", !0, L) || oa(a.display, b) || (O(b), b = a.findWordAt(c), Ub(a.doc, b.anchor, b.head));
          }
        })) : v(d.scroller, "dblclick", function (b) {
          ja(a, b) || O(b);
        });id || v(d.scroller, "contextmenu", function (b) {
          qe(a, b);
        });var e,
            f = { end: 0 };v(d.scroller, "touchstart", function (a) {
          var b;1 != a.touches.length ? b = !1 : (b = a.touches[0], b = 1 >= b.radiusX && 1 >= b.radiusY);b || (clearTimeout(e), b = +new Date(), d.activeTouch = { start: b, moved: !1, prev: 300 >= b - f.end ? f : null }, 1 == a.touches.length && (d.activeTouch.left = a.touches[0].pageX, d.activeTouch.top = a.touches[0].pageY));
        });v(d.scroller, "touchmove", function () {
          d.activeTouch && (d.activeTouch.moved = !0);
        });v(d.scroller, "touchend", function (e) {
          var f = d.activeTouch;if (f && !oa(d, e) && null != f.left && !f.moved && 300 > new Date() - f.start) {
            var g = a.coordsChar(d.activeTouch, "page"),
                f = !f.prev || c(f, f.prev) ? new z(g, g) : !f.prev.prev || c(f, f.prev.prev) ? a.findWordAt(g) : new z(r(g.line, 0), w(a.doc, r(g.line + 1, 0)));a.setSelection(f.anchor, f.head);a.focus();O(e);
          }b();
        });v(d.scroller, "touchcancel", b);v(d.scroller, "scroll", function () {
          d.scroller.clientHeight && (lb(a, d.scroller.scrollTop), Ma(a, d.scroller.scrollLeft, !0), K(a, "scroll", a));
        });v(d.scroller, "mousewheel", function (b) {
          re(a, b);
        });v(d.scroller, "DOMMouseScroll", function (b) {
          re(a, b);
        });v(d.wrapper, "scroll", function () {
          d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;
        });d.dragFunctions = { simple: function (b) {
            ja(a, b) || jd(b);
          }, start: function (b) {
            if (B && (!a.state.draggingText || 100 > +new Date() - se)) jd(b);else if (!ja(a, b) && !oa(a.display, b) && (b.dataTransfer.setData("Text", a.getSelection()), b.dataTransfer.setDragImage && !te)) {
              var c = t("img", null, null, "position: fixed; left: 0; top: 0;");c.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw\x3d\x3d";ba && (c.width = c.height = 1, a.display.wrapper.appendChild(c), c._top = c.offsetTop);b.dataTransfer.setDragImage(c, 0, 0);ba && c.parentNode.removeChild(c);
            }
          }, drop: G(a, Hf) };var g = d.input.getField();v(g, "keyup", function (b) {
          ue.call(a, b);
        });v(g, "keydown", G(a, ve));v(g, "keypress", G(a, we));v(g, "focus", cb(xc, a));v(g, "blur", cb(db, a));
      }function If(a) {
        var b = a.display;
        if (b.lastWrapHeight != b.wrapper.clientHeight || b.lastWrapWidth != b.wrapper.clientWidth) b.cachedCharWidth = b.cachedTextHeight = b.cachedPaddingH = null, b.scrollbarsClipped = !1, a.setSize();
      }function oa(a, b) {
        for (var c = b.target || b.srcElement; c != a.wrapper; c = c.parentNode) if (!c || 1 == c.nodeType && "true" == c.getAttribute("cm-ignore-events") || c.parentNode == a.sizer && c != a.mover) return !0;
      }function Ua(a, b, c, d) {
        var e = a.display;if (!c && "true" == (b.target || b.srcElement).getAttribute("cm-not-content")) return null;var f, g;c = e.lineSpace.getBoundingClientRect();
        try {
          f = b.clientX - c.left, g = b.clientY - c.top;
        } catch (h) {
          return null;
        }b = fd(a, f, g);var k;d && 1 == b.xRel && (k = u(a.doc, b.line).text).length == b.ch && (d = aa(k, k.length, a.options.tabSize) - k.length, b = r(b.line, Math.max(0, Math.round((f - ie(a.display).left) / gb(a.display)) - d)));return b;
      }function pe(a) {
        var b = this.display;if (!(b.activeTouch && b.input.supportsTouch() || ja(this, a))) if (b.shift = a.shiftKey, oa(b, a)) J || (b.scroller.draggable = !1, setTimeout(function () {
          b.scroller.draggable = !0;
        }, 100));else if (!hd(this, a, "gutterClick", !0, L)) {
          var c = Ua(this, a);window.focus();switch (xe(a)) {case 1:
              c ? Jf(this, a, c) : (a.target || a.srcElement) == b.scroller && O(a);break;case 2:
              J && (this.state.lastMiddleDown = +new Date());c && Ub(this.doc, c);setTimeout(function () {
                b.input.focus();
              }, 20);O(a);break;case 3:
              id ? qe(this, a) : Kf(this);}
        }
      }function Jf(a, b, c) {
        B ? setTimeout(cb(Ud, a), 0) : a.curOp.focus = fa();var d = +new Date(),
            e;ec && ec.time > d - 400 && 0 == y(ec.pos, c) ? e = "triple" : fc && fc.time > d - 400 && 0 == y(fc.pos, c) ? (e = "double", ec = { time: d, pos: c }) : (e = "single", fc = { time: d, pos: c });var d = a.doc.sel,
            f = W ? b.metaKey : b.ctrlKey,
            g;a.options.dragDrop && Lf && !Rb(a) && "single" == e && -1 < (g = d.contains(c)) && !d.ranges[g].empty() ? Mf(a, b, c, f) : Nf(a, b, c, e, f);
      }function Mf(a, b, c, d) {
        var e = a.display,
            f = +new Date(),
            g = G(a, function (h) {
          J && (e.scroller.draggable = !1);a.state.draggingText = !1;ka(document, "mouseup", g);ka(e.scroller, "drop", g);10 > Math.abs(b.clientX - h.clientX) + Math.abs(b.clientY - h.clientY) && (O(h), !d && +new Date() - 200 < f && Ub(a.doc, c), J || B && 9 == C ? setTimeout(function () {
            document.body.focus();e.input.focus();
          }, 20) : e.input.focus());
        });
        J && (e.scroller.draggable = !0);a.state.draggingText = g;e.scroller.dragDrop && e.scroller.dragDrop();v(document, "mouseup", g);v(e.scroller, "drop", g);
      }function Nf(a, b, c, d, e) {
        function f(b) {
          if (0 != y(x, b)) if (x = b, "rect" == d) {
            for (var e = [], f = a.options.tabSize, g = aa(u(l, c.line).text, c.ch, f), h = aa(u(l, b.line).text, b.ch, f), k = Math.min(g, h), g = Math.max(g, h), h = Math.min(c.line, b.line), q = Math.min(a.lastLine(), Math.max(c.line, b.line)); h <= q; h++) {
              var E = u(l, h).text,
                  t = ye(E, k, f);k == g ? e.push(new z(r(h, t), r(h, t))) : E.length > t && e.push(new z(r(h, t), r(h, ye(E, g, f))));
            }e.length || e.push(new z(c, c));H(l, Z(n.ranges.slice(0, p).concat(e), p), { origin: "*mouse", scroll: !1 });a.scrollIntoView(b);
          } else e = m, f = e.anchor, k = b, "single" != d && (b = "double" == d ? a.findWordAt(b) : new z(r(b.line, 0), w(l, r(b.line + 1, 0))), 0 < y(b.anchor, f) ? (k = b.head, f = Qb(e.from(), b.anchor)) : (k = b.anchor, f = Pb(e.to(), b.head))), e = n.ranges.slice(0), e[p] = new z(w(l, f), k), H(l, Z(e, p), kd);
        }function g(b) {
          var c = ++A,
              e = Ua(a, b, !0, "rect" == d);if (e) if (0 != y(e, x)) {
            a.curOp.focus = fa();f(e);var h = Hc(k, l);(e.line >= h.to || e.line < h.from) && setTimeout(G(a, function () {
              A == c && g(b);
            }), 150);
          } else {
            var m = b.clientY < B.top ? -20 : b.clientY > B.bottom ? 20 : 0;m && setTimeout(G(a, function () {
              A == c && (k.scroller.scrollTop += m, g(b));
            }), 50);
          }
        }function h(a) {
          A = Infinity;O(a);k.input.focus();ka(document, "mousemove", F);ka(document, "mouseup", C);l.history.lastSelOrigin = null;
        }var k = a.display,
            l = a.doc;O(b);var m,
            p,
            n = l.sel,
            q = n.ranges;e && !b.shiftKey ? (p = l.sel.contains(c), m = -1 < p ? q[p] : new z(c, c)) : (m = l.sel.primary(), p = l.sel.primIndex);if (b.altKey) d = "rect", e || (m = new z(c, c)), c = Ua(a, b, !0, !0), p = -1;else if ("double" == d) {
          var t = a.findWordAt(c);m = a.display.shift || l.extend ? rb(l, m, t.anchor, t.head) : t;
        } else "triple" == d ? (t = new z(r(c.line, 0), w(l, r(c.line + 1, 0))), m = a.display.shift || l.extend ? rb(l, m, t.anchor, t.head) : t) : m = rb(l, m, c);e ? -1 == p ? (p = q.length, H(l, Z(q.concat([m]), p), { scroll: !1, origin: "*mouse" })) : 1 < q.length && q[p].empty() && "single" == d && !b.shiftKey ? (H(l, Z(q.slice(0, p).concat(q.slice(p + 1)), 0)), n = l.sel) : Xc(l, p, m, kd) : (p = 0, H(l, new la([m], 0), kd), n = l.sel);var x = c,
            B = k.wrapper.getBoundingClientRect(),
            A = 0,
            F = G(a, function (a) {
          xe(a) ? g(a) : h(a);
        }),
            C = G(a, h);v(document, "mousemove", F);v(document, "mouseup", C);
      }function hd(a, b, c, d, e) {
        try {
          var f = b.clientX,
              g = b.clientY;
        } catch (h) {
          return !1;
        }if (f >= Math.floor(a.display.gutters.getBoundingClientRect().right)) return !1;d && O(b);d = a.display;var k = d.lineDiv.getBoundingClientRect();if (g > k.bottom || !S(a, c)) return ld(b);g -= k.top - d.viewOffset;for (k = 0; k < a.options.gutters.length; ++k) {
          var l = d.gutters.childNodes[k];if (l && l.getBoundingClientRect().right >= f) return f = Ba(a.doc, g), e(a, c, a, f, a.options.gutters[k], b), ld(b);
        }
      }function Hf(a) {
        var b = this;if (!ja(b, a) && !oa(b.display, a)) {
          O(a);B && (se = +new Date());var c = Ua(b, a, !0),
              d = a.dataTransfer.files;if (c && !Rb(b)) if (d && d.length && window.FileReader && window.File) {
            var e = d.length,
                f = Array(e),
                g = 0;a = function (a, d) {
              var h = new FileReader();h.onload = G(b, function () {
                f[d] = h.result;if (++g == e) {
                  c = w(b.doc, c);var a = { from: c, to: c, text: sa(f.join("\n")), origin: "paste" };Oa(b.doc, a);be(b.doc, ga(c, ta(a)));
                }
              });h.readAsText(a);
            };for (var h = 0; h < e; ++h) a(d[h], h);
          } else if (b.state.draggingText && -1 < b.doc.sel.contains(c)) b.state.draggingText(a), setTimeout(function () {
            b.display.input.focus();
          }, 20);else try {
            if (f = a.dataTransfer.getData("Text")) {
              if (b.state.draggingText && (W ? !a.altKey : !a.ctrlKey)) var k = b.listSelections();Vb(b.doc, ga(c, c));if (k) for (h = 0; h < k.length; ++h) wb(b.doc, "", k[h].anchor, k[h].head, "drag");b.replaceSelection(f, "around", "paste");b.display.input.focus();
            }
          } catch (l) {}
        }
      }function lb(a, b) {
        2 > Math.abs(a.doc.scrollTop - b) || (a.doc.scrollTop = b, wa || Pc(a, { top: b }), a.display.scroller.scrollTop != b && (a.display.scroller.scrollTop = b), a.display.scrollbars.setScrollTop(b), wa && Pc(a), fb(a, 100));
      }function Ma(a, b, c) {
        (c ? b == a.doc.scrollLeft : 2 > Math.abs(a.doc.scrollLeft - b)) || (b = Math.min(b, a.display.scroller.scrollWidth - a.display.scroller.clientWidth), a.doc.scrollLeft = b, Bc(a), a.display.scroller.scrollLeft != b && (a.display.scroller.scrollLeft = b), a.display.scrollbars.setScrollLeft(b));
      }function re(a, b) {
        var c = ze(b),
            d = c.x,
            c = c.y,
            e = a.display,
            f = e.scroller;if (d && f.scrollWidth > f.clientWidth || c && f.scrollHeight > f.clientHeight) {
          if (c && W && J) {
            var g = b.target,
                h = e.view;a: for (; g != f; g = g.parentNode) for (var k = 0; k < h.length; k++) if (h[k].node == g) {
              a.display.currentWheelTarget = g;break a;
            }
          }!d || wa || ba || null == R ? (c && null != R && (g = c * R, h = a.doc.scrollTop, k = h + e.wrapper.clientHeight, 0 > g ? h = Math.max(0, h + g - 50) : k = Math.min(a.doc.height, k + g + 50), Pc(a, { top: h, bottom: k })), 20 > gc && (null == e.wheelStartX ? (e.wheelStartX = f.scrollLeft, e.wheelStartY = f.scrollTop, e.wheelDX = d, e.wheelDY = c, setTimeout(function () {
            if (null != e.wheelStartX) {
              var a = f.scrollLeft - e.wheelStartX,
                  b = f.scrollTop - e.wheelStartY,
                  a = b && e.wheelDY && b / e.wheelDY || a && e.wheelDX && a / e.wheelDX;e.wheelStartX = e.wheelStartY = null;a && (R = (R * gc + a) / (gc + 1), ++gc);
            }
          }, 200)) : (e.wheelDX += d, e.wheelDY += c))) : (c && lb(a, Math.max(0, Math.min(f.scrollTop + c * R, f.scrollHeight - f.clientHeight))), Ma(a, Math.max(0, Math.min(f.scrollLeft + d * R, f.scrollWidth - f.clientWidth))), O(b), e.wheelStartX = null);
        }
      }function hc(a, b, c) {
        if ("string" == typeof b && (b = ic[b], !b)) return !1;a.display.input.ensurePolled();var d = a.display.shift,
            e = !1;try {
          Rb(a) && (a.state.suppressEdits = !0), c && (a.display.shift = !1), e = b(a) != Ae;
        } finally {
          a.display.shift = d, a.state.suppressEdits = !1;
        }return e;
      }function Of(a, b, c) {
        for (var d = 0; d < a.state.keyMaps.length; d++) {
          var e = xb(b, a.state.keyMaps[d], c, a);if (e) return e;
        }return a.options.extraKeys && xb(b, a.options.extraKeys, c, a) || xb(b, a.options.keyMap, c, a);
      }function jc(a, b, c, d) {
        var e = a.state.keySeq;if (e) {
          if (Pf(b)) return "handled";Qf.set(50, function () {
            a.state.keySeq == e && (a.state.keySeq = null, a.display.input.reset());
          });b = e + " " + b;
        }d = Of(a, b, d);"multi" == d && (a.state.keySeq = b);"handled" == d && L(a, "keyHandled", a, b, c);if ("handled" == d || "multi" == d) O(c), Yc(a);return e && !d && /\'$/.test(b) ? (O(c), !0) : !!d;
      }function Be(a, b) {
        var c = Rf(b, !0);return c ? b.shiftKey && !a.state.keySeq ? jc(a, "Shift-" + c, b, function (b) {
          return hc(a, b, !0);
        }) || jc(a, c, b, function (b) {
          if ("string" == typeof b ? /^go[A-Z]/.test(b) : b.motion) return hc(a, b);
        }) : jc(a, c, b, function (b) {
          return hc(a, b);
        }) : !1;
      }function Sf(a, b, c) {
        return jc(a, "'" + c + "'", b, function (b) {
          return hc(a, b, !0);
        });
      }function ve(a) {
        this.curOp.focus = fa();if (!ja(this, a)) {
          B && 11 > C && 27 == a.keyCode && (a.returnValue = !1);var b = a.keyCode;this.display.shift = 16 == b || a.shiftKey;var c = Be(this, a);ba && (md = c ? b : null, !c && 88 == b && !Ce && (W ? a.metaKey : a.ctrlKey) && this.replaceSelection("", null, "cut"));18 != b || /\bCodeMirror-crosshair\b/.test(this.display.lineDiv.className) || Tf(this);
        }
      }function Tf(a) {
        function b(a) {
          18 != a.keyCode && a.altKey || (kb(c, "CodeMirror-crosshair"), ka(document, "keyup", b), ka(document, "mouseover", b));
        }var c = a.display.lineDiv;mb(c, "CodeMirror-crosshair");v(document, "keyup", b);v(document, "mouseover", b);
      }function ue(a) {
        16 == a.keyCode && (this.doc.sel.shift = !1);ja(this, a);
      }function we(a) {
        if (!(oa(this.display, a) || ja(this, a) || a.ctrlKey && !a.altKey || W && a.metaKey)) {
          var b = a.keyCode,
              c = a.charCode;if (ba && b == md) md = null, O(a);else if (!ba || a.which && !(10 > a.which) || !Be(this, a)) if (b = String.fromCharCode(null == c ? b : c), !Sf(this, a, b)) this.display.input.onKeyPress(a);
        }
      }function Kf(a) {
        a.state.delayingBlurEvent = !0;setTimeout(function () {
          a.state.delayingBlurEvent && (a.state.delayingBlurEvent = !1, db(a));
        }, 100);
      }function xc(a) {
        a.state.delayingBlurEvent && (a.state.delayingBlurEvent = !1);"nocursor" != a.options.readOnly && (a.state.focused || (K(a, "focus", a), a.state.focused = !0, mb(a.display.wrapper, "CodeMirror-focused"), a.curOp || a.display.selForContextMenu == a.doc.sel || (a.display.input.reset(), J && setTimeout(function () {
          a.display.input.reset(!0);
        }, 20)), a.display.input.receivedFocus()), Yc(a));
      }function db(a) {
        a.state.delayingBlurEvent || (a.state.focused && (K(a, "blur", a), a.state.focused = !1, kb(a.display.wrapper, "CodeMirror-focused")), clearInterval(a.display.blinker), setTimeout(function () {
          a.state.focused || (a.display.shift = !1);
        }, 150));
      }function qe(a, b) {
        var c;(c = oa(a.display, b)) || (c = S(a, "gutterContextMenu") ? hd(a, b, "gutterContextMenu", !1, K) : !1);if (!c) a.display.input.onContextMenu(b);
      }function De(a, b) {
        if (0 > y(a, b.from)) return a;if (0 >= y(a, b.to)) return ta(b);var c = a.line + b.text.length - (b.to.line - b.from.line) - 1,
            d = a.ch;a.line == b.to.line && (d += ta(b).ch - b.to.ch);return r(c, d);
      }function nd(a, b) {
        for (var c = [], d = 0; d < a.sel.ranges.length; d++) {
          var e = a.sel.ranges[d];c.push(new z(De(e.anchor, b), De(e.head, b)));
        }return Z(c, a.sel.primIndex);
      }function Ee(a, b, c) {
        return a.line == b.line ? r(c.line, a.ch - b.ch + c.ch) : r(c.line + (a.line - b.line), a.ch);
      }function Fe(a, b, c) {
        b = { canceled: !1, from: b.from, to: b.to, text: b.text, origin: b.origin, cancel: function () {
            this.canceled = !0;
          } };c && (b.update = function (b, c, f, g) {
          b && (this.from = w(a, b));c && (this.to = w(a, c));f && (this.text = f);void 0 !== g && (this.origin = g);
        });K(a, "beforeChange", a, b);a.cm && K(a.cm, "beforeChange", a.cm, b);return b.canceled ? null : { from: b.from, to: b.to, text: b.text, origin: b.origin };
      }
      function Oa(a, b, c) {
        if (a.cm) {
          if (!a.cm.curOp) return G(a.cm, Oa)(a, b, c);if (a.cm.state.suppressEdits) return;
        }if (S(a, "beforeChange") || a.cm && S(a.cm, "beforeChange")) if (b = Fe(a, b, !0), !b) return;if (c = Ge && !c && Uf(a, b.from, b.to)) for (var d = c.length - 1; 0 <= d; --d) He(a, { from: c[d].from, to: c[d].to, text: d ? [""] : b.text });else He(a, b);
      }function He(a, b) {
        if (1 != b.text.length || "" != b.text[0] || 0 != y(b.from, b.to)) {
          var c = nd(a, b);Ie(a, b, c, a.cm ? a.cm.curOp.id : NaN);yb(a, b, c, od(a, b));var d = [];Ga(a, function (a, c) {
            c || -1 != D(d, a.history) || (Je(a.history, b), d.push(a.history));yb(a, b, null, od(a, b));
          });
        }
      }function kc(a, b, c) {
        if (!a.cm || !a.cm.state.suppressEdits) {
          for (var d = a.history, e, f = a.sel, g = "undo" == b ? d.done : d.undone, h = "undo" == b ? d.undone : d.done, k = 0; k < g.length && (e = g[k], c ? !e.ranges || e.equals(a.sel) : e.ranges); k++);if (k != g.length) {
            for (d.lastOrigin = d.lastSelOrigin = null;;) if (e = g.pop(), e.ranges) {
              Wb(e, h);if (c && !e.equals(a.sel)) {
                H(a, e, { clearRedo: !1 });return;
              }f = e;
            } else break;c = [];Wb(f, h);h.push({ changes: c, generation: d.generation });d.generation = e.generation || ++d.maxGeneration;
            d = S(a, "beforeChange") || a.cm && S(a.cm, "beforeChange");for (k = e.changes.length - 1; 0 <= k; --k) {
              var l = e.changes[k];l.origin = b;if (d && !Fe(a, l, !1)) {
                g.length = 0;break;
              }c.push(pd(a, l));f = k ? nd(a, l) : A(g);yb(a, l, f, Ke(a, l));!k && a.cm && a.cm.scrollIntoView({ from: l.from, to: ta(l) });var m = [];Ga(a, function (a, b) {
                b || -1 != D(m, a.history) || (Je(a.history, l), m.push(a.history));yb(a, l, null, Ke(a, l));
              });
            }
          }
        }
      }function Le(a, b) {
        if (0 != b && (a.first += b, a.sel = new la(ob(a.sel.ranges, function (a) {
          return new z(r(a.anchor.line + b, a.anchor.ch), r(a.head.line + b, a.head.ch));
        }), a.sel.primIndex), a.cm)) {
          Q(a.cm, a.first, a.first - b, b);for (var c = a.cm.display, d = c.viewFrom; d < c.viewTo; d++) na(a.cm, d, "gutter");
        }
      }function yb(a, b, c, d) {
        if (a.cm && !a.cm.curOp) return G(a.cm, yb)(a, b, c, d);if (b.to.line < a.first) Le(a, b.text.length - 1 - (b.to.line - b.from.line));else if (!(b.from.line > a.lastLine())) {
          if (b.from.line < a.first) {
            var e = b.text.length - 1 - (a.first - b.from.line);Le(a, e);b = { from: r(a.first, 0), to: r(b.to.line + e, b.to.ch), text: [A(b.text)], origin: b.origin };
          }e = a.lastLine();b.to.line > e && (b = { from: b.from, to: r(e, u(a, e).text.length), text: [b.text[0]], origin: b.origin });b.removed = Da(a, b.from, b.to);c || (c = nd(a, b));a.cm ? Vf(a.cm, b, d) : qd(a, b, d);Vb(a, c, ha);
        }
      }function Vf(a, b, c) {
        var d = a.doc,
            e = a.display,
            f = b.from,
            g = b.to,
            h = !1,
            k = f.line;a.options.lineWrapping || (k = F(ia(u(d, f.line))), d.iter(k, g.line + 1, function (a) {
          if (a == e.maxLine) return h = !0;
        }));-1 < d.sel.contains(b.from, b.to) && fe(a);qd(d, b, c, Id(a));a.options.lineWrapping || (d.iter(k, f.line + b.text.length, function (a) {
          var b = Kb(a);b > e.maxLineLength && (e.maxLine = a, e.maxLineLength = b, e.maxLineChanged = !0, h = !1);
        }), h && (a.curOp.updateMaxLine = !0));d.frontier = Math.min(d.frontier, f.line);fb(a, 400);c = b.text.length - (g.line - f.line) - 1;b.full ? Q(a) : f.line != g.line || 1 != b.text.length || Me(a.doc, b) ? Q(a, f.line, g.line + 1, c) : na(a, f.line, "text");c = S(a, "changes");if ((d = S(a, "change")) || c) b = { from: f, to: g, text: b.text, removed: b.removed, origin: b.origin }, d && L(a, "change", a, b), c && (a.curOp.changeObjs || (a.curOp.changeObjs = [])).push(b);a.display.selForContextMenu = null;
      }function wb(a, b, c, d, e) {
        d || (d = c);if (0 > y(d, c)) {
          var f = d;d = c;c = f;
        }"string" == typeof b && (b = sa(b));Oa(a, { from: c, to: d, text: b, origin: e });
      }function cc(a, b, c, d, e) {
        var f = a.display,
            g = xa(a.display);0 > c && (c = 0);var h = a.curOp && null != a.curOp.scrollTop ? a.curOp.scrollTop : f.scroller.scrollTop,
            k = Nc(a),
            l = {};e - c > k && (e = c + k);var m = a.doc.height + Ec(f),
            p = c < g,
            g = e > m - g;c < h ? l.scrollTop = p ? 0 : c : e > h + k && (c = Math.min(c, (g ? m : e) - k), c != h && (l.scrollTop = c));h = a.curOp && null != a.curOp.scrollLeft ? a.curOp.scrollLeft : f.scroller.scrollLeft;a = pa(a) - (a.options.fixedGutter ? f.gutters.offsetWidth : 0);(f = d - b > a) && (d = b + a);10 > b ? l.scrollLeft = 0 : b < h ? l.scrollLeft = Math.max(0, b - (f ? 0 : 10)) : d > a + h - 3 && (l.scrollLeft = d + (f ? 0 : 10) - a);return l;
      }function lc(a, b, c) {
        null == b && null == c || mc(a);null != b && (a.curOp.scrollLeft = (null == a.curOp.scrollLeft ? a.doc.scrollLeft : a.curOp.scrollLeft) + b);null != c && (a.curOp.scrollTop = (null == a.curOp.scrollTop ? a.doc.scrollTop : a.curOp.scrollTop) + c);
      }function Pa(a) {
        mc(a);var b = a.getCursor(),
            c = b,
            d = b;a.options.lineWrapping || (c = b.ch ? r(b.line, b.ch - 1) : b, d = r(b.line, b.ch + 1));a.curOp.scrollToPos = { from: c,
          to: d, margin: a.options.cursorScrollMargin, isCursor: !0 };
      }function mc(a) {
        var b = a.curOp.scrollToPos;if (b) {
          a.curOp.scrollToPos = null;var c = oe(a, b.from),
              d = oe(a, b.to),
              b = cc(a, Math.min(c.left, d.left), Math.min(c.top, d.top) - b.margin, Math.max(c.right, d.right), Math.max(c.bottom, d.bottom) + b.margin);a.scrollTo(b.scrollLeft, b.scrollTop);
        }
      }function pb(a, b, c, d) {
        var e = a.doc,
            f;null == c && (c = "add");"smart" == c && (e.mode.indent ? f = sb(a, b) : c = "prev");var g = a.options.tabSize,
            h = u(e, b),
            k = aa(h.text, null, g);h.stateAfter && (h.stateAfter = null);var l = h.text.match(/^\s*/)[0],
            m;if (!d && !/\S/.test(h.text)) m = 0, c = "not";else if ("smart" == c && (m = e.mode.indent(f, h.text.slice(l.length), h.text), m == Ae || 150 < m)) {
          if (!d) return;c = "prev";
        }"prev" == c ? m = b > e.first ? aa(u(e, b - 1).text, null, g) : 0 : "add" == c ? m = k + a.options.indentUnit : "subtract" == c ? m = k - a.options.indentUnit : "number" == typeof c && (m = k + c);m = Math.max(0, m);c = "";d = 0;if (a.options.indentWithTabs) for (a = Math.floor(m / g); a; --a) d += g, c += "\t";d < m && (c += Ne(m - d));if (c != l) return wb(e, c, r(b, 0), r(b, l.length), "+input"), h.stateAfter = null, !0;for (a = 0; a < e.sel.ranges.length; a++) if (g = e.sel.ranges[a], g.head.line == b && g.head.ch < l.length) {
          d = r(b, l.length);Xc(e, a, new z(d, d));break;
        }
      }function nc(a, b, c, d) {
        var e = b,
            f = b;"number" == typeof b ? f = u(a, Math.max(a.first, Math.min(b, a.first + a.size - 1))) : e = F(b);if (null == e) return null;d(f, e) && a.cm && na(a.cm, e, c);return f;
      }function Va(a, b) {
        for (var c = a.doc.sel.ranges, d = [], e = 0; e < c.length; e++) {
          for (var f = b(c[e]); d.length && 0 >= y(f.from, A(d).to);) {
            var g = d.pop();if (0 > y(g.from, f.from)) {
              f.from = g.from;break;
            }
          }d.push(f);
        }T(a, function () {
          for (var b = d.length - 1; 0 <= b; b--) wb(a.doc, "", d[b].from, d[b].to, "+delete");Pa(a);
        });
      }function rd(a, b, c, d, e) {
        function f(b) {
          var d = (e ? gd : Oe)(l, h, c, !0);if (null == d) {
            if (b = !b) b = g + c, b < a.first || b >= a.first + a.size ? b = m = !1 : (g = b, b = l = u(a, b));if (b) h = e ? (0 > c ? bc : ac)(l) : 0 > c ? l.text.length : 0;else return m = !1;
          } else h = d;return !0;
        }var g = b.line,
            h = b.ch,
            k = c,
            l = u(a, g),
            m = !0;if ("char" == d) f();else if ("column" == d) f(!0);else if ("word" == d || "group" == d) {
          var p = null;d = "group" == d;b = a.cm && a.cm.getHelper(b, "wordChars");for (var n = !0; !(0 > c) || f(!n); n = !1) {
            var q = l.text.charAt(h) || "\n",
                q = oc(q, b) ? "w" : d && "\n" == q ? "n" : !d || /\s/.test(q) ? null : "p";!d || n || q || (q = "s");if (p && p != q) {
              0 > c && (c = 1, f());break;
            }q && (p = q);if (0 < c && !f(!n)) break;
          }
        }k = Xb(a, r(g, h), k, !0);m || (k.hitSide = !0);return k;
      }function Pe(a, b, c, d) {
        var e = a.doc,
            f = b.left,
            g;"page" == d ? (g = Math.min(a.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight), g = b.top + c * (g - (0 > c ? 1.5 : .5) * xa(a.display))) : "line" == d && (g = 0 < c ? b.bottom + 3 : b.top - 3);for (;;) {
          b = fd(a, f, g);if (!b.outside) break;
          if (0 > c ? 0 >= g : g >= e.height) {
            b.hitSide = !0;break;
          }g += 5 * c;
        }return b;
      }function x(a, b, c, d) {
        q.defaults[a] = b;c && (Ka[a] = d ? function (a, b, d) {
          d != Fd && c(a, b, d);
        } : c);
      }function Wf(a) {
        var b = a.split(/-(?!$)/);a = b[b.length - 1];for (var c, d, e, f, g = 0; g < b.length - 1; g++) {
          var h = b[g];if (/^(cmd|meta|m)$/i.test(h)) f = !0;else if (/^a(lt)?$/i.test(h)) c = !0;else if (/^(c|ctrl|control)$/i.test(h)) d = !0;else if (/^s(hift)$/i.test(h)) e = !0;else throw Error("Unrecognized modifier name: " + h);
        }c && (a = "Alt-" + a);d && (a = "Ctrl-" + a);f && (a = "Cmd-" + a);e && (a = "Shift-" + a);return a;
      }function pc(a) {
        return "string" == typeof a ? ua[a] : a;
      }function Wa(a, b, c, d, e) {
        if (d && d.shared) return Xf(a, b, c, d, e);if (a.cm && !a.cm.curOp) return G(a.cm, Wa)(a, b, c, d, e);var f = new Ha(a, e);e = y(b, c);d && V(d, f, !1);if (0 < e || 0 == e && !1 !== f.clearWhenEmpty) return f;f.replacedWith && (f.collapsed = !0, f.widgetNode = t("span", [f.replacedWith], "CodeMirror-widget"), d.handleMouseEvents || f.widgetNode.setAttribute("cm-ignore-events", "true"), d.insertLeft && (f.widgetNode.insertLeft = !0));if (f.collapsed) {
          if (Qe(a, b.line, b, c, f) || b.line != c.line && Qe(a, c.line, b, c, f)) throw Error("Inserting collapsed marker partially overlapping an existing one");ra = !0;
        }f.addToHistory && Ie(a, { from: b, to: c, origin: "markText" }, a.sel, NaN);var g = b.line,
            h = a.cm,
            k;a.iter(g, c.line + 1, function (a) {
          h && f.collapsed && !h.options.lineWrapping && ia(a) == h.display.maxLine && (k = !0);f.collapsed && g != b.line && ca(a, 0);var d = new qc(f, g == b.line ? b.ch : null, g == c.line ? c.ch : null);a.markedSpans = a.markedSpans ? a.markedSpans.concat([d]) : [d];d.marker.attachLine(a);++g;
        });f.collapsed && a.iter(b.line, c.line + 1, function (b) {
          ya(a, b) && ca(b, 0);
        });f.clearOnEnter && v(f, "beforeCursorEnter", function () {
          f.clear();
        });f.readOnly && (Ge = !0, (a.history.done.length || a.history.undone.length) && a.clearHistory());f.collapsed && (f.id = ++sd, f.atomic = !0);if (h) {
          k && (h.curOp.updateMaxLine = !0);if (f.collapsed) Q(h, b.line, c.line + 1);else if (f.className || f.title || f.startStyle || f.endStyle || f.css) for (d = b.line; d <= c.line; d++) na(h, d, "text");f.atomic && ge(h.doc);L(h, "markerAdded", h, f);
        }return f;
      }function Xf(a, b, c, d, e) {
        d = V(d);d.shared = !1;var f = [Wa(a, b, c, d, e)],
            g = f[0],
            h = d.widgetNode;Ga(a, function (a) {
          h && (d.widgetNode = h.cloneNode(!0));f.push(Wa(a, w(a, b), w(a, c), d, e));for (var l = 0; l < a.linked.length; ++l) if (a.linked[l].isParent) return;g = A(f);
        });return new rc(f, g);
      }function Re(a) {
        return a.findMarks(r(a.first, 0), a.clipPos(r(a.lastLine())), function (a) {
          return a.parent;
        });
      }function Yf(a) {
        for (var b = 0; b < a.length; b++) {
          var c = a[b],
              d = [c.primary.doc];Ga(c.primary.doc, function (a) {
            d.push(a);
          });for (var e = 0; e < c.markers.length; e++) {
            var f = c.markers[e];-1 == D(d, f.doc) && (f.parent = null, c.markers.splice(e--, 1));
          }
        }
      }function qc(a, b, c) {
        this.marker = a;this.from = b;this.to = c;
      }function zb(a, b) {
        if (a) for (var c = 0; c < a.length; ++c) {
          var d = a[c];if (d.marker == b) return d;
        }
      }function od(a, b) {
        if (b.full) return null;var c = qb(a, b.from.line) && u(a, b.from.line).markedSpans,
            d = qb(a, b.to.line) && u(a, b.to.line).markedSpans;if (!c && !d) return null;var e = b.from.ch,
            f = b.to.ch,
            g = 0 == y(b.from, b.to);if (c) for (var h = 0, k; h < c.length; ++h) {
          var l = c[h],
              m = l.marker;if (null == l.from || (m.inclusiveLeft ? l.from <= e : l.from < e) || !(l.from != e || "bookmark" != m.type || g && l.marker.insertLeft)) {
            var p = null == l.to || (m.inclusiveRight ? l.to >= e : l.to > e);(k || (k = [])).push(new qc(m, l.from, p ? null : l.to));
          }
        }c = k;if (d) for (var h = 0, n; h < d.length; ++h) if (k = d[h], l = k.marker, null == k.to || (l.inclusiveRight ? k.to >= f : k.to > f) || k.from == f && "bookmark" == l.type && (!g || k.marker.insertLeft)) m = null == k.from || (l.inclusiveLeft ? k.from <= f : k.from < f), (n || (n = [])).push(new qc(l, m ? null : k.from - f, null == k.to ? null : k.to - f));d = n;g = 1 == b.text.length;n = A(b.text).length + (g ? e : 0);if (c) for (f = 0; f < c.length; ++f) if (h = c[f], null == h.to) (k = zb(d, h.marker), k) ? g && (h.to = null == k.to ? null : k.to + n) : h.to = e;if (d) for (f = 0; f < d.length; ++f) h = d[f], null != h.to && (h.to += n), null == h.from ? (k = zb(c, h.marker), k || (h.from = n, g && (c || (c = [])).push(h))) : (h.from += n, g && (c || (c = [])).push(h));c && (c = Se(c));d && d != c && (d = Se(d));e = [c];if (!g) {
          var g = b.text.length - 2,
              q;if (0 < g && c) for (f = 0; f < c.length; ++f) null == c[f].to && (q || (q = [])).push(new qc(c[f].marker, null, null));for (f = 0; f < g; ++f) e.push(q);e.push(d);
        }return e;
      }function Se(a) {
        for (var b = 0; b < a.length; ++b) {
          var c = a[b];null != c.from && c.from == c.to && !1 !== c.marker.clearWhenEmpty && a.splice(b--, 1);
        }return a.length ? a : null;
      }function Ke(a, b) {
        var c;if (c = b["spans_" + a.id]) {
          for (var d = 0, e = []; d < b.text.length; ++d) e.push(Zf(c[d]));c = e;
        } else c = null;d = od(a, b);if (!c) return d;if (!d) return c;for (e = 0; e < c.length; ++e) {
          var f = c[e],
              g = d[e];if (f && g) {
            var h = 0;a: for (; h < g.length; ++h) {
              for (var k = g[h], l = 0; l < f.length; ++l) if (f[l].marker == k.marker) continue a;f.push(k);
            }
          } else g && (c[e] = g);
        }return c;
      }function Uf(a, b, c) {
        var d = null;a.iter(b.line, c.line + 1, function (a) {
          if (a.markedSpans) for (var b = 0; b < a.markedSpans.length; ++b) {
            var c = a.markedSpans[b].marker;!c.readOnly || d && -1 != D(d, c) || (d || (d = [])).push(c);
          }
        });if (!d) return null;a = [{ from: b, to: c }];for (b = 0; b < d.length; ++b) {
          c = d[b];for (var e = c.find(0), f = 0; f < a.length; ++f) {
            var g = a[f];if (!(0 > y(g.to, e.from) || 0 < y(g.from, e.to))) {
              var h = [f, 1],
                  k = y(g.from, e.from),
                  l = y(g.to, e.to);(0 > k || !c.inclusiveLeft && !k) && h.push({ from: g.from, to: e.from });(0 < l || !c.inclusiveRight && !l) && h.push({ from: e.to, to: g.to });a.splice.apply(a, h);f += h.length - 1;
            }
          }
        }return a;
      }function Te(a) {
        var b = a.markedSpans;if (b) {
          for (var c = 0; c < b.length; ++c) b[c].marker.detachLine(a);a.markedSpans = null;
        }
      }function Ue(a, b) {
        if (b) {
          for (var c = 0; c < b.length; ++c) b[c].marker.attachLine(a);a.markedSpans = b;
        }
      }function Ve(a, b) {
        var c = a.lines.length - b.lines.length;if (0 != c) return c;var c = a.find(),
            d = b.find(),
            e = y(c.from, d.from) || (a.inclusiveLeft ? -1 : 0) - (b.inclusiveLeft ? -1 : 0);return e ? -e : (c = y(c.to, d.to) || (a.inclusiveRight ? 1 : 0) - (b.inclusiveRight ? 1 : 0)) ? c : b.id - a.id;
      }function Aa(a, b) {
        var c = ra && a.markedSpans,
            d;if (c) for (var e, f = 0; f < c.length; ++f) e = c[f], e.marker.collapsed && null == (b ? e.from : e.to) && (!d || 0 > Ve(d, e.marker)) && (d = e.marker);return d;
      }function Qe(a, b, c, d, e) {
        a = u(a, b);if (a = ra && a.markedSpans) for (b = 0; b < a.length; ++b) {
          var f = a[b];if (f.marker.collapsed) {
            var g = f.marker.find(0),
                h = y(g.from, c) || (f.marker.inclusiveLeft ? -1 : 0) - (e.inclusiveLeft ? -1 : 0),
                k = y(g.to, d) || (f.marker.inclusiveRight ? 1 : 0) - (e.inclusiveRight ? 1 : 0);if (!(0 <= h && 0 >= k || 0 >= h && 0 <= k) && (0 >= h && (0 < y(g.to, c) || f.marker.inclusiveRight && e.inclusiveLeft) || 0 <= h && (0 > y(g.from, d) || f.marker.inclusiveLeft && e.inclusiveRight))) return !0;
          }
        }
      }function ia(a) {
        for (var b; b = Aa(a, !0);) a = b.find(-1, !0).line;return a;
      }function Mc(a, b) {
        var c = u(a, b),
            d = ia(c);return c == d ? b : F(d);
      }function Ld(a, b) {
        if (b > a.lastLine()) return b;var c = u(a, b),
            d;if (!ya(a, c)) return b;for (; d = Aa(c, !1);) c = d.find(1, !0).line;return F(c) + 1;
      }function ya(a, b) {
        var c = ra && b.markedSpans;if (c) for (var d, e = 0; e < c.length; ++e) if (d = c[e], d.marker.collapsed && (null == d.from || !d.marker.widgetNode && 0 == d.from && d.marker.inclusiveLeft && td(a, b, d))) return !0;
      }function td(a, b, c) {
        if (null == c.to) return b = c.marker.find(1, !0), td(a, b.line, zb(b.line.markedSpans, c.marker));if (c.marker.inclusiveRight && c.to == b.text.length) return !0;for (var d, e = 0; e < b.markedSpans.length; ++e) if (d = b.markedSpans[e], d.marker.collapsed && !d.marker.widgetNode && d.from == c.to && (null == d.to || d.to != c.from) && (d.marker.inclusiveLeft || c.marker.inclusiveRight) && td(a, b, d)) return !0;
      }function ub(a) {
        if (null != a.height) return a.height;var b = a.doc.cm;if (!b) return 0;if (!Wc(document.body, a.node)) {
          var c = "position: relative;";a.coverGutter && (c += "margin-left: -" + b.display.gutters.offsetWidth + "px;");a.noHScroll && (c += "width: " + b.display.wrapper.clientWidth + "px;");U(b.display.measure, t("div", [a.node], null, c));
        }return a.height = a.node.offsetHeight;
      }function $f(a, b, c, d) {
        var e = new sc(a, c, d),
            f = a.cm;f && e.noHScroll && (f.display.alignWidgets = !0);nc(a, b, "widget", function (b) {
          var c = b.widgets || (b.widgets = []);null == e.insertAt ? c.push(e) : c.splice(Math.min(c.length - 1, Math.max(0, e.insertAt)), 0, e);e.line = b;f && !ya(a, b) && (c = ea(b) < a.scrollTop, ca(b, b.height + ub(e)), c && lc(f, null, e.height), f.curOp.forceUpdate = !0);return !0;
        });return e;
      }function We(a, b) {
        if (a) for (;;) {
          var c = a.match(/(?:^|\s+)line-(background-)?(\S+)/);if (!c) break;a = a.slice(0, c.index) + a.slice(c.index + c[0].length);var d = c[1] ? "bgClass" : "textClass";null == b[d] ? b[d] = c[2] : new RegExp("(?:^|s)" + c[2] + "(?:$|s)").test(b[d]) || (b[d] += " " + c[2]);
        }return a;
      }function Xe(a, b) {
        if (a.blankLine) return a.blankLine(b);if (a.innerMode) {
          var c = q.innerMode(a, b);if (c.mode.blankLine) return c.mode.blankLine(c.state);
        }
      }function ud(a, b, c, d) {
        for (var e = 0; 10 > e; e++) {
          d && (d[0] = q.innerMode(a, c).mode);var f = a.token(b, c);if (b.pos > b.start) return f;
        }throw Error("Mode " + a.name + " failed to advance stream.");
      }function Ye(a, b, c, d) {
        function e(a) {
          return { start: m.start, end: m.pos, string: m.current(), type: h || null, state: a ? Sa(f.mode, l) : l };
        }var f = a.doc,
            g = f.mode,
            h;b = w(f, b);var k = u(f, b.line),
            l = sb(a, b.line, c),
            m = new tc(k.text, a.options.tabSize),
            p;for (d && (p = []); (d || m.pos < b.ch) && !m.eol();) m.start = m.pos, h = ud(g, m, l), d && p.push(e(!0));return d ? p : e();
      }function Ze(a, b, c, d, e, f, g) {
        var h = c.flattenSpans;null == h && (h = a.options.flattenSpans);var k = 0,
            l = null,
            m = new tc(b, a.options.tabSize),
            p,
            n = a.options.addModeClass && [null];for ("" == b && We(Xe(c, d), f); !m.eol();) {
          m.pos > a.options.maxHighlightLength ? (h = !1, g && Zc(a, b, d, m.pos), m.pos = b.length, p = null) : p = We(ud(c, m, d, n), f);if (n) {
            var q = n[0].name;q && (p = "m-" + (p ? q + " " + p : q));
          }if (!h || l != p) {
            for (; k < m.start;) k = Math.min(m.start, k + 5E4), e(k, l);l = p;
          }m.start = m.pos;
        }for (; k < m.pos;) a = Math.min(m.pos, k + 5E4), e(a, l), k = a;
      }function je(a, b, c, d) {
        var e = [a.state.modeGen],
            f = {};Ze(a, b.text, a.doc.mode, c, function (a, b) {
          e.push(a, b);
        }, f, d);for (c = 0; c < a.state.overlays.length; ++c) {
          var g = a.state.overlays[c],
              h = 1,
              k = 0;Ze(a, b.text, g.mode, !0, function (a, b) {
            for (var c = h; k < a;) {
              var d = e[h];d > a && e.splice(h, 1, a, e[h + 1], d);h += 2;k = Math.min(a, d);
            }if (b) if (g.opaque) e.splice(c, h - c, a, "cm-overlay " + b), h = c + 2;else for (; c < h; c += 2) d = e[c + 1], e[c + 1] = (d ? d + " " : "") + "cm-overlay " + b;
          }, f);
        }return { styles: e, classes: f.bgClass || f.textClass ? f : null };
      }function $e(a, b, c) {
        if (!b.styles || b.styles[0] != a.state.modeGen) {
          var d = je(a, b, b.stateAfter = sb(a, F(b)));b.styles = d.styles;d.classes ? b.styleClasses = d.classes : b.styleClasses && (b.styleClasses = null);c === a.doc.frontier && a.doc.frontier++;
        }return b.styles;
      }function Zc(a, b, c, d) {
        var e = a.doc.mode,
            f = new tc(b, a.options.tabSize);f.start = f.pos = d || 0;for ("" == b && Xe(e, c); !f.eol() && f.pos <= a.options.maxHighlightLength;) ud(e, f, c), f.start = f.pos;
      }function af(a, b) {
        if (!a || /^\s*$/.test(a)) return null;var c = b.addModeClass ? ag : bg;return c[a] || (c[a] = a.replace(/\S+/g, "cm-$\x26"));
      }function Sd(a, b) {
        var c = t("span", null, null, J ? "padding-right: .1px" : null),
            c = { pre: t("pre", [c]), content: c, col: 0, pos: 0, cm: a, splitSpaces: (B || J) && a.getOption("lineWrapping") };b.measure = {};for (var d = 0; d <= (b.rest ? b.rest.length : 0); d++) {
          var e = d ? b.rest[d - 1] : b.line,
              f;c.pos = 0;c.addToken = cg;var g;if (null != vd) g = vd;else {
            g = U(a.display.measure, document.createTextNode("AخA"));var h = Ea(g, 0, 1).getBoundingClientRect();g = h && h.left != h.right ? vd = 3 > Ea(g, 1, 2).getBoundingClientRect().right - h.right : !1;
          }g && (f = Y(e)) && (c.addToken = dg(c.addToken, f));c.map = [];h = b != a.display.externalMeasured && F(e);a: {
            g = c;var h = $e(a, e, h),
                k = e.markedSpans,
                l = e.text,
                m = 0;if (k) for (var p = l.length, n = 0, q = 1, r = "", u = void 0, v = void 0, w = 0, x = void 0, y = void 0, A = void 0, C = void 0, z = void 0;;) {
              if (w == n) {
                for (var x = y = A = C = v = "", z = null, w = Infinity, G = [], H = 0; H < k.length; ++H) {
                  var I = k[H],
                      D = I.marker;"bookmark" == D.type && I.from == n && D.widgetNode ? G.push(D) : I.from <= n && (null == I.to || I.to > n || D.collapsed && I.to == n && I.from == n) ? (null != I.to && I.to != n && w > I.to && (w = I.to, y = ""), D.className && (x += " " + D.className), D.css && (v = D.css), D.startStyle && I.from == n && (A += " " + D.startStyle), D.endStyle && I.to == w && (y += " " + D.endStyle), D.title && !C && (C = D.title), D.collapsed && (!z || 0 > Ve(z.marker, D)) && (z = I)) : I.from > n && w > I.from && (w = I.from);
                }if (z && (z.from || 0) == n) {
                  bf(g, (null == z.to ? p + 1 : z.to) - n, z.marker, null == z.from);if (null == z.to) break a;z.to == n && (z = !1);
                }if (!z && G.length) for (H = 0; H < G.length; ++H) bf(g, 0, G[H]);
              }if (n >= p) break;for (G = Math.min(p, w);;) {
                if (r) {
                  H = n + r.length;z || (I = H > G ? r.slice(0, G - n) : r, g.addToken(g, I, u ? u + x : x, A, n + I.length == w ? y : "", C, v));if (H >= G) {
                    r = r.slice(G - n);n = G;break;
                  }n = H;A = "";
                }r = l.slice(m, m = h[q++]);u = af(h[q++], g.cm.options);
              }
            } else for (var q = 1; q < h.length; q += 2) g.addToken(g, l.slice(m, m = h[q]), af(h[q + 1], g.cm.options));
          }e.styleClasses && (e.styleClasses.bgClass && (c.bgClass = wd(e.styleClasses.bgClass, c.bgClass || "")), e.styleClasses.textClass && (c.textClass = wd(e.styleClasses.textClass, c.textClass || "")));0 == c.map.length && c.map.push(0, 0, c.content.appendChild(eg(a.display.measure)));0 == d ? (b.measure.map = c.map, b.measure.cache = {}) : ((b.measure.maps || (b.measure.maps = [])).push(c.map), (b.measure.caches || (b.measure.caches = [])).push({}));
        }J && /\bcm-tab\b/.test(c.content.lastChild.className) && (c.content.className = "cm-tab-wrap-hack");K(a, "renderLine", a, b.line, c.pre);c.pre.className && (c.textClass = wd(c.pre.className, c.textClass || ""));return c;
      }function cg(a, b, c, d, e, f, g) {
        if (b) {
          var h = a.splitSpaces ? b.replace(/ {3,}/g, fg) : b,
              k = a.cm.state.specialChars,
              l = !1;if (k.test(b)) for (var m = document.createDocumentFragment(), p = 0;;) {
            k.lastIndex = p;var n = k.exec(b),
                q = n ? n.index - p : b.length - p;if (q) {
              var r = document.createTextNode(h.slice(p, p + q));B && 9 > C ? m.appendChild(t("span", [r])) : m.appendChild(r);a.map.push(a.pos, a.pos + q, r);a.col += q;a.pos += q;
            }if (!n) break;p += q + 1;"\t" == n[0] ? (r = a.cm.options.tabSize, n = r - a.col % r, r = m.appendChild(t("span", Ne(n), "cm-tab")), r.setAttribute("role", "presentation"), r.setAttribute("cm-text", "\t"), a.col += n) : (r = a.cm.options.specialCharPlaceholder(n[0]), r.setAttribute("cm-text", n[0]), B && 9 > C ? m.appendChild(t("span", [r])) : m.appendChild(r), a.col += 1);a.map.push(a.pos, a.pos + 1, r);a.pos++;
          } else {
            a.col += b.length;var m = document.createTextNode(h);
            a.map.push(a.pos, a.pos + b.length, m);B && 9 > C && (l = !0);a.pos += b.length;
          }if (c || d || e || l || g) return b = c || "", d && (b += d), e && (b += e), d = t("span", [m], b, g), f && (d.title = f), a.content.appendChild(d);a.content.appendChild(m);
        }
      }function fg(a) {
        for (var b = " ", c = 0; c < a.length - 2; ++c) b += c % 2 ? " " : " ";return b + " ";
      }function dg(a, b) {
        return function (c, d, e, f, g, h, k) {
          e = e ? e + " cm-force-border" : "cm-force-border";for (var l = c.pos, m = l + d.length;;) {
            for (var p = 0; p < b.length; p++) {
              var n = b[p];if (n.to > l && n.from <= l) break;
            }if (n.to >= m) return a(c, d, e, f, g, h, k);a(c, d.slice(0, n.to - l), e, f, null, h, k);f = null;d = d.slice(n.to - l);l = n.to;
          }
        };
      }function bf(a, b, c, d) {
        var e = !d && c.widgetNode;e && a.map.push(a.pos, a.pos + b, e);!d && a.cm.display.input.needsContentAttribute && (e || (e = a.content.appendChild(document.createElement("span"))), e.setAttribute("cm-marker", c.id));e && (a.cm.display.input.setUneditable(e), a.content.appendChild(e));a.pos += b;
      }function Me(a, b) {
        return 0 == b.from.ch && 0 == b.to.ch && "" == A(b.text) && (!a.cm || a.cm.options.wholeLineUpdateBefore);
      }function qd(a, b, c, d) {
        function e(a, c, e) {
          a.text = c;a.stateAfter && (a.stateAfter = null);a.styles && (a.styles = null);null != a.order && (a.order = null);Te(a);Ue(a, e);c = d ? d(a) : 1;c != a.height && ca(a, c);L(a, "change", a, b);
        }function f(a, b) {
          for (var e = a, f = []; e < b; ++e) f.push(new Ab(k[e], c ? c[e] : null, d));return f;
        }var g = b.from,
            h = b.to,
            k = b.text,
            l = u(a, g.line),
            m = u(a, h.line),
            p = A(k),
            n = c ? c[k.length - 1] : null,
            q = h.line - g.line;if (b.full) a.insert(0, f(0, k.length)), a.remove(k.length, a.size - k.length);else if (Me(a, b)) {
          var r = f(0, k.length - 1);e(m, m.text, n);q && a.remove(g.line, q);
          r.length && a.insert(g.line, r);
        } else l == m ? 1 == k.length ? e(l, l.text.slice(0, g.ch) + p + l.text.slice(h.ch), n) : (r = f(1, k.length - 1), r.push(new Ab(p + l.text.slice(h.ch), n, d)), e(l, l.text.slice(0, g.ch) + k[0], c ? c[0] : null), a.insert(g.line + 1, r)) : 1 == k.length ? (e(l, l.text.slice(0, g.ch) + k[0] + m.text.slice(h.ch), c ? c[0] : null), a.remove(g.line + 1, q)) : (e(l, l.text.slice(0, g.ch) + k[0], c ? c[0] : null), e(m, p + m.text.slice(h.ch), n), r = f(1, k.length - 1), 1 < q && a.remove(g.line + 1, q - 1), a.insert(g.line + 1, r));L(a, "change", a, b);
      }function Bb(a) {
        this.lines = a;this.parent = null;for (var b = 0, c = 0; b < a.length; ++b) a[b].parent = this, c += a[b].height;this.height = c;
      }function Cb(a) {
        this.children = a;for (var b = 0, c = 0, d = 0; d < a.length; ++d) {
          var e = a[d],
              b = b + e.chunkSize(),
              c = c + e.height;e.parent = this;
        }this.size = b;this.height = c;this.parent = null;
      }function Ga(a, b, c) {
        function d(a, f, g) {
          if (a.linked) for (var h = 0; h < a.linked.length; ++h) {
            var k = a.linked[h];if (k.doc != f) {
              var l = g && k.sharedHist;if (!c || l) b(k.doc, l), d(k.doc, a, l);
            }
          }
        }d(a, null, !0);
      }function Ed(a, b) {
        if (b.cm) throw Error("This document is already in use.");
        a.doc = b;b.cm = a;Ac(a);zc(a);a.options.lineWrapping || Dc(a);a.options.mode = b.modeOption;Q(a);
      }function u(a, b) {
        b -= a.first;if (0 > b || b >= a.size) throw Error("There is no line " + (b + a.first) + " in the document.");for (var c = a; !c.lines;) for (var d = 0;; ++d) {
          var e = c.children[d],
              f = e.chunkSize();if (b < f) {
            c = e;break;
          }b -= f;
        }return c.lines[b];
      }function Da(a, b, c) {
        var d = [],
            e = b.line;a.iter(b.line, c.line + 1, function (a) {
          a = a.text;e == c.line && (a = a.slice(0, c.ch));e == b.line && (a = a.slice(b.ch));d.push(a);++e;
        });return d;
      }function xd(a, b, c) {
        var d = [];a.iter(b, c, function (a) {
          d.push(a.text);
        });return d;
      }function ca(a, b) {
        var c = b - a.height;if (c) for (var d = a; d; d = d.parent) d.height += c;
      }function F(a) {
        if (null == a.parent) return null;var b = a.parent;a = D(b.lines, a);for (var c = b.parent; c; b = c, c = c.parent) for (var d = 0; c.children[d] != b; ++d) a += c.children[d].chunkSize();return a + b.first;
      }function Ba(a, b) {
        var c = a.first;a: do {
          for (var d = 0; d < a.children.length; ++d) {
            var e = a.children[d],
                f = e.height;if (b < f) {
              a = e;continue a;
            }b -= f;c += e.chunkSize();
          }return c;
        } while (!a.lines);for (d = 0; d < a.lines.length; ++d) {
          e = a.lines[d].height;if (b < e) break;b -= e;
        }return c + d;
      }function ea(a) {
        a = ia(a);for (var b = 0, c = a.parent, d = 0; d < c.lines.length; ++d) {
          var e = c.lines[d];if (e == a) break;else b += e.height;
        }for (a = c.parent; a; c = a, a = c.parent) for (d = 0; d < a.children.length && (e = a.children[d], e != c); ++d) b += e.height;return b;
      }function Y(a) {
        var b = a.order;null == b && (b = a.order = gg(a.text));return b;
      }function uc(a) {
        this.done = [];this.undone = [];this.undoDepth = Infinity;this.lastModTime = this.lastSelTime = 0;this.lastOrigin = this.lastSelOrigin = this.lastOp = this.lastSelOp = null;this.generation = this.maxGeneration = a || 1;
      }function pd(a, b) {
        var c = { from: Rc(b.from), to: ta(b), text: Da(a, b.from, b.to) };cf(a, c, b.from.line, b.to.line + 1);Ga(a, function (a) {
          cf(a, c, b.from.line, b.to.line + 1);
        }, !0);return c;
      }function ce(a) {
        for (; a.length;) if (A(a).ranges) a.pop();else break;
      }function Ie(a, b, c, d) {
        var e = a.history;e.undone.length = 0;var f = +new Date(),
            g,
            h;if (h = e.lastOp == d || e.lastOrigin == b.origin && b.origin && ("+" == b.origin.charAt(0) && a.cm && e.lastModTime > f - a.cm.options.historyEventDelay || "*" == b.origin.charAt(0))) e.lastOp == d ? (ce(e.done), g = A(e.done)) : e.done.length && !A(e.done).ranges ? g = A(e.done) : 1 < e.done.length && !e.done[e.done.length - 2].ranges ? (e.done.pop(), g = A(e.done)) : g = void 0, h = g;if (h) {
          var k = A(g.changes);0 == y(b.from, b.to) && 0 == y(b.from, k.to) ? k.to = ta(b) : g.changes.push(pd(a, b));
        } else for ((g = A(e.done)) && g.ranges || Wb(a.sel, e.done), g = { changes: [pd(a, b)], generation: e.generation }, e.done.push(g); e.done.length > e.undoDepth;) e.done.shift(), e.done[0].ranges || e.done.shift();e.done.push(c);e.generation = ++e.maxGeneration;e.lastModTime = e.lastSelTime = f;e.lastOp = e.lastSelOp = d;e.lastOrigin = e.lastSelOrigin = b.origin;k || K(a, "historyAdded");
      }function Wb(a, b) {
        var c = A(b);c && c.ranges && c.equals(a) || b.push(a);
      }function cf(a, b, c, d) {
        var e = b["spans_" + a.id],
            f = 0;a.iter(Math.max(a.first, c), Math.min(a.first + a.size, d), function (c) {
          c.markedSpans && ((e || (e = b["spans_" + a.id] = {}))[f] = c.markedSpans);++f;
        });
      }function Zf(a) {
        if (!a) return null;for (var b = 0, c; b < a.length; ++b) a[b].marker.explicitlyCleared ? c || (c = a.slice(0, b)) : c && c.push(a[b]);
        return c ? c.length ? c : null : a;
      }function Xa(a, b, c) {
        for (var d = 0, e = []; d < a.length; ++d) {
          var f = a[d];if (f.ranges) e.push(c ? la.prototype.deepCopy.call(f) : f);else {
            var f = f.changes,
                g = [];e.push({ changes: g });for (var h = 0; h < f.length; ++h) {
              var k = f[h],
                  l;g.push({ from: k.from, to: k.to, text: k.text });if (b) for (var m in k) (l = m.match(/^spans_(\d+)$/)) && -1 < D(b, Number(l[1])) && (A(g)[m] = k[m], delete k[m]);
            }
          }
        }return e;
      }function df(a, b, c, d) {
        c < a.line ? a.line += d : b < a.line && (a.line = b, a.ch = 0);
      }function ef(a, b, c, d) {
        for (var e = 0; e < a.length; ++e) {
          var f = a[e],
              g = !0;if (f.ranges) {
            f.copied || (f = a[e] = f.deepCopy(), f.copied = !0);for (var h = 0; h < f.ranges.length; h++) df(f.ranges[h].anchor, b, c, d), df(f.ranges[h].head, b, c, d);
          } else {
            for (h = 0; h < f.changes.length; ++h) {
              var k = f.changes[h];if (c < k.from.line) k.from = r(k.from.line + d, k.from.ch), k.to = r(k.to.line + d, k.to.ch);else if (b <= k.to.line) {
                g = !1;break;
              }
            }g || (a.splice(0, e + 1), e = 0);
          }
        }
      }function Je(a, b) {
        var c = b.from.line,
            d = b.to.line,
            e = b.text.length - (d - c) - 1;ef(a.done, c, d, e);ef(a.undone, c, d, e);
      }function ld(a) {
        return null != a.defaultPrevented ? a.defaultPrevented : 0 == a.returnValue;
      }function xe(a) {
        var b = a.which;null == b && (a.button & 1 ? b = 1 : a.button & 2 ? b = 3 : a.button & 4 && (b = 2));W && a.ctrlKey && 1 == b && (b = 3);return b;
      }function L(a, b) {
        function c(a) {
          return function () {
            a.apply(null, e);
          };
        }var d = a._handlers && a._handlers[b];if (d) {
          var e = Array.prototype.slice.call(arguments, 2),
              f;Ta ? f = Ta.delayedCallbacks : Db ? f = Db : (f = Db = [], setTimeout(hg, 0));for (var g = 0; g < d.length; ++g) f.push(c(d[g]));
        }
      }function hg() {
        var a = Db;Db = null;for (var b = 0; b < a.length; ++b) a[b]();
      }function ja(a, b, c) {
        "string" == typeof b && (b = { type: b, preventDefault: function () {
            this.defaultPrevented = !0;
          } });K(a, c || b.type, a, b);return ld(b) || b.codemirrorIgnore;
      }function fe(a) {
        var b = a._handlers && a._handlers.cursorActivity;if (b) {
          a = a.curOp.cursorActivityHandlers || (a.curOp.cursorActivityHandlers = []);for (var c = 0; c < b.length; ++c) -1 == D(a, b[c]) && a.push(b[c]);
        }
      }function S(a, b) {
        var c = a._handlers && a._handlers[b];return c && 0 < c.length;
      }function Ya(a) {
        a.prototype.on = function (a, c) {
          v(this, a, c);
        };a.prototype.off = function (a, c) {
          ka(this, a, c);
        };
      }function bb() {
        this.id = null;
      }function ye(a, b, c) {
        for (var d = 0, e = 0;;) {
          var f = a.indexOf("\t", d);-1 == f && (f = a.length);var g = f - d;if (f == a.length || e + g >= b) return d + Math.min(g, b - e);e += f - d;e += c - e % c;d = f + 1;if (e >= b) return d;
        }
      }function Ne(a) {
        for (; vc.length <= a;) vc.push(A(vc) + " ");return vc[a];
      }function A(a) {
        return a[a.length - 1];
      }function D(a, b) {
        for (var c = 0; c < a.length; ++c) if (a[c] == b) return c;return -1;
      }function ob(a, b) {
        for (var c = [], d = 0; d < a.length; d++) c[d] = b(a[d], d);return c;
      }function Eb() {}function ff(a, b) {
        var c;Object.create ? c = Object.create(a) : (Eb.prototype = a, c = new Eb());b && V(b, c);return c;
      }function V(a, b, c) {
        b || (b = {});for (var d in a) !a.hasOwnProperty(d) || !1 === c && b.hasOwnProperty(d) || (b[d] = a[d]);return b;
      }function cb(a) {
        var b = Array.prototype.slice.call(arguments, 1);return function () {
          return a.apply(null, b);
        };
      }function oc(a, b) {
        return b ? -1 < b.source.indexOf("\\w") && gf(a) ? !0 : b.test(a) : gf(a);
      }function hf(a) {
        for (var b in a) if (a.hasOwnProperty(b) && a[b]) return !1;return !0;
      }function tb(a) {
        return 768 <= a.charCodeAt(0) && ig.test(a);
      }function t(a, b, c, d) {
        a = document.createElement(a);
        c && (a.className = c);d && (a.style.cssText = d);if ("string" == typeof b) a.appendChild(document.createTextNode(b));else if (b) for (c = 0; c < b.length; ++c) a.appendChild(b[c]);return a;
      }function za(a) {
        for (var b = a.childNodes.length; 0 < b; --b) a.removeChild(a.firstChild);return a;
      }function U(a, b) {
        return za(a).appendChild(b);
      }function fa() {
        return document.activeElement;
      }function Fb(a) {
        return new RegExp("(^|\\s)" + a + "(?:$|\\s)\\s*");
      }function wd(a, b) {
        for (var c = a.split(" "), d = 0; d < c.length; d++) c[d] && !Fb(c[d]).test(b) && (b += " " + c[d]);
        return b;
      }function jf(a) {
        if (document.body.getElementsByClassName) for (var b = document.body.getElementsByClassName("CodeMirror"), c = 0; c < b.length; c++) {
          var d = b[c].CodeMirror;d && a(d);
        }
      }function tf() {
        var a;v(window, "resize", function () {
          null == a && (a = setTimeout(function () {
            a = null;jf(If);
          }, 100));
        });v(window, "blur", function () {
          jf(db);
        });
      }function eg(a) {
        if (null == yd) {
          var b = t("span", "​");U(a, t("span", [b, document.createTextNode("x")]));0 != a.firstChild.offsetHeight && (yd = 1 >= b.offsetWidth && 2 < b.offsetHeight && !(B && 8 > C));
        }a = yd ? t("span", "​") : t("span", " ", null, "display: inline-block; width: 1px; margin-right: -1px");a.setAttribute("cm-text", "");return a;
      }function Af(a, b, c, d) {
        if (!a) return d(b, c, "ltr");for (var e = !1, f = 0; f < a.length; ++f) {
          var g = a[f];if (g.from < c && g.to > b || b == c && g.to == b) d(Math.max(g.from, b), Math.min(g.to, c), 1 == g.level ? "rtl" : "ltr"), e = !0;
        }e || d(b, c, "ltr");
      }function dd(a) {
        return a.level % 2 ? a.to : a.from;
      }function ed(a) {
        return a.level % 2 ? a.from : a.to;
      }function ac(a) {
        return (a = Y(a)) ? dd(a[0]) : 0;
      }function bc(a) {
        var b = Y(a);return b ? ed(A(b)) : a.text.length;
      }
      function kf(a, b) {
        var c = u(a.doc, b),
            d = ia(c);d != c && (b = F(d));d = (c = Y(d)) ? c[0].level % 2 ? bc(d) : ac(d) : 0;return r(b, d);
      }function lf(a, b) {
        var c = kf(a, b.line),
            d = u(a.doc, c.line),
            e = Y(d);return e && 0 != e[0].level ? c : (d = Math.max(0, d.text.search(/\S/)), r(c.line, b.line == c.line && b.ch <= d && b.ch ? 0 : d));
      }function Sb(a, b) {
        vb = null;for (var c = 0, d; c < a.length; ++c) {
          var e = a[c];if (e.from < b && e.to > b) return c;if (e.from == b || e.to == b) if (null == d) d = c;else {
            var f = e.level;var g = a[d].level,
                h = a[0].level;f = f == h ? !0 : g == h ? !1 : f < g;if (f) return e.from != e.to && (vb = d), c;e.from != e.to && (vb = c);break;
          }
        }return d;
      }function zd(a, b, c, d) {
        if (!d) return b + c;do b += c; while (0 < b && tb(a.text.charAt(b)));return b;
      }function gd(a, b, c, d) {
        var e = Y(a);if (!e) return Oe(a, b, c, d);var f = Sb(e, b),
            g = e[f];for (b = zd(a, b, g.level % 2 ? -c : c, d);;) {
          if (b > g.from && b < g.to) return b;if (b == g.from || b == g.to) {
            if (Sb(e, b) == f) return b;g = e[f + c];return 0 < c == g.level % 2 ? g.to : g.from;
          }g = e[f += c];if (!g) return null;b = 0 < c == g.level % 2 ? zd(a, g.to, -1, d) : zd(a, g.from, 1, d);
        }
      }function Oe(a, b, c, d) {
        b += c;if (d) for (; 0 < b && tb(a.text.charAt(b));) b += c;return 0 > b || b > a.text.length ? null : b;
      }var wa = /gecko\/\d/i.test(navigator.userAgent),
          mf = /MSIE \d/.test(navigator.userAgent),
          nf = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),
          B = mf || nf,
          C = B && (mf ? document.documentMode || 6 : nf[1]),
          J = /WebKit\//.test(navigator.userAgent),
          jg = J && /Qt\/\d+\.\d+/.test(navigator.userAgent),
          kg = /Chrome\//.test(navigator.userAgent),
          ba = /Opera\//.test(navigator.userAgent),
          te = /Apple Computer/.test(navigator.vendor),
          lg = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),
          Gf = /PhantomJS/.test(navigator.userAgent),
          Qa = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent),
          ab = Qa || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),
          W = Qa || /Mac/.test(navigator.platform),
          mg = /win/i.test(navigator.platform),
          Ia = ba && navigator.userAgent.match(/Version\/(\d*\.\d*)/);Ia && (Ia = Number(Ia[1]));Ia && 15 <= Ia && (ba = !1, J = !0);var of = W && (jg || ba && (null == Ia || 12.11 > Ia)),
          id = wa || B && 9 <= C,
          Ge = !1,
          ra = !1;Fc.prototype = V({ update: function (a) {
          var b = a.scrollWidth > a.clientWidth + 1,
              c = a.scrollHeight > a.clientHeight + 1,
              d = a.nativeBarWidth;c ? (this.vert.style.display = "block", this.vert.style.bottom = b ? d + "px" : "0", this.vert.firstChild.style.height = Math.max(0, a.scrollHeight - a.clientHeight + (a.viewHeight - (b ? d : 0))) + "px") : (this.vert.style.display = "", this.vert.firstChild.style.height = "0");b ? (this.horiz.style.display = "block", this.horiz.style.right = c ? d + "px" : "0", this.horiz.style.left = a.barLeft + "px", this.horiz.firstChild.style.width = a.scrollWidth - a.clientWidth + (a.viewWidth - a.barLeft - (c ? d : 0)) + "px") : (this.horiz.style.display = "", this.horiz.firstChild.style.width = "0");!this.checkedOverlay && 0 < a.clientHeight && (0 == d && this.overlayHack(), this.checkedOverlay = !0);return { right: c ? d : 0, bottom: b ? d : 0 };
        }, setScrollLeft: function (a) {
          this.horiz.scrollLeft != a && (this.horiz.scrollLeft = a);
        }, setScrollTop: function (a) {
          this.vert.scrollTop != a && (this.vert.scrollTop = a);
        }, overlayHack: function () {
          this.horiz.style.minHeight = this.vert.style.minWidth = W && !lg ? "12px" : "18px";var a = this,
              b = function (b) {
            (b.target || b.srcElement) != a.vert && (b.target || b.srcElement) != a.horiz && G(a.cm, pe)(b);
          };v(this.vert, "mousedown", b);v(this.horiz, "mousedown", b);
        }, clear: function () {
          var a = this.horiz.parentNode;a.removeChild(this.horiz);a.removeChild(this.vert);
        } }, Fc.prototype);Gc.prototype = V({ update: function () {
          return { bottom: 0, right: 0 };
        }, setScrollLeft: function () {}, setScrollTop: function () {}, clear: function () {} }, Gc.prototype);q.scrollbarModel = { "native": Fc, "null": Gc };Mb.prototype.signal = function (a, b) {
        S(a, b) && this.events.push(arguments);
      };Mb.prototype.finish = function () {
        for (var a = 0; a < this.events.length; a++) K.apply(null, this.events[a]);
      };var r = q.Pos = function (a, b) {
        if (!(this instanceof r)) return new r(a, b);this.line = a;this.ch = b;
      },
          y = q.cmpPos = function (a, b) {
        return a.line - b.line || a.ch - b.ch;
      },
          X = null;Tc.prototype = V({ init: function (a) {
          function b(a) {
            if (d.somethingSelected()) X = d.getSelections(), c.inaccurateSelection && (c.prevInput = "", c.inaccurateSelection = !1, f.value = X.join("\n"), Za(f));else if (d.options.lineWiseCopyCut) {
              var b = Vd(d);X = b.text;"cut" == a.type ? d.setSelections(b.ranges, null, ha) : (c.prevInput = "", f.value = b.text.join("\n"), Za(f));
            } else return;"cut" == a.type && (d.state.cutIncoming = !0);
          }var c = this,
              d = this.cm,
              e = this.wrapper = Xd(),
              f = this.textarea = e.firstChild;a.wrapper.insertBefore(e, a.wrapper.firstChild);Qa && (f.style.width = "0px");v(f, "input", function () {
            B && 9 <= C && c.hasSelection && (c.hasSelection = null);c.poll();
          });v(f, "paste", function () {
            if (J && !d.state.fakedLastChar && !(200 > new Date() - d.state.lastMiddleDown)) {
              var a = f.selectionStart,
                  b = f.selectionEnd;f.value += "$";f.selectionEnd = b;f.selectionStart = a;d.state.fakedLastChar = !0;
            }d.state.pasteIncoming = !0;c.fastPoll();
          });v(f, "cut", b);v(f, "copy", b);v(a.scroller, "paste", function (b) {
            oa(a, b) || (d.state.pasteIncoming = !0, c.focus());
          });v(a.lineSpace, "selectstart", function (b) {
            oa(a, b) || O(b);
          });v(f, "compositionstart", function () {
            var a = d.getCursor("from");c.composing = { start: a, range: d.markText(a, d.getCursor("to"), { className: "CodeMirror-composing" }) };
          });v(f, "compositionend", function () {
            c.composing && (c.poll(), c.composing.range.clear(), c.composing = null);
          });
        }, prepareSelection: function () {
          var a = this.cm,
              b = a.display,
              c = a.doc,
              d = he(a);if (a.options.moveInputWithCursor) {
            var a = ma(a, c.sel.primary().head, "div"),
                c = b.wrapper.getBoundingClientRect(),
                e = b.lineDiv.getBoundingClientRect();d.teTop = Math.max(0, Math.min(b.wrapper.clientHeight - 10, a.top + e.top - c.top));d.teLeft = Math.max(0, Math.min(b.wrapper.clientWidth - 10, a.left + e.left - c.left));
          }return d;
        }, showSelection: function (a) {
          var b = this.cm.display;U(b.cursorDiv, a.cursors);U(b.selectionDiv, a.selection);null != a.teTop && (this.wrapper.style.top = a.teTop + "px", this.wrapper.style.left = a.teLeft + "px");
        }, reset: function (a) {
          if (!this.contextMenuPending) {
            var b,
                c,
                d = this.cm,
                e = d.doc;d.somethingSelected() ? (this.prevInput = "", b = e.sel.primary(), c = (b = Ce && (100 < b.to().line - b.from().line || 1E3 < (c = d.getSelection()).length)) ? "-" : c || d.getSelection(), this.textarea.value = c, d.state.focused && Za(this.textarea), B && 9 <= C && (this.hasSelection = c)) : a || (this.prevInput = this.textarea.value = "", B && 9 <= C && (this.hasSelection = null));this.inaccurateSelection = b;
          }
        }, getField: function () {
          return this.textarea;
        }, supportsTouch: function () {
          return !1;
        },
        focus: function () {
          if ("nocursor" != this.cm.options.readOnly && (!ab || fa() != this.textarea)) try {
            this.textarea.focus();
          } catch (a) {}
        }, blur: function () {
          this.textarea.blur();
        }, resetPosition: function () {
          this.wrapper.style.top = this.wrapper.style.left = 0;
        }, receivedFocus: function () {
          this.slowPoll();
        }, slowPoll: function () {
          var a = this;a.pollingFast || a.polling.set(this.cm.options.pollInterval, function () {
            a.poll();a.cm.state.focused && a.slowPoll();
          });
        }, fastPoll: function () {
          function a() {
            c.poll() || b ? (c.pollingFast = !1, c.slowPoll()) : (b = !0, c.polling.set(60, a));
          }var b = !1,
              c = this;c.pollingFast = !0;c.polling.set(20, a);
        }, poll: function () {
          var a = this.cm,
              b = this.textarea,
              c = this.prevInput;if (!a.state.focused || ng(b) && !c || Rb(a) || a.options.disableInput || a.state.keySeq) return !1;a.state.pasteIncoming && a.state.fakedLastChar && (b.value = b.value.substring(0, b.value.length - 1), a.state.fakedLastChar = !1);var d = b.value;if (d == c && !a.somethingSelected()) return !1;if (B && 9 <= C && this.hasSelection === d || W && /[\uf700-\uf7ff]/.test(d)) return a.display.input.reset(), !1;if (a.doc.sel == a.display.selForContextMenu) {
            var e = d.charCodeAt(0);8203 != e || c || (c = "​");if (8666 == e) return this.reset(), this.cm.execCommand("undo");
          }for (var f = 0, e = Math.min(c.length, d.length); f < e && c.charCodeAt(f) == d.charCodeAt(f);) ++f;var g = this;T(a, function () {
            Sc(a, d.slice(f), c.length - f, null, g.composing ? "*compose" : null);1E3 < d.length || -1 < d.indexOf("\n") ? b.value = g.prevInput = "" : g.prevInput = d;g.composing && (g.composing.range.clear(), g.composing.range = a.markText(g.composing.start, a.getCursor("to"), { className: "CodeMirror-composing" }));
          });
          return !0;
        }, ensurePolled: function () {
          this.pollingFast && this.poll() && (this.pollingFast = !1);
        }, onKeyPress: function () {
          B && 9 <= C && (this.hasSelection = null);this.fastPoll();
        }, onContextMenu: function (a) {
          function b() {
            if (null != g.selectionStart) {
              var a = e.somethingSelected(),
                  b = "​" + (a ? g.value : "");g.value = "⇚";g.value = b;d.prevInput = a ? "" : "​";g.selectionStart = 1;g.selectionEnd = b.length;f.selForContextMenu = e.doc.sel;
            }
          }function c() {
            d.contextMenuPending = !1;d.wrapper.style.position = "relative";g.style.cssText = l;B && 9 > C && f.scrollbars.setScrollTop(f.scroller.scrollTop = k);if (null != g.selectionStart) {
              (!B || B && 9 > C) && b();var a = 0,
                  c = function () {
                f.selForContextMenu == e.doc.sel && 0 == g.selectionStart && 0 < g.selectionEnd && "​" == d.prevInput ? G(e, ic.selectAll)(e) : 10 > a++ ? f.detectingSelectAll = setTimeout(c, 500) : f.input.reset();
              };f.detectingSelectAll = setTimeout(c, 200);
            }
          }var d = this,
              e = d.cm,
              f = e.display,
              g = d.textarea,
              h = Ua(e, a),
              k = f.scroller.scrollTop;if (h && !ba) {
            e.options.resetSelectionOnContextMenu && -1 == e.doc.sel.contains(h) && G(e, H)(e.doc, ga(h), ha);var l = g.style.cssText;d.wrapper.style.position = "absolute";g.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (a.clientY - 5) + "px; left: " + (a.clientX - 5) + "px; z-index: 1000; background: " + (B ? "rgba(255, 255, 255, .05)" : "transparent") + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity\x3d5);";if (J) var m = window.scrollY;f.input.focus();J && window.scrollTo(null, m);f.input.reset();e.somethingSelected() || (g.value = d.prevInput = " ");d.contextMenuPending = !0;f.selForContextMenu = e.doc.sel;clearTimeout(f.detectingSelectAll);
            B && 9 <= C && b();if (id) {
              jd(a);var p = function () {
                ka(window, "mouseup", p);setTimeout(c, 20);
              };v(window, "mouseup", p);
            } else setTimeout(c, 50);
          }
        }, setUneditable: Eb, needsContentAttribute: !1 }, Tc.prototype);Uc.prototype = V({ init: function (a) {
          function b(a) {
            if (d.somethingSelected()) X = d.getSelections(), "cut" == a.type && d.replaceSelection("", null, "cut");else if (d.options.lineWiseCopyCut) {
              var b = Vd(d);X = b.text;"cut" == a.type && d.operation(function () {
                d.setSelections(b.ranges, 0, ha);d.replaceSelection("", null, "cut");
              });
            } else return;
            if (a.clipboardData && !Qa) a.preventDefault(), a.clipboardData.clearData(), a.clipboardData.setData("text/plain", X.join("\n"));else {
              var c = Xd();a = c.firstChild;d.display.lineSpace.insertBefore(c, d.display.lineSpace.firstChild);a.value = X.join("\n");var h = document.activeElement;Za(a);setTimeout(function () {
                d.display.lineSpace.removeChild(c);h.focus();
              }, 50);
            }
          }var c = this,
              d = c.cm;a = c.div = a.lineDiv;a.contentEditable = "true";Wd(a);v(a, "paste", function (a) {
            var b = a.clipboardData && a.clipboardData.getData("text/plain");
            b && (a.preventDefault(), d.replaceSelection(b, null, "paste"));
          });v(a, "compositionstart", function (a) {
            a = a.data;c.composing = { sel: d.doc.sel, data: a, startData: a };if (a) {
              var b = d.doc.sel.primary(),
                  g = d.getLine(b.head.line).indexOf(a, Math.max(0, b.head.ch - a.length));-1 < g && g <= b.head.ch && (c.composing.sel = ga(r(b.head.line, g), r(b.head.line, g + a.length)));
            }
          });v(a, "compositionupdate", function (a) {
            c.composing.data = a.data;
          });v(a, "compositionend", function (a) {
            var b = c.composing;b && (a.data == b.startData || /\u200b/.test(a.data) || (b.data = a.data), setTimeout(function () {
              b.handled || c.applyComposition(b);c.composing == b && (c.composing = null);
            }, 50));
          });v(a, "touchstart", function () {
            c.forceCompositionEnd();
          });v(a, "input", function () {
            c.composing || c.pollContent() || T(c.cm, function () {
              Q(d);
            });
          });v(a, "copy", b);v(a, "cut", b);
        }, prepareSelection: function () {
          var a = he(this.cm, !1);a.focus = this.cm.state.focused;return a;
        }, showSelection: function (a) {
          a && this.cm.display.view.length && (a.focus && this.showPrimarySelection(), this.showMultipleSelections(a));
        }, showPrimarySelection: function () {
          var a = window.getSelection(),
              b = this.cm.doc.sel.primary(),
              c = Tb(this.cm, a.anchorNode, a.anchorOffset),
              d = Tb(this.cm, a.focusNode, a.focusOffset);if (!c || c.bad || !d || d.bad || 0 != y(Qb(c, d), b.from()) || 0 != y(Pb(c, d), b.to())) if (c = Yd(this.cm, b.from()), d = Yd(this.cm, b.to()), c || d) {
            var e = this.cm.display.view,
                b = a.rangeCount && a.getRangeAt(0);c ? d || (d = e[e.length - 1].measure, d = d.maps ? d.maps[d.maps.length - 1] : d.map, d = { node: d[d.length - 1], offset: d[d.length - 2] - d[d.length - 3] }) : c = { node: e[0].measure.map[2], offset: 0 };try {
              var f = Ea(c.node, c.offset, d.offset, d.node);
            } catch (g) {}f && (a.removeAllRanges(), a.addRange(f), b && null == a.anchorNode ? a.addRange(b) : wa && this.startGracePeriod());this.rememberSelection();
          }
        }, startGracePeriod: function () {
          var a = this;clearTimeout(this.gracePeriod);this.gracePeriod = setTimeout(function () {
            a.gracePeriod = !1;a.selectionChanged() && a.cm.operation(function () {
              a.cm.curOp.selectionChanged = !0;
            });
          }, 20);
        }, showMultipleSelections: function (a) {
          U(this.cm.display.cursorDiv, a.cursors);U(this.cm.display.selectionDiv, a.selection);
        }, rememberSelection: function () {
          var a = window.getSelection();this.lastAnchorNode = a.anchorNode;this.lastAnchorOffset = a.anchorOffset;this.lastFocusNode = a.focusNode;this.lastFocusOffset = a.focusOffset;
        }, selectionInEditor: function () {
          var a = window.getSelection();if (!a.rangeCount) return !1;a = a.getRangeAt(0).commonAncestorContainer;return Wc(this.div, a);
        }, focus: function () {
          "nocursor" != this.cm.options.readOnly && this.div.focus();
        }, blur: function () {
          this.div.blur();
        }, getField: function () {
          return this.div;
        }, supportsTouch: function () {
          return !0;
        }, receivedFocus: function () {
          function a() {
            b.cm.state.focused && (b.pollSelection(), b.polling.set(b.cm.options.pollInterval, a));
          }var b = this;this.selectionInEditor() ? this.pollSelection() : T(this.cm, function () {
            b.cm.curOp.selectionChanged = !0;
          });this.polling.set(this.cm.options.pollInterval, a);
        }, selectionChanged: function () {
          var a = window.getSelection();return a.anchorNode != this.lastAnchorNode || a.anchorOffset != this.lastAnchorOffset || a.focusNode != this.lastFocusNode || a.focusOffset != this.lastFocusOffset;
        }, pollSelection: function () {
          if (!this.composing && !this.gracePeriod && this.selectionChanged()) {
            var a = window.getSelection(),
                b = this.cm;this.rememberSelection();var c = Tb(b, a.anchorNode, a.anchorOffset),
                d = Tb(b, a.focusNode, a.focusOffset);c && d && T(b, function () {
              H(b.doc, ga(c, d), ha);if (c.bad || d.bad) b.curOp.selectionChanged = !0;
            });
          }
        }, pollContent: function () {
          var a = this.cm,
              b = a.display,
              c = a.doc.sel.primary(),
              d = c.from(),
              c = c.to();if (d.line < b.viewFrom || c.line > b.viewTo - 1) return !1;var e;d.line == b.viewFrom || 0 == (e = Ca(a, d.line)) ? (d = F(b.view[0].line), e = b.view[0].node) : (d = F(b.view[e].line), e = b.view[e - 1].node.nextSibling);var f = Ca(a, c.line);f == b.view.length - 1 ? (c = b.viewTo - 1, b = b.view[f].node) : (c = F(b.view[f + 1].line) - 1, b = b.view[f + 1].node.previousSibling);b = sa(xf(a, e, b, d, c));for (e = Da(a.doc, r(d, 0), r(c, u(a.doc, c).text.length)); 1 < b.length && 1 < e.length;) if (A(b) == A(e)) b.pop(), e.pop(), c--;else if (b[0] == e[0]) b.shift(), e.shift(), d++;else break;for (var g = 0, f = 0, h = b[0], k = e[0], l = Math.min(h.length, k.length); g < l && h.charCodeAt(g) == k.charCodeAt(g);) ++g;h = A(b);k = A(e);for (l = Math.min(h.length - (1 == b.length ? g : 0), k.length - (1 == e.length ? g : 0)); f < l && h.charCodeAt(h.length - f - 1) == k.charCodeAt(k.length - f - 1);) ++f;b[b.length - 1] = h.slice(0, h.length - f);b[0] = b[0].slice(g);d = r(d, g);c = r(c, e.length ? A(e).length - f : 0);if (1 < b.length || b[0] || y(d, c)) return wb(a.doc, b, d, c, "+input"), !0;
        }, ensurePolled: function () {
          this.forceCompositionEnd();
        }, reset: function () {
          this.forceCompositionEnd();
        }, forceCompositionEnd: function () {
          this.composing && !this.composing.handled && (this.applyComposition(this.composing), this.composing.handled = !0, this.div.blur(), this.div.focus());
        }, applyComposition: function (a) {
          a.data && a.data != a.startData && G(this.cm, Sc)(this.cm, a.data, 0, a.sel);
        }, setUneditable: function (a) {
          a.setAttribute("contenteditable", "false");
        }, onKeyPress: function (a) {
          a.preventDefault();G(this.cm, Sc)(this.cm, String.fromCharCode(null == a.charCode ? a.keyCode : a.charCode), 0);
        }, onContextMenu: Eb, resetPosition: Eb, needsContentAttribute: !0 }, Uc.prototype);q.inputStyles = { textarea: Tc, contenteditable: Uc };la.prototype = { primary: function () {
          return this.ranges[this.primIndex];
        }, equals: function (a) {
          if (a == this) return !0;if (a.primIndex != this.primIndex || a.ranges.length != this.ranges.length) return !1;for (var b = 0; b < this.ranges.length; b++) {
            var c = this.ranges[b],
                d = a.ranges[b];if (0 != y(c.anchor, d.anchor) || 0 != y(c.head, d.head)) return !1;
          }return !0;
        }, deepCopy: function () {
          for (var a = [], b = 0; b < this.ranges.length; b++) a[b] = new z(Rc(this.ranges[b].anchor), Rc(this.ranges[b].head));return new la(a, this.primIndex);
        }, somethingSelected: function () {
          for (var a = 0; a < this.ranges.length; a++) if (!this.ranges[a].empty()) return !0;return !1;
        }, contains: function (a, b) {
          b || (b = a);
          for (var c = 0; c < this.ranges.length; c++) {
            var d = this.ranges[c];if (0 <= y(b, d.from()) && 0 >= y(a, d.to())) return c;
          }return -1;
        } };z.prototype = { from: function () {
          return Qb(this.anchor, this.head);
        }, to: function () {
          return Pb(this.anchor, this.head);
        }, empty: function () {
          return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;
        } };var ad = { left: 0, right: 0, top: 0, bottom: 0 },
          Fa,
          Ta = null,
          Ff = 0,
          fc,
          ec,
          se = 0,
          gc = 0,
          R = null;B ? R = -.53 : wa ? R = 15 : kg ? R = -.7 : te && (R = -1 / 3);var ze = function (a) {
        var b = a.wheelDeltaX,
            c = a.wheelDeltaY;null == b && a.detail && a.axis == a.HORIZONTAL_AXIS && (b = a.detail);null == c && a.detail && a.axis == a.VERTICAL_AXIS ? c = a.detail : null == c && (c = a.wheelDelta);return { x: b, y: c };
      };q.wheelEventPixels = function (a) {
        a = ze(a);a.x *= R;a.y *= R;return a;
      };var Qf = new bb(),
          md = null,
          ta = q.changeEnd = function (a) {
        return a.text ? r(a.from.line + a.text.length - 1, A(a.text).length + (1 == a.text.length ? a.from.ch : 0)) : a.to;
      };q.prototype = { constructor: q, focus: function () {
          window.focus();this.display.input.focus();
        }, setOption: function (a, b) {
          var c = this.options,
              d = c[a];if (c[a] != b || "mode" == a) c[a] = b, Ka.hasOwnProperty(a) && G(this, Ka[a])(this, b, d);
        }, getOption: function (a) {
          return this.options[a];
        }, getDoc: function () {
          return this.doc;
        }, addKeyMap: function (a, b) {
          this.state.keyMaps[b ? "push" : "unshift"](pc(a));
        }, removeKeyMap: function (a) {
          for (var b = this.state.keyMaps, c = 0; c < b.length; ++c) if (b[c] == a || b[c].name == a) return b.splice(c, 1), !0;
        }, addOverlay: M(function (a, b) {
          var c = a.token ? a : q.getMode(this.options, a);if (c.startState) throw Error("Overlays may not be stateful.");this.state.overlays.push({ mode: c, modeSpec: a,
            opaque: b && b.opaque });this.state.modeGen++;Q(this);
        }), removeOverlay: M(function (a) {
          for (var b = this.state.overlays, c = 0; c < b.length; ++c) {
            var d = b[c].modeSpec;if (d == a || "string" == typeof a && d.name == a) {
              b.splice(c, 1);this.state.modeGen++;Q(this);break;
            }
          }
        }), indentLine: M(function (a, b, c) {
          "string" != typeof b && "number" != typeof b && (b = null == b ? this.options.smartIndent ? "smart" : "prev" : b ? "add" : "subtract");qb(this.doc, a) && pb(this, a, b, c);
        }), indentSelection: M(function (a) {
          for (var b = this.doc.sel.ranges, c = -1, d = 0; d < b.length; d++) {
            var e = b[d];if (e.empty()) e.head.line > c && (pb(this, e.head.line, a, !0), c = e.head.line, d == this.doc.sel.primIndex && Pa(this));else {
              for (var f = e.from(), e = e.to(), g = Math.max(c, f.line), c = Math.min(this.lastLine(), e.line - (e.ch ? 0 : 1)) + 1, e = g; e < c; ++e) pb(this, e, a);e = this.doc.sel.ranges;0 == f.ch && b.length == e.length && 0 < e[d].from().ch && Xc(this.doc, d, new z(f, e[d].to()), ha);
            }
          }
        }), getTokenAt: function (a, b) {
          return Ye(this, a, b);
        }, getLineTokens: function (a, b) {
          return Ye(this, r(a), b, !0);
        }, getTokenTypeAt: function (a) {
          a = w(this.doc, a);var b = $e(this, u(this.doc, a.line)),
              c = 0,
              d = (b.length - 1) / 2;a = a.ch;if (0 == a) b = b[2];else for (;;) {
            var e = c + d >> 1;if ((e ? b[2 * e - 1] : 0) >= a) d = e;else if (b[2 * e + 1] < a) c = e + 1;else {
              b = b[2 * e + 2];break;
            }
          }c = b ? b.indexOf("cm-overlay ") : -1;return 0 > c ? b : 0 == c ? null : b.slice(0, c - 1);
        }, getModeAt: function (a) {
          var b = this.doc.mode;return b.innerMode ? q.innerMode(b, this.getTokenAt(a).state).mode : b;
        }, getHelper: function (a, b) {
          return this.getHelpers(a, b)[0];
        }, getHelpers: function (a, b) {
          var c = [];if (!$a.hasOwnProperty(b)) return c;var d = $a[b],
              e = this.getModeAt(a);if ("string" == typeof e[b]) d[e[b]] && c.push(d[e[b]]);else if (e[b]) for (var f = 0; f < e[b].length; f++) {
            var g = d[e[b][f]];g && c.push(g);
          } else e.helperType && d[e.helperType] ? c.push(d[e.helperType]) : d[e.name] && c.push(d[e.name]);for (f = 0; f < d._global.length; f++) g = d._global[f], g.pred(e, this) && -1 == D(c, g.val) && c.push(g.val);return c;
        }, getStateAfter: function (a, b) {
          var c = this.doc;a = Math.max(c.first, Math.min(null == a ? c.first + c.size - 1 : a, c.first + c.size - 1));return sb(this, a + 1, b);
        }, cursorCoords: function (a, b) {
          var c = this.doc.sel.primary();c = null == a ? c.head : "object" == typeof a ? w(this.doc, a) : a ? c.from() : c.to();return ma(this, c, b || "page");
        }, charCoords: function (a, b) {
          return Yb(this, w(this.doc, a), b || "page");
        }, coordsChar: function (a, b) {
          a = ne(this, a, b || "page");return fd(this, a.left, a.top);
        }, lineAtHeight: function (a, b) {
          a = ne(this, { top: a, left: 0 }, b || "page").top;return Ba(this.doc, a + this.display.viewOffset);
        }, heightAtLine: function (a, b) {
          var c = !1,
              d;"number" == typeof a ? (d = this.doc.first + this.doc.size - 1, a < this.doc.first ? a = this.doc.first : a > d && (a = d, c = !0), d = u(this.doc, a)) : d = a;return cd(this, d, { top: 0, left: 0 }, b || "page").top + (c ? this.doc.height - ea(d) : 0);
        }, defaultTextHeight: function () {
          return xa(this.display);
        }, defaultCharWidth: function () {
          return gb(this.display);
        }, setGutterMarker: M(function (a, b, c) {
          return nc(this.doc, a, "gutter", function (a) {
            var e = a.gutterMarkers || (a.gutterMarkers = {});e[b] = c;!c && hf(e) && (a.gutterMarkers = null);return !0;
          });
        }), clearGutter: M(function (a) {
          var b = this,
              c = b.doc,
              d = c.first;c.iter(function (c) {
            c.gutterMarkers && c.gutterMarkers[a] && (c.gutterMarkers[a] = null, na(b, d, "gutter"), hf(c.gutterMarkers) && (c.gutterMarkers = null));++d;
          });
        }), lineInfo: function (a) {
          if ("number" == typeof a) {
            if (!qb(this.doc, a)) return null;var b = a;a = u(this.doc, a);if (!a) return null;
          } else if (b = F(a), null == b) return null;return { line: b, handle: a, text: a.text, gutterMarkers: a.gutterMarkers, textClass: a.textClass, bgClass: a.bgClass, wrapClass: a.wrapClass, widgets: a.widgets };
        }, getViewport: function () {
          return { from: this.display.viewFrom, to: this.display.viewTo };
        }, addWidget: function (a, b, c, d, e) {
          var f = this.display;a = ma(this, w(this.doc, a));var g = a.bottom,
              h = a.left;b.style.position = "absolute";b.setAttribute("cm-ignore-events", "true");this.display.input.setUneditable(b);f.sizer.appendChild(b);if ("over" == d) g = a.top;else if ("above" == d || "near" == d) {
            var k = Math.max(f.wrapper.clientHeight, this.doc.height),
                l = Math.max(f.sizer.clientWidth, f.lineSpace.clientWidth);("above" == d || a.bottom + b.offsetHeight > k) && a.top > b.offsetHeight ? g = a.top - b.offsetHeight : a.bottom + b.offsetHeight <= k && (g = a.bottom);h + b.offsetWidth > l && (h = l - b.offsetWidth);
          }b.style.top = g + "px";b.style.left = b.style.right = "";"right" == e ? (h = f.sizer.clientWidth - b.offsetWidth, b.style.right = "0px") : ("left" == e ? h = 0 : "middle" == e && (h = (f.sizer.clientWidth - b.offsetWidth) / 2), b.style.left = h + "px");c && (a = cc(this, h, g, h + b.offsetWidth, g + b.offsetHeight), null != a.scrollTop && lb(this, a.scrollTop), null != a.scrollLeft && Ma(this, a.scrollLeft));
        }, triggerOnKeyDown: M(ve), triggerOnKeyPress: M(we), triggerOnKeyUp: ue, execCommand: function (a) {
          if (ic.hasOwnProperty(a)) return ic[a](this);
        }, findPosH: function (a, b, c, d) {
          var e = 1;
          0 > b && (e = -1, b = -b);var f = 0;for (a = w(this.doc, a); f < b && (a = rd(this.doc, a, e, c, d), !a.hitSide); ++f);return a;
        }, moveH: M(function (a, b) {
          var c = this;c.extendSelectionsBy(function (d) {
            return c.display.shift || c.doc.extend || d.empty() ? rd(c.doc, d.head, a, b, c.options.rtlMoveVisually) : 0 > a ? d.from() : d.to();
          }, Gb);
        }), deleteH: M(function (a, b) {
          var c = this.doc;this.doc.sel.somethingSelected() ? c.replaceSelection("", null, "+delete") : Va(this, function (d) {
            var e = rd(c, d.head, a, b, !1);return 0 > a ? { from: e, to: d.head } : { from: d.head, to: e };
          });
        }), findPosV: function (a, b, c, d) {
          var e = 1;0 > b && (e = -1, b = -b);var f = 0;for (a = w(this.doc, a); f < b && (a = ma(this, a, "div"), null == d ? d = a.left : a.left = d, a = Pe(this, a, e, c), !a.hitSide); ++f);return a;
        }, moveV: M(function (a, b) {
          var c = this,
              d = this.doc,
              e = [],
              f = !c.display.shift && !d.extend && d.sel.somethingSelected();d.extendSelectionsBy(function (g) {
            if (f) return 0 > a ? g.from() : g.to();var k = ma(c, g.head, "div");null != g.goalColumn && (k.left = g.goalColumn);e.push(k.left);var l = Pe(c, k, a, b);"page" == b && g == d.sel.primary() && lc(c, null, Yb(c, l, "div").top - k.top);return l;
          }, Gb);if (e.length) for (var g = 0; g < d.sel.ranges.length; g++) d.sel.ranges[g].goalColumn = e[g];
        }), findWordAt: function (a) {
          var b = u(this.doc, a.line).text,
              c = a.ch,
              d = a.ch;if (b) {
            var e = this.getHelper(a, "wordChars");(0 > a.xRel || d == b.length) && c ? --c : ++d;for (var f = b.charAt(c), f = oc(f, e) ? function (a) {
              return oc(a, e);
            } : /\s/.test(f) ? function (a) {
              return (/\s/.test(a)
              );
            } : function (a) {
              return !/\s/.test(a) && !oc(a);
            }; 0 < c && f(b.charAt(c - 1));) --c;for (; d < b.length && f(b.charAt(d));) ++d;
          }return new z(r(a.line, c), r(a.line, d));
        }, toggleOverwrite: function (a) {
          if (null == a || a != this.state.overwrite) (this.state.overwrite = !this.state.overwrite) ? mb(this.display.cursorDiv, "CodeMirror-overwrite") : kb(this.display.cursorDiv, "CodeMirror-overwrite"), K(this, "overwriteToggle", this, this.state.overwrite);
        }, hasFocus: function () {
          return this.display.input.getField() == fa();
        }, scrollTo: M(function (a, b) {
          null == a && null == b || mc(this);null != a && (this.curOp.scrollLeft = a);null != b && (this.curOp.scrollTop = b);
        }), getScrollInfo: function () {
          var a = this.display.scroller;return { left: a.scrollLeft, top: a.scrollTop,
            height: a.scrollHeight - da(this) - this.display.barHeight, width: a.scrollWidth - da(this) - this.display.barWidth, clientHeight: Nc(this), clientWidth: pa(this) };
        }, scrollIntoView: M(function (a, b) {
          null == a ? (a = { from: this.doc.sel.primary().head, to: null }, null == b && (b = this.options.cursorScrollMargin)) : "number" == typeof a ? a = { from: r(a, 0), to: null } : null == a.from && (a = { from: a, to: null });a.to || (a.to = a.from);a.margin = b || 0;if (null != a.from.line) mc(this), this.curOp.scrollToPos = a;else {
            var c = cc(this, Math.min(a.from.left, a.to.left), Math.min(a.from.top, a.to.top) - a.margin, Math.max(a.from.right, a.to.right), Math.max(a.from.bottom, a.to.bottom) + a.margin);this.scrollTo(c.scrollLeft, c.scrollTop);
          }
        }), setSize: M(function (a, b) {
          function c(a) {
            return "number" == typeof a || /^\d+$/.test(String(a)) ? a + "px" : a;
          }var d = this;null != a && (d.display.wrapper.style.width = c(a));null != b && (d.display.wrapper.style.height = c(b));d.options.lineWrapping && me(this);var e = d.display.viewFrom;d.doc.iter(e, d.display.viewTo, function (a) {
            if (a.widgets) for (var b = 0; b < a.widgets.length; b++) if (a.widgets[b].noHScroll) {
              na(d, e, "widget");break;
            }++e;
          });d.curOp.forceUpdate = !0;K(d, "refresh", this);
        }), operation: function (a) {
          return T(this, a);
        }, refresh: M(function () {
          var a = this.display.cachedTextHeight;Q(this);this.curOp.forceUpdate = !0;hb(this);this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop);Cc(this);(null == a || .5 < Math.abs(a - xa(this.display))) && Ac(this);K(this, "refresh", this);
        }), swapDoc: M(function (a) {
          var b = this.doc;b.cm = null;Ed(this, a);hb(this);this.display.input.reset();this.scrollTo(a.scrollLeft, a.scrollTop);this.curOp.forceScroll = !0;L(this, "swapDoc", this, b);return b;
        }), getInputField: function () {
          return this.display.input.getField();
        }, getWrapperElement: function () {
          return this.display.wrapper;
        }, getScrollerElement: function () {
          return this.display.scroller;
        }, getGutterElement: function () {
          return this.display.gutters;
        } };Ya(q);var qf = q.defaults = {},
          Ka = q.optionHandlers = {},
          Fd = q.Init = { toString: function () {
          return "CodeMirror.Init";
        } };x("value", "", function (a, b) {
        a.setValue(b);
      }, !0);x("mode", null, function (a, b) {
        a.doc.modeOption = b;zc(a);
      }, !0);x("indentUnit", 2, zc, !0);x("indentWithTabs", !1);x("smartIndent", !0);x("tabSize", 4, function (a) {
        eb(a);hb(a);Q(a);
      }, !0);x("specialChars", /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function (a, b, c) {
        a.state.specialChars = new RegExp(b.source + (b.test("\t") ? "" : "|\t"), "g");c != q.Init && a.refresh();
      });x("specialCharPlaceholder", function (a) {
        var b = t("span", "•", "cm-invalidchar");b.title = "\\u" + a.charCodeAt(0).toString(16);b.setAttribute("aria-label", b.title);return b;
      }, function (a) {
        a.refresh();
      }, !0);x("electricChars", !0);
      x("inputStyle", ab ? "contenteditable" : "textarea", function () {
        throw Error("inputStyle can not (yet) be changed in a running editor");
      }, !0);x("rtlMoveVisually", !mg);x("wholeLineUpdateBefore", !0);x("theme", "default", function (a) {
        Bd(a);ib(a);
      }, !0);x("keyMap", "default", function (a, b, c) {
        b = pc(b);(c = c != q.Init && pc(c)) && c.detach && c.detach(a, b);b.attach && b.attach(a, c || null);
      });x("extraKeys", null);x("lineWrapping", !1, function (a) {
        a.options.lineWrapping ? (mb(a.display.wrapper, "CodeMirror-wrap"), a.display.sizer.style.minWidth = "", a.display.sizerWidth = null) : (kb(a.display.wrapper, "CodeMirror-wrap"), Dc(a));Ac(a);Q(a);hb(a);setTimeout(function () {
          Na(a);
        }, 100);
      }, !0);x("gutters", [], function (a) {
        wc(a.options);ib(a);
      }, !0);x("fixedGutter", !0, function (a, b) {
        a.display.gutters.style.left = b ? Ic(a.display) + "px" : "0";a.refresh();
      }, !0);x("coverGutterNextToScrollbar", !1, function (a) {
        Na(a);
      }, !0);x("scrollbarStyle", "native", function (a) {
        Cd(a);Na(a);a.display.scrollbars.setScrollTop(a.doc.scrollTop);a.display.scrollbars.setScrollLeft(a.doc.scrollLeft);
      }, !0);x("lineNumbers", !1, function (a) {
        wc(a.options);ib(a);
      }, !0);x("firstLineNumber", 1, ib, !0);x("lineNumberFormatter", function (a) {
        return a;
      }, ib, !0);x("showCursorWhenSelecting", !1, nb, !0);x("resetSelectionOnContextMenu", !0);x("lineWiseCopyCut", !0);x("readOnly", !1, function (a, b) {
        "nocursor" == b ? (db(a), a.display.input.blur(), a.display.disabled = !0) : (a.display.disabled = !1, b || a.display.input.reset());
      });x("disableInput", !1, function (a, b) {
        b || a.display.input.reset();
      }, !0);x("dragDrop", !0, function (a, b, c) {
        !b != !(c && c != q.Init) && (c = a.display.dragFunctions, b = b ? v : ka, b(a.display.scroller, "dragstart", c.start), b(a.display.scroller, "dragenter", c.simple), b(a.display.scroller, "dragover", c.simple), b(a.display.scroller, "drop", c.drop));
      });x("cursorBlinkRate", 530);x("cursorScrollMargin", 0);x("cursorHeight", 1, nb, !0);x("singleCursorHeightPerLine", !0, nb, !0);x("workTime", 100);x("workDelay", 100);x("flattenSpans", !0, eb, !0);x("addModeClass", !1, eb, !0);x("pollInterval", 100);x("undoDepth", 200, function (a, b) {
        a.doc.history.undoDepth = b;
      });x("historyEventDelay", 1250);x("viewportMargin", 10, function (a) {
        a.refresh();
      }, !0);x("maxHighlightLength", 1E4, eb, !0);x("moveInputWithCursor", !0, function (a, b) {
        b || a.display.input.resetPosition();
      });x("tabindex", null, function (a, b) {
        a.display.input.getField().tabIndex = b || "";
      });x("autofocus", null);var pf = q.modes = {},
          Hb = q.mimeModes = {};q.defineMode = function (a, b) {
        q.defaults.mode || "null" == a || (q.defaults.mode = a);2 < arguments.length && (b.dependencies = Array.prototype.slice.call(arguments, 2));pf[a] = b;
      };q.defineMIME = function (a, b) {
        Hb[a] = b;
      };q.resolveMode = function (a) {
        if ("string" == typeof a && Hb.hasOwnProperty(a)) a = Hb[a];else if (a && "string" == typeof a.name && Hb.hasOwnProperty(a.name)) {
          var b = Hb[a.name];"string" == typeof b && (b = { name: b });a = ff(b, a);a.name = b.name;
        } else if ("string" == typeof a && /^[\w\-]+\/[\w\-]+\+xml$/.test(a)) return q.resolveMode("application/xml");return "string" == typeof a ? { name: a } : a || { name: "null" };
      };q.getMode = function (a, b) {
        b = q.resolveMode(b);var c = pf[b.name];if (!c) return q.getMode(a, "text/plain");c = c(a, b);if (Ib.hasOwnProperty(b.name)) {
          var d = Ib[b.name],
              e;for (e in d) d.hasOwnProperty(e) && (c.hasOwnProperty(e) && (c["_" + e] = c[e]), c[e] = d[e]);
        }c.name = b.name;b.helperType && (c.helperType = b.helperType);if (b.modeProps) for (e in b.modeProps) c[e] = b.modeProps[e];return c;
      };q.defineMode("null", function () {
        return { token: function (a) {
            a.skipToEnd();
          } };
      });q.defineMIME("text/plain", "null");var Ib = q.modeExtensions = {};q.extendMode = function (a, b) {
        var c = Ib.hasOwnProperty(a) ? Ib[a] : Ib[a] = {};V(b, c);
      };q.defineExtension = function (a, b) {
        q.prototype[a] = b;
      };q.defineDocExtension = function (a, b) {
        P.prototype[a] = b;
      };q.defineOption = x;var yc = [];q.defineInitHook = function (a) {
        yc.push(a);
      };var $a = q.helpers = {};q.registerHelper = function (a, b, c) {
        $a.hasOwnProperty(a) || ($a[a] = q[a] = { _global: [] });$a[a][b] = c;
      };q.registerGlobalHelper = function (a, b, c, d) {
        q.registerHelper(a, b, d);$a[a]._global.push({ pred: c, val: d });
      };var Sa = q.copyState = function (a, b) {
        if (!0 === b) return b;if (a.copyState) return a.copyState(b);var c = {},
            d;for (d in b) {
          var e = b[d];e instanceof Array && (e = e.concat([]));c[d] = e;
        }return c;
      },
          Df = q.startState = function (a, b, c) {
        return a.startState ? a.startState(b, c) : !0;
      };q.innerMode = function (a, b) {
        for (; a.innerMode;) {
          var c = a.innerMode(b);if (!c || c.mode == a) break;b = c.state;a = c.mode;
        }return c || { mode: a, state: b };
      };var ic = q.commands = { selectAll: function (a) {
          a.setSelection(r(a.firstLine(), 0), r(a.lastLine()), ha);
        }, singleSelection: function (a) {
          a.setSelection(a.getCursor("anchor"), a.getCursor("head"), ha);
        }, killLine: function (a) {
          Va(a, function (b) {
            if (b.empty()) {
              var c = u(a.doc, b.head.line).text.length;return b.head.ch == c && b.head.line < a.lastLine() ? { from: b.head, to: r(b.head.line + 1, 0) } : { from: b.head, to: r(b.head.line, c) };
            }return { from: b.from(), to: b.to() };
          });
        }, deleteLine: function (a) {
          Va(a, function (b) {
            return { from: r(b.from().line, 0), to: w(a.doc, r(b.to().line + 1, 0)) };
          });
        }, delLineLeft: function (a) {
          Va(a, function (a) {
            return { from: r(a.from().line, 0), to: a.from() };
          });
        }, delWrappedLineLeft: function (a) {
          Va(a, function (b) {
            var c = a.charCoords(b.head, "div").top + 5;return { from: a.coordsChar({ left: 0, top: c }, "div"), to: b.from() };
          });
        }, delWrappedLineRight: function (a) {
          Va(a, function (b) {
            var c = a.charCoords(b.head, "div").top + 5,
                c = a.coordsChar({ left: a.display.lineDiv.offsetWidth + 100, top: c }, "div");return { from: b.from(), to: c };
          });
        }, undo: function (a) {
          a.undo();
        }, redo: function (a) {
          a.redo();
        }, undoSelection: function (a) {
          a.undoSelection();
        }, redoSelection: function (a) {
          a.redoSelection();
        }, goDocStart: function (a) {
          a.extendSelection(r(a.firstLine(), 0));
        }, goDocEnd: function (a) {
          a.extendSelection(r(a.lastLine()));
        }, goLineStart: function (a) {
          a.extendSelectionsBy(function (b) {
            return kf(a, b.head.line);
          }, { origin: "+move", bias: 1 });
        }, goLineStartSmart: function (a) {
          a.extendSelectionsBy(function (b) {
            return lf(a, b.head);
          }, { origin: "+move", bias: 1 });
        }, goLineEnd: function (a) {
          a.extendSelectionsBy(function (b) {
            b = b.head.line;for (var c, d = u(a.doc, b); c = Aa(d, !1);) d = c.find(1, !0).line, b = null;c = (c = Y(d)) ? c[0].level % 2 ? ac(d) : bc(d) : d.text.length;return r(null == b ? F(d) : b, c);
          }, { origin: "+move", bias: -1 });
        }, goLineRight: function (a) {
          a.extendSelectionsBy(function (b) {
            b = a.charCoords(b.head, "div").top + 5;return a.coordsChar({ left: a.display.lineDiv.offsetWidth + 100, top: b }, "div");
          }, Gb);
        }, goLineLeft: function (a) {
          a.extendSelectionsBy(function (b) {
            b = a.charCoords(b.head, "div").top + 5;return a.coordsChar({ left: 0, top: b }, "div");
          }, Gb);
        }, goLineLeftSmart: function (a) {
          a.extendSelectionsBy(function (b) {
            var c = a.charCoords(b.head, "div").top + 5,
                c = a.coordsChar({ left: 0, top: c }, "div");return c.ch < a.getLine(c.line).search(/\S/) ? lf(a, b.head) : c;
          }, Gb);
        }, goLineUp: function (a) {
          a.moveV(-1, "line");
        }, goLineDown: function (a) {
          a.moveV(1, "line");
        }, goPageUp: function (a) {
          a.moveV(-1, "page");
        }, goPageDown: function (a) {
          a.moveV(1, "page");
        }, goCharLeft: function (a) {
          a.moveH(-1, "char");
        }, goCharRight: function (a) {
          a.moveH(1, "char");
        }, goColumnLeft: function (a) {
          a.moveH(-1, "column");
        }, goColumnRight: function (a) {
          a.moveH(1, "column");
        }, goWordLeft: function (a) {
          a.moveH(-1, "word");
        }, goGroupRight: function (a) {
          a.moveH(1, "group");
        }, goGroupLeft: function (a) {
          a.moveH(-1, "group");
        }, goWordRight: function (a) {
          a.moveH(1, "word");
        }, delCharBefore: function (a) {
          a.deleteH(-1, "char");
        }, delCharAfter: function (a) {
          a.deleteH(1, "char");
        }, delWordBefore: function (a) {
          a.deleteH(-1, "word");
        }, delWordAfter: function (a) {
          a.deleteH(1, "word");
        }, delGroupBefore: function (a) {
          a.deleteH(-1, "group");
        }, delGroupAfter: function (a) {
          a.deleteH(1, "group");
        }, indentAuto: function (a) {
          a.indentSelection("smart");
        }, indentMore: function (a) {
          a.indentSelection("add");
        }, indentLess: function (a) {
          a.indentSelection("subtract");
        }, insertTab: function (a) {
          a.replaceSelection("\t");
        }, insertSoftTab: function (a) {
          for (var b = [], c = a.listSelections(), d = a.options.tabSize, e = 0; e < c.length; e++) {
            var f = c[e].from(),
                f = aa(a.getLine(f.line), f.ch, d);b.push(Array(d - f % d + 1).join(" "));
          }a.replaceSelections(b);
        }, defaultTab: function (a) {
          a.somethingSelected() ? a.indentSelection("add") : a.execCommand("insertTab");
        }, transposeChars: function (a) {
          T(a, function () {
            for (var b = a.listSelections(), c = [], d = 0; d < b.length; d++) {
              var e = b[d].head,
                  f = u(a.doc, e.line).text;if (f) if (e.ch == f.length && (e = new r(e.line, e.ch - 1)), 0 < e.ch) e = new r(e.line, e.ch + 1), a.replaceRange(f.charAt(e.ch - 1) + f.charAt(e.ch - 2), r(e.line, e.ch - 2), e, "+transpose");else if (e.line > a.doc.first) {
                var g = u(a.doc, e.line - 1).text;g && a.replaceRange(f.charAt(0) + "\n" + g.charAt(g.length - 1), r(e.line - 1, g.length - 1), r(e.line, 1), "+transpose");
              }c.push(new z(e, e));
            }a.setSelections(c);
          });
        }, newlineAndIndent: function (a) {
          T(a, function () {
            for (var b = a.listSelections().length, c = 0; c < b; c++) {
              var d = a.listSelections()[c];a.replaceRange("\n", d.anchor, d.head, "+input");a.indentLine(d.from().line + 1, null, !0);Pa(a);
            }
          });
        }, toggleOverwrite: function (a) {
          a.toggleOverwrite();
        } },
          ua = q.keyMap = {};ua.basic = { Left: "goCharLeft", Right: "goCharRight", Up: "goLineUp", Down: "goLineDown", End: "goLineEnd", Home: "goLineStartSmart", PageUp: "goPageUp", PageDown: "goPageDown", Delete: "delCharAfter", Backspace: "delCharBefore",
        "Shift-Backspace": "delCharBefore", Tab: "defaultTab", "Shift-Tab": "indentAuto", Enter: "newlineAndIndent", Insert: "toggleOverwrite", Esc: "singleSelection" };ua.pcDefault = { "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter",
        "Ctrl-S": "save", "Ctrl-F": "find", "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", fallthrough: "basic" };ua.emacsy = { "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp",
        "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" };ua.macDefault = { "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", "Ctrl-Alt-Backspace": "delGroupAfter",
        "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", fallthrough: ["basic", "emacsy"] };ua["default"] = W ? ua.macDefault : ua.pcDefault;q.normalizeKeyMap = function (a) {
        var b = {},
            c;for (c in a) if (a.hasOwnProperty(c)) {
          var d = a[c];if (!/^(name|fallthrough|(de|at)tach)$/.test(c)) {
            if ("..." != d) for (var e = ob(c.split(" "), Wf), f = 0; f < e.length; f++) {
              var g, h;f == e.length - 1 ? (h = c, g = d) : (h = e.slice(0, f + 1).join(" "), g = "...");var k = b[h];if (!k) b[h] = g;else if (k != g) throw Error("Inconsistent bindings for " + h);
            }delete a[c];
          }
        }for (var l in b) a[l] = b[l];return a;
      };var xb = q.lookupKey = function (a, b, c, d) {
        b = pc(b);var e = b.call ? b.call(a, d) : b[a];if (!1 === e) return "nothing";if ("..." === e) return "multi";if (null != e && c(e)) return "handled";if (b.fallthrough) {
          if ("[object Array]" != Object.prototype.toString.call(b.fallthrough)) return xb(a, b.fallthrough, c, d);for (e = 0; e < b.fallthrough.length; e++) {
            var f = xb(a, b.fallthrough[e], c, d);if (f) return f;
          }
        }
      },
          Pf = q.isModifierKey = function (a) {
        a = "string" == typeof a ? a : va[a.keyCode];return "Ctrl" == a || "Alt" == a || "Shift" == a || "Mod" == a;
      },
          Rf = q.keyName = function (a, b) {
        if (ba && 34 == a.keyCode && a["char"]) return !1;var c = va[a.keyCode],
            d = c;if (null == d || a.altGraphKey) return !1;a.altKey && "Alt" != c && (d = "Alt-" + d);(of ? a.metaKey : a.ctrlKey) && "Ctrl" != c && (d = "Ctrl-" + d);(of ? a.ctrlKey : a.metaKey) && "Cmd" != c && (d = "Cmd-" + d);!b && a.shiftKey && "Shift" != c && (d = "Shift-" + d);return d;
      };q.fromTextArea = function (a, b) {
        function c() {
          a.value = k.getValue();
        }b = b ? V(b) : {};b.value = a.value;!b.tabindex && a.tabIndex && (b.tabindex = a.tabIndex);!b.placeholder && a.placeholder && (b.placeholder = a.placeholder);if (null == b.autofocus) {
          var d = fa();b.autofocus = d == a || null != a.getAttribute("autofocus") && d == document.body;
        }if (a.form && (v(a.form, "submit", c), !b.leaveSubmitMethodAlone)) {
          var e = a.form,
              f = e.submit;try {
            var g = e.submit = function () {
              c();
              e.submit = f;e.submit();e.submit = g;
            };
          } catch (h) {}
        }b.finishInit = function (b) {
          b.save = c;b.getTextArea = function () {
            return a;
          };b.toTextArea = function () {
            b.toTextArea = isNaN;c();a.parentNode.removeChild(b.getWrapperElement());a.style.display = "";a.form && (ka(a.form, "submit", c), "function" == typeof a.form.submit && (a.form.submit = f));
          };
        };a.style.display = "none";var k = q(function (b) {
          a.parentNode.insertBefore(b, a.nextSibling);
        }, b);return k;
      };var tc = q.StringStream = function (a, b) {
        this.pos = this.start = 0;this.string = a;this.tabSize = b || 8;this.lineStart = this.lastColumnPos = this.lastColumnValue = 0;
      };tc.prototype = { eol: function () {
          return this.pos >= this.string.length;
        }, sol: function () {
          return this.pos == this.lineStart;
        }, peek: function () {
          return this.string.charAt(this.pos) || void 0;
        }, next: function () {
          if (this.pos < this.string.length) return this.string.charAt(this.pos++);
        }, eat: function (a) {
          var b = this.string.charAt(this.pos);if ("string" == typeof a ? b == a : b && (a.test ? a.test(b) : a(b))) return ++this.pos, b;
        }, eatWhile: function (a) {
          for (var b = this.pos; this.eat(a););return this.pos > b;
        }, eatSpace: function () {
          for (var a = this.pos; /[\s\u00a0]/.test(this.string.charAt(this.pos));) ++this.pos;return this.pos > a;
        }, skipToEnd: function () {
          this.pos = this.string.length;
        }, skipTo: function (a) {
          a = this.string.indexOf(a, this.pos);if (-1 < a) return this.pos = a, !0;
        }, backUp: function (a) {
          this.pos -= a;
        }, column: function () {
          this.lastColumnPos < this.start && (this.lastColumnValue = aa(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue), this.lastColumnPos = this.start);return this.lastColumnValue - (this.lineStart ? aa(this.string, this.lineStart, this.tabSize) : 0);
        }, indentation: function () {
          return aa(this.string, null, this.tabSize) - (this.lineStart ? aa(this.string, this.lineStart, this.tabSize) : 0);
        }, match: function (a, b, c) {
          if ("string" == typeof a) {
            var d = function (a) {
              return c ? a.toLowerCase() : a;
            },
                e = this.string.substr(this.pos, a.length);if (d(e) == d(a)) return !1 !== b && (this.pos += a.length), !0;
          } else {
            if ((a = this.string.slice(this.pos).match(a)) && 0 < a.index) return null;a && !1 !== b && (this.pos += a[0].length);return a;
          }
        }, current: function () {
          return this.string.slice(this.start, this.pos);
        }, hideFirstChars: function (a, b) {
          this.lineStart += a;try {
            return b();
          } finally {
            this.lineStart -= a;
          }
        } };var sd = 0,
          Ha = q.TextMarker = function (a, b) {
        this.lines = [];this.type = b;this.doc = a;this.id = ++sd;
      };Ya(Ha);Ha.prototype.clear = function () {
        if (!this.explicitlyCleared) {
          var a = this.doc.cm,
              b = a && !a.curOp;b && Ja(a);if (S(this, "clear")) {
            var c = this.find();c && L(this, "clear", c.from, c.to);
          }for (var d = c = null, e = 0; e < this.lines.length; ++e) {
            var f = this.lines[e],
                g = zb(f.markedSpans, this);a && !this.collapsed ? na(a, F(f), "text") : a && (null != g.to && (d = F(f)), null != g.from && (c = F(f)));for (var h = f, k = f.markedSpans, l = g, m = void 0, p = 0; p < k.length; ++p) k[p] != l && (m || (m = [])).push(k[p]);h.markedSpans = m;null == g.from && this.collapsed && !ya(this.doc, f) && a && ca(f, xa(a.display));
          }if (a && this.collapsed && !a.options.lineWrapping) for (e = 0; e < this.lines.length; ++e) f = ia(this.lines[e]), g = Kb(f), g > a.display.maxLineLength && (a.display.maxLine = f, a.display.maxLineLength = g, a.display.maxLineChanged = !0);null != c && a && this.collapsed && Q(a, c, d + 1);this.lines.length = 0;this.explicitlyCleared = !0;this.atomic && this.doc.cantEdit && (this.doc.cantEdit = !1, a && ge(a.doc));a && L(a, "markerCleared", a, this);b && La(a);this.parent && this.parent.clear();
        }
      };Ha.prototype.find = function (a, b) {
        null == a && "bookmark" == this.type && (a = 1);for (var c, d, e = 0; e < this.lines.length; ++e) {
          var f = this.lines[e],
              g = zb(f.markedSpans, this);if (null != g.from && (c = r(b ? f : F(f), g.from), -1 == a)) return c;if (null != g.to && (d = r(b ? f : F(f), g.to), 1 == a)) return d;
        }return c && { from: c, to: d };
      };Ha.prototype.changed = function () {
        var a = this.find(-1, !0),
            b = this,
            c = this.doc.cm;
        a && c && T(c, function () {
          var d = a.line,
              e = F(a.line);if (e = Vc(c, e)) le(e), c.curOp.selectionChanged = c.curOp.forceUpdate = !0;c.curOp.updateMaxLine = !0;ya(b.doc, d) || null == b.height || (e = b.height, b.height = null, (e = ub(b) - e) && ca(d, d.height + e));
        });
      };Ha.prototype.attachLine = function (a) {
        if (!this.lines.length && this.doc.cm) {
          var b = this.doc.cm.curOp;b.maybeHiddenMarkers && -1 != D(b.maybeHiddenMarkers, this) || (b.maybeUnhiddenMarkers || (b.maybeUnhiddenMarkers = [])).push(this);
        }this.lines.push(a);
      };Ha.prototype.detachLine = function (a) {
        this.lines.splice(D(this.lines, a), 1);!this.lines.length && this.doc.cm && (a = this.doc.cm.curOp, (a.maybeHiddenMarkers || (a.maybeHiddenMarkers = [])).push(this));
      };var sd = 0,
          rc = q.SharedTextMarker = function (a, b) {
        this.markers = a;this.primary = b;for (var c = 0; c < a.length; ++c) a[c].parent = this;
      };Ya(rc);rc.prototype.clear = function () {
        if (!this.explicitlyCleared) {
          this.explicitlyCleared = !0;for (var a = 0; a < this.markers.length; ++a) this.markers[a].clear();L(this, "clear");
        }
      };rc.prototype.find = function (a, b) {
        return this.primary.find(a, b);
      };var sc = q.LineWidget = function (a, b, c) {
        if (c) for (var d in c) c.hasOwnProperty(d) && (this[d] = c[d]);this.doc = a;this.node = b;
      };Ya(sc);sc.prototype.clear = function () {
        var a = this.doc.cm,
            b = this.line.widgets,
            c = this.line,
            d = F(c);if (null != d && b) {
          for (var e = 0; e < b.length; ++e) b[e] == this && b.splice(e--, 1);b.length || (c.widgets = null);var f = ub(this);ca(c, Math.max(0, c.height - f));a && T(a, function () {
            ea(c) < (a.curOp && a.curOp.scrollTop || a.doc.scrollTop) && lc(a, null, -f);na(a, d, "widget");
          });
        }
      };sc.prototype.changed = function () {
        var a = this.height,
            b = this.doc.cm,
            c = this.line;
        this.height = null;var d = ub(this) - a;d && (ca(c, c.height + d), b && T(b, function () {
          b.curOp.forceUpdate = !0;ea(c) < (b.curOp && b.curOp.scrollTop || b.doc.scrollTop) && lc(b, null, d);
        }));
      };var Ab = q.Line = function (a, b, c) {
        this.text = a;Ue(this, b);this.height = c ? c(this) : 1;
      };Ya(Ab);Ab.prototype.lineNo = function () {
        return F(this);
      };var bg = {},
          ag = {};Bb.prototype = { chunkSize: function () {
          return this.lines.length;
        }, removeInner: function (a, b) {
          for (var c = a; c < a + b; ++c) {
            var e = this.lines[c];this.height -= e.height;var f = e;f.parent = null;Te(f);L(e, "delete");
          }this.lines.splice(a, b);
        }, collapse: function (a) {
          a.push.apply(a, this.lines);
        }, insertInner: function (a, b, c) {
          this.height += c;this.lines = this.lines.slice(0, a).concat(b).concat(this.lines.slice(a));for (a = 0; a < b.length; ++a) b[a].parent = this;
        }, iterN: function (a, b, c) {
          for (b = a + b; a < b; ++a) if (c(this.lines[a])) return !0;
        } };Cb.prototype = { chunkSize: function () {
          return this.size;
        }, removeInner: function (a, b) {
          this.size -= b;for (var c = 0; c < this.children.length; ++c) {
            var d = this.children[c],
                e = d.chunkSize();if (a < e) {
              var f = Math.min(b, e - a),
                  g = d.height;d.removeInner(a, f);this.height -= g - d.height;e == f && (this.children.splice(c--, 1), d.parent = null);if (0 == (b -= f)) break;a = 0;
            } else a -= e;
          }25 > this.size - b && (1 < this.children.length || !(this.children[0] instanceof Bb)) && (c = [], this.collapse(c), this.children = [new Bb(c)], this.children[0].parent = this);
        }, collapse: function (a) {
          for (var b = 0; b < this.children.length; ++b) this.children[b].collapse(a);
        }, insertInner: function (a, b, c) {
          this.size += b.length;this.height += c;for (var d = 0; d < this.children.length; ++d) {
            var e = this.children[d],
                f = e.chunkSize();if (a <= f) {
              e.insertInner(a, b, c);if (e.lines && 50 < e.lines.length) {
                for (; 50 < e.lines.length;) a = e.lines.splice(e.lines.length - 25, 25), a = new Bb(a), e.height -= a.height, this.children.splice(d + 1, 0, a), a.parent = this;this.maybeSpill();
              }break;
            }a -= f;
          }
        }, maybeSpill: function () {
          if (!(10 >= this.children.length)) {
            var a = this;do {
              var b = a.children.splice(a.children.length - 5, 5),
                  b = new Cb(b);if (a.parent) {
                a.size -= b.size;a.height -= b.height;var c = D(a.parent.children, a);a.parent.children.splice(c + 1, 0, b);
              } else c = new Cb(a.children), c.parent = a, a.children = [c, b], a = c;b.parent = a.parent;
            } while (10 < a.children.length);a.parent.maybeSpill();
          }
        }, iterN: function (a, b, c) {
          for (var d = 0; d < this.children.length; ++d) {
            var e = this.children[d],
                f = e.chunkSize();if (a < f) {
              f = Math.min(b, f - a);if (e.iterN(a, f, c)) return !0;if (0 == (b -= f)) break;a = 0;
            } else a -= f;
          }
        } };var og = 0,
          P = q.Doc = function (a, b, c) {
        if (!(this instanceof P)) return new P(a, b, c);null == c && (c = 0);Cb.call(this, [new Bb([new Ab("", null)])]);this.first = c;this.scrollTop = this.scrollLeft = 0;this.cantEdit = !1;this.cleanGeneration = 1;this.frontier = c;c = r(c, 0);this.sel = ga(c);this.history = new uc(null);this.id = ++og;this.modeOption = b;"string" == typeof a && (a = sa(a));qd(this, { from: c, to: c, text: a });H(this, ga(c), ha);
      };P.prototype = ff(Cb.prototype, { constructor: P, iter: function (a, b, c) {
          c ? this.iterN(a - this.first, b - a, c) : this.iterN(this.first, this.first + this.size, a);
        }, insert: function (a, b) {
          for (var c = 0, d = 0; d < b.length; ++d) c += b[d].height;this.insertInner(a - this.first, b, c);
        }, remove: function (a, b) {
          this.removeInner(a - this.first, b);
        }, getValue: function (a) {
          var b = xd(this, this.first, this.first + this.size);return !1 === a ? b : b.join(a || "\n");
        }, setValue: N(function (a) {
          var b = r(this.first, 0),
              c = this.first + this.size - 1;Oa(this, { from: b, to: r(c, u(this, c).text.length), text: sa(a), origin: "setValue", full: !0 }, !0);H(this, ga(b));
        }), replaceRange: function (a, b, c, d) {
          b = w(this, b);c = c ? w(this, c) : b;wb(this, a, b, c, d);
        }, getRange: function (a, b, c) {
          a = Da(this, w(this, a), w(this, b));return !1 === c ? a : a.join(c || "\n");
        }, getLine: function (a) {
          return (a = this.getLineHandle(a)) && a.text;
        }, getLineHandle: function (a) {
          if (qb(this, a)) return u(this, a);
        }, getLineNumber: function (a) {
          return F(a);
        }, getLineHandleVisualStart: function (a) {
          "number" == typeof a && (a = u(this, a));return ia(a);
        }, lineCount: function () {
          return this.size;
        }, firstLine: function () {
          return this.first;
        }, lastLine: function () {
          return this.first + this.size - 1;
        }, clipPos: function (a) {
          return w(this, a);
        }, getCursor: function (a) {
          var b = this.sel.primary();return null == a || "head" == a ? b.head : "anchor" == a ? b.anchor : "end" == a || "to" == a || !1 === a ? b.to() : b.from();
        }, listSelections: function () {
          return this.sel.ranges;
        },
        somethingSelected: function () {
          return this.sel.somethingSelected();
        }, setCursor: N(function (a, b, c) {
          a = w(this, "number" == typeof a ? r(a, b || 0) : a);H(this, ga(a, null), c);
        }), setSelection: N(function (a, b, c) {
          var d = w(this, a);a = w(this, b || a);H(this, ga(d, a), c);
        }), extendSelection: N(function (a, b, c) {
          Ub(this, w(this, a), b && w(this, b), c);
        }), extendSelections: N(function (a, b) {
          for (var c = [], d = 0; d < a.length; d++) c[d] = w(this, a[d]);ae(this, c);
        }), extendSelectionsBy: N(function (a, b) {
          ae(this, ob(this.sel.ranges, a), b);
        }), setSelections: N(function (a, b, c) {
          if (a.length) {
            for (var d = 0, e = []; d < a.length; d++) e[d] = new z(w(this, a[d].anchor), w(this, a[d].head));null == b && (b = Math.min(a.length - 1, this.sel.primIndex));H(this, Z(e, b), c);
          }
        }), addSelection: N(function (a, b, c) {
          var d = this.sel.ranges.slice(0);d.push(new z(w(this, a), w(this, b || a)));H(this, Z(d, d.length - 1), c);
        }), getSelection: function (a) {
          for (var b = this.sel.ranges, c, d = 0; d < b.length; d++) {
            var e = Da(this, b[d].from(), b[d].to());c = c ? c.concat(e) : e;
          }return !1 === a ? c : c.join(a || "\n");
        }, getSelections: function (a) {
          for (var b = [], c = this.sel.ranges, d = 0; d < c.length; d++) {
            var e = Da(this, c[d].from(), c[d].to());!1 !== a && (e = e.join(a || "\n"));b[d] = e;
          }return b;
        }, replaceSelection: function (a, b, c) {
          for (var d = [], e = 0; e < this.sel.ranges.length; e++) d[e] = a;this.replaceSelections(d, b, c || "+input");
        }, replaceSelections: N(function (a, b, c) {
          for (var d = [], e = this.sel, f = 0; f < e.ranges.length; f++) {
            var g = e.ranges[f];d[f] = { from: g.from(), to: g.to(), text: sa(a[f]), origin: c };
          }if (f = b && "end" != b) {
            f = [];c = a = r(this.first, 0);for (e = 0; e < d.length; e++) {
              var h = d[e],
                  g = Ee(h.from, a, c),
                  k = Ee(ta(h), a, c);a = h.to;c = k;"around" == b ? (h = this.sel.ranges[e], h = 0 > y(h.head, h.anchor), f[e] = new z(h ? k : g, h ? g : k)) : f[e] = new z(g, g);
            }f = new la(f, this.sel.primIndex);
          }b = f;for (f = d.length - 1; 0 <= f; f--) Oa(this, d[f]);b ? be(this, b) : this.cm && Pa(this.cm);
        }), undo: N(function () {
          kc(this, "undo");
        }), redo: N(function () {
          kc(this, "redo");
        }), undoSelection: N(function () {
          kc(this, "undo", !0);
        }), redoSelection: N(function () {
          kc(this, "redo", !0);
        }), setExtending: function (a) {
          this.extend = a;
        }, getExtending: function () {
          return this.extend;
        }, historySize: function () {
          for (var a = this.history, b = 0, c = 0, d = 0; d < a.done.length; d++) a.done[d].ranges || ++b;for (d = 0; d < a.undone.length; d++) a.undone[d].ranges || ++c;return { undo: b, redo: c };
        }, clearHistory: function () {
          this.history = new uc(this.history.maxGeneration);
        }, markClean: function () {
          this.cleanGeneration = this.changeGeneration(!0);
        }, changeGeneration: function (a) {
          a && (this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null);return this.history.generation;
        }, isClean: function (a) {
          return this.history.generation == (a || this.cleanGeneration);
        },
        getHistory: function () {
          return { done: Xa(this.history.done), undone: Xa(this.history.undone) };
        }, setHistory: function (a) {
          var b = this.history = new uc(this.history.maxGeneration);b.done = Xa(a.done.slice(0), null, !0);b.undone = Xa(a.undone.slice(0), null, !0);
        }, addLineClass: N(function (a, b, c) {
          return nc(this, a, "gutter" == b ? "gutter" : "class", function (a) {
            var e = "text" == b ? "textClass" : "background" == b ? "bgClass" : "gutter" == b ? "gutterClass" : "wrapClass";if (a[e]) {
              if (Fb(c).test(a[e])) return !1;a[e] += " " + c;
            } else a[e] = c;return !0;
          });
        }), removeLineClass: N(function (a, b, c) {
          return nc(this, a, "gutter" == b ? "gutter" : "class", function (a) {
            var e = "text" == b ? "textClass" : "background" == b ? "bgClass" : "gutter" == b ? "gutterClass" : "wrapClass",
                f = a[e];if (f) {
              if (null == c) a[e] = null;else {
                var g = f.match(Fb(c));if (!g) return !1;var h = g.index + g[0].length;a[e] = f.slice(0, g.index) + (g.index && h != f.length ? " " : "") + f.slice(h) || null;
              }
            } else return !1;return !0;
          });
        }), addLineWidget: N(function (a, b, c) {
          return $f(this, a, b, c);
        }), removeLineWidget: function (a) {
          a.clear();
        }, markText: function (a, b, c) {
          return Wa(this, w(this, a), w(this, b), c, "range");
        }, setBookmark: function (a, b) {
          var c = { replacedWith: b && (null == b.nodeType ? b.widget : b), insertLeft: b && b.insertLeft, clearWhenEmpty: !1, shared: b && b.shared, handleMouseEvents: b && b.handleMouseEvents };a = w(this, a);return Wa(this, a, a, c, "bookmark");
        }, findMarksAt: function (a) {
          a = w(this, a);var b = [],
              c = u(this, a.line).markedSpans;if (c) for (var d = 0; d < c.length; ++d) {
            var e = c[d];(null == e.from || e.from <= a.ch) && (null == e.to || e.to >= a.ch) && b.push(e.marker.parent || e.marker);
          }return b;
        }, findMarks: function (a, b, c) {
          a = w(this, a);
          b = w(this, b);var d = [],
              e = a.line;this.iter(a.line, b.line + 1, function (f) {
            if (f = f.markedSpans) for (var g = 0; g < f.length; g++) {
              var h = f[g];e == a.line && a.ch > h.to || null == h.from && e != a.line || e == b.line && h.from > b.ch || c && !c(h.marker) || d.push(h.marker.parent || h.marker);
            }++e;
          });return d;
        }, getAllMarks: function () {
          var a = [];this.iter(function (b) {
            if (b = b.markedSpans) for (var c = 0; c < b.length; ++c) null != b[c].from && a.push(b[c].marker);
          });return a;
        }, posFromIndex: function (a) {
          var b,
              c = this.first;this.iter(function (d) {
            d = d.text.length + 1;if (d > a) return b = a, !0;a -= d;++c;
          });return w(this, r(c, b));
        }, indexFromPos: function (a) {
          a = w(this, a);var b = a.ch;if (a.line < this.first || 0 > a.ch) return 0;this.iter(this.first, a.line, function (a) {
            b += a.text.length + 1;
          });return b;
        }, copy: function (a) {
          var b = new P(xd(this, this.first, this.first + this.size), this.modeOption, this.first);b.scrollTop = this.scrollTop;b.scrollLeft = this.scrollLeft;b.sel = this.sel;b.extend = !1;a && (b.history.undoDepth = this.history.undoDepth, b.setHistory(this.getHistory()));return b;
        }, linkedDoc: function (a) {
          a || (a = {});var b = this.first,
              c = this.first + this.size;null != a.from && a.from > b && (b = a.from);null != a.to && a.to < c && (c = a.to);b = new P(xd(this, b, c), a.mode || this.modeOption, b);a.sharedHist && (b.history = this.history);(this.linked || (this.linked = [])).push({ doc: b, sharedHist: a.sharedHist });b.linked = [{ doc: this, isParent: !0, sharedHist: a.sharedHist }];a = Re(this);for (c = 0; c < a.length; c++) {
            var d = a[c],
                e = d.find(),
                f = b.clipPos(e.from),
                e = b.clipPos(e.to);y(f, e) && (f = Wa(b, f, e, d.primary, d.primary.type), d.markers.push(f), f.parent = d);
          }return b;
        },
        unlinkDoc: function (a) {
          a instanceof q && (a = a.doc);if (this.linked) for (var b = 0; b < this.linked.length; ++b) if (this.linked[b].doc == a) {
            this.linked.splice(b, 1);a.unlinkDoc(this);Yf(Re(this));break;
          }if (a.history == this.history) {
            var c = [a.id];Ga(a, function (a) {
              c.push(a.id);
            }, !0);a.history = new uc(null);a.history.done = Xa(this.history.done, c);a.history.undone = Xa(this.history.undone, c);
          }
        }, iterLinkedDocs: function (a) {
          Ga(this, a);
        }, getMode: function () {
          return this.mode;
        }, getEditor: function () {
          return this.cm;
        } });P.prototype.eachLine = P.prototype.iter;var pg = ["iter", "insert", "remove", "copy", "getEditor"],
          Jb;for (Jb in P.prototype) P.prototype.hasOwnProperty(Jb) && 0 > D(pg, Jb) && (q.prototype[Jb] = function (a) {
        return function () {
          return a.apply(this.doc, arguments);
        };
      }(P.prototype[Jb]));Ya(P);var O = q.e_preventDefault = function (a) {
        a.preventDefault ? a.preventDefault() : a.returnValue = !1;
      },
          qg = q.e_stopPropagation = function (a) {
        a.stopPropagation ? a.stopPropagation() : a.cancelBubble = !0;
      },
          jd = q.e_stop = function (a) {
        O(a);qg(a);
      },
          v = q.on = function (a, b, c) {
        a.addEventListener ? a.addEventListener(b, c, !1) : a.attachEvent ? a.attachEvent("on" + b, c) : (a = a._handlers || (a._handlers = {}), (a[b] || (a[b] = [])).push(c));
      },
          ka = q.off = function (a, b, c) {
        if (a.removeEventListener) a.removeEventListener(b, c, !1);else if (a.detachEvent) a.detachEvent("on" + b, c);else if (a = a._handlers && a._handlers[b]) for (b = 0; b < a.length; ++b) if (a[b] == c) {
          a.splice(b, 1);break;
        }
      },
          K = q.signal = function (a, b) {
        var c = a._handlers && a._handlers[b];if (c) for (var d = Array.prototype.slice.call(arguments, 2), e = 0; e < c.length; ++e) c[e].apply(null, d);
      },
          Db = null,
          Hd = 30,
          Ae = q.Pass = { toString: function () {
          return "CodeMirror.Pass";
        } },
          ha = { scroll: !1 },
          kd = { origin: "*mouse" },
          Gb = { origin: "+move" };bb.prototype.set = function (a, b) {
        clearTimeout(this.id);this.id = setTimeout(b, a);
      };var aa = q.countColumn = function (a, b, c, d, e) {
        null == b && (b = a.search(/[^\s\u00a0]/), -1 == b && (b = a.length));d = d || 0;for (e = e || 0;;) {
          var f = a.indexOf("\t", d);if (0 > f || f >= b) return e + (b - d);e += f - d;e += c - e % c;d = f + 1;
        }
      },
          vc = [""],
          Za = function (a) {
        a.select();
      };Qa ? Za = function (a) {
        a.selectionStart = 0;a.selectionEnd = a.value.length;
      } : B && (Za = function (a) {
        try {
          a.select();
        } catch (b) {}
      });var rg = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,
          gf = q.isWordChar = function (a) {
        return (/\w/.test(a) || "" < a && (a.toUpperCase() != a.toLowerCase() || rg.test(a))
        );
      },
          ig = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,
          Ea;Ea = document.createRange ? function (a, b, c, d) {
        var e = document.createRange();e.setEnd(d || a, c);e.setStart(a, b);return e;
      } : function (a, b, c) {
        var d = document.body.createTextRange();try {
          d.moveToElementText(a.parentNode);
        } catch (e) {
          return d;
        }d.collapse(!0);d.moveEnd("character", c);d.moveStart("character", b);return d;
      };var Wc = q.contains = function (a, b) {
        3 == b.nodeType && (b = b.parentNode);if (a.contains) return a.contains(b);do if (11 == b.nodeType && (b = b.host), b == a) return !0; while (b = b.parentNode);
      };B && 11 > C && (fa = function () {
        try {
          return document.activeElement;
        } catch (a) {
          return document.body;
        }
      });
      var kb = q.rmClass = function (a, b) {
        var c = a.className,
            d = Fb(b).exec(c);if (d) {
          var e = c.slice(d.index + d[0].length);a.className = c.slice(0, d.index) + (e ? d[1] + e : "");
        }
      },
          mb = q.addClass = function (a, b) {
        var c = a.className;Fb(b).test(c) || (a.className += (c ? " " : "") + b);
      },
          Dd = !1,
          Lf = function () {
        if (B && 9 > C) return !1;var a = t("div");return "draggable" in a || "dragDrop" in a;
      }(),
          yd,
          vd,
          sa = q.splitLines = 3 != "\n\nb".split(/\n/).length ? function (a) {
        for (var b = 0, c = [], d = a.length; b <= d;) {
          var e = a.indexOf("\n", b);-1 == e && (e = a.length);var f = a.slice(b, "\r" == a.charAt(e - 1) ? e - 1 : e),
              g = f.indexOf("\r");-1 != g ? (c.push(f.slice(0, g)), b += g + 1) : (c.push(f), b = e + 1);
        }return c;
      } : function (a) {
        return a.split(/\r\n?|\n/);
      },
          ng = window.getSelection ? function (a) {
        try {
          return a.selectionStart != a.selectionEnd;
        } catch (b) {
          return !1;
        }
      } : function (a) {
        try {
          var b = a.ownerDocument.selection.createRange();
        } catch (c) {}return b && b.parentElement() == a ? 0 != b.compareEndPoints("StartToEnd", b) : !1;
      },
          Ce = function () {
        var a = t("div");if ("oncopy" in a) return !0;a.setAttribute("oncopy", "return;");return "function" == typeof a.oncopy;
      }(),
          bd = null,
          va = { 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", 46: "Delete", 59: ";", 61: "\x3d", 91: "Mod", 92: "Mod", 93: "Mod", 107: "\x3d", 109: "-", 127: "Delete", 173: "-", 186: ";", 187: "\x3d", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", 63273: "Home",
        63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" };q.keyNames = va;(function () {
        for (var a = 0; 10 > a; a++) va[a + 48] = va[a + 96] = String(a);for (a = 65; 90 >= a; a++) va[a] = String.fromCharCode(a);for (a = 1; 12 >= a; a++) va[a + 111] = va[a + 63235] = "F" + a;
      })();var vb,
          gg = function () {
        function a(a) {
          return 247 >= a ? "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN".charAt(a) : 1424 <= a && 1524 >= a ? "R" : 1536 <= a && 1773 >= a ? "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm".charAt(a - 1536) : 1774 <= a && 2220 >= a ? "r" : 8192 <= a && 8203 >= a ? "w" : 8204 == a ? "b" : "L";
        }function b(a, b, c) {
          this.level = a;this.from = b;this.to = c;
        }var c = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,
            d = /[stwN]/,
            e = /[LRr]/,
            f = /[Lb1n]/,
            g = /[1n]/;return function (h) {
          if (!c.test(h)) return !1;
          for (var k = h.length, l = [], m = 0, p; m < k; ++m) l.push(a(h.charCodeAt(m)));for (var m = 0, n = "L"; m < k; ++m) p = l[m], "m" == p ? l[m] = n : n = p;m = 0;for (n = "L"; m < k; ++m) p = l[m], "1" == p && "r" == n ? l[m] = "n" : e.test(p) && (n = p, "r" == p && (l[m] = "R"));m = 1;for (n = l[0]; m < k - 1; ++m) p = l[m], "+" == p && "1" == n && "1" == l[m + 1] ? l[m] = "1" : "," != p || n != l[m + 1] || "1" != n && "n" != n || (l[m] = n), n = p;for (m = 0; m < k; ++m) if (p = l[m], "," == p) l[m] = "N";else if ("%" == p) {
            for (n = m + 1; n < k && "%" == l[n]; ++n);var q = m && "!" == l[m - 1] || n < k && "1" == l[n] ? "1" : "N";for (p = m; p < n; ++p) l[p] = q;m = n - 1;
          }m = 0;for (n = "L"; m < k; ++m) p = l[m], "L" == n && "1" == p ? l[m] = "L" : e.test(p) && (n = p);for (m = 0; m < k; ++m) if (d.test(l[m])) {
            for (n = m + 1; n < k && d.test(l[n]); ++n);p = "L" == (n < k ? l[n] : "L");q = "L" == (m ? l[m - 1] : "L") || p ? "L" : "R";for (p = m; p < n; ++p) l[p] = q;m = n - 1;
          }for (var n = [], r, m = 0; m < k;) if (f.test(l[m])) {
            p = m;for (++m; m < k && f.test(l[m]); ++m);n.push(new b(0, p, m));
          } else {
            var t = m,
                q = n.length;for (++m; m < k && "L" != l[m]; ++m);for (p = t; p < m;) if (g.test(l[p])) {
              t < p && n.splice(q, 0, new b(1, t, p));t = p;for (++p; p < m && g.test(l[p]); ++p);n.splice(q, 0, new b(2, t, p));t = p;
            } else ++p;t < m && n.splice(q, 0, new b(1, t, m));
          }1 == n[0].level && (r = h.match(/^\s+/)) && (n[0].from = r[0].length, n.unshift(new b(0, 0, r[0].length)));1 == A(n).level && (r = h.match(/\s+$/)) && (A(n).to -= r[0].length, n.push(new b(0, k - r[0].length, k)));2 == n[0].level && n.unshift(new b(1, n[0].to, n[0].to));n[0].level != A(n).level && n.push(new b(n[0].level, k, k));return n;
        };
      }();q.version = "5.2.0";return q;
    });
  }
});
//# sourceMappingURL=codemirror.js.map